factor/library/cocoa/ui.factor

71 lines
1.6 KiB
Factor

! Copyright (C) 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: objc-FactorApplicationDelegate
DEFER: FactorApplicationDelegate
IN: cocoa
USING: gadgets gadgets-listener kernel objc objc-NSApplication
objc-NSObject ;
: finder-run-files ( alien -- )
CF>string-array listener-run-files
NSApp NSApplicationDelegateReplySuccess
[replyToOpenOrPrint:] ;
! Handle Open events from the Finder
"NSObject" "FactorApplicationDelegate" {
{ "application:openFiles:" "void" { "id" "SEL" "id" "id" }
[ >r 3drop r> finder-run-files ]
}
} { } define-objc-class
: install-app-delegate ( -- )
NSApp
FactorApplicationDelegate [alloc] [init] [setDelegate:] ;
: init-cocoa-ui ( -- )
reset-views
reset-callbacks
init-ui
install-app-delegate
register-services
default-main-menu ;
IN: gadgets
USING: errors freetype objc-NSOpenGLContext
objc-NSOpenGLView objc-NSView objc-NSWindow ;
: redraw-world ( handle -- )
world-handle 1 [setNeedsDisplay:] ;
: open-window* ( world title -- )
>r <FactorView> r> <ViewWindow>
dup install-window-delegate
[contentView] [release] ;
: select-gl-context ( handle -- )
[openGLContext] [makeCurrentContext] ;
: flush-gl-context ( handle -- )
[openGLContext] [flushBuffer] ;
IN: shells
: ui
running.app? [
"The Factor UI requires you to run the supplied Factor.app." throw
] unless
[
[
init-cocoa-ui
listener-window
finish-launching
event-loop
] with-cocoa
] with-freetype ;
IN: kernel
: default-shell running.app? "ui" "tty" ? ;