factor/basis/ui/gadgets/labelled/labelled.factor

57 lines
1.7 KiB
Factor
Raw Normal View History

2007-09-20 18:09:08 -04:00
! Copyright (C) 2006, 2007 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
USING: arrays ui.gadgets.buttons ui.gadgets.borders
ui.gadgets.labels ui.gadgets.panes ui.gadgets.scrollers
ui.gadgets.tracks ui.gadgets.theme ui.gadgets.frames
ui.gadgets.grids io kernel math models namespaces prettyprint
sequences sequences words classes.tuple ui.gadgets ui.render
2008-07-14 19:35:30 -04:00
colors accessors ;
2007-09-20 18:09:08 -04:00
IN: ui.gadgets.labelled
TUPLE: labelled-gadget < track content ;
2007-09-20 18:09:08 -04:00
: <labelled-gadget> ( gadget title -- newgadget )
{ 0 1 } labelled-gadget new-track
swap <label> reverse-video-theme f track-add
swap >>content
dup content>> 1 track-add ;
2007-09-20 18:09:08 -04:00
M: labelled-gadget focusable-child* content>> ;
2007-09-20 18:09:08 -04:00
: <labelled-scroller> ( gadget title -- gadget )
>r <scroller> r> <labelled-gadget> ;
2008-02-21 02:25:59 -05:00
: <labelled-pane> ( model quot scrolls? title -- gadget )
>r >r <pane-control> r> >>scrolls? r>
2007-09-20 18:09:08 -04:00
<labelled-scroller> ;
: <close-box> ( quot -- button/f )
gray close-box <polygon-gadget> swap <bevel-button> ;
: title-theme ( gadget -- gadget )
{ 1 0 } >>orientation
2007-09-20 18:09:08 -04:00
T{ gradient f {
T{ rgba f 0.65 0.65 1.0 1.0 }
T{ rgba f 0.65 0.45 1.0 1.0 }
} } >>interior ;
2007-09-20 18:09:08 -04:00
: <title-label> ( text -- label ) <label> title-theme ;
2007-09-20 18:09:08 -04:00
: <title-bar> ( title quot -- gadget )
<frame>
swap dup [ <close-box> @left grid-add ] [ drop ] if
swap <title-label> @center grid-add ;
2007-09-20 18:09:08 -04:00
TUPLE: closable-gadget < frame content ;
2007-09-20 18:09:08 -04:00
: find-closable-gadget ( parent -- child )
2008-08-23 00:20:49 -04:00
[ closable-gadget? ] find-parent ;
2007-09-20 18:09:08 -04:00
: <closable-gadget> ( gadget title quot -- gadget )
closable-gadget new-frame
-rot <title-bar> @top grid-add
swap >>content
dup content>> @center grid-add ;
2008-07-14 19:35:30 -04:00
M: closable-gadget focusable-child* content>> ;