simplified splitter gadget
parent
7c65ed1423
commit
930ac75dbd
|
@ -26,15 +26,6 @@ GENERIC: orientation
|
||||||
: pref-dims ( gadget -- list )
|
: pref-dims ( gadget -- list )
|
||||||
gadget-children [ pref-dim ] map ;
|
gadget-children [ pref-dim ] map ;
|
||||||
|
|
||||||
: packed-pref-dim ( gadget -- dim )
|
|
||||||
#! The preferred size of the gadget, if all children are
|
|
||||||
#! packed in the direction of the given axis.
|
|
||||||
[
|
|
||||||
pref-dims
|
|
||||||
[ { 0 0 0 } [ vmax ] reduce ] keep
|
|
||||||
{ 0 0 0 } [ v+ ] reduce
|
|
||||||
] keep orientation set-axis ;
|
|
||||||
|
|
||||||
: orient ( gadget list1 list2 -- list )
|
: orient ( gadget list1 list2 -- list )
|
||||||
zip >r orientation r> [ uncons rot set-axis ] map-with ;
|
zip >r orientation r> [ uncons rot set-axis ] map-with ;
|
||||||
|
|
||||||
|
@ -91,12 +82,16 @@ M: pack filling pack-fill ;
|
||||||
|
|
||||||
M: pack alignment pack-align ;
|
M: pack alignment pack-align ;
|
||||||
|
|
||||||
M: pack pref-dim packed-pref-dim ;
|
M: pack pref-dim ( pack -- dim )
|
||||||
|
[
|
||||||
|
pref-dims
|
||||||
|
[ { 0 0 0 } [ vmax ] reduce ] keep
|
||||||
|
{ 0 0 0 } [ v+ ] reduce
|
||||||
|
] keep orientation set-axis ;
|
||||||
|
|
||||||
M: pack layout* ( pack -- )
|
M: pack layout* ( pack -- )
|
||||||
dup pref-dims packed-layout ;
|
dup pref-dims packed-layout ;
|
||||||
|
|
||||||
: <stack> ( list -- gadget )
|
: <stack> ( list -- gadget )
|
||||||
#! A stack lays out all its children on top of each other.
|
#! A stack lays out all its children on top of each other.
|
||||||
0 1 { 0 0 1 } <pack>
|
0 1 { 0 0 1 } <pack> swap [ over add-gadget ] each ;
|
||||||
swap [ over add-gadget ] each ;
|
|
||||||
|
|
|
@ -10,14 +10,14 @@ TUPLE: divider splitter ;
|
||||||
|
|
||||||
M: divider pref-dim drop divider-size ;
|
M: divider pref-dim drop divider-size ;
|
||||||
|
|
||||||
TUPLE: splitter vector split ;
|
TUPLE: splitter split ;
|
||||||
|
|
||||||
: hand>split ( splitter -- n )
|
: hand>split ( splitter -- n )
|
||||||
hand relative hand hand-click-rel v- divider-size 1/2 v*n v+ ;
|
hand relative hand hand-click-rel v- divider-size 1/2 v*n v+ ;
|
||||||
|
|
||||||
: divider-motion ( splitter -- )
|
: divider-motion ( splitter -- )
|
||||||
dup hand>split
|
dup hand>split
|
||||||
over shape-dim { 1 1 1 } vmax v/ over splitter-vector v.
|
over shape-dim { 1 1 1 } vmax v/ over orientation v.
|
||||||
0 max 1 min over set-splitter-split relayout ;
|
0 max 1 min over set-splitter-split relayout ;
|
||||||
|
|
||||||
: divider-actions ( thumb -- )
|
: divider-actions ( thumb -- )
|
||||||
|
@ -31,8 +31,7 @@ C: divider ( -- divider )
|
||||||
dup divider-actions ;
|
dup divider-actions ;
|
||||||
|
|
||||||
C: splitter ( first second vector -- splitter )
|
C: splitter ( first second vector -- splitter )
|
||||||
<empty-gadget> over set-delegate
|
[ >r 0 1 rot <pack> r> set-delegate ] keep
|
||||||
[ set-splitter-vector ] keep
|
|
||||||
swapd
|
swapd
|
||||||
[ add-gadget ] keep
|
[ add-gadget ] keep
|
||||||
<divider> over add-gadget
|
<divider> over add-gadget
|
||||||
|
@ -43,14 +42,6 @@ C: splitter ( first second vector -- splitter )
|
||||||
|
|
||||||
: <y-splitter> { 1 0 0 } <splitter> ;
|
: <y-splitter> { 1 0 0 } <splitter> ;
|
||||||
|
|
||||||
M: splitter orientation splitter-vector ;
|
|
||||||
|
|
||||||
M: splitter filling drop 1 ;
|
|
||||||
|
|
||||||
M: splitter alignment drop 0 ;
|
|
||||||
|
|
||||||
M: splitter pref-dim packed-pref-dim ;
|
|
||||||
|
|
||||||
: splitter-part ( splitter -- vec )
|
: splitter-part ( splitter -- vec )
|
||||||
dup splitter-split swap shape-dim n*v divider-size 1/2 v*n v- ;
|
dup splitter-split swap shape-dim n*v divider-size 1/2 v*n v- ;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue