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
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
|
# sciBrowseVar.tcl
# Variable Browser
# This file is part of sciGUI toolbox
# Copyright (C) 2004 Jaime Urzua Grez
# mailto:jaime_urzua@yahoo.com
# rev. 0.2 - 2004/06/24
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarINI
# Parameters :
# Description : Initialice Variable Browse
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarINI { } {
global sciGUITable
set sciGUITable(browse,show) "1 2 4 5 6 8 10 15 16 17"
set sciGUITable(browse,chshow) 1
set sciGUITable(browse,dshow) ""
set sciGUITable(browse,tnames) "{real or complex} polynomial boolean sparce {sparce boolean} integer {graphic handles} string {un-compiled func.} {function lib.} list tlist mlist pointer"
set sciGUITable(browse,tnumbe) {1 2 3 5 6 8 9 10 11 13 14 15 16 17 128}
set fid [open [file join $sciGUITable(internal,path) "tcl" "sciGUI" "data" "dontshow.txt"] r]
while { [eof $fid]==0 } {
gets $fid lineRead
set lineRead [string trimleft "$lineRead"]
lappend sciGUITable(browse,dshow) "$lineRead"
}
close $fid
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarFilterQuit
# Parameters : winId op
# Description : Destroy widget and keep the last configuration
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarFilterQuit { winId op } {
global sciGUITable
set sciGUITable(browse,show) ""
foreach q {1 2 4 5 6 8 9 10 11 13 14 15 16 17 128} {
if { $sciGUITable(win,$winId,data,bt$q) } { lappend sciGUITable(browse,show) $q }
unset sciGUITable(win,$winId,data,bt$q)
}
set cvar "[ [sciGUIName $winId].r.txt get 1.0 end ]"
set cvar [split "$cvar" "\n"]
set sciGUITable(browse,dshow) ""
foreach qwe $cvar {
if { $qwe!="" } { lappend sciGUITable(browse,dshow) "$qwe" }
}
sciGUIDestroy $winId
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarFilter
# Parameters :
# Description : Show filter widget
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarFilter {} {
global sciGUITable
set winId [sciGUICreate -1 "browsevarfilter"]
set w [sciGUIName $winId]
wm title $w "Scilab BrowseVar Filter ($winId)"
wm protocol $w WM_DELETE_WINDOW "sciGUIBrowseVarFilterQuit $winId 0"
wm resizable $w 0 0
$w configure -background LightGray
frame $w.l -bd 2 -bg LightGray -relief ridge
frame $w.r -bd 2 -bg LightGray -relief ridge
grid config $w.l -column 0 -row 0 -columnspan 1 -rowspan 1 -sticky "n"
grid config $w.r -column 1 -row 0 -columnspan 1 -rowspan 1 -sticky "n"
label $w.l.btlab -text "Show:" -bg LightGray -fg blue
checkbutton $w.l.bt1 -text "real or complex" -bg LightGray -variable sciGUITable(win,$winId,data,bt1) -relief flat
checkbutton $w.l.bt2 -text "polynomial" -bg LightGray -variable sciGUITable(win,$winId,data,bt2) -relief flat
checkbutton $w.l.bt4 -text "boolean" -bg LightGray -variable sciGUITable(win,$winId,data,bt4) -relief flat
checkbutton $w.l.bt5 -text "sparce" -bg LightGray -variable sciGUITable(win,$winId,data,bt5) -relief flat
checkbutton $w.l.bt6 -text "sparce boolean" -bg LightGray -variable sciGUITable(win,$winId,data,bt6) -relief flat
checkbutton $w.l.bt8 -text "integer" -bg LightGray -variable sciGUITable(win,$winId,data,bt8) -relief flat
checkbutton $w.l.bt9 -text "graphic handles" -bg LightGray -variable sciGUITable(win,$winId,data,bt9) -relief flat
checkbutton $w.l.bt10 -text "string" -bg LightGray -variable sciGUITable(win,$winId,data,bt10) -relief flat
checkbutton $w.l.bt11 -text "un-compiled func." -bg LightGray -variable sciGUITable(win,$winId,data,bt11) -relief flat
checkbutton $w.l.bt13 -text "compiled func." -bg LightGray -variable sciGUITable(win,$winId,data,bt13) -relief flat
checkbutton $w.l.bt14 -text "function lib." -bg LightGray -variable sciGUITable(win,$winId,data,bt14) -relief flat
checkbutton $w.l.bt15 -text "list" -bg LightGray -variable sciGUITable(win,$winId,data,bt15) -relief flat
checkbutton $w.l.bt16 -text "tlist" -bg LightGray -variable sciGUITable(win,$winId,data,bt16) -relief flat
checkbutton $w.l.bt17 -text "mlist" -bg LightGray -variable sciGUITable(win,$winId,data,bt17) -relief flat
checkbutton $w.l.bt128 -text "pointer" -bg LightGray -variable sciGUITable(win,$winId,data,bt128) -relief flat
grid config $w.l.btlab -column 0 -row 0 -columnspan 1 -rowspan 1 -sticky "w"
set i 1
foreach q {1 2 4 5 6 8 9 10 11 13 14 15 16 17 128 } {
set vl "deselect"
if { [lsearch $sciGUITable(browse,show) $q]>-1 } {set vl "select"}
$w.l.bt$q $vl
grid config $w.l.bt$q -column 0 -row $i -columnspan 1 -rowspan 1 -sticky "w"
incr i
}
checkbutton $w.r.lab -text "Don't show :" -bg LightGray -fg blue -variable sciGUITable(browse,chshow) -relief flat
pack $w.r.lab -side top
text $w.r.txt -width 25 -height 20 -wrap word -yscrollcommand "$w.r.sb set"
scrollbar $w.r.sb -command "$w.r.txt yview"
pack $w.r.txt $w.r.sb -side left -fill both -pady 4
$w.r.txt delete 1.0 end
set sciGUITable(browse,dshow) [lsort $sciGUITable(browse,dshow)]
foreach wq $sciGUITable(browse,dshow) { $w.r.txt insert end "$wq\n" }
button $w.ok -text "Ok" -command "sciGUIBrowseVarFilterQuit $winId 1" -width 8
button $w.cancel -text "Cancel" -command "sciGUIBrowseVarFilterQuit $winId 0" -width 8
grid config $w.ok -column 0 -row 1 -columnspan 1 -rowspan 1 -sticky "w"
grid config $w.cancel -column 1 -row 1 -columnspan 1 -rowspan 1 -sticky "e"
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarDelete
# Parameters : winId
# Description : Delete a Scilab variable
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarDelete { winId } {
global sciGUITable
set var $sciGUITable(win,$winId,data,cVar)
if { $var > 0 } {
set varname $sciGUITable(win,$winId,data,$var,3)
set answer [sciGUIButtonDialog -1 "Do you really want to delete $varname?" "yes|no"]
if {$answer==1} { ScilabEval "clear $varname ;browsevar();" }
}
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarEdit
# Parameters : winId
# Description : Edit a Scilab Variable
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarEdit { winId } {
global sciGUITable
set var $sciGUITable(win,$winId,data,cVar)
if { $var > 0 } {
set varname $sciGUITable(win,$winId,data,$var,3)
ScilabEval "editvar $varname;"
}
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarProcFile
# Parameters : winId
# Description : Read variable information
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarProcFile { winId } {
global sciGUITable
for { set j 1 } { $j<=$sciGUITable(win,$winId,data,nVar) } {incr j} {
foreach k {0 1 2 3} {
unset sciGUITable(win,$winId,data,$j,$k)
}
}
set sciGUITable(win,$winId,data,nVar) 0
set sciGUITable(win,$winId,data,cVar) 0
set filename [file join $sciGUITable(win,$winId,data,tmpPath) "browsevar.txt"]
set fid [open $filename r]
while { [eof $fid]==0 } {
gets $fid lineRead
set lineRead [string trimleft "$lineRead"]
if { [regexp "^<d>*" "$lineRead"] } {
incr sciGUITable(win,$winId,data,nVar)
set cvar $sciGUITable(win,$winId,data,nVar)
set lineRead [string range "$lineRead" 3 end]
foreach re {0 1 2 3} {
set sciGUITable(win,$winId,data,$cvar,$re) [lindex "$lineRead" $re]
}
}
if { [regexp "^<m>*" "$lineRead"] } {
set w "[sciGUIName $winId].bottom.msg"
set lineRead [string range "$lineRead" 3 end]
set using [lindex "$lineRead" 1]
set total [lindex "$lineRead" 0]
set pto [lindex "$lineRead" 2]
$w configure -text "You are using $using of $total ($pto%)"
}
}
close $fid
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarDraw
# Parameters : winId
# Description : Display variable information
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarDraw { winId } {
global sciGUITable
set w "[sciGUIName $winId].center.cnv"
$w delete all
set p 1
#F.Leray
#Browse all the var. to know the max dimension.
set y 1
set maxk2 [string length "$sciGUITable(win,$winId,data,$y,3)"]
set maxk3 [string length "$sciGUITable(win,$winId,data,$y,1)"]
set maxk5 [string length "$sciGUITable(win,$winId,data,$y,2)"]
# puts "1ere fois"
# puts "maxk2 = $maxk2"
# puts "maxk3 = $maxk3"
# puts "maxk5 = $maxk5"
# puts "$sciGUITable(win,$winId,data,$y,3)"
# puts "$sciGUITable(win,$winId,data,$y,1)"
# puts "$sciGUITable(win,$winId,data,$y,2)"
for {set y 2} {$y <= $sciGUITable(win,$winId,data,nVar)} {incr y} {
set tmp_maxk2 [string length "$sciGUITable(win,$winId,data,$y,3)"]
if { $tmp_maxk2 > $maxk2 } {
set maxk2 $tmp_maxk2
}
set tmp_maxk3 [string length "$sciGUITable(win,$winId,data,$y,1)"]
if { $tmp_maxk3 > $maxk3 } {
set maxk3 $tmp_maxk3
}
set tmp_maxk5 [string length "$sciGUITable(win,$winId,data,$y,2)"]
if { $tmp_maxk5 > $maxk5 } {
set maxk5 $tmp_maxk5
}
}
# puts "AV x8+1 : "
# puts "maxk2 = $maxk2"
# puts "maxk3 = $maxk3"
# puts "maxk5 = $maxk5"
set maxk2 [expr $maxk2*8+1]
set maxk3 [expr $maxk3*8+1]
set maxk5 [expr $maxk5*8+1]
# puts "maxk2 = $maxk2"
# puts "maxk3 = $maxk3"
# puts "maxk5 = $maxk5"
# puts "150 inter1 = [expr 22+$maxk2]"
# puts "250 inter2 = [expr 22+$maxk2+$maxk3+$maxk5]"
# puts "235 inter3 = [expr 22+$maxk2+$maxk3]"
for {set y 1} {$y <= $sciGUITable(win,$winId,data,nVar)} {incr y} {
set yL [expr $p*18+2]
if { $y==$sciGUITable(win,$winId,data,cVar) } {
set cco "red";set cbb "yellow"
} else {
set cco "black";set cbb "white"
}
switch $sciGUITable(win,$winId,data,$y,0) {
1 {set iconName "tp01";set typNam "real or complex"}
2 {set iconName "tp02";set typNam "polynomial"}
4 {set iconName "tp04";set typNam "boolean"}
5 {set iconName "tp05";set typNam "sparce"}
6 {set iconName "tp06";set typNam "sparce boolean"}
8 {set iconName "tp08";set typNam "integer"}
9 {set iconName "tp00";set typNam "graphic handles"}
10 {set iconName "tp10";set typNam "string"}
11 {set iconName "tp00";set typNam "un-compiled func."}
13 {set iconName "tp00";set typNam "compiled func."}
14 {set iconName "tp00";set typNam "function lib."}
15 {set iconName "tp15";set typNam "list"}
16 {set iconName "tp16";set typNam "tlist"}
17 {set iconName "tp17";set typNam "mlist"}
128 {set iconName "tp00";set typNam "pointer"}
default {set iconName "tp00";set typNam "unknow"}
}
set putvar 0
if { [lsearch $sciGUITable(browse,show) $sciGUITable(win,$winId,data,$y,0)]>-1 } { set putvar 1 }
if { $sciGUITable(browse,chshow) } {
if { [lsearch $sciGUITable(browse,dshow) $sciGUITable(win,$winId,data,$y,3)]>-1 } { set putvar 0 }
}
if { $putvar==1 } {
set k(0) [$w create rectangle 22 [expr $yL-9] 350 [expr $yL+9] -fill $cbb -outline $cbb]
set k(1) [$w create image 0 $yL -image sciGUITable(gif,$iconName) -anchor w]
set k(2) [$w create text 22 $yL -text "$sciGUITable(win,$winId,data,$y,3)" -anchor w -fill $cco]
set tmno "$sciGUITable(win,$winId,data,$y,1)"
set k(3) [$w create text [expr 22+$maxk2] $yL -text "$tmno" -anchor w -fill $cco]
set k(4) [$w create text [expr 22+$maxk2+$maxk3+$maxk5] $yL -text "$typNam" -anchor w -fill $cco]
set k(5) [$w create text [expr 22+$maxk2+$maxk3] $yL -text "$sciGUITable(win,$winId,data,$y,2)" -anchor w -fill $cco]
foreach op {0 1 2 4 5} {
$w bind $k($op) <1> "set sciGUITable(win,$winId,data,cVar) $y; sciGUIBrowseVarDraw $winId"
}
incr p
}
}
$w config -scrollregion [$w bbox all]
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVarQuit
# Parameters : winId
# Description : Destroy Variable Browser widget
# ----------------------------------------------------------------------------
proc sciGUIBrowseVarQuit { winId } {
global sciGUITable
for {set cvar 1} {$cvar <= $sciGUITable(win,$winId,data,nVar)} {incr cvar} {
foreach re {0 1 2 3} {
unset sciGUITable(win,$winId,data,$cvar,$re)
}
}
unset sciGUITable(win,$winId,data,nVar)
unset sciGUITable(win,$winId,data,cVar)
unset sciGUITable(win,$winId,data,localrefresh)
unset sciGUITable(win,$winId,data,tmpPath)
sciGUIDestroy $winId
}
# ----------------------------------------------------------------------------
# Function : sciGUIBrowseVar
# Parameters : tmpPath
# Description : Variable browser GUI
# ----------------------------------------------------------------------------
proc sciGUIBrowseVar { tmpPath } {
global sciGUITable
set create 1
foreach winId $sciGUITable(win,id) {
if { [sciGUIGetType $winId]=="browsevar" } { set create 0; break; }
}
if { $create==1 } {
set winId [sciGUICreate -1 "browsevar"]
set w [sciGUIName $winId]
wm title $w "Scilab BrowseVar($winId)"
wm protocol $w WM_DELETE_WINDOW "sciGUIBrowseVarQuit $winId"
wm resizable $w 0 1
$w configure -background white
frame $w.top -bd 0 -background white
label $w.top.logo -image sciGUITable(gif,scilab01) -bg white
label $w.top.mes01 -text "Variable Browser" -font $sciGUITable(font,1) -bg white
pack $w.top -expand 0
pack $w.top.logo -side left
pack $w.top.mes01 -side right
frame $w.center -background white -bd 0
canvas $w.center.cnv -width 350 -height 100 -bg white -relief sunken -yscrollcommand "$w.center.sb set"
scrollbar $w.center.sb -command "$w.center.cnv yview"
pack $w.center.cnv $w.center.sb -side left -fill y -expand 1 -anchor w
pack $w.center -side top -expand 1 -fill both
# F.Leray 19.04.05 : add a canvas to have a scrollbar on x
frame $w.center2 -background white -bd 0
canvas $w.center2.cnv2 -width 0 -height 0 -bg white -relief sunken -xscrollcommand "$w.center2.sb2 set"
scrollbar $w.center2.sb2 -command "$w.center.cnv xview" -orient horizontal
pack $w.center2.cnv2 $w.center2.sb2 -side left -fill x -expand 1 -anchor n
pack $w.center2 -side top -fill both
frame $w.bottom -background LightGray -bd 2 -relief sunken
button $w.bottom.edit -width 25 -height 25 -image sciGUITable(icon,iconPencil) -command "sciGUIBrowseVarEdit $winId"
balloonhelp $w.bottom.edit "Edit variable"
button $w.bottom.delete -width 25 -height 25 -image sciGUITable(icon,iconTrash) -command "sciGUIBrowseVarDelete $winId"
balloonhelp $w.bottom.delete "Delete variable"
button $w.bottom.refresh -width 25 -height 25 -image sciGUITable(icon,iconReload) -command "ScilabEval browsevar()"
balloonhelp $w.bottom.refresh "Refresh table"
button $w.bottom.filter -width 25 -height 25 -image sciGUITable(icon,iconFilter) -command "sciGUIBrowseVarFilter"
balloonhelp $w.bottom.filter "Filter preferences"
button $w.bottom.quit -text "quit"
balloonhelp $w.bottom.quit "Quit"
label $w.bottom.msg -text "" -bg LightGray
pack $w.bottom.edit $w.bottom.delete $w.bottom.refresh $w.bottom.filter $w.bottom.msg -side left -expand 0 -padx 3 -pady 3
pack $w.bottom -side top -fill x -expand 0
set sciGUITable(win,$winId,data,nVar) 0
set sciGUITable(win,$winId,data,cVar) 0
set sciGUITable(win,$winId,data,localrefresh) "sciGUIBrowseVarDraw $winId"
}
set sciGUITable(win,$winId,data,tmpPath) "$tmpPath"
sciGUIBrowseVarProcFile $winId
sciGUIBrowseVarDraw $winId
}
|