mirror of
https://github.com/hensm/fx_cast.git
synced 2026-06-08 16:49:58 +00:00
72 lines
2.1 KiB
Swift
72 lines
2.1 KiB
Swift
import Cocoa
|
|
|
|
|
|
class AppDelegate : NSObject, NSApplicationDelegate {
|
|
var initData: InitData!
|
|
|
|
var mainWindow: NSWindow?
|
|
var mainWindowController: NSWindowController?
|
|
var mainWindowViewController: ViewController?
|
|
|
|
|
|
func applicationDidFinishLaunching (_ aNotification: Notification) {
|
|
if CommandLine.argc < 2 {
|
|
fputs("Error: Not enough args\n", stderr)
|
|
exit(1)
|
|
}
|
|
|
|
guard let data = CommandLine.arguments[1].data(using: .utf8) else {
|
|
fputs("Error: Failed to convert input to data\n", stderr)
|
|
exit(1)
|
|
}
|
|
|
|
do {
|
|
// Decode and store initialization JSON data
|
|
self.initData = try JSONDecoder().decode(InitData.self, from: data)
|
|
} catch {
|
|
fputs("Error: Failed to parse input data\n", stderr)
|
|
exit(1)
|
|
}
|
|
|
|
|
|
let window = NSWindow(
|
|
contentRect: NSZeroRect
|
|
, styleMask: [ .titled, .closable ]
|
|
, backing: .buffered
|
|
, defer: false)
|
|
|
|
let screenHeight = NSScreen.main!.frame.height
|
|
|
|
window.titleVisibility = .hidden
|
|
window.isMovableByWindowBackground = true
|
|
window.orderFrontRegardless()
|
|
window.setFrameTopLeftPoint(NSPoint(
|
|
x: self.initData.windowPositionX
|
|
, y: Int(screenHeight - CGFloat(self.initData.windowPositionY))))
|
|
|
|
let windowController = NSWindowController(window: window)
|
|
windowController.showWindow(window)
|
|
|
|
let viewController = ViewController()
|
|
window.contentViewController = viewController
|
|
window.makeKeyAndOrderFront(self)
|
|
|
|
self.mainWindow = window
|
|
self.mainWindowController = windowController
|
|
self.mainWindowViewController = viewController
|
|
|
|
NSApp.activate(ignoringOtherApps: true)
|
|
}
|
|
|
|
func applicationDidResignActive (_ aNotification: Notification) {
|
|
if self.initData.closeIfFocusLost {
|
|
self.mainWindow?.performClose(aNotification)
|
|
}
|
|
}
|
|
|
|
func applicationShouldTerminateAfterLastWindowClosed (
|
|
_ app: NSApplication) -> Bool {
|
|
return true
|
|
}
|
|
}
|