class NSMenuItem
Attributes
rac_command[RW]
rac_originalTarget[RW]
rac_stateSignal[RW]
Public Instance Methods
rac_command=(command)
click to toggle source
# File lib/drink-menu/ext/ns_menu_item.rb, line 6 def rac_command=(command) @rac_command = command self.enabled = (command && command.canExecute) || true return unless command # TODO: Set state via binding rather than validateMenuItem # Look at https://github.com/ReactiveCocoa/ReactiveCocoa/blob/2.0-development/ReactiveCocoaFramework/ReactiveCocoa/NSObject%2BRACAppKitBindings.m#L23 # self.bind(NSEnabledBinding, toObject: self.rac_command, withKeyPath: "canExecute", options: nil) self.rac_hijackActionAndTargetIfNeeded @rac_command end
rac_commandPerformAction(sender)
click to toggle source
# File lib/drink-menu/ext/ns_menu_item.rb, line 44 def rac_commandPerformAction(sender) rac_command.execute(sender) end
rac_hijackActionAndTargetIfNeeded()
click to toggle source
# File lib/drink-menu/ext/ns_menu_item.rb, line 31 def rac_hijackActionAndTargetIfNeeded hijackSelector = :"rac_commandPerformAction:" return if target == self and action == hijackSelector NSLog("WARNING: NSControl.rac_command hijacks the control's existing target and action. You can access the original target via the rac_originalTarget property.") if target self.rac_originalTarget = target self.target = self self.action = hijackSelector end
rac_stateSignal=(signal)
click to toggle source
# File lib/drink-menu/ext/ns_menu_item.rb, line 24 def rac_stateSignal=(signal) @rac_stateSignal = signal @rac_stateSignal.subscribeNext ->(value){ self.state = value } end
validateMenuItem(item)
click to toggle source
# File lib/drink-menu/ext/ns_menu_item.rb, line 48 def validateMenuItem(item) return rac_originalTarget.validateMenuItem(item) if rac_originalTarget and rac_originalTarget.respondsToSelector(:"validateMenuItem:") rac_command.canExecute end