diff options
| -rw-r--r-- | Captura/CapturaApp.swift | 15 | ||||
| -rw-r--r-- | Captura/Scripting/Captura.sdef | 25 | ||||
| -rw-r--r-- | Captura/Scripting/RecordCommand.swift | 9 | ||||
| -rw-r--r-- | Captura/Scripting/ScriptedPreferences.swift | 1 |
4 files changed, 23 insertions, 27 deletions
diff --git a/Captura/CapturaApp.swift b/Captura/CapturaApp.swift index c6ec9f0..d954b9f 100644 --- a/Captura/CapturaApp.swift +++ b/Captura/CapturaApp.swift @@ -6,7 +6,7 @@ import AVFoundation @main struct CapturaApp: App { - + @NSApplicationDelegateAdaptor(CapturaAppDelegate.self) var appDelegate var body: some Scene { @@ -20,7 +20,7 @@ struct CapturaApp: App { } } -class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { +@objc(CapturaAppDelegate) class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { @Environment(\.openURL) var openURL var statusItem: NSStatusItem! @@ -39,7 +39,7 @@ class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { var remoteFiles: [CapturaRemoteFile] = [] var captureSessionConfiguration: CaptureSessionConfiguration = CaptureSessionConfiguration() - @objc var scriptedPreferences: ScriptedPreferences? + @objc dynamic var scriptedPreferences: ScriptedPreferences = ScriptedPreferences() func applicationDidFinishLaunching(_ notification: Notification) { setupStatusBar() @@ -50,8 +50,6 @@ class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { object: nil) closeWindow() fetchRemoteItems() - - scriptedPreferences = ScriptedPreferences() } // MARK: - Setup Functions @@ -101,7 +99,7 @@ class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { window.close() } } - + // MARK: - URL Event Handler func application(_ application: NSApplication, open urls: [URL]) { @@ -112,11 +110,10 @@ class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate { case let .configure(config): CapturaSettings.apply(config) case let .record(config): - let config = CaptureSessionConfiguration(from: config) - NotificationCenter.default.post(name: .startAreaSelection, object: nil, userInfo: [ + NotificationCenter.default.post(name: .setCaptureSessionConfiguration, object: nil, userInfo: [ "config": config ]) - NotificationCenter.default.post(name: .startAreaSelection, object: nil, userInfo: nil) + NotificationCenter.default.post(name: .startAreaSelection, object: nil, userInfo: nil) } } } diff --git a/Captura/Scripting/Captura.sdef b/Captura/Scripting/Captura.sdef index 82cf06f..ca49d17 100644 --- a/Captura/Scripting/Captura.sdef +++ b/Captura/Scripting/Captura.sdef @@ -1,19 +1,24 @@ <!DOCTYPE dictionary SYSTEM "file://localhost/System/Library/DTDs/sdef.dtd"> -<dictionary title="CapturaScripting"> +<dictionary title="Captura Terminology"> + <suite name="Standard Suite" code="CStd" description="Common classes and commands for all applications."> + <command name="quit" code="aevtquit" description="Quit the application."> + <cocoa class="NSQuitCommand"/> + </command> + </suite> <suite name="Captura Suite" code="CAPT" description="Controls Captura"> - <class name="application" code="Capp" description="The application's top-level scripting object."> - <cocoa class="NSApplication"/> - <property name="preferences" code="Cprp" type="preferences" access="r"> + <class name="application" code="capp" description="The application's top-level scripting object."> + <cocoa class="CapturaApp"/> + <property name="preferences" code="pPrp" type="preferences" access="r"> <cocoa key="scriptedPreferences"/> </property> </class> <class name="preferences" code="Cprf" description="The application preferences"> <cocoa class="ScriptedPreferences"/> - <property name="fps" code="Cpfp" type="integer" description="Sets the FPS of the recording" access="rw" /> - <property name="outputs" code="Cpou" type="text" description="Which outputs get generated locally" access="rw" /> - <property name="backend" code="Cpbk" type="file url" description="Updates the backend URL that will be used" access="rw" /> - <property name="backend_output" code="Cpbo" type="text" description="Which output should be sent to the backend" access="rw" /> - <property name="keep_local_files" code="Cplf" type="boolean" description="Whether to keep local files after a successful backend upload." access="rw"/> + <property name="fps" code="pPfp" type="integer" description="Sets the FPS of the recording" access="rw" /> + <property name="outputs" code="pPou" type="text" description="Which outputs get generated locally" access="rw" /> + <property name="backend" code="pPbk" type="text" description="Updates the backend URL that will be used" access="rw" /> + <property name="backend_output" code="pPbo" type="text" description="Which output should be sent to the backend" access="rw" /> + <property name="keep_local_files" code="pPlf" type="boolean" description="Whether to keep local files after a successful backend upload." access="rw"/> </class> <record-type code="CCRr" name="recording_configuration"> <property name="x" code="CCrx" type="integer" description="Sets the starting horizontal position of the recording frame from the left of the screen. Defaults to the center of the screen." /> @@ -24,7 +29,7 @@ <property name="prevent_move" code="CCRm" type="boolean" description="Prevents the recording frame from being moved. Defaults to false." /> <property name="fps" code="CCrf" type="integer" description="Sets the FPS of the recording" /> <property name="outputs" code="CCRo" type="text" description="Which outputs get generated locally" /> - <property name="backend" code="CCRb" type="file url" description="Updates the backend URL that will be used" /> + <property name="backend" code="CCRb" type="text" description="Updates the backend URL that will be used" /> <property name="backend_output" code="CCRp" type="text" description="Which output should be sent to the backend" /> <property name="keep_local_files" code="CCRk" type="boolean" description="Whether to keep local files after a successful backend upload." /> <property name="auto_start" code="CCRa" type="boolean" description="Whether the recording session should start automatically or not. It takes 3 seconds to start." /> diff --git a/Captura/Scripting/RecordCommand.swift b/Captura/Scripting/RecordCommand.swift index 8db2656..9d25b59 100644 --- a/Captura/Scripting/RecordCommand.swift +++ b/Captura/Scripting/RecordCommand.swift @@ -3,13 +3,8 @@ import Foundation @objc(RecordCommand) class RecordCommand: NSScriptCommand { override func performDefaultImplementation() -> Any? { - print("AAAH \(self.directParameter)") - guard let args = self.directParameter as? [String: Any] else { - return nil - } - - print("AAH COMMANDS \(args)") + let args = self.directParameter as? [String: Any] ?? [:] // Here you can extract the parameters from the args dictionary and configure your settings let x = args["x"] as? Int @@ -26,8 +21,6 @@ class RecordCommand: NSScriptCommand { let autoStart = args["auto_start"] as? Bool let maxLength = args["max_length"] as? Int - print("AAH WIDTH \(width)") - var skipBackend = false if let backendString = args["backend"] as? String { if backendString == "" { diff --git a/Captura/Scripting/ScriptedPreferences.swift b/Captura/Scripting/ScriptedPreferences.swift index b6aa719..2606ff7 100644 --- a/Captura/Scripting/ScriptedPreferences.swift +++ b/Captura/Scripting/ScriptedPreferences.swift @@ -1,5 +1,6 @@ import Foundation +@objc(ScriptedPreferences) class ScriptedPreferences: NSObject { @objc dynamic var fps: Int { get { |