From 341caf245ca60d7181248e0eb8e0d6147e6d140f Mon Sep 17 00:00:00 2001 From: slava Date: Sat, 14 Oct 2006 02:49:14 +0000 Subject: [PATCH] Interface builder menu bar not works --- .../English.lproj/Factor.nib/classes.nib | 15 +++++++++- .../English.lproj/Factor.nib/info.nib | 4 +-- .../English.lproj/Factor.nib/keyedobjects.nib | Bin 11899 -> 11495 bytes contrib/README.txt | 1 + .../cocoa-callbacks.factor | 8 ++++-- library/modules.factor | 6 ---- library/syntax/parse-stream.factor | 6 ++++ library/ui/cocoa/load.factor | 1 - library/ui/cocoa/ui.factor | 27 ++++++++++++++++-- library/ui/tools/listener.factor | 2 +- vm/Config.macosx | 2 +- 11 files changed, 54 insertions(+), 18 deletions(-) rename library/ui/cocoa/callback.factor => contrib/cocoa-callbacks.factor (81%) diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib index b9b4b09f6b..bf3d2a6560 100644 --- a/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib +++ b/Factor.app/Contents/Resources/English.lproj/Factor.nib/classes.nib @@ -1,4 +1,17 @@ { - IBClasses = ({CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }); + IBClasses = ( + { + ACTIONS = { + newFactorWorkspace = id; + runFactorFile = id; + saveFactorImage = id; + saveFactorImageAs = id; + showFactorHelp = id; + }; + CLASS = FirstResponder; + LANGUAGE = ObjC; + SUPERCLASS = NSObject; + } + ); IBVersion = 1; } \ No newline at end of file diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib index bcc1ea3254..68d7cbf925 100644 --- a/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib +++ b/Factor.app/Contents/Resources/English.lproj/Factor.nib/info.nib @@ -3,11 +3,11 @@ IBDocumentLocation - 1622 173 356 240 0 0 2560 1578 + 1207 49 525 491 0 0 2560 1578 IBEditorPositions 29 - 524 461 270 44 0 0 2560 1578 + 1771 315 420 44 0 0 2560 1578 IBFramework Version 439.0 diff --git a/Factor.app/Contents/Resources/English.lproj/Factor.nib/keyedobjects.nib b/Factor.app/Contents/Resources/English.lproj/Factor.nib/keyedobjects.nib index ea37efcd1784ed0251f1ee6e1fe6b386ae176521..a51fdd87814a2d97f698d22bccdfe660a16f3574 100644 GIT binary patch literal 11495 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 Pijt4a!}2lySx5DMnmmnc literal 11899 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 diff --git a/contrib/README.txt b/contrib/README.txt index 92dfa1dba1..c372d72f49 100644 --- a/contrib/README.txt +++ b/contrib/README.txt @@ -14,6 +14,7 @@ Available libraries: - boids -- Graphics demo for the UI (Eduardo Cavazos) - cairo -- cairo bindings (Sampo Vuori) - calendar -- timestamp/calendar with timezones (Doug Coleman) +- cocoa-callbacks -- Allows you to use Factor quotations as actions (Slava Pestov) - concurrency -- Erlang/Termite-style distibuted concurrency (Chris Double) - coroutines -- coroutines (Chris Double) - crypto -- Various cryptographic algorithms (Doug Coleman) diff --git a/library/ui/cocoa/callback.factor b/contrib/cocoa-callbacks.factor similarity index 81% rename from library/ui/cocoa/callback.factor rename to contrib/cocoa-callbacks.factor index 0e1e12624c..e4aa8c0018 100644 --- a/library/ui/cocoa/callback.factor +++ b/contrib/cocoa-callbacks.factor @@ -3,8 +3,8 @@ IN: objc-classes DEFER: FactorCallback -IN: cocoa -USING: gadgets hashtables kernel namespaces objc ; +IN: cocoa-callbacks +USING: gadgets hashtables kernel namespaces objc cocoa ; SYMBOL: callbacks @@ -29,4 +29,6 @@ reset-callbacks : ( quot -- id ) FactorCallback -> alloc -> init - [ callbacks get set-hash ] keep ; \ No newline at end of file + [ callbacks get set-hash ] keep ; + +PROVIDE: callbacks ; diff --git a/library/modules.factor b/library/modules.factor index 99569de787..78361b9154 100644 --- a/library/modules.factor +++ b/library/modules.factor @@ -35,12 +35,6 @@ C: module ( name files tests -- module ) : require ( name -- ) dup module [ drop ] [ load-module ] if do-parse-hook ; -: run-files ( seq -- ) - [ - bootstrapping? get - [ parse-file % ] [ run-file ] ? each - ] no-parse-hook ; - : process-files ( seq -- newseq ) [ dup string? [ [ t ] 2array ] when ] map [ second call ] subset diff --git a/library/syntax/parse-stream.factor b/library/syntax/parse-stream.factor index 4ec43ef586..4cc00f9003 100644 --- a/library/syntax/parse-stream.factor +++ b/library/syntax/parse-stream.factor @@ -82,6 +82,12 @@ SYMBOL: parse-hook : run-file ( file -- ) parse-file call ; +: run-files ( seq -- ) + [ + bootstrapping? get + [ parse-file % ] [ run-file ] ? each + ] no-parse-hook ; + : no-parse-hook ( quot -- ) [ parse-hook off call ] with-scope ; inline diff --git a/library/ui/cocoa/load.factor b/library/ui/cocoa/load.factor index 73c470f2f5..898e2331d7 100644 --- a/library/ui/cocoa/load.factor +++ b/library/ui/cocoa/load.factor @@ -6,7 +6,6 @@ PROVIDE: library/ui/cocoa { "core-foundation.factor" "types.factor" "init-cocoa.factor" - "callback.factor" "application-utils.factor" "pasteboard-utils.factor" "view-utils.factor" diff --git a/library/ui/cocoa/ui.factor b/library/ui/cocoa/ui.factor index 0b06024e6d..626006a419 100644 --- a/library/ui/cocoa/ui.factor +++ b/library/ui/cocoa/ui.factor @@ -4,8 +4,9 @@ IN: objc-classes DEFER: FactorApplicationDelegate IN: cocoa -USING: arrays gadgets gadgets-listener gadgets-workspace -hashtables kernel memory namespaces objc sequences errors freetype ; +USING: arrays gadgets gadgets-listener gadgets-help +gadgets-workspace hashtables kernel memory namespaces objc +sequences errors freetype help ; : finder-run-files ( alien -- ) #! We filter out the image name since that might be there on @@ -14,18 +15,38 @@ hashtables kernel memory namespaces objc sequences errors freetype ; NSApp NSApplicationDelegateReplySuccess -> replyToOpenOrPrint: ; +: menu-run-files ( -- ) + open-panel [ listener-run-files ] when* ; + ! Handle Open events from the Finder "NSObject" "FactorApplicationDelegate" { { "application:openFiles:" "void" { "id" "SEL" "id" "id" } [ >r 3drop r> finder-run-files ] } + + { "runFactorFile:" "id" { "id" "SEL" "id" } + [ 3drop menu-run-files f ] + } + + { "newFactorWorkspace:" "id" { "id" "SEL" "id" } + [ 3drop workspace-window f ] + } + + { "showFactorHelp:" "id" { "id" "SEL" "id" } + [ 3drop "handbook" help-gadget call-tool f ] + } } define-objc-class : install-app-delegate ( -- ) NSApp FactorApplicationDelegate install-delegate ; +: load-nib ( -- ) + NSBundle + "Factor.nib" NSApp -> loadNibNamed:owner: + drop ; + : init-cocoa ( -- ) - reset-callbacks + load-nib install-app-delegate register-services init-clipboard ; diff --git a/library/ui/tools/listener.factor b/library/ui/tools/listener.factor index ba6fbdc5e9..f35189d5d7 100644 --- a/library/ui/tools/listener.factor +++ b/library/ui/tools/listener.factor @@ -89,7 +89,7 @@ M: listener-gadget tool-help dup empty? [ drop ] [ - [ [ run-file ] each ] curry call-listener + [ run-files ] curry call-listener ] if ; : listener-eof ( listener -- ) diff --git a/vm/Config.macosx b/vm/Config.macosx index de71d178cf..8e35a3a06a 100644 --- a/vm/Config.macosx +++ b/vm/Config.macosx @@ -1,3 +1,3 @@ include vm/Config.unix PLAF_OBJS += vm/os-macosx.o vm/mach_signal.o -LIBS= -lm -framework Cocoa -framework OpenGL -L/usr/X11R6/lib -lfreetype +LIBS= -lm -framework Cocoa -framework OpenGL -framework AppKit -L/usr/X11R6/lib -lfreetype -- 2.34.1