cocoa.touchbar: use arrays of strings instead of enums.

factor-shell
John Benediktsson 2018-01-01 15:01:04 -08:00
parent 6ddeeac3dc
commit 07f4d19947
1 changed files with 6 additions and 14 deletions

View File

@ -1,22 +1,14 @@
! Copyright (C) 2017 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license.
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 ;
USING: alien.c-types cocoa cocoa.classes cocoa.messages
cocoa.runtime combinators core-foundation.strings kernel locals
;
IN: cocoa.touchbar
! ui.backend.cocoa.views creates buttons for each of these actions
ENUM: default-touchbar refresh-all-action auto-use-action ;
: enum>CFStringArray ( seq -- alien )
enum>keys
NSArray -> alloc
swap <CFStringArray> -> initWithArray: ;
: make-touchbar ( enum self -- touchbar )
: make-touchbar ( seq self -- touchbar )
[ NSTouchBar -> alloc -> init dup ] dip -> setDelegate: {
[ swap enum>CFStringArray { void { id SEL id } } ?-> setDefaultItemIdentifiers: ]
[ swap enum>CFStringArray { void { id SEL id } } ?-> setCustomizationAllowedItemIdentifiers: ]
[ swap <CFStringArray> { void { id SEL id } } ?-> setDefaultItemIdentifiers: ]
[ swap <CFStringArray> { void { id SEL id } } ?-> setCustomizationAllowedItemIdentifiers: ]
[ nip ]
} 2cleave ;