diff --git a/TODO.FACTOR.txt b/TODO.FACTOR.txt index 928cf3c4d8..071a96f476 100644 --- a/TODO.FACTOR.txt +++ b/TODO.FACTOR.txt @@ -1,5 +1,3 @@ -- redefine generic as tuple constructor -- still appears generic - - remove F_USERENV rel - update walker for new interpreter - quotations should store their originating word diff --git a/library/cocoa/menu-bar.factor b/library/cocoa/menu-bar.factor index 05b93d8491..72ae449c6a 100644 --- a/library/cocoa/menu-bar.factor +++ b/library/cocoa/menu-bar.factor @@ -1,3 +1,5 @@ +! Copyright (C) 2005, 2006 Kevin Reid. +! See http://factorcode.org/license.txt for BSD license. USING: cocoa compiler gadgets gadgets-browser gadgets-launchpad gadgets-layouts gadgets-listener kernel memory objc objc-FactorCallback objc-NSApplication objc-NSMenu @@ -9,10 +11,11 @@ IN: gadgets-cocoa GENERIC: to-target-and-action ( spec -- target action ) -M: f to-target-and-action f ; -M: string to-target-and-action sel_registerName f swap ; -M: word to-target-and-action - unit "perform:" sel_registerName ; +M: f to-target-and-action f swap ; +M: string to-target-and-action sel_registerName f ; +M: word to-target-and-action unit to-target-and-action ; +M: quotation to-target-and-action + "perform:" sel_registerName swap ; : ( title -- ) NSMenu [alloc] @@ -29,8 +32,8 @@ M: word to-target-and-action r> [initWithTitle:action:keyEquivalent:] [autorelease] ; -: make-menu-item-2 ( title spec -- item ) - swap to-target-and-action swap >r swap dup r> [setTarget:] ; +: make-menu-item ( title spec -- item ) + to-target-and-action >r swap dup r> [setTarget:] ; : submenu-to-item ( menu -- item ) dup [title] CF>string f "" dup rot [setSubmenu:] ; @@ -62,7 +65,7 @@ DEFER: described-menu drop NSMenuItem [separatorItem] ] [ dup first string? [ - [ first3 make-menu-item-2 ] keep + [ first3 swap make-menu-item ] keep dup length 4 = [ fourth call ] [ drop ] if ] [ [ first described-menu ] keep @@ -105,10 +108,11 @@ DEFER: described-menu } [ NSApp over [setAppleMenu:] ] } { { "File" - { "Listener" listener-window "n" } + { "New Listener" listener-window "n" } + { "New Browser" [ f browser-window ] "b" } + { } { "Run..." menu-run-file "o" } { } - { "Browser" browser-window "b" } { "Apropos" apropos-window "r" } { "Globals" globals-window "" } { "Memory" memory-window "" } diff --git a/library/ui/browser.factor b/library/ui/browser.factor index b199925f5a..aa1fb2c124 100644 --- a/library/ui/browser.factor +++ b/library/ui/browser.factor @@ -108,7 +108,8 @@ C: browser ( -- browser ) { 1/4 1/4 1/2 } over set-track-sizes ; : browser-window ( word -- ) - [ "Browser" open-window ] keep show-word ; + [ "Browser" open-window ] keep + over [ show-word ] [ 2drop ] if ; M: word show-object ( word button -- ) find-browser [ show-word ] [ browser-window ] if* ; diff --git a/library/ui/launchpad.factor b/library/ui/launchpad.factor index e6322d8abe..8fa66aba90 100644 --- a/library/ui/launchpad.factor +++ b/library/ui/launchpad.factor @@ -13,7 +13,7 @@ help inspector io kernel memory namespaces sequences ; >r make-pane r> open-window ; : handbook-window ( -- ) - T{ link f "handbook" } browser-window ; + T{ link f "handbook" } inspector-window ; : memory-window ( -- ) [ heap-stats. terpri room. ] "Memory" pane-window ; @@ -32,7 +32,7 @@ help inspector io kernel memory namespaces sequences ; { "Listener" [ listener-window ] } { "Documentation" [ handbook-window ] } { "Help index" [ articles-window ] } - { "Browser" [ browser-window ] } + { "Browser" [ f browser-window ] } { "Apropos" [ apropos-window ] } { "Globals" [ globals-window ] } { "Memory" [ memory-window ] }