diff options
author | treectrl <treectrl> | 2005-05-13 20:25:01 (GMT) |
---|---|---|
committer | treectrl <treectrl> | 2005-05-13 20:25:01 (GMT) |
commit | 0c10663d202674e2c08f8c805f71e862d61a6338 (patch) | |
tree | b9468e038db4b279af2aa8d159a14bb25efc4d48 /demos/demo.tcl | |
parent | 2daa0fcaefd530981cec2d63aa771c7dc0d4accd (diff) | |
download | tktreectrl-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.tcl | 133 |
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] |