aboutsummaryrefslogtreecommitdiff
path: root/demos/labelformat.tcl
blob: 9584d3ce0fb4422357855c3afe03f66673064d67 (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
# these simple samples have been developped by C. Mertz mertz@cena.fr in perl
# tcl version by Jean-Paul Imbert imbert@cena.fr

if {![info exists zincDemo]} {
    error "This script should be run from the zinc-widget demo."
}

set w .label
catch {destroy $w}
toplevel $w
wm title $w "Zinc Label Format Demonstration"
wm iconname $w Label

set defaultfont "-adobe-helvetica-bold-r-normal-*-120-*-*-*-*-*-*"

frame $w.buttons
pack $w.buttons -side bottom -fill x -pady 2m
button $w.buttons.dismiss -text Dismiss -command "destroy $w"
button $w.buttons.code -text "See Code" -command "showCode $w"
pack $w.buttons.dismiss $w.buttons.code -side left -expand 1

###########################################
# Text zone
###########################################

text $w.text -relief sunken -borderwidth 2 -height 4
pack $w.text -expand yes -fill both

$w.text insert end "This toy-appli demonstrates the use of labelformat for tabular items.\nThe fieldPos (please, refer to the labelformat type description\nin the Zinc reference manual) of each field as described in\nthe labelformat is displayed inside the field."


###########################################
# Zinc
##########################################
zinc $w.zinc -width 600 -height 500 -font 10x20 -borderwidth 3 -relief sunken
pack $w.zinc

### this function displays in each field, the corresponding <fieldPos>
### part of the labelformat
proc setLabelContent {item labelformat} {
    global w
    set i 0
    puts "Label: $item: $labelformat"
    foreach fieldSpec $labelformat {
	set posSpec $i
	puts ":$i:$fieldSpec:"
	regexp {^.\d+.\d+(.*)} $fieldSpec "" posSpec
	$w.zinc itemconfigure $item $i -text "$i: $posSpec" -border "contour"
	incr i
    }
}

###########################################
# Tabulars
###########################################

### first labelformat and tabular
set labelformat1 {x100x20+0+0 x100x20+100+0 x100x20+0+20 x100x20+100+20 x100x20+50+55}

set tabular1 [$w.zinc add tabular 1 5 -position {10 10} -labelformat $labelformat1]

setLabelContent $tabular1 $labelformat1

$w.zinc add text 1 -position {10 100} -text "All fields positions\nare given in pixels"


### second labelformat and tabular
set labelformat2 {x110x20+100+30 x80x20<0<0 x80x20<0>0 x80x20>0>0 x80x20>0<0}

set tabular2 [$w.zinc add tabular 1 5 -position {270 10} -labelformat $labelformat2]
setLabelContent $tabular2 $labelformat2

$w.zinc add text 1 -position {260 100} -text "All fields positions are given\nrelatively to field 0.\nThey are either on the left/right\nand up/down the field 0."


### third labelformat and tabular
set labelformat3 {x200x70+100+70 x80x26^0<0 x80x26^0>0 x80x29$0$0 x80x32$0^0 x90x20<1^1 x90x20<2$2 x90x20^4<4 x90x20^3>3}

set tabular3 [$w.zinc add tabular 1 9 -position {150 180} -labelformat $labelformat3]

setLabelContent $tabular3 $labelformat3

$w.zinc add text 1 -position {40 360} -text "Fields 1-4 are positionned relatively to field 0.\nField 5 is positionned relatively to field 1\nField 6 is positionned relatively to field 2..."