diff --git a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift index 7c5165a3e..7c477adaf 100644 --- a/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift +++ b/OSBindings/Mac/Clock Signal/Documents/MachineDocument.swift @@ -301,6 +301,7 @@ class MachineDocument: switch item.action { case #selector(self.useKeyboardAsKeyboard): if machine == nil || !machine.hasKeyboard { + menuItem.state = .off return false } @@ -309,6 +310,7 @@ class MachineDocument: case #selector(self.useKeyboardAsJoystick): if machine == nil || !machine.hasJoystick { + menuItem.state = .off return false } @@ -318,6 +320,9 @@ class MachineDocument: case #selector(self.showActivity(_:)): return self.activityPanel != nil + case #selector(self.insertMedia(_:)): + return self.machine != nil && self.machine.canInsertMedia + default: break } } diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.h b/OSBindings/Mac/Clock Signal/Machine/CSMachine.h index 8934d88f3..1e40183d1 100644 --- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.h +++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.h @@ -39,6 +39,7 @@ typedef NS_ENUM(NSInteger, CSMachineKeyboardInputMode) { @interface CSMachine : NSObject - (nonnull instancetype)init NS_UNAVAILABLE; + /*! Initialises an instance of CSMachine. @@ -70,6 +71,8 @@ typedef NS_ENUM(NSInteger, CSMachineKeyboardInputMode) { @property (nonatomic, assign) CSMachineVideoSignal videoSignal; @property (nonatomic, assign) BOOL useAutomaticTapeMotorControl; +@property (nonatomic, readonly) BOOL canInsertMedia; + - (bool)supportsVideoSignal:(CSMachineVideoSignal)videoSignal; // Input control. diff --git a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm index df04b856e..3493501f3 100644 --- a/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm +++ b/OSBindings/Mac/Clock Signal/Machine/CSMachine.mm @@ -516,6 +516,10 @@ struct ActivityObserver: public Activity::Observer { return [[NSString stringWithUTF8String:name.c_str()] lowercaseString]; } +- (BOOL)canInsertMedia { + return !!_machine->media_target(); +} + #pragma mark - Special machines - (CSAtari2600 *)atari2600 {