summaryrefslogtreecommitdiffstats
path: root/demos/demo.tcl
diff options
context:
space:
mode:
authortreectrl <treectrl>2005-05-13 20:25:01 (GMT)
committertreectrl <treectrl>2005-05-13 20:25:01 (GMT)
commit0c10663d202674e2c08f8c805f71e862d61a6338 (patch)
treeb9468e038db4b279af2aa8d159a14bb25efc4d48 /demos/demo.tcl
parent2daa0fcaefd530981cec2d63aa771c7dc0d4accd (diff)
downloadtktreectrl-0c10663d202674e2c08f8c805f71e862d61a6338.zip
tktreectrl-0c10663d202674e2c08f8c805f71e862d61a6338.tar.gz
tktreectrl-0c10663d202674e2c08f8c805f71e862d61a6338.tar.bz2
Bump version to 2.0 because of API changes.
Use column -tag instead of zero, to handle -columnprefix option if used. Added "Toggle All" menu commands to event browser window. Specify -treecolumn with a real column as required now. Handle <ColumnDrag> event for column reordering. Use new "column list" command and "column delete all".
Diffstat (limited to 'demos/demo.tcl')
-rw-r--r--demos/demo.tcl133
1 files changed, 86 insertions, 47 deletions
diff --git a/demos/demo.tcl b/demos/demo.tcl
index df0b05a..572975a 100644
--- a/demos/demo.tcl
+++ b/demos/demo.tcl
@@ -1,6 +1,6 @@
#!/bin/wish84.exe
-set VERSION 1.2
+set VERSION 2.0
package require Tk 8.4
@@ -115,7 +115,10 @@ foreach list [info loaded] {
}
puts "demo.tcl: TREECTRL_LIBRARY=$env(TREECTRL_LIBRARY)"
-option add *TreeCtrl.UseTheme 1
+option add *TreeCtrl.useTheme 1
+#option add *TreeCtrl.itemPrefix item
+#option add *TreeCtrl.ColumnPrefix col
+
# Demo sources
foreach file {
@@ -194,7 +197,8 @@ proc MakeEventsWindow {} {
$T configure -showheader no -showroot no -showrootlines no -height 300 \
-font {Courier 8}
- $T column create
+ $T column create -tag C0
+ $T configure -treecolumn C0
$T element create e1 text -fill [list $::SystemHighlightText {selected focus}]
$T element create e2 text -fill [list $::SystemHighlightText {selected focus}]
@@ -236,11 +240,15 @@ proc RebuildEventsMenus {T m} {
set details [lsort -dictionary [.f2.f1.t notify detailnames $event]]
foreach detail $details {
set pattern <$event-$detail>
- lappend patterns $pattern [.f2.f1.t notify linkage $pattern]
+ set linkage [.f2.f1.t notify linkage $pattern]
+ lappend patterns $pattern $linkage
+ lappend patterns2($linkage) $pattern
}
if {![llength $details]} {
set pattern <$event>
- lappend patterns $pattern [.f2.f1.t notify linkage $pattern]
+ set linkage [.f2.f1.t notify linkage $pattern]
+ lappend patterns $pattern $linkage
+ lappend patterns2($linkage) $pattern
}
}
@@ -256,6 +264,11 @@ proc RebuildEventsMenus {T m} {
-variable EventTrack($pattern) \
-command [list ToggleEvent $T $pattern]
}
+ foreach linkage {static dynamic} {
+ $menu($linkage) add separator
+ $menu($linkage) add command -label "Toggle All" \
+ -command [list ToggleEvents $T $patterns2($linkage)]
+ }
set ::Events {}
set ::EventsId ""
@@ -278,7 +291,7 @@ proc RecordEvents {T} {
set N [expr {[$T item numchildren root] - 2000}]
$T item delete "root firstchild" "root child $N"
}
- if {0 && [$T numitems] > 1} {
+ if {0 && [$T item count] > 1} {
set I [$T item create]
$T item style set $I 0 s3
$T item lastchild root $I
@@ -299,14 +312,14 @@ proc RecordEvent {T list collapse} {
$T item collapse $I
}
array set map $list
- $T item text $I 0 $map(P)
+ $T item text $I C0 $map(P)
$T item lastchild root $I
foreach {char value} $list {
if {[string first $char "TWPed"] != -1} continue
set I2 [$T item create]
- $T item style set $I2 0 s2
- $T item element configure $I2 0 e1 -text $char
- $T item element configure $I2 0 e2 -text $value
+ $T item style set $I2 C0 s2
+ $T item element configure $I2 C0 e1 -text $char
+ $T item element configure $I2 C0 e2 -text $value
$T item lastchild $I $I2
$T item configure $I -button yes
}
@@ -328,6 +341,13 @@ proc ToggleEvent {T pattern} {
.f2.f1.t notify configure $T $pattern -active $::EventTrack($pattern)
return
}
+proc ToggleEvents {T patterns} {
+ foreach pattern $patterns {
+ set ::EventTrack($pattern) [expr {!$::EventTrack($pattern)}]
+ ToggleEvent $T $pattern
+ }
+ return
+}
proc MakeIdentifyWindow {} {
set w .identify
@@ -503,17 +523,20 @@ proc MakeMainWindow {} {
# Tree + scrollbar: demos
TreePlusScrollbarsInAFrame .f1 0 1
.f1.t configure -showbuttons no -showlines no -showroot no -height 100
- .f1.t column create -text "List of Demos" -expand yes -button no
+ .f1.t column create -text "List of Demos" -expand yes -button no -tag C0
+ .f1.t configure -treecolumn C0
# Tree + scrollbar: styles + elements in list
TreePlusScrollbarsInAFrame .f4 0 1
.f4.t configure -showroot no -height 140
- .f4.t column create -text "Elements and Styles" -expand yes -button no
+ .f4.t column create -text "Elements and Styles" -expand yes -button no -tag C0
+ .f4.t configure -treecolumn C0
# Tree + scrollbar: styles + elements in selected item
TreePlusScrollbarsInAFrame .f3 0 1
.f3.t configure -showroot no
- .f3.t column create -text "Styles in Item" -expand yes -button no
+ .f3.t column create -text "Styles in Item" -expand yes -button no -tag C0
+ .f3.t configure -treecolumn C0
.pw1 add .f1 .f4 .f3 -height 150
@@ -549,6 +572,7 @@ proc MakeMainWindow {} {
# <Collapse-after> called after an item is closed
# <Expand-before> called before an item is opened
# <Expand-after> called after an item is opened
+ # <ItemDelete> called before items are deleted
# <Scroll-x> called when horizontal scroll position changes
# <Scroll-y> called when vertical scroll position changes
# <Selection> called when items are added to or removed from the selection
@@ -559,6 +583,10 @@ proc MakeMainWindow {} {
.f2.f1.t notify install <Header-invoke>
+ .f2.f1.t notify install <ColumnDrag-begin>
+ .f2.f1.t notify install <ColumnDrag-end>
+ .f2.f1.t notify install <ColumnDrag-receive>
+
.f2.f1.t notify install <Drag-begin>
.f2.f1.t notify install <Drag-end>
.f2.f1.t notify install <Drag-receive>
@@ -716,7 +744,7 @@ proc ShowPopup {T x y X Y} {
set Popup(expand) [$T column cget $Popup(column) -expand]
set Popup(squeeze) [$T column cget $Popup(column) -squeeze]
set Popup(justify) [$T column cget $Popup(column) -justify]
- set Popup(treecolumn) [expr {[$T cget -treecolumn] == $Popup(column)}]
+ set Popup(treecolumn) [expr {[$T cget -treecolumn] eq $Popup(column)}]
tk_popup $T.mHeader $X $Y
return
}
@@ -760,10 +788,10 @@ proc ShowPopup {T x y X Y} {
set Popup(showrootbutton) [$T cget -showrootbutton]
set m $menu.mVisible
$m delete 0 end
- for {set i 0} {$i < [$T numcolumns]} {incr i} {
- set Popup(visible,$i) [$T column cget $i -visible]
- $m add checkbutton -label "Column $i \"[$T column cget $i -text]\" \[[$T column cget $i -image]\]" -variable Popup(visible,$i) \
- -command "$T column configure $i -visible \$Popup(visible,$i)"
+ foreach C [$T column list] {
+ set Popup(visible,$C) [$T column cget $C -visible]
+ $m add checkbutton -label "Column $C \"[$T column cget $C -text]\" \[[$T column cget $C -image]\]" -variable Popup(visible,$C) \
+ -command "$T column configure $C -visible \$Popup(visible,$C)"
}
set Popup(usetheme) [$T cget -usetheme]
tk_popup $menu $X $Y
@@ -815,8 +843,8 @@ proc InitDemoList {} {
] {
set item [$t item create]
$t item lastchild root $item
- # $t item style set $item 0 s1
- $t item text $item 0 $label
+ # $t item style set $item C0 s1
+ $t item text $item C0 $label
set DemoCmd($item) $command
set DemoFile($item) $file
}
@@ -880,18 +908,18 @@ proc DisplayStylesInList {} {
foreach elem [lsort [$T element names]] {
set item [$t item create -button yes]
$t item collapse $item
- $t item style set $item 0 s1
- $t item text $item 0 "Element $elem ([$T element type $elem])"
+ $t item style set $item C0 s1
+ $t item text $item C0 "Element $elem ([$T element type $elem])"
# One item for each configuration option for this element
foreach list [$T element configure $elem] {
foreach {name x y default current} $list {}
set item2 [$t item create]
if {[string equal $default $current]} {
- $t item style set $item2 0 s1
+ $t item style set $item2 C0 s1
$t item complex $item2 [list [list e1 -text [list $name $current]]]
} else {
- $t item style set $item2 0 s2
+ $t item style set $item2 C0 s2
$t item complex $item2 [list [list e1 -text $name] [list e2 -text [list $current]]]
}
$t item lastchild $item $item2
@@ -903,22 +931,22 @@ proc DisplayStylesInList {} {
foreach style [lsort [$T style names]] {
set item [$t item create -button yes]
$t item collapse $item
- $t item style set $item 0 s1
- $t item text $item 0 "Style $style"
+ $t item style set $item C0 s1
+ $t item text $item C0 "Style $style"
# One item for each element in the style
foreach elem [$T style elements $style] {
set item2 [$t item create -button yes]
$t item collapse $item2
- $t item style set $item2 0 s1
- $t item text $item2 0 "Element $elem ([$T element type $elem])"
+ $t item style set $item2 C0 s1
+ $t item text $item2 C0 "Element $elem ([$T element type $elem])"
# One item for each layout option for this element in this style
foreach {option value} [$T style layout $style $elem] {
set item3 [$t item create]
# $t item hasbutton $item3 no
- $t item style set $item3 0 s1
- $t item text $item3 0 [list $option $value]
+ $t item style set $item3 C0 s1
+ $t item text $item3 C0 [list $option $value]
$t item lastchild $item2 $item3
}
$t item lastchild $item $item2
@@ -935,7 +963,7 @@ proc DisplayStylesInItem {item} {
set T .f2.f1.t
set t .f3.t
- $t column configure 0 -text "Styles in item [$T index $item]"
+ $t column configure C0 -text "Styles in item [$T item id $item]"
# Create elements and styles the first time this is called
if {[llength [$t style names]] == 0} {
@@ -958,22 +986,28 @@ proc DisplayStylesInItem {item} {
$t item delete all
# One item for each item-column
- set column 0
- foreach style [$T item style set $item] {
+ foreach style [$T item style set $item] column [$T column list] {
set item2 [$t item create]
$t item collapse $item2
- $t item style set $item2 0 s1
- $t item element configure $item2 0 e1 -text "Column $column: Style $style"
- set button 0
+ $t item style set $item2 C0 s1
+ if {$style ne ""} {
+ $t item element configure $item2 C0 e1 \
+ -text "Column $column: Style $style"
+ } else {
+ $t item element configure $item2 C0 e1 \
+ -text "Column $column: no style"
+ }
# One item for each element in this style
if {[string length $style]} {
+ set button 0
foreach elem [$T item style elements $item $column] {
set button 1
set item3 [$t item create -button yes]
$t item collapse $item3
- $t item style set $item3 0 s1
- $t item element configure $item3 0 e1 -text "Element $elem ([$T element type $elem])"
+ $t item style set $item3 C0 s1
+ $t item element configure $item3 C0 e1 \
+ -text "Element $elem ([$T element type $elem])"
# One item for each configuration option in this element
foreach list [$T item element configure $item $column $elem] {
@@ -987,10 +1021,10 @@ proc DisplayStylesInItem {item} {
}
if {$sameAsMaster} {
- $t item style set $item4 0 s1
+ $t item style set $item4 C0 s1
$t item complex $item4 [list [list e1 -text "$name [list $current]"]]
} else {
- $t item style set $item4 0 s2
+ $t item style set $item4 C0 s2
$t item complex $item4 [list [list e1 -text $name] [list e2 -text [list $current]]]
}
$t item lastchild $item3 $item4
@@ -1002,7 +1036,6 @@ proc DisplayStylesInItem {item} {
}
}
$t item lastchild root $item2
- incr column
}
$t xview moveto 0
$t yview moveto 0
@@ -1019,6 +1052,12 @@ proc DisplayStylesInItem {item} {
}
}
+# Move columns when ColumnDrag-receive is generated
+# See DemoClear for why the tag "DontDelete" is used
+.f2.f1.t notify bind DontDelete <ColumnDrag-receive> {
+ %T column move %C %b
+}
+
proc DemoClear {} {
set T .f2.f1.t
@@ -1041,9 +1080,7 @@ proc DemoClear {} {
.f3.t item delete all
# Delete columns in demo list
- while {[$T numcolumns]} {
- $T column delete 0
- }
+ $T column delete all
# Delete all styles in demo list
eval $T style delete [$T style names]
@@ -1065,11 +1102,13 @@ proc DemoClear {} {
-yscrollincrement 0 -itemheight 0 -showheader yes \
-background white -scrollmargin 0 -xscrolldelay 50 -yscrolldelay 50 \
-buttonbitmap "" -buttonimage "" -backgroundmode row \
- -treecolumn 0 -indent 19 -defaultstyle {} -backgroundimage "" \
+ -indent 19 -defaultstyle {} -backgroundimage "" \
-showrootlines yes -minitemheight 0 -borderwidth 6 \
- -highlightthickness 3
+ -highlightthickness 3 -usetheme yes
- $T columndrag configure -enable yes
+ # Enable drag-and-drop column reordering. This also requires the
+ # <ColumnDrag> event be installed.
+ $T column dragconfigure -enable yes
# Restore default bindings to the demo list
bindtags $T [list $T TreeCtrl [winfo toplevel $T] all]