summaryrefslogtreecommitdiffstats
path: root/demos/outlook-folders.tcl
blob: 6b01c8d36bed014570ca7f7958f68d46f031673d (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 $::ShowLines

	#
	# 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
}