factor/core/ui/gadgets/outliner.factor

56 lines
1.6 KiB
Factor
Raw Normal View History

2006-06-07 23:51:28 -04:00
! Copyright (C) 2005, 2006 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
IN: gadgets-outliners
2005-09-27 14:12:17 -04:00
USING: arrays gadgets gadgets-borders gadgets-buttons
gadgets-labels gadgets-theme generic io kernel
2006-10-22 18:46:02 -04:00
math opengl sequences styles namespaces ;
TUPLE: guide color ;
M: guide draw-interior
guide-color gl-color
2006-11-03 19:07:06 -05:00
rect-dim dup first 2 /i 0 2array origin get v+
swap first2 >r 2 /i r> 2array origin get v+ gl-line ;
2006-10-12 18:09:30 -04:00
: guide-theme ( gadget -- )
T{ guide f { 0.5 0.5 0.5 1.0 } } swap set-gadget-interior ;
: <guide-gadget> ( -- gadget )
2006-10-12 18:09:30 -04:00
<gadget> dup guide-theme ;
2005-09-25 01:16:35 -04:00
2005-09-27 14:12:17 -04:00
TUPLE: outliner quot ;
2005-09-25 01:16:35 -04:00
2005-09-27 14:12:17 -04:00
: find-outliner ( gadget -- outliner )
[ outliner? ] find-parent ;
2005-09-25 01:16:35 -04:00
2005-09-27 14:12:17 -04:00
: <expand-arrow> ( ? -- gadget )
2006-01-18 18:50:52 -05:00
arrow-right arrow-down ? { 0.5 0.5 0.5 1.0 } swap
2005-12-17 20:03:41 -05:00
<polygon-gadget> <default-border> ;
2005-09-25 01:16:35 -04:00
DEFER: set-outliner-expanded?
: <expand-button> ( ? -- button )
2005-09-27 14:12:17 -04:00
#! If true, the button expands, otherwise it collapses.
dup [ swap find-outliner set-outliner-expanded? ] curry
2006-11-19 21:13:37 -05:00
>r <expand-arrow> r> <button> ;
: setup-expand ( expanded? outliner -- )
2006-06-07 23:04:37 -04:00
>r not <expand-button> r> @top-left grid-add ;
: setup-center ( expanded? outliner -- )
2006-10-22 18:46:02 -04:00
[
swap [ outliner-quot call ] [ drop <gadget> ] if
2006-10-22 18:46:02 -04:00
] keep @center grid-add ;
: setup-guide ( expanded? outliner -- )
2006-10-22 18:46:02 -04:00
>r [ <guide-gadget> ] [ <gadget> ] if r> @left grid-add ;
: set-outliner-expanded? ( ? outliner -- )
2dup setup-expand 2dup setup-center setup-guide ;
2005-09-25 01:16:35 -04:00
C: outliner ( gadget quot -- gadget )
2005-10-09 21:27:14 -04:00
dup delegate>frame
2005-09-25 01:16:35 -04:00
[ set-outliner-quot ] keep
2006-06-07 23:04:37 -04:00
[ >r 1array make-shelf r> @top grid-add ] keep
2005-09-27 14:12:17 -04:00
f over set-outliner-expanded? ;