factor/library/ui/cocoa/application-utils.factor

60 lines
1.6 KiB
Factor
Raw Normal View History

2006-02-09 20:36:11 -05:00
! Copyright (C) 2006 Slava Pestov
! See http://factorcode.org/license.txt for BSD license.
IN: cocoa
2006-05-18 23:23:19 -04:00
USING: alien errors gadgets io kernel namespaces objc
objc-classes sequences threads ;
2006-02-09 20:36:11 -05:00
: NSApplicationDelegateReplySuccess 0 ;
: NSApplicationDelegateReplyCancel 1 ;
: NSApplicationDelegateReplyFailure 2 ;
2006-02-09 20:36:11 -05:00
: with-autorelease-pool ( quot -- )
NSAutoreleasePool -> new slip -> release ; inline
2006-02-09 20:36:11 -05:00
: NSApp NSApplication -> sharedApplication ;
2006-05-18 22:01:38 -04:00
2006-03-13 00:41:59 -05:00
: with-cocoa ( quot -- )
2006-05-18 22:01:38 -04:00
[ NSApp drop call ] with-autorelease-pool ;
2006-03-13 00:41:59 -05:00
: <NSString> ( str -- alien ) <CFString> -> autorelease ;
: <NSArray> ( seq -- alien ) <CFArray> -> autorelease ;
2006-02-09 20:36:11 -05:00
2006-02-09 22:11:22 -05:00
: CFRunLoopDefaultMode "kCFRunLoopDefaultMode" <NSString> ;
: next-event ( app -- event )
0 f CFRunLoopDefaultMode 1
-> nextEventMatchingMask:untilDate:inMode:dequeue: ;
2006-02-09 20:36:11 -05:00
2006-03-19 18:18:12 -05:00
: do-event ( app -- ? )
[
dup next-event [ -> sendEvent: t ] [ drop f ] if*
2006-03-19 18:18:12 -05:00
] with-autorelease-pool ;
2006-02-09 20:36:11 -05:00
: do-events ( app -- )
2006-03-19 18:18:12 -05:00
dup do-event [ do-events ] [ drop ] if ;
2006-02-09 20:36:11 -05:00
2006-03-13 01:12:26 -05:00
: event-loop ( -- )
2006-05-18 22:01:38 -04:00
[ NSApp do-events ui-step ] with-autorelease-pool
event-loop ;
: add-observer ( observer selector name object -- )
>r >r >r >r NSNotificationCenter -> defaultCenter
r> r> sel_registerName
r> r> -> addObserver:selector:name:object: ;
2006-03-21 01:43:03 -05:00
: remove-observer ( observer -- )
>r NSNotificationCenter -> defaultCenter r>
-> removeObserver: ;
2006-03-21 01:43:03 -05:00
: finish-launching ( -- ) NSApp -> finishLaunching ;
2006-03-17 02:50:16 -05:00
2006-05-28 20:28:26 -04:00
: install-delegate ( receiver delegate -- )
-> alloc -> init -> setDelegate: ;
2006-05-28 20:28:26 -04:00
IN: errors
2006-05-18 23:23:19 -04:00
: objc-error. ( error -- )
"Objective C exception:" print
third -> reason CF>string print ;