Tabs gadget improved
parent
0e2eb30f7d
commit
a5cc32ed15
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
|
|
|
||||||
|
|
@ -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 ;
|
||||||
|
|
|
||||||
|
|
@ -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 ;
|
||||||
|
|
|
||||||
|
|
@ -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 ;
|
||||||
|
|
|
||||||
|
|
@ -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 ;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue