aboutsummaryrefslogtreecommitdiff
path: root/demos/mapinfo.tcl
blob: 02189e1c8c1a105bb90add1c61f83c465203a32a (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
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
113
114
115
116
117
118
119
120
121
122
123
124
# 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 .mapinfo
catch {destroy $w}
toplevel $w
wm title $w "Zinc Mapinfo Demonstration"
wm iconname $w Mapinfo

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 shows zoom actions on map item.\nThe following operations are possible:\n Click - to zoom out\n Click + to zoom in "

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

###########################################
# Waypoints and sector
###########################################

mapinfo mapinfo create
#creation of mapinfo

#--------------------------------
# Waypoints
#--------------------------------
mapinfo mapinfo add symbol 200 100 0
mapinfo mapinfo add symbol 300 150 0
mapinfo mapinfo add symbol 400 50 0
mapinfo mapinfo add symbol 350 450 0
mapinfo mapinfo add symbol 300 250 0
mapinfo mapinfo add symbol 170 240 0
mapinfo mapinfo add symbol 550 200 0

#--------------------------------
# Waypoints names
#--------------------------------
mapinfo mapinfo add text normal simple 170 100 DO
mapinfo mapinfo add text normal simple 270 160 RE
mapinfo mapinfo add text normal simple 410 50 MI
mapinfo mapinfo add text normal simple 345 470 FA
mapinfo mapinfo add text normal simple 280 265 SOL
mapinfo mapinfo add text normal simple 150 240 LA
mapinfo mapinfo add text normal simple 555 200 SI

#--------------------------------
# Routes
#--------------------------------

mapinfo mapinfo add line simple 1 200 100 300 150
mapinfo mapinfo add line simple 1 300 150 400 50
mapinfo mapinfo add line simple 1 300 150 350 450
mapinfo mapinfo add line simple 1 300 250 170 240
mapinfo mapinfo add line simple 1 300 250 550 200

#--------------------------------
# Sectors
#---------------------------------
mapinfo mapinfo add line simple 1 300 0 400 50
mapinfo mapinfo add line simple 1 400 50 500 100
mapinfo mapinfo add line simple 1 500 100 550 200
mapinfo mapinfo add line simple 1 550 200 550 400
mapinfo mapinfo add line simple 1 550 400 350 450
mapinfo mapinfo add line simple 1 350 450 170 240
mapinfo mapinfo add line simple 1 170 240 200 100
mapinfo mapinfo add line simple 1 200 100 300 0

#--------------------------------
# Sectors
#---------------------------------
set gpe [$w.zinc add group 1]
set map [$w.zinc add map $gpe -mapinfo mapinfo -symbols AtcSymbol15]


###################################################
# control panel
###################################################
frame $w.rc
pack $w.rc

#the reference of the scale function is top-left corner of the zinc object
#so we first translate the group to zoom in order to put its center on top-left corner
#change the scale of the group
#translate the group to put it back at the center of the zinc object 


button $w.rc.minus -width 2 -height 2 -text {-} -command {
    $w.zinc translate $gpe [expr -$zinc_width/2] [expr -$zinc_height/2]
    $w.zinc scale $gpe 0.8 0.8
    $w.zinc translate $gpe [expr $zinc_width/2] [expr $zinc_height/2]
}
pack $w.rc.minus -side left

button $w.rc.plus -width 2 -height 2 -text {+} -command {
    $w.zinc translate $gpe [expr -$zinc_width/2] [expr -$zinc_height/2]
    $w.zinc scale $gpe 1.2 1.2
    $w.zinc translate $gpe [expr $zinc_width/2] [expr $zinc_height/2]
}
pack $w.rc.plus -side right