/* 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 } } 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 } }