summaryrefslogtreecommitdiffstats
path: root/demos/command.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'demos/command.tcl')
-rwxr-xr-xdemos/command.tcl85
1 files changed, 85 insertions, 0 deletions
diff --git a/demos/command.tcl b/demos/command.tcl
new file mode 100755
index 0000000..e0da582
--- /dev/null
+++ b/demos/command.tcl
@@ -0,0 +1,85 @@
+#!/bin/sh
+# the next line restarts using wish \
+ exec wish "$0" ${1+"$@"}
+
+## command.tcl
+##
+## This demo shows the use of the table widget's -command options
+##
+## jeff at hobbs org
+
+source [file join [file dirname [info script]] loadtable.tcl]
+
+array set table {
+ rows 10
+ cols 10
+ table .table
+ array DATA
+}
+
+proc fill { array x y } {
+ upvar $array f
+ for {set i -$x} {$i<$x} {incr i} {
+ for {set j -$y} {$j<$y} {incr j} { set f($i,$j) "$i x $j" }
+ }
+}
+
+## Test out the use of a procedure to define tags on rows and columns
+proc rowProc row { if {$row>0 && $row%2} { return OddRow } }
+proc colProc col { if {$col>0 && $col%2} { return OddCol } }
+
+proc tblCmd { arrayName set cell val } {
+ upvar \#0 $arrayName data
+
+ if {$set} {
+ #echo set $cell $val
+ set data($cell) $val
+ } else {
+ #echo get $cell
+ if {[info exists data($cell)]} {
+ return $data($cell)
+ } else {
+ return
+ }
+ }
+}
+
+label .label -text "TkTable -command Example"
+label .current -textvar CURRENT -width 5
+entry .active -textvar ACTIVE
+
+bind .active <Return> "$table(table) curvalue \[%W get\]"
+
+fill $table(array) $table(rows) $table(cols)
+set t $table(table)
+table $table(table) -rows $table(rows) -cols $table(cols) \
+ -command [list tblCmd $table(array) %i %C %s] -cache 1 \
+ -width 6 -height 6 \
+ -titlerows 1 -titlecols 1 \
+ -yscrollcommand {.sy set} -xscrollcommand {.sx set} \
+ -roworigin -1 -colorigin -1 \
+ -rowtagcommand rowProc -coltagcommand colProc \
+ -selectmode extended \
+ -rowstretch unset -colstretch unset \
+ -flashmode on -browsecommand {
+ set CURRENT %S
+ set ACTIVE [%W get %S]
+} -validate 1 -validatecommand {
+ set ACTIVE %S
+ return 1
+}
+
+scrollbar .sy -command [list $table(table) yview] -orient v
+scrollbar .sx -command [list $table(table) xview] -orient h
+grid .label - - -sticky ew
+grid .current .active - -sticky ew
+grid $table(table) - .sy -sticky nsew
+grid .sx - -sticky ew
+grid columnconfig . 1 -weight 1
+grid rowconfig . 2 -weight 1
+
+$table(table) tag config OddRow -bg orange -fg purple
+$table(table) tag config OddCol -bg brown -fg pink
+
+puts [list Table is $table(table)]
+