Browser now makes more efficient use of screen space; new MVC/reactive programming framework
parent
e94d38c31b
commit
f47986dcff
|
@ -171,6 +171,7 @@ sequences vectors words ;
|
|||
"/library/ui/freetype/freetype.factor"
|
||||
"/library/ui/freetype/freetype-gl.factor"
|
||||
|
||||
"/library/ui/models.factor"
|
||||
"/library/ui/backend.factor"
|
||||
"/library/ui/timers.factor"
|
||||
"/library/ui/gadgets.factor"
|
||||
|
@ -180,10 +181,11 @@ sequences vectors words ;
|
|||
"/library/ui/gadgets/frames.factor"
|
||||
"/library/ui/world.factor"
|
||||
"/library/ui/paint.factor"
|
||||
"/library/ui/gestures.factor"
|
||||
"/library/ui/gadgets/controls.factor"
|
||||
"/library/ui/gadgets/grid-lines.factor"
|
||||
"/library/ui/gadgets/theme.factor"
|
||||
"/library/ui/gadgets/labels.factor"
|
||||
"/library/ui/gestures.factor"
|
||||
"/library/ui/gadgets/borders.factor"
|
||||
"/library/ui/gadgets/buttons.factor"
|
||||
"/library/ui/gadgets/tiles.factor"
|
||||
|
@ -196,7 +198,7 @@ sequences vectors words ;
|
|||
"/library/ui/gadgets/incremental.factor"
|
||||
"/library/ui/gadgets/paragraphs.factor"
|
||||
"/library/ui/gadgets/panes.factor"
|
||||
"/library/ui/gadgets/tabs.factor"
|
||||
"/library/ui/gadgets/books.factor"
|
||||
"/library/ui/gadgets/outliner.factor"
|
||||
"/library/ui/ui.factor"
|
||||
"/library/ui/gadgets/presentations.factor"
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
! Copyright (C) 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-books
|
||||
USING: gadgets gadgets-controls gadgets-panes gadgets-scrolling
|
||||
kernel sequences ;
|
||||
|
||||
TUPLE: book page pages ;
|
||||
|
||||
: show-page ( n book -- )
|
||||
dup book-page unparent
|
||||
[ book-pages nth ] keep
|
||||
[ set-book-page ] 2keep
|
||||
add-gadget ;
|
||||
|
||||
C: book ( pages -- book )
|
||||
dup delegate>gadget
|
||||
[ set-book-pages ] keep
|
||||
0 over show-page ;
|
||||
|
||||
: <book-control> ( model pages -- book )
|
||||
<book> [ show-page ] <control> ;
|
||||
|
||||
M: book pref-dim* ( book -- dim ) book-page pref-dim ;
|
||||
|
||||
M: book layout* ( book -- )
|
||||
dup rect-dim swap book-page set-gadget-dim ;
|
||||
|
||||
: make-book ( model obj quots -- assoc )
|
||||
[ make-pane <scroller> ] map-with <book-control> ;
|
|
@ -26,3 +26,6 @@ M: border pref-dim* ( border -- dim )
|
|||
|
||||
M: border layout* ( border -- )
|
||||
dup layout-border-loc layout-border-dim ;
|
||||
|
||||
: <spacing> ( -- gadget )
|
||||
<gadget> { 10 10 } over set-gadget-dim ;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
! Copyright (C) 2005 Slava Pestov.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
IN: gadgets-buttons
|
||||
USING: gadgets gadgets-borders gadgets-theme generic io kernel
|
||||
math namespaces sequences styles threads ;
|
||||
USING: gadgets gadgets-borders gadgets-controls gadgets-labels
|
||||
gadgets-theme generic io kernel math models namespaces sequences
|
||||
strings styles threads ;
|
||||
|
||||
TUPLE: button rollover? pressed? selected? quot ;
|
||||
|
||||
|
@ -35,8 +36,12 @@ M: button gadget-gestures
|
|||
{ T{ mouse-enter } [ button-update ] }
|
||||
} ;
|
||||
|
||||
GENERIC: >label ( obj -- gadget )
|
||||
M: string >label <label> ;
|
||||
M: object >label ;
|
||||
|
||||
C: button ( gadget quot -- button )
|
||||
rot <default-border> over set-gadget-delegate
|
||||
rot >label <default-border> over set-gadget-delegate
|
||||
[ set-button-quot ] keep ;
|
||||
|
||||
: <highlight-button> ( gadget quot -- button )
|
||||
|
@ -86,3 +91,10 @@ M: button-paint draw-interior ( button paint -- )
|
|||
|
||||
M: button-paint draw-boundary ( button paint -- )
|
||||
button-paint draw-boundary ;
|
||||
|
||||
: <radio-control> ( model value gadget -- gadget )
|
||||
over [ swap control-model set-model ] curry <bevel-button>
|
||||
swap [ swap >r = r> set-button-selected? ] curry <control> ;
|
||||
|
||||
: <radio-box> ( model assoc -- gadget )
|
||||
[ first2 <radio-control> ] map-with make-shelf ;
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
! Copyright (C) 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-controls
|
||||
USING: gadgets kernel models ;
|
||||
|
||||
TUPLE: control model quot ;
|
||||
|
||||
C: control ( model gadget quot -- gadget )
|
||||
[ set-control-quot ] keep
|
||||
[ set-gadget-delegate ] keep
|
||||
[ set-control-model ] keep
|
||||
dup model-changed ;
|
||||
|
||||
M: control add-notify*
|
||||
dup control-model add-connection ;
|
||||
|
||||
M: control remove-notify*
|
||||
dup control-model remove-connection ;
|
||||
|
||||
M: control model-changed ( gadget -- )
|
||||
[ control-model model-value ] keep
|
||||
[ dup control-quot call ] keep relayout ;
|
|
@ -1,8 +1,9 @@
|
|||
! Copyright (C) 2005 Slava Pestov.
|
||||
! See http://factor.sf.net/license.txt for BSD license.
|
||||
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-labels
|
||||
USING: arrays freetype gadgets gadgets-theme generic hashtables
|
||||
io kernel math namespaces opengl sequences styles ;
|
||||
USING: arrays freetype gadgets gadgets-controls gadgets-theme
|
||||
generic hashtables io kernel math namespaces opengl sequences
|
||||
styles ;
|
||||
|
||||
! A label gadget draws a string.
|
||||
TUPLE: label text font color ;
|
||||
|
@ -12,10 +13,6 @@ C: label ( text -- label )
|
|||
[ set-label-text ] keep
|
||||
dup label-theme ;
|
||||
|
||||
: set-label-text* ( text label -- )
|
||||
2dup label-text =
|
||||
[ 2dup [ set-label-text ] keep relayout ] unless 2drop ;
|
||||
|
||||
: label-size ( gadget text -- dim )
|
||||
dup label-font lookup-font dup font-height >r
|
||||
swap label-text string-width r> 2array ;
|
||||
|
@ -27,3 +24,6 @@ M: label pref-dim* ( label -- dim ) label-size ;
|
|||
dup label-font swap label-text draw-string ;
|
||||
|
||||
M: label draw-gadget* ( label -- ) draw-label ;
|
||||
|
||||
: <label-control> ( model -- gadget )
|
||||
"" <label> [ set-label-text ] <control> ;
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-panes
|
||||
USING: arrays gadgets gadgets-buttons gadgets-editors
|
||||
gadgets-frames gadgets-grids gadgets-labels gadgets-scrolling
|
||||
gadgets-theme generic hashtables io kernel line-editor math
|
||||
namespaces prettyprint sequences strings styles threads ;
|
||||
USING: arrays gadgets gadgets-buttons gadgets-controls
|
||||
gadgets-editors gadgets-frames gadgets-grids gadgets-labels
|
||||
gadgets-scrolling gadgets-theme generic hashtables io kernel
|
||||
line-editor math namespaces prettyprint sequences strings styles
|
||||
threads ;
|
||||
|
||||
TUPLE: pane output active current input prototype continuation ;
|
||||
|
||||
|
@ -144,3 +145,6 @@ M: pane with-stream-style ( quot style pane -- )
|
|||
: make-pane ( quot -- pane )
|
||||
#! Execute the quotation with output to an output-only pane.
|
||||
<pane> [ swap with-pane ] keep ; inline
|
||||
|
||||
: <pane-control> ( model quot -- pane )
|
||||
[ with-pane ] curry <pane> swap <control> ;
|
||||
|
|
|
@ -1,77 +0,0 @@
|
|||
! Copyright (C) 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-tabs
|
||||
USING: arrays gadgets gadgets-buttons gadgets-frames
|
||||
gadgets-grids gadgets-labels gadgets-panes gadgets-scrolling
|
||||
gadgets-theme kernel sequences ;
|
||||
|
||||
TUPLE: book page pages ;
|
||||
|
||||
: show-page ( gadget book -- )
|
||||
dup book-page unparent [ set-book-page ] 2keep add-gadget ;
|
||||
|
||||
C: book ( pages -- book )
|
||||
dup delegate>gadget
|
||||
[ set-book-pages ] keep
|
||||
dup book-pages first over show-page ;
|
||||
|
||||
M: book pref-dim* ( book -- dim ) book-page pref-dim ;
|
||||
|
||||
M: book layout* ( book -- )
|
||||
dup rect-dim swap book-page set-gadget-dim ;
|
||||
|
||||
TUPLE: radio-box value buttons quot ;
|
||||
|
||||
: update-selection ( radio-box -- )
|
||||
dup radio-box-buttons [
|
||||
second f swap set-button-selected?
|
||||
] each
|
||||
dup radio-box-value over radio-box-buttons assoc
|
||||
t swap set-button-selected?
|
||||
dup dup radio-box-quot call
|
||||
relayout-1 ;
|
||||
|
||||
: find-radio-box [ radio-box? ] find-parent ;
|
||||
|
||||
: set-radio-box-value* ( value gadget -- )
|
||||
[ set-radio-box-value ] keep update-selection ;
|
||||
|
||||
: select-value ( button value -- )
|
||||
swap find-radio-box set-radio-box-value* ;
|
||||
|
||||
: <radio-button> ( string value -- gadget )
|
||||
[ select-value ] curry >r <label> r> <bevel-button> ;
|
||||
|
||||
C: radio-box ( assoc quot -- gadget )
|
||||
{ 1 0 } over delegate>pack
|
||||
[ set-radio-box-quot ] keep
|
||||
>r [ first2 tuck <radio-button> 2array ] map r>
|
||||
[ >r [ second ] map r> add-gadgets ] 2keep
|
||||
[ set-radio-box-buttons ] 2keep
|
||||
[ >r first first r> set-radio-box-value* ] keep
|
||||
dup highlight-theme ;
|
||||
|
||||
TUPLE: tabs buttons book ;
|
||||
|
||||
C: tabs dup delegate>frame ;
|
||||
|
||||
: find-tabs [ tabs? ] find-parent ;
|
||||
|
||||
: update-tabs ( tabs -- )
|
||||
dup tabs-buttons radio-box-value swap tabs-book show-page ;
|
||||
|
||||
: make-tabs ( assoc -- gadget )
|
||||
[ find-tabs [ update-tabs ] when* ] <radio-box> ;
|
||||
|
||||
: set-tabs ( assoc tabs -- )
|
||||
{
|
||||
{ [ dup [ second ] map <book> ] set-tabs-book @center }
|
||||
{ [ make-tabs ] set-tabs-buttons @top }
|
||||
} build-grid ;
|
||||
|
||||
: make-pages ( obj assoc -- assoc )
|
||||
[ first2 swapd make-pane <scroller> 2array ] map-with ;
|
||||
|
||||
: set-pages ( obj assoc tabs -- ) >r make-pages r> set-tabs ;
|
||||
|
||||
: <pages> ( obj assoc -- tabs ) <tabs> [ set-pages ] keep ;
|
|
@ -1,8 +1,8 @@
|
|||
! Copyright (C) 2005, 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets
|
||||
USING: gadgets-labels hashtables kernel math namespaces queues
|
||||
sequences words ;
|
||||
USING: hashtables kernel math models namespaces queues sequences
|
||||
words ;
|
||||
|
||||
GENERIC: gadget-gestures ( gadget -- hash )
|
||||
|
||||
|
@ -139,9 +139,9 @@ V{ } clone hand-buttons set-global
|
|||
: relevant-help ( seq -- help )
|
||||
[ gadget-help ] map [ ] find nip ;
|
||||
|
||||
: show-message ( string/f -- )
|
||||
: show-message ( string/f world -- )
|
||||
#! Show a message in the status bar.
|
||||
world-status [ set-label-text* ] [ drop ] if* ;
|
||||
world-status set-model ;
|
||||
|
||||
: update-help ( -- )
|
||||
#! Update mouse-over help message.
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
! Copyright (C) 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: models
|
||||
USING: generic kernel sequences ;
|
||||
|
||||
TUPLE: model connections value dependencies ;
|
||||
|
||||
M: model = eq? ;
|
||||
|
||||
C: model ( value -- model )
|
||||
[ set-model-value ] keep
|
||||
V{ } clone over set-model-connections
|
||||
V{ } clone over set-model-dependencies ;
|
||||
|
||||
: add-dependency ( model model -- )
|
||||
model-dependencies push ;
|
||||
|
||||
: remove-dependency ( model model -- )
|
||||
model-dependencies delete ;
|
||||
|
||||
DEFER: add-connection
|
||||
|
||||
: activate-model ( model -- )
|
||||
dup model-dependencies [ add-connection ] each-with ;
|
||||
|
||||
DEFER: remove-connection
|
||||
|
||||
: deactivate-model ( model -- )
|
||||
dup model-dependencies [ remove-connection ] each-with ;
|
||||
|
||||
GENERIC: model-changed ( model -- )
|
||||
|
||||
: add-connection ( obj model -- )
|
||||
dup model-connections empty? [ dup activate-model ] when
|
||||
model-connections push ;
|
||||
|
||||
: remove-connection ( obj model -- )
|
||||
[ model-connections delete ] keep
|
||||
dup model-connections empty? [ dup deactivate-model ] when
|
||||
drop ;
|
||||
|
||||
: set-model ( value model -- )
|
||||
2dup model-value = [
|
||||
2drop
|
||||
] [
|
||||
[ set-model-value ] keep
|
||||
model-connections [ model-changed ] each
|
||||
] if ;
|
||||
|
||||
: change-model ( model quot -- )
|
||||
over >r >r model-value r> call r> set-model ; inline
|
||||
|
||||
: delegate>model ( obj -- )
|
||||
f <model> swap set-delegate ;
|
||||
|
||||
TUPLE: filter model quot ;
|
||||
|
||||
C: filter ( model quot -- filter )
|
||||
dup delegate>model
|
||||
[ set-filter-quot ] keep
|
||||
[ set-filter-model ] 2keep
|
||||
[ add-dependency ] keep
|
||||
dup model-changed ;
|
||||
|
||||
M: filter model-changed ( filter -- )
|
||||
dup filter-model model-value over filter-quot call
|
||||
swap set-model ;
|
||||
|
||||
TUPLE: compose ;
|
||||
|
||||
C: compose ( models -- compose )
|
||||
dup delegate>model
|
||||
[ set-model-dependencies ] keep
|
||||
dup model-changed ;
|
||||
|
||||
M: compose model-changed ( compose -- )
|
||||
dup model-dependencies [ model-value ] map
|
||||
swap set-model ;
|
|
@ -1,44 +1,51 @@
|
|||
! Copyright (C) 2006 Slava Pestov.
|
||||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-browser
|
||||
USING: gadgets gadgets-buttons gadgets-labels gadgets-panes
|
||||
USING: arrays gadgets gadgets-borders gadgets-buttons
|
||||
gadgets-frames gadgets-labels gadgets-panes
|
||||
gadgets-presentations gadgets-scrolling gadgets-search
|
||||
gadgets-tabs gadgets-theme gadgets-tiles gadgets-tracks generic
|
||||
hashtables help inspector kernel math prettyprint sequences
|
||||
words ;
|
||||
gadgets-books gadgets-theme gadgets-tiles gadgets-tracks generic
|
||||
hashtables help inspector kernel math models namespaces
|
||||
prettyprint sequences words ;
|
||||
|
||||
TUPLE: browser-track showing builder closer ;
|
||||
TUPLE: asset-track showing builder closer ;
|
||||
|
||||
C: browser-track ( builder closer -- gadget )
|
||||
C: asset-track ( builder closer -- gadget )
|
||||
{ 0 1 } <track> over set-delegate
|
||||
H{ } clone over set-browser-track-showing
|
||||
[ set-browser-track-closer ] keep
|
||||
[ set-browser-track-builder ] keep ;
|
||||
H{ } clone over set-asset-track-showing
|
||||
[ set-asset-track-closer ] keep
|
||||
[ set-asset-track-builder ] keep ;
|
||||
|
||||
: showing-asset? ( asset track -- ? )
|
||||
browser-track-showing hash-member? ;
|
||||
asset-track-showing hash-member? ;
|
||||
|
||||
: (show-asset) ( gadget asset track -- )
|
||||
[ browser-track-showing set-hash ] 3keep nip track-add ;
|
||||
[ asset-track-showing set-hash ] 3keep nip track-add ;
|
||||
|
||||
: show-asset ( asset track -- )
|
||||
2dup showing-asset? [
|
||||
2drop
|
||||
] [
|
||||
[ browser-track-builder call ] 2keep (show-asset)
|
||||
[ asset-track-builder call ] 2keep (show-asset)
|
||||
] if ;
|
||||
|
||||
: hide-asset ( asset track -- )
|
||||
[ dup browser-track-closer call ] 2keep
|
||||
[ browser-track-showing remove-hash* ] keep track-remove ;
|
||||
[ dup asset-track-closer call ] 2keep
|
||||
[ asset-track-showing remove-hash* ] keep track-remove ;
|
||||
|
||||
TUPLE: browser vocab-track word-track ;
|
||||
TUPLE: browser track page ;
|
||||
|
||||
TUPLE: browser-tracks vocabs words ;
|
||||
|
||||
: browser-vocab-track browser-track browser-tracks-vocabs ;
|
||||
|
||||
: browser-word-track browser-track browser-tracks-words ;
|
||||
|
||||
: find-browser [ browser? ] find-parent ;
|
||||
|
||||
: close-tile ( tile -- )
|
||||
dup gadget-parent [
|
||||
browser-track-showing hash>alist rassoc
|
||||
asset-track-showing hash>alist rassoc
|
||||
] keep hide-asset ;
|
||||
|
||||
: <browser-tile> ( gadget title -- gadget )
|
||||
|
@ -49,16 +56,20 @@ TUPLE: browser vocab-track word-track ;
|
|||
|
||||
DEFER: show-vocab
|
||||
|
||||
: <word-pages> ( word -- tabs )
|
||||
: browser-tabs
|
||||
{
|
||||
{ "Definition" [ see ] }
|
||||
{ "Documentation" [ help ] }
|
||||
{ "Calls in" [ usage. ] }
|
||||
{ "Properties" [ word-props describe ] }
|
||||
} <pages> ;
|
||||
{ "Definition" [ see ] }
|
||||
{ "Calls in" [ usage. ] }
|
||||
{ "Properties" [ word-props describe ] }
|
||||
} ;
|
||||
|
||||
: <word-view> ( word -- gadget )
|
||||
[ <word-pages> ] keep word-name <browser-tile> ;
|
||||
: <word-book> ( model word -- book )
|
||||
browser-tabs [ second ] map make-book ;
|
||||
|
||||
: <word-view> ( word browser -- gadget )
|
||||
browser-page swap [ <word-book> ] keep
|
||||
word-name <browser-tile> ;
|
||||
|
||||
: show-word ( word browser -- )
|
||||
over word-vocabulary over show-vocab
|
||||
|
@ -71,7 +82,7 @@ DEFER: show-vocab
|
|||
2dup showing-word? [ hide-word ] [ show-word ] if ;
|
||||
|
||||
: <word-button> ( word -- gadget )
|
||||
dup word-name <label> swap
|
||||
dup word-name swap
|
||||
[ swap find-browser toggle-word ] curry
|
||||
<roll-button> ;
|
||||
|
||||
|
@ -89,7 +100,7 @@ DEFER: show-vocab
|
|||
|
||||
: hide-vocab-words ( vocab browser -- )
|
||||
[
|
||||
browser-word-track browser-track-showing hash-keys
|
||||
browser-word-track asset-track-showing hash-keys
|
||||
[ word-vocabulary = ] subset-with
|
||||
] keep swap [ swap hide-word ] each-with ;
|
||||
|
||||
|
@ -100,8 +111,7 @@ DEFER: show-vocab
|
|||
2dup showing-vocab? [ hide-vocab ] [ show-vocab ] if ;
|
||||
|
||||
: <vocab-button> ( vocab -- gadget )
|
||||
dup <label> swap
|
||||
[ swap find-browser toggle-vocab ] curry
|
||||
dup [ swap find-browser toggle-vocab ] curry
|
||||
<roll-button> ;
|
||||
|
||||
: <vocabs> ( -- gadget )
|
||||
|
@ -110,18 +120,40 @@ DEFER: show-vocab
|
|||
|
||||
: <vocab-track> ( -- track )
|
||||
[ <vocab-view> ] [ find-browser hide-vocab-words ]
|
||||
<browser-track> ;
|
||||
<asset-track> ;
|
||||
|
||||
: <word-track> ( -- track )
|
||||
[ <word-view> ] [ 2drop ] <browser-track> ;
|
||||
: <word-track> ( browser -- track )
|
||||
[ <word-view> ] curry [ 2drop ] <asset-track> ;
|
||||
|
||||
C: browser ( -- browser )
|
||||
C: browser-tracks ( browser -- browser-track )
|
||||
{
|
||||
{ [ <vocabs> ] f 1/5 }
|
||||
{ [ <vocab-track> ] set-browser-vocab-track 1/5 }
|
||||
{ [ <word-track> ] set-browser-word-track 3/5 }
|
||||
{ [ <vocab-track> ] set-browser-tracks-vocabs 1/5 }
|
||||
{ [ <word-track> ] set-browser-tracks-words 3/5 }
|
||||
} { 1 0 } make-track* ;
|
||||
|
||||
: <browser-tabs> ( browser -- tabs )
|
||||
browser-page
|
||||
browser-tabs dup length [ swap first 2array ] 2map
|
||||
<radio-box> ;
|
||||
|
||||
: make-toolbar ( quot -- gadget )
|
||||
{ } make make-shelf dup highlight-theme ; inline
|
||||
|
||||
: <browser-toolbar> ( browser -- toolbar )
|
||||
[
|
||||
<browser-tabs> ,
|
||||
<spacing> ,
|
||||
"Apropos" [ drop apropos-window ] <bevel-button> ,
|
||||
] make-toolbar ;
|
||||
|
||||
C: browser ( -- browser )
|
||||
0 <model> over set-browser-page
|
||||
dup dup {
|
||||
{ [ <browser-toolbar> ] f @top }
|
||||
{ [ <browser-tracks> ] set-browser-track @center }
|
||||
} make-frame* ;
|
||||
|
||||
M: browser gadget-title drop "Browser" ;
|
||||
|
||||
: browser-window ( -- ) <browser> open-window ;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets-help
|
||||
USING: gadgets gadgets-panes gadgets-presentations
|
||||
gadgets-scrolling gadgets-search gadgets-tabs gadgets-tiles
|
||||
gadgets-scrolling gadgets-search gadgets-tiles
|
||||
gadgets-tracks help io kernel sequences words ;
|
||||
|
||||
TUPLE: history pane seq ;
|
||||
|
|
|
@ -8,7 +8,7 @@ gadgets-theme generic help inspector io kernel memory namespaces
|
|||
prettyprint sequences words ;
|
||||
|
||||
: <launchpad> ( menu -- )
|
||||
[ first2 >r <label> [ drop ] r> append <bevel-button> ] map
|
||||
[ first2 [ drop ] append <bevel-button> ] map
|
||||
make-pile 1 over set-pack-fill { 5 5 } over set-pack-gap
|
||||
<default-border> dup highlight-theme ;
|
||||
|
||||
|
|
|
@ -83,7 +83,7 @@ C: titled-gadget ( gadget title -- )
|
|||
[ >r gadget-title r> set-title ] [ 2drop ] if ;
|
||||
|
||||
: open-window ( gadget -- )
|
||||
<status-bar> <world> dup prefer open-window* ;
|
||||
<world> dup prefer open-window* ;
|
||||
|
||||
: open-titled-window ( gadget title -- )
|
||||
<titled-gadget> open-window ;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
! See http://factorcode.org/license.txt for BSD license.
|
||||
IN: gadgets
|
||||
USING: arrays errors freetype gadgets-frames generic hashtables
|
||||
kernel math namespaces opengl sequences ;
|
||||
kernel math models namespaces opengl sequences ;
|
||||
|
||||
! The world gadget is the top level gadget that all (visible)
|
||||
! gadgets are contained in. There is one world per top-level
|
||||
|
@ -22,11 +22,9 @@ TUPLE: world gadget status focus focused? fonts handle loc ;
|
|||
|
||||
DEFER: request-focus
|
||||
|
||||
C: world ( gadget status -- world )
|
||||
{
|
||||
{ [ ] set-world-status @bottom }
|
||||
{ [ ] set-world-gadget @center }
|
||||
} make-frame*
|
||||
C: world ( gadget -- world )
|
||||
f <model> over set-world-status
|
||||
{ { [ ] set-world-gadget @center } } make-frame*
|
||||
t over set-gadget-root?
|
||||
H{ } clone over set-world-fonts
|
||||
dup world-gadget request-focus
|
||||
|
|
Loading…
Reference in New Issue