1 ! Copyright (C) 2008, 2009 Slava Pestov.
2 ! See https://factorcode.org/license.txt for BSD license.
3 USING: accessors colors kernel models sequences ui.gadgets
4 ui.gadgets.books ui.gadgets.borders ui.gadgets.buttons
5 ui.gadgets.buttons.private ui.gadgets.icons ui.gadgets.packs
6 ui.gadgets.tracks ui.pens ui.theme.images ;
9 TUPLE: tabbed-gadget < track tabs book ;
14 "active-tab-lip" theme-image <icon> ;
16 CONSTANT: button-background COLOR: FactorTan
17 CONSTANT: active-tab-background COLOR: FactorDarkTan
19 : <tab-pen> ( -- pen )
20 "inactive-tab" button-background f <border-button-state-pen> dup dup
21 "active-tab" active-tab-background f <border-button-state-pen> dup
24 : tab-theme ( gadget -- gadget )
25 horizontal >>orientation
27 dup dup interior>> pen-pref-dim >>min-dim
28 { 30 0 } >>size ; inline
30 : <tab> ( value model label -- gadget )
31 <radio-control> tab-theme ;
33 : add-tab/book ( tabbed child -- tabbed )
34 [ dup book>> ] dip add-gadget drop ;
36 : add-tab/button ( tabbed label -- tabbed )
37 [ [ dup tabs>> dup children>> length ] [ model>> ] bi ] dip
38 <tab> add-gadget drop ;
42 : <tabbed-gadget> ( -- gadget )
43 vertical tabbed-gadget new-track
47 over tabs>> f track-add
50 dup model>> <empty-book> >>book
51 dup book>> { 3 3 } <filled-border> 1 track-add ;
53 : add-tab ( tabbed child label -- tabbed )
54 [ add-tab/book ] [ add-tab/button ] bi* ;