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
|
#!/bin/sh
# the next line restarts using wish \
exec wish "$0" ${1+"$@"}
## version2.tcl
##
## This demo uses most features of the table widget
##
## jeff at hobbs org
source [file join [file dirname [info script]] loadtable.tcl]
array set table {
rows 25
cols 20
table .t
array t
}
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) "r$i,c$j" }
}
}
## Test out the use of a procedure to define tags on rows and columns
proc colProc col { if {$col > 0 && $col % 2} { return OddCol } }
label .label -text "TkTable v2 Example"
fill $table(array) $table(rows) $table(cols)
table $table(table) \
-rows $table(rows) -cols $table(cols) \
-variable $table(array) \
-width 6 -height 8 \
-titlerows 1 -titlecols 2 \
-roworigin -5 -colorigin -2 \
-yscrollcommand {.sy set} \
-xscrollcommand {.sx set} \
-coltagcommand colProc \
-selectmode extended \
-rowstretch unset \
-colstretch unset \
-selecttitles 0 \
-drawmode single
scrollbar .sy -command [list $table(table) yview]
scrollbar .sx -command [list $table(table) xview] -orient horizontal
button .exit -text "Exit" -command {exit}
grid .label - -sticky ew
grid $table(table) .sy -sticky news
grid .sx -sticky ew
grid .exit -sticky ew -columnspan 2
grid columnconfig . 0 -weight 1
grid rowconfig . 1 -weight 1
$table(table) tag config OddCol -bg brown -fg pink
$table(table) tag config title -bg red -fg green -relief sunken
$table(table) tag config dis -state disabled
set i -1
set first [$table(table) cget -colorigin]
foreach anchor {n s e w nw ne sw se c} {
$table(table) tag config $anchor -anchor $anchor
$table(table) tag row $anchor [incr i]
$table(table) set $i,$first $anchor
}
font create courier -family Courier -size 10
$table(table) tag config s -font courier -justify center
image create photo logo \
-file [file join [file dirname [info script]] tcllogo.gif]
$table(table) tag config logo -image logo -showtext 1
$table(table) tag cell logo 1,2 2,3 4,1
$table(table) tag cell dis 2,1 1,-1 3,0
$table(table) width -2 8 -1 9 0 12 4 14
$table(table) set \
1,1 "multi-line\ntext\nmight be\ninteresting" \
3,2 "more\nmulti-line\nplaying\n" \
2,2 "null\0byte"
set i -1
# This is in the row span
set l [label $table(table).s -text "Window s" -bg yellow]
$table(table) window config 6,0 -sticky s -window $l
# This is in the row titles
set l [label $table(table).ne -text "Window ne" -bg yellow]
$table(table) window config 4,-1 -sticky ne -window $l
# This will get swallowed by a span
set l [label $table(table).ew -text "Window ew" -bg yellow]
$table(table) window config 5,3 -sticky ew -window $l
# This is in the col titles
set l [label $table(table).news -text "Window news" -bg yellow]
$table(table) window config -5,1 -sticky news -window $l
set l [label [winfo parent $table(table)].l -text "Sibling l" -bg orange]
$table(table) window config 5,1 -sticky news -window $l
if {![catch {$table(table) span}]} {
$table(table) span -1,-2 0,3 1,2 0,5 3,2 2,2 6,0 4,0
}
puts [list Table is $table(table) with array [$table(table) cget -var]]
#$table(table) postscript -file out.ps -first origin -last 2,2
#if {[string match {} [info commands tkcon]]} exit
|