Tabs gadget improved

darcs
slava 2006-06-17 07:51:06 +00:00
parent 0e2eb30f7d
commit a5cc32ed15
6 changed files with 67 additions and 29 deletions

View File

@ -23,7 +23,6 @@
+ ui: + ui:
- help viewer in ui: show title
- x11 title bars are funny - x11 title bars are funny
- cocoa: starting the UI with +foo switches opens them as files - cocoa: starting the UI with +foo switches opens them as files
- if the listener is running a command when the image is saved, it - if the listener is running a command when the image is saved, it
@ -43,7 +42,6 @@
- need actions for reloading the source file and opening word in jEdit - need actions for reloading the source file and opening word in jEdit
- highlight showing panes in originating list - highlight showing panes in originating list
- single set of tabs across the top - single set of tabs across the top
- toggle/radio buttons/tabs or something
- make-frame should compile - make-frame should compile
- speed up ideas: - speed up ideas:
- only do clipping for certain gadgets - only do clipping for certain gadgets

View File

@ -33,7 +33,7 @@ prettyprint sequences words xml ;
: word-source ( -- ) : word-source ( -- )
#! Write the source for the given word from the vocab as HTML. #! Write the source for the given word from the vocab as HTML.
current-word [ [ word-help ] with-html-stream ] when* ; current-word [ [ see-help ] with-html-stream ] when* ;
: browser-body ( -- ) : browser-body ( -- )
#! Write out the HTML for the body of the main browser page. #! Write out the HTML for the body of the main browser page.

View File

@ -4,7 +4,7 @@ IN: gadgets-buttons
USING: gadgets gadgets-borders gadgets-theme generic io kernel USING: gadgets gadgets-borders gadgets-theme generic io kernel
math namespaces sequences styles threads ; math namespaces sequences styles threads ;
TUPLE: button rollover? pressed? quot ; TUPLE: button rollover? pressed? selected? quot ;
: buttons-down? ( -- ? ) : buttons-down? ( -- ? )
hand-buttons get-global empty? not ; hand-buttons get-global empty? not ;
@ -71,11 +71,12 @@ C: repeat-button ( gadget quot -- button )
M: repeat-button tick ( ms object -- ) nip button-clicked ; M: repeat-button tick ( ms object -- ) nip button-clicked ;
TUPLE: button-paint plain rollover pressed ; TUPLE: button-paint plain rollover pressed selected ;
: button-paint ( button paint -- button paint ) : button-paint ( button paint -- button paint )
{ {
{ [ over button-pressed? ] [ button-paint-pressed ] } { [ over button-pressed? ] [ button-paint-pressed ] }
{ [ over button-selected? ] [ button-paint-selected ] }
{ [ over button-rollover? ] [ button-paint-rollover ] } { [ over button-rollover? ] [ button-paint-rollover ] }
{ [ t ] [ button-paint-plain ] } { [ t ] [ button-paint-plain ] }
} cond ; } cond ;

View File

