factor/library/ui/cocoa/ui.factor

90 lines
2.1 KiB
Factor
Raw Normal View History

2006-03-12 23:21:01 -05:00
! Copyright (C) 2006 Slava Pestov.
2006-03-17 02:50:16 -05:00
! See http://factorcode.org/license.txt for BSD license.
IN: objc-FactorApplicationDelegate
2006-03-21 01:43:03 -05:00
DEFER: FactorApplicationDelegate
2006-03-14 21:09:25 -05:00
IN: cocoa
USING: arrays gadgets gadgets-layouts gadgets-listener
hashtables kernel namespaces objc objc-NSApplication
objc-NSObject objc-NSWindow sequences ;
2006-03-17 02:50:16 -05:00
: finder-run-files ( alien -- )
CF>string-array listener-run-files
NSApp NSApplicationDelegateReplySuccess
[replyToOpenOrPrint:] ;
2006-03-12 23:21:01 -05:00
! 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:] ;
2006-05-24 19:34:30 -04:00
: init-cocoa-ui ( -- )
reset-callbacks
init-ui
install-app-delegate
register-services
default-main-menu ;
: rect>NSRect
dup world-loc first2 rot rect-dim first2 <NSRect> ;
2006-05-26 02:29:44 -04:00
: gadget-window ( world -- )
[
dup <FactorView>
dup rot rect>NSRect <ViewWindow>
2006-05-26 02:29:44 -04:00
dup install-window-delegate
over [release]
2006-05-26 02:29:44 -04:00
2array
] keep set-world-handle ;
2006-03-18 02:23:57 -05:00
IN: gadgets
2006-05-24 19:34:30 -04:00
USING: errors freetype objc-NSOpenGLContext
2006-05-26 02:29:44 -04:00
objc-NSOpenGLView objc-NSView ;
: redraw-world ( world -- )
2006-05-26 02:44:31 -04:00
world-handle first 1 [setNeedsDisplay:] ;
2006-03-18 02:23:57 -05:00
2006-05-26 02:29:44 -04:00
: set-title ( string world -- )
2006-05-26 02:44:31 -04:00
world-handle second swap <NSString> [setTitle:] ;
2006-03-18 02:23:57 -05:00
2006-05-26 02:29:44 -04:00
: open-window* ( world -- )
dup gadget-window
dup start-world
2006-05-26 02:44:31 -04:00
world-handle second f [makeKeyAndOrderFront:] ;
2006-03-18 02:23:57 -05:00
: select-gl-context ( handle -- )
2006-05-26 02:44:31 -04:00
first [openGLContext] [makeCurrentContext] ;
: flush-gl-context ( handle -- )
2006-05-26 02:44:31 -04:00
first [openGLContext] [flushBuffer] ;
IN: shells
2006-03-15 00:57:02 -05:00
2006-03-14 21:09:25 -05:00
: ui
2006-03-19 15:43:40 -05:00
running.app? [
"The Factor UI requires you to run the supplied Factor.app." throw
] unless
2006-03-13 00:41:59 -05:00
[
2006-03-14 21:09:25 -05:00
[
2006-05-24 19:34:30 -04:00
init-cocoa-ui
restore-windows? [
restore-windows
] [
listener-window
] if
2006-03-17 02:50:16 -05:00
finish-launching
2006-03-14 21:09:25 -05:00
event-loop
] with-cocoa
] with-freetype ;
2006-03-19 18:00:07 -05:00
IN: kernel
: default-shell running.app? "ui" "tty" ? ;