@main
struct CapturaApp: App {
-
+
@NSApplicationDelegateAdaptor(CapturaAppDelegate.self) var appDelegate
var body: some Scene {
}
}
-class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
+@objc(CapturaAppDelegate) class CapturaAppDelegate: NSObject, NSApplicationDelegate, NSMenuDelegate {
@Environment(\.openURL) var openURL
var statusItem: NSStatusItem!
var remoteFiles: [CapturaRemoteFile] = []
var captureSessionConfiguration: CaptureSessionConfiguration = CaptureSessionConfiguration()
- @objc var scriptedPreferences: ScriptedPreferences?
+ @objc dynamic var scriptedPreferences: ScriptedPreferences = ScriptedPreferences()
func applicationDidFinishLaunching(_ notification: Notification) {
setupStatusBar()
object: nil)
closeWindow()
fetchRemoteItems()
-
- scriptedPreferences = ScriptedPreferences()
}
// MARK: - Setup Functions
window.close()
}
}
-
+
// MARK: - URL Event Handler
func application(_ application: NSApplication, open urls: [URL]) {
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)
}
}
}
<!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." />
<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." />
@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
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 == "" {