@ -7,42 +7,71 @@ gadgets-theme kernel sequences ;
TUPLE: book page pages ; TUPLE: book page pages ;
: show-page ( n book -- ) : show-page ( gadget book -- )
dup book-page unparent dup book-page unparent [ set-book-page ] 2keep add-gadget ;
[ book-pages nth ] keep
[ set-book-page ] 2keep
add-gadget ;
C: book ( pages -- book ) C: book ( pages -- book )
dup delegate>gadget dup delegate>gadget
[ set-book-pages ] keep [ set-book-pages ] keep
0 over show-page ; dup book-pages first over show-page ;
M: book pref-dim* ( book -- dim ) book-page pref-dim ; M: book pref-dim* ( book -- dim ) book-page pref-dim ;
M: book layout* ( book -- ) M: book layout* ( book -- )
dup rect-dim swap book-page set-gadget-dim ; dup rect-dim swap book-page set-gadget-dim ;
: <tab> ( name n book -- button ) TUPLE: radio-box value buttons quot ;
[ show-page drop ] curry curry
>r <label> r> <bevel-button> ;
: make-tabs ( book names -- gadget ) : update-selection ( radio-box -- )
dup length [ pick <tab> ] 2map make-shelf dup radio-box-buttons [
dup highlight-theme nip ; 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 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 ; TUPLE: tabs buttons book ;
C: tabs dup delegate>frame ; C: tabs dup delegate>frame ;
: set-tabs ( names pages tabs -- ) : 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 -- )
{ {
{ [ <book> tuck ] set-tabs-book @center } { [ dup [ second ] map <book> ] set-tabs-book @center }
{ [ make-tabs ] set-tabs-buttons @top } { [ make-tabs ] set-tabs-buttons @top }
} build-grid ; } build-grid ;
: set-pages ( obj assoc tabs -- ) : make-pages ( obj assoc -- assoc )
>r flip first2 swapd [ make-pane <scroller> ] map-with [ first2 swapd make-pane <scroller> 2array ] map-with ;
r> set-tabs ;
: set-pages ( obj assoc tabs -- ) >r make-pages r> set-tabs ;
: <pages> ( obj assoc -- tabs ) <tabs> [ set-pages ] keep ; : <pages> ( obj assoc -- tabs ) <tabs> [ set-pages ] keep ;

View File

@ -42,11 +42,22 @@ USING: arrays gadgets kernel sequences styles ;
{ 1.0 1.0 1.0 1.0 } { 1.0 1.0 1.0 1.0 }
} } ; } } ;
: selected-gradient
T{ gradient f {
{ 0.65 0.65 0.65 1.0 }
{ 0.8 0.8 0.8 1.0 }
{ 0.8 0.8 0.8 1.0 }
{ 1.0 1.0 1.0 1.0 }
} } ;
: faint-boundary : faint-boundary
T{ solid f { 0.62 0.62 0.62 0.8 } } swap set-gadget-boundary ; T{ solid f { 0.62 0.62 0.62 0.8 } } swap set-gadget-boundary ;
: bevel-button-theme ( gadget -- ) : bevel-button-theme ( gadget -- )
plain-gradient rollover-gradient pressed-gradient plain-gradient
rollover-gradient
pressed-gradient
selected-gradient
<button-paint> over set-gadget-interior <button-paint> over set-gadget-interior
faint-boundary ; faint-boundary ;
@ -54,8 +65,10 @@ USING: arrays gadgets kernel sequences styles ;
plain-gradient over set-gadget-interior faint-boundary ; plain-gradient over set-gadget-interior faint-boundary ;
: roll-button-theme ( button -- ) : roll-button-theme ( button -- )
f solid-black solid-black <button-paint> over set-gadget-boundary f solid-black solid-black f
f f pressed-gradient <button-paint> swap set-gadget-interior ; <button-paint> over set-gadget-boundary
f f pressed-gradient solid-black
<button-paint> swap set-gadget-interior ;
: caret-theme ( caret -- ) : caret-theme ( caret -- )
T{ solid f { 1.0 0.0 0.0 1.0 } } swap set-gadget-interior ; T{ solid f { 1.0 0.0 0.0 1.0 } } swap set-gadget-interior ;

View File

@ -49,13 +49,10 @@ M: help-gadget focusable-child*
swap help-gadget-showing dup swap help-gadget-showing dup
[ over history-seq push-new update-history ] [ 2drop ] if ; [ over history-seq push-new update-history ] [ 2drop ] if ;
: fancy-help ( obj -- )
link-name dup word? [ see-help ] [ help ] if ;
: show-help ( link help -- ) : show-help ( link help -- )
dup add-history [ set-help-gadget-showing ] 2keep dup add-history [ set-help-gadget-showing ] 2keep
dup update-title { dup update-title {
{ "Article" [ fancy-help ] } { "Article" [ help ] }
{ "Links in" [ links-in. ] } { "Links in" [ links-in. ] }
} swap help-gadget-tabs set-pages ; } swap help-gadget-tabs set-pages ;