1# RCS: @(#) $Id: layout.tcl,v 1.16 2009/06/29 20:19:44 treectrl Exp $
2
3#
4# Demo: Layout
5#
6proc DemoLayout {} {
7
8    set T [DemoList]
9
10    #
11    # Configure the treectrl widget
12    #
13
14    $T configure -showroot no -showrootbutton yes -showbuttons yes \
15	-showlines $::ShowLines -itemheight 0 -selectmode browse
16
17    #
18    # Create columns
19    #
20
21    $T column create -text Layout -itemjustify left -justify center -tags C0
22    $T configure -treecolumn C0
23
24    #
25    # Create elements
26    #
27
28    $T element create e1 rect -width 30 -height 30 -fill gray20
29    $T element create e2 rect -width 30 -height 30 -fill gray40 \
30	-outline blue -outlinewidth 3
31    $T element create e3 rect -fill gray60
32    $T element create e4 rect -fill [list $::SystemHighlight {selected focus} gray80 {}] \
33	-showfocus yes
34    $T element create e5 rect -fill {"sky blue"} -width 20 -height 20
35    $T element create e6 rect -fill {"sea green"} -width 30 -height 16
36    $T element create e7 rect -fill {"sky blue"} -width 30 -height 16
37    $T element create e8 rect -fill gray70 -height 1
38
39    #
40    # Create styles using the elements
41    #
42
43    set S [$T style create s1]
44    $T style elements $S {e4 e3 e1 e2 e5 e6 e7}
45    $T style layout $S e1 -padx {28 4} -pady 4
46    $T style layout $S e2 -expand es -padx {0 38}
47    $T style layout $S e3 -union [list e1 e2] -ipadx 4 -ipady 4 -pady 2
48    $T style layout $S e4 -detach yes -iexpand xy
49    $T style layout $S e5 -detach yes -padx {2 0} -pady 2 -iexpand y
50    $T style layout $S e6 -detach yes -expand ws -padx {0 2} -pady {2 0}
51    $T style layout $S e7 -detach yes -expand wn -padx {0 2} -pady {0 2}
52
53    #
54    # Create items and assign styles
55    #
56
57    set I [$T item create -button yes]
58    $T item style set $I C0 $S
59    $T item lastchild root $I
60    set parent $I
61
62    set I [$T item create]
63    $T item style set $I C0 $S
64    $T item lastchild $parent $I
65
66    ###
67
68    set S [$T style create s2]
69    $T style elements $S {e4 e3 e1}
70    $T style layout $S e1 -padx 8 -pady 8 -iexpand x
71    $T style layout $S e3 -union e1 -ipadx {20 4} -ipady {4 12}
72    $T style layout $S e4 -detach yes -iexpand xy
73
74    set I [$T item create -button yes]
75    $T item style set $I C0 $S
76    $T item lastchild root $I
77
78    set I2 [$T item create]
79    $T item style set $I2 C0 $S
80    $T item lastchild $I $I2
81
82    ###
83
84    set S [$T style create s3]
85    $T style elements $S {e4 e3 e1 e5 e6}
86    $T style layout $S e4 -union {e1 e6} -ipadx 8 -ipady {8 0}
87    $T style layout $S e3 -union {e1 e5} -ipadx 4 -ipady 4
88    $T style layout $S e5 -height 40
89
90    set I [$T item create -button yes]
91    $T item style set $I C0 $S
92    $T item lastchild root $I
93
94    set I2 [$T item create]
95    $T item style set $I2 C0 $S
96    $T item lastchild $I $I2
97
98    ###
99
100    $T element create eb border -background $::SystemButtonFace \
101	-relief {sunken {selected} raised {}} -thickness 2 -filled yes
102    $T element create et text -lmargin2 20
103
104    set text "Here is a text element surrounded by a border element.\nResize the column to watch me wrap."
105
106    set S [$T style create s4]
107    $T style elements $S {eb et}
108    $T style layout $S eb -union et -ipadx 2 -ipady 2
109    $T style layout $S et -squeeze x
110
111    set I [$T item create -button yes]
112    $T item style set $I C0 $S
113    $T item text $I C0 $text
114    $T item lastchild root $I
115    set parent $I
116
117    set I [$T item create]
118    $T item style set $I C0 $S
119    $T item text $I C0 $text
120    $T item lastchild $parent $I
121
122    ###
123
124    set styleNum 5
125    foreach {orient expandList} {horizontal {s ns n} vertical {e we w}} {
126	foreach expand $expandList {
127
128	    set S [$T style create s$styleNum -orient $orient]
129	    $T style elements $S {e4 e8 e3 e2 e5 e6}
130	    $T style layout $S e4 -detach yes -iexpand xy
131	    $T style layout $S e8 -detach yes -expand n -iexpand x
132	    $T style layout $S e3 -union {e2 e5 e6} -ipadx 5 -ipady 5
133	    $T style layout $S e2 -expand $expand
134	    $T style layout $S e5 -expand $expand -visible {no !selected}
135	    $T style layout $S e6 -expand $expand
136	    incr styleNum
137
138	    set I [$T item create]
139	    $T item style set $I C0 $S
140	    $T item lastchild root $I
141	}
142    }
143
144    return
145}
146
147