aboutsummaryrefslogtreecommitdiff
path: root/Captura/Scripting/RecordCommand.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Captura/Scripting/RecordCommand.swift')
-rw-r--r--Captura/Scripting/RecordCommand.swift64
1 files changed, 64 insertions, 0 deletions
diff --git a/Captura/Scripting/RecordCommand.swift b/Captura/Scripting/RecordCommand.swift
new file mode 100644
index 0000000..8db2656
--- /dev/null
+++ b/Captura/Scripting/RecordCommand.swift
@@ -0,0 +1,64 @@
+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)")
+
+ // Here you can extract the parameters from the args dictionary and configure your settings
+ let x = args["x"] as? Int
+ let y = args["y"] as? Int
+ let width = args["width"] as? Int
+ let height = args["height"] as? Int
+ let preventResize = args["prevent_resize"] as? Bool
+ let preventMove = args["prevent_move"] as? Bool
+ let fps = args["fps"] as? Int
+ let outputs = OutputFormatSetting(args["outputs"] as? String ?? "")
+ let backend = URL(string: args["backend"] as? String ?? "")
+ let backendOutput = OutputFormatSetting(args["backend_output"] as? String ?? "")
+ let keepLocalFiles = args["keep_local_files"] as? Bool
+ 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 == "" {
+ skipBackend = true
+ }
+ }
+
+ let config = RecordAction(
+ action: "record",
+ x: x,
+ y: y,
+ width: width,
+ height: height,
+ preventResize: preventResize,
+ preventMove: preventMove,
+ fps: fps,
+ outputs: outputs,
+ backend: backend,
+ backendOutput: backendOutput,
+ keepLocalFiles: keepLocalFiles,
+ autoStart: autoStart,
+ skipBackend: skipBackend,
+ maxLength: maxLength
+ )
+
+ NotificationCenter.default.post(name: .setCaptureSessionConfiguration, object: nil, userInfo: [
+ "config": config
+ ])
+ NotificationCenter.default.post(name: .startAreaSelection, object: nil, userInfo: nil)
+
+ // Return a result if needed
+ return nil
+ }
+}