// // AboutWIndowController.swift // Cog // // Created by Kevin López Brante on 20-06-22. // import Cocoa import WebKit class AboutWindowController: NSWindowController, WKNavigationDelegate { @IBOutlet weak var appName: NSTextField! @IBOutlet weak var appVersion: NSTextField! @IBOutlet weak var appCopyright: NSTextField! @IBOutlet weak var creditsView: WKWebView! override var windowNibName: NSNib.Name? { return "AboutWindowController" } @IBOutlet weak var vfxView: NSVisualEffectView! override func windowDidLoad() { super.windowDidLoad() self.window?.center() self.window?.isMovableByWindowBackground = true creditsView.setValue(false, forKey: "drawsBackground") vfxView.wantsLayer = true vfxView.layer?.cornerRadius = 4 // fill up labels appName.stringValue = Bundle.main.object(forInfoDictionaryKey: "CFBundleName") as! String let shortVersionString = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String let fullVersionString = Bundle.main.object(forInfoDictionaryKey: "GitVersion") as! String appVersion.stringValue = String.localizedStringWithFormat(NSLocalizedString("Version %@ (%@)", comment: "Version string"), shortVersionString, fullVersionString); appCopyright.stringValue = Bundle.main.object(forInfoDictionaryKey: "NSHumanReadableCopyright") as! String if let creditsFile = Bundle.main.url(forResource: "Credits", withExtension: "html") { let data = try! Data(contentsOf: creditsFile) creditsView.loadHTMLString(String(data: data, encoding: .utf8) ?? "Could not load credits.", baseURL: nil) } creditsView.navigationDelegate = self } func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) { if navigationAction.navigationType == .linkActivated, let url = navigationAction.request.url { NSWorkspace.shared.open(url) decisionHandler(.cancel) return } decisionHandler(.allow) } @objc func cancel(_ sender: Any?) { close() } }