diff --git a/Platform/macOS/AppDelegate.swift b/Platform/macOS/AppDelegate.swift index dfac0356..ea7e9a43 100644 --- a/Platform/macOS/AppDelegate.swift +++ b/Platform/macOS/AppDelegate.swift @@ -36,7 +36,7 @@ class AppDelegate: NSObject, NSApplicationDelegate { } @MainActor - public var scriptingVirtualMachines: [UTMScriptingVirtualMachineImpl] { + @objc var scriptingVirtualMachines: [UTMScriptingVirtualMachineImpl] { guard let data = data else { return [] } diff --git a/Platform/macOS/macOS-unsigned.entitlements b/Platform/macOS/macOS-unsigned.entitlements index 216c2ec7..42385bba 100644 --- a/Platform/macOS/macOS-unsigned.entitlements +++ b/Platform/macOS/macOS-unsigned.entitlements @@ -4,6 +4,8 @@ com.apple.security.app-sandbox + com.apple.security.automation.apple-events + com.apple.security.cs.disable-library-validation com.apple.security.device.audio-input diff --git a/Platform/macOS/macOS.entitlements b/Platform/macOS/macOS.entitlements index 4b3bdf54..8aa45b32 100644 --- a/Platform/macOS/macOS.entitlements +++ b/Platform/macOS/macOS.entitlements @@ -10,6 +10,8 @@ com.apple.security.device.audio-input + com.apple.security.automation.apple-events + com.apple.security.device.usb com.apple.security.files.user-selected.read-write diff --git a/Scripting/UTM.sdef b/Scripting/UTM.sdef index 20c9e4a2..9fe9679b 100644 --- a/Scripting/UTM.sdef +++ b/Scripting/UTM.sdef @@ -5,17 +5,6 @@ - - - - - - - - - - - @@ -53,15 +42,9 @@ - - - - - - @@ -125,27 +108,13 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + diff --git a/Scripting/UTMScriptingSerialPortImpl.swift b/Scripting/UTMScriptingSerialPortImpl.swift index c1c91662..a92f015e 100644 --- a/Scripting/UTMScriptingSerialPortImpl.swift +++ b/Scripting/UTMScriptingSerialPortImpl.swift @@ -17,12 +17,13 @@ import Foundation @MainActor -@objc class UTMScriptingSerialPortImpl: NSObject { - private(set) var id: Int - private(set) weak var parent: UTMScriptingVirtualMachineImpl? - private(set) var interface: UTMScriptingSerialInterface - private(set) var address: String - private(set) var port: Int +@objc(UTMScriptingSerialPortImpl) +class UTMScriptingSerialPortImpl: NSObject { + @objc private(set) var id: Int + @objc private(set) weak var parent: UTMScriptingVirtualMachineImpl? + @objc private(set) var interface: UTMScriptingSerialInterface + @objc private(set) var address: String + @objc private(set) var port: Int init(qemuSerial: UTMQemuConfigurationSerial, parent: UTMScriptingVirtualMachineImpl, index: Int) { self.id = index diff --git a/Scripting/UTMScriptingVirtualMachineImpl.swift b/Scripting/UTMScriptingVirtualMachineImpl.swift index 0276d3ef..a5a57fd6 100644 --- a/Scripting/UTMScriptingVirtualMachineImpl.swift +++ b/Scripting/UTMScriptingVirtualMachineImpl.swift @@ -17,35 +17,36 @@ import Foundation @MainActor -@objc class UTMScriptingVirtualMachineImpl: NSObject { +@objc(UTMScriptingVirtualMachineImpl) +class UTMScriptingVirtualMachineImpl: NSObject { private var vm: UTMVirtualMachine private var data: UTMData - var id: String { + @objc var id: String { vm.id.uuidString } - var name: String { + @objc var name: String { vm.detailsTitleLabel } - var notes: String { + @objc var notes: String { vm.detailsNotes ?? "" } - var machine: String { + @objc var machine: String { vm.detailsSystemTargetLabel } - var architecture: String { + @objc var architecture: String { vm.detailsSystemArchitectureLabel } - var memory: String { + @objc var memory: String { vm.detailsSystemMemoryLabel } - var backend: UTMScriptingBackend { + @objc var backend: UTMScriptingBackend { if vm is UTMQemuVirtualMachine { return .qemu } else if vm is UTMAppleVirtualMachine { @@ -55,7 +56,20 @@ import Foundation } } - var serialPorts: [UTMScriptingSerialPortImpl] { + @objc var status: UTMScriptingStatus { + switch vm.state { + case .vmStopped: return .stopped + case .vmStarting: return .starting + case .vmStarted: return .started + case .vmPausing: return .pausing + case .vmPaused: return .paused + case .vmResuming: return .resuming + case .vmStopping: return .stopping + @unknown default: return .stopped + } + } + + @objc var serialPorts: [UTMScriptingSerialPortImpl] { if let config = vm.config.qemuConfig { return config.serials.indices.map({ UTMScriptingSerialPortImpl(qemuSerial: config.serials[$0], parent: self, index: $0) }) } else if let config = vm.config.appleConfig { @@ -66,7 +80,7 @@ import Foundation } override var objectSpecifier: NSScriptObjectSpecifier? { - let appDescription = NSApp.classDescription as! NSScriptClassDescription + let appDescription = NSApplication.classDescription() as! NSScriptClassDescription return NSUniqueIDSpecifier(containerClassDescription: appDescription, containerSpecifier: nil, key: "scriptingVirtualMachines",