blob: abc57ef88a4d414e3f8eb1ff273f215f741adede (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
|
#
# Demo: Outlook Express folder list
#
proc DemoOutlookFolders {} {
InitPics outlook-*
set T .f2.f1.t
set height [font metrics [$T cget -font] -linespace]
if {$height < 18} {
set height 18
}
#
# Configure the treectrl widget
#
$T configure -itemheight $height -selectmode browse \
-showroot yes -showrootbutton no -showbuttons yes -showlines yes
#
# Create columns
#
$T column create -text Folders -tag C0
$T configure -treecolumn C0
#
# Create elements
#
$T element create e1 image
$T element create e2 text -fill [list $::SystemHighlightText {selected focus}] \
-lines 1
$T element create e3 text -fill [list $::SystemHighlightText {selected focus}] \
-font [list "[$T cget -font] bold"] -lines 1
$T element create e4 text -fill blue
$T element create e5 image -image outlook-folder
$T element create e6 rect -fill [list $::SystemHighlight {selected focus} gray {selected !focus}] \
-showfocus yes
#
# Create styles using the elements
#
# image + text
set S [$T style create s1]
$T style elements $S {e6 e1 e2}
$T style layout $S e1 -expand ns
$T style layout $S e2 -padx {4 0} -expand ns -squeeze x
$T style layout $S e6 -union [list e2] -iexpand ns -ipadx 2
# image + text + text
set S [$T style create s2]
$T style elements $S {e6 e1 e3 e4}
$T style layout $S e1 -expand ns
$T style layout $S e3 -padx 4 -expand ns -squeeze x
$T style layout $S e4 -expand ns
$T style layout $S e6 -union [list e3] -iexpand ns -ipadx 2
# folder + text
set S [$T style create s3]
$T style elements $S {e6 e5 e2}
$T style layout $S e5 -expand ns
$T style layout $S e2 -padx {4 0} -expand ns -squeeze x
$T style layout $S e6 -union [list e2] -iexpand ns -ipadx 2
# folder + text + text
set S [$T style create s4]
$T style elements $S {e6 e5 e3 e4}
$T style layout $S e5 -expand ns
$T style layout $S e3 -padx 4 -expand ns -squeeze x
$T style layout $S e4 -expand ns
$T style layout $S e6 -union [list e3] -iexpand ns -ipadx 2
#
# Create items and assign styles
#
$T item style set root C0 s1
$T item complex root [list [list e1 -image outlook-main] [list e2 -text "Outlook Express"]]
set parentList [list root {} {} {} {} {} {}]
set parent root
foreach {depth img text button unread} {
0 local "Local Folders" yes 0
1 inbox Inbox no 5
1 outbox Outbox no 0
1 sent "Sent Items" no 0
1 deleted "Deleted Items" no 50
1 draft Drafts no 0
1 folder "Messages to Dad" no 0
1 folder "Messages to Sis" no 0
1 folder "Messages to Me" yes 0
2 folder "2001" no 0
2 folder "2000" no 0
2 folder "1999" no 0
0 server "news.gmane.org" yes 0
1 group "gmane.comp.lang.lua.general" no 498
} {
set item [$T item create -button $button]
if {[string equal $img folder]} {
if {$unread} {
$T item style set $item C0 s4
$T item complex $item [list [list e3 -text $text] [list e4 -text "($unread)"]]
} else {
$T item style set $item C0 s3
$T item complex $item [list [list e2 -text $text]]
}
} else {
if {$unread} {
$T item style set $item C0 s2
$T item complex $item [list [list e1 -image outlook-$img] [list e3 -text $text] [list e4 -text "($unread)"]]
} else {
$T item style set $item C0 s1
$T item complex $item [list [list e1 -image outlook-$img] [list e2 -text $text]]
}
}
$T item lastchild [lindex $parentList $depth] $item
incr depth
set parentList [lreplace $parentList $depth $depth $item]
}
return
}
|