: send ( receiver args... selector -- return... ) f (send) ; inline
+MACRO:: (?send) ( effect selector super? -- quot )
+ selector dup ?lookup-method effect or super?
+ [ make-prepare-send ] 2keep
+ super-message-senders message-senders ? get at
+ [ 1quotation append ] [ effect selector sender-stub 1quotation append ] if* ;
+
+: ?send ( receiver args... selector effect -- return... ) f (?send) ; inline
+
: super-send ( receiver args... selector -- return... ) t (send) ; inline
! Runtime introspection
! Copyright (C) 2017 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
-USING: accessors alien.enums alien.syntax cocoa cocoa.classes
-cocoa.messages combinators core-foundation.strings kernel locals
-namespaces sequences words ;
+USING: accessors alien.c-types alien.enums alien.syntax cocoa
+cocoa.classes cocoa.messages cocoa.runtime combinators
+core-foundation.strings kernel locals namespaces sequences words ;
IN: cocoa.touchbar
! ui.backend.cocoa.views creates buttons for each of these actions
: make-touchbar ( enum self -- touchbar )
[ NSTouchBar -> alloc -> init dup ] dip -> setDelegate: {
- [ swap enum>CFStringArray -> setDefaultItemIdentifiers: ]
- [ swap enum>CFStringArray -> setCustomizationAllowedItemIdentifiers: ]
+ [ swap enum>CFStringArray { void { id SEL id } } ?-> setDefaultItemIdentifiers: ]
+ [ swap enum>CFStringArray { void { id SEL id } } ?-> setCustomizationAllowedItemIdentifiers: ]
[ nip ]
} 2cleave ;
:: make-NSTouchBar-button ( self identifier label-string action-string -- button )
NSCustomTouchBarItem -> alloc
- identifier <CFString> -> initWithIdentifier: :> item
+ identifier <CFString> { id { id SEL id } } ?-> initWithIdentifier: :> item
NSButton
label-string <CFString>
self
- action-string lookup-selector -> buttonWithTitle:target:action: :> button
+ action-string lookup-selector { id { id SEL id id SEL } } ?-> buttonWithTitle:target:action: :> button
item button -> setView:
item ;