X-Git-Url: https://git.r.bdr.sh/rbdr/captura/blobdiff_plain/153f3309127a4f9d898310224a467d11eef0f2ff..refs/heads/main:/Captura/Scripting/RecordCommand.swift diff --git a/Captura/Scripting/RecordCommand.swift b/Captura/Scripting/RecordCommand.swift index 9d25b59..da2d28c 100644 --- a/Captura/Scripting/RecordCommand.swift +++ b/Captura/Scripting/RecordCommand.swift @@ -1,57 +1,75 @@ +/* + Copyright (C) 2024 Rubén Beltrán del Río + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see https://captura.tranquil.systems. + */ import Foundation @objc(RecordCommand) class RecordCommand: NSScriptCommand { - override func performDefaultImplementation() -> Any? { - - 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 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 - - var skipBackend = false - if let backendString = args["backend"] as? String { - if backendString == "" { - skipBackend = true - } + override func performDefaultImplementation() -> Any? { + + 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 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 + + 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: [ + } + + 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) + NotificationCenter.default.post(name: .startAreaSelection, object: nil, userInfo: nil) - // Return a result if needed - return nil - } + // Return a result if needed + return nil + } }