/[ascend]/trunk/tcltk/TK/script.tcl
ViewVC logotype

Annotation of /trunk/tcltk/TK/script.tcl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 659 - (hide annotations) (download) (as text)
Sun Jun 4 20:01:04 2006 UTC (16 years, 9 months ago) by ben.allan
File MIME type: text/x-tcl
File size: 14982 byte(s)
added File->Open everywhere equivalent to File->Read ...  to resolve pye request.
At a 1.0 release of tcltk, we should consider getting rid of
the file reads, but not before. existing users have muscle memories
that are not to be toyed with.
1 johnpye 571 # script.tcl
2     # by Benjamin A. Allan and Kirk A. Abbott
3     # Created: January 1994
4     # Part of ASCEND
5     # Revision: $Revision: 1.37 $
6     # Last modified on: $Date: 1998/06/18 15:55:38 $
7     # Last modified by: $Author: mthomas $
8     # Revision control file: $RCSfile: script.tcl,v $
9     #
10     # This file is part of the ASCEND Tcl/Tk Interface.
11     #
12     # Copyright (C) 1994-1998 Carnegie Mellon University
13     #
14     # The ASCEND Tcl/Tk Interface is free software; you can redistribute
15     # it and/or modify it under the terms of the GNU General Public
16     # License as published by the Free Software Foundation; either
17     # version 2 of the License, or (at your option) any later version.
18     #
19     # The ASCEND Tcl/Tk Interface is distributed in hope that it will be
20     # useful, but WITHOUT ANY WARRANTY; without even the implied warranty
21     # of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22     # GNU General Public License for more details.
23     #
24     # You should have received a copy of the GNU General Public License
25     # along with the program; if not, write to the Free Software
26     # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139 USA. Check the
27     # file named COPYING. COPYING is found in ../compiler.
28    
29     # Module: script.tcl
30     # Tcl version: 7.1 (Tcl/Tk/XF)
31     # Tk version: 3.4
32     # XF version: 2.2
33     #
34    
35     # module contents
36     global moduleList
37     global autoLoadList
38     set moduleList(script.tcl) { .script}
39     set autoLoadList(script.tcl) {0}
40    
41     # procedures to show toplevel windows
42    
43     #----------------------------
44     # procedure to show window ShowWindow.script
45     # proc ShowWindow.script { args}
46     proc ShowWindow.script { args} {
47     # xf ignore me 7
48     global ascScripVect ascGlobalVect env
49    
50     StartupSrc.script
51    
52     # build widget .script
53     if {"[info procs XFEdit]" != ""} {
54     catch "XFDestroy .script"
55     } {
56     catch "destroy .script"
57     }
58     toplevel .script
59    
60     #
61     # Window manager configurations
62     #
63     wm positionfrom .script user
64     wm sizefrom .script user
65     wm iconname .script {Script}
66     wm minsize .script 100 100
67     wm title .script {A4 Script}
68     wm protocol .script WM_DELETE_WINDOW {Script_do_Exit}
69    
70     #
71     # Build frame along bottom of script to hold
72     # record button and file name
73     #
74     frame .script.check_frm \
75     -borderwidth {2} \
76     -relief {raised}
77    
78     entry .script.check_frm.file_entry \
79     -relief {raised} \
80     -width {24} \
81     -textvariable ascScripVect(filename) \
82     -font $ascScripVect(font) \
83     -state disabled \
84     -exportselection 0
85    
86     label .script.check_frm.record_btn \
87     -text { } \
88     -font $ascGlobalVect(font)
89    
90     pack append .script.check_frm \
91     .script.check_frm.record_btn {left frame center padx 10 pady 6} \
92     .script.check_frm.file_entry {left frame w pady 5 expand fill}
93    
94     #
95     # Build the main frame of the script. This holds the text boxes.
96     #
97     frame .script.main_frm \
98     -borderwidth {0}
99    
100     # Build the first script-text-box (script_box_0)
101     build_scriptbox .script.main_frm 0 $ascScripVect(font)
102     pack append .script.main_frm \
103     .script.main_frm.script_box_0 {top frame center expand fill}
104    
105     #
106     # Build the menu bar and submenus
107     #
108     menu .script.menubar \
109     -tearoffcommand .SCRIPT.MENUBAR \
110     -tearoff 0
111    
112     # The Edit menu.
113     menu .script.menubar.edit \
114     -tearoffcommand .SCRIPT.MENUBAR.EDIT \
115     -tearoff 0
116     .script.menubar.edit add checkbutton \
117     -variable ascScripVect(Record) \
118     -offvalue {0} \
119     -onvalue {1} \
120     -label {Record actions} \
121     -accelerator {Alt-e r} \
122     -underline 0
123     .script.menubar.edit add command \
124     -command {Script_do_SelectAll} \
125     -label {Select all} \
126     -accelerator {Alt-e s} \
127     -underline 0
128     .script.menubar.edit add separator
129     .script.menubar.edit add command \
130     -command {Script_do_RemoveStats} \
131     -accelerator {Alt-e d} \
132     -label {Delete statements} \
133     -underline 0
134     .script.menubar.edit add command \
135     -command Script_do_Cut \
136     -label Cut \
137     -accelerator F2 \
138     -underline -1
139     .script.menubar.edit add command \
140     -command Script_do_Copy \
141     -label Copy \
142     -accelerator F3 \
143     -underline -1
144     .script.menubar.edit add command \
145     -command Script_do_Paste \
146     -label Paste \
147     -accelerator F4 \
148     -underline -1
149    
150    
151     # The Execute menu.
152     menu .script.menubar.execute \
153     -tearoffcommand .SCRIPT.MENUBAR.EXECUTE \
154     -tearoff 0
155     .script.menubar.execute add command \
156     -command {Script_do_ExecuteStats} \
157     -label {Run statements selected} \
158     -accelerator {F5} \
159     -underline 0
160     .script.menubar.execute add command \
161     -command {Script_do_ExecuteStats 0} \
162     -label {Step through statements selected} \
163     -accelerator {F6} \
164     -underline 0
165    
166    
167     # The File menu
168     menu .script.menubar.file \
169     -tearoffcommand .SCRIPT.MENUBAR.FILE \
170     -tearoff 0
171     .script.menubar.file add command \
172     -command {Script_do_NewFile} \
173     -accelerator {Alt-f n} \
174     -label {New file} \
175     -underline 0
176     .script.menubar.file add command \
177     -command {Script_do_ReadFile} \
178     -label {Read file...} \
179     -accelerator {Alt-f r} \
180     -underline 0
181     .script.menubar.file add command \
182 ben.allan 659 -command {Script_do_ReadFile} \
183     -label {Open script file...} \
184     -accelerator {Alt-f o} \
185     -underline 0
186     .script.menubar.file add command \
187 johnpye 571 -command {Script_do_Import_File} \
188     -label {Import file...} \
189     -accelerator {Alt-f i} \
190     -underline 0
191     .script.menubar.file add separator
192     .script.menubar.file add command \
193     -command {Script_do_Exit} \
194     -accelerator {Alt-f e} \
195     -underline 0 \
196     -label {Exit ASCEND...}
197     .script.menubar.file add separator
198     .script.menubar.file add command \
199     -command {Script_do_WriteBuf} \
200     -label {Save} \
201     -accelerator {Alt-f s} \
202     -underline 0
203     .script.menubar.file add command \
204     -command {Script_do_WriteBufAs} \
205     -label {Save As...} \
206     -accelerator {Alt-f a} \
207     -underline 5
208     .script.menubar.file add separator
209    
210    
211     # The Help menu.
212     menu .script.menubar.help \
213     -tearoffcommand .SCRIPT.MENUBAR.HELP \
214     -tearoff 0
215     .script.menubar.help add command \
216     -command {Script_do_Help} \
217     -label {On Script} \
218     -underline 3
219     .script.menubar.help add command \
220     -command {Script_getting_started} \
221     -label {On getting started with ASCEND} \
222     -underline 3
223     .script.menubar.help add command \
224     -command {ascShowInfo 1} \
225     -label {About ASCEND IV} \
226     -underline 3
227    
228    
229     # The Tools menu.
230     menu .script.menubar.tools \
231     -tearoffcommand .SCRIPT.MENUBAR.TOOLS \
232     -tearoff 0
233     .script.menubar.tools add checkbutton \
234     -variable ascLibrVect(window.open) \
235     -onvalue 1 \
236     -offvalue 0 \
237     -label {Type class library ...} \
238     -accelerator {Alt-t l} \
239     -underline 11
240     .script.menubar.tools add checkbutton \
241     -variable ascBrowVect(window.open) \
242     -onvalue 1 \
243     -offvalue 0 \
244     -accelerator {Alt-t b} \
245     -label {Instance browser ...} \
246     -underline 9
247     .script.menubar.tools add checkbutton \
248     -variable ascProbVect(window.open) \
249     -onvalue 1 \
250     -offvalue 0 \
251     -label {Data probe ...} \
252     -accelerator {Alt-t p} \
253     -underline 5
254     .script.menubar.tools add checkbutton \
255     -variable ascSolvVect(window.open) \
256     -onvalue 1 \
257     -offvalue 0 \
258     -label {Solvers ...} \
259     -accelerator {Alt-t s} \
260     -underline 0
261     .script.menubar.tools add checkbutton \
262     -variable ascDispVect(window.open) \
263     -onvalue 1 \
264     -offvalue 0 \
265     -label {Display slave ...} \
266     -accelerator {Alt-t d} \
267     -underline 0
268     .script.menubar.tools add checkbutton \
269     -variable ascUnitVect(window.open) \
270     -onvalue 1 \
271     -offvalue 0 \
272     -accelerator {Alt-t m} \
273     -label {Measuring units ...} \
274     -underline 0
275     .script.menubar.tools add checkbutton \
276     -variable ascToolVect(window.open) \
277     -onvalue 1 \
278     -offvalue 0 \
279     -label {Toolbox ...} \
280     -accelerator {Alt-t t} \
281     -underline 0
282     .script.menubar.tools add separator
283     .script.menubar.tools add command \
284     -command {NoteBrowse} \
285     -label {Notes on models ...} \
286     -accelerator {Alt-t n} \
287     -underline 0
288     .script.menubar.tools add command \
289     -command {ascconsole_open} \
290     -label {Open console} \
291     -accelerator {Alt-t c} \
292     -underline 5
293     .script.menubar.tools add command \
294     -command {ascplot_open} \
295     -accelerator {Alt-t a} \
296     -label {ASCPLOT ...} \
297     -underline 0
298     .script.menubar.tools add command \
299     -command {Tool_do_UtilBox} \
300     -accelerator {Alt-t u} \
301     -label {System utilities ...} \
302     -underline 7
303     .script.menubar.tools add command \
304     -command {Tool_do_Callbacks} \
305     -accelerator {Alt-t i} \
306     -label {Internal functions ...} \
307     -underline 0
308     .script.menubar.tools add command \
309     -command {Tool_do_Bugs} \
310     -accelerator {Alt-t g} \
311     -label {Report bug ...} \
312     -underline 9
313    
314    
315     # The options menu.
316     menu .script.menubar.options \
317     -tearoffcommand .SCRIPT.MENUBAR.OPTIONS \
318     -tearoff 0
319     .script.menubar.options add command \
320     -command {View_Save_Values} \
321     -label {Save all options and appearances for all windows} \
322     -accelerator {Alt-o s} \
323     -underline 0
324    
325     # The View menu.
326     menu .script.menubar.view \
327     -tearoffcommand .SCRIPT.MENUBAR.VIEW \
328     -tearoff 0
329     .script.menubar.view add command \
330     -command {Script_do_Font} \
331     -label {Font ...} \
332     -accelerator {Alt-v f} \
333     -underline 0
334     .script.menubar.view add command \
335     -command {View_Set_Save_Options script} \
336     -label {Save Script appearance} \
337     -accelerator {Alt-v s} \
338     -underline 0
339     .script.menubar.view add command \
340     -command {Script_do_SaveOptions} \
341     -label {Save all appearances} \
342     -accelerator {Alt-v a} \
343     -underline 5
344    
345    
346     #
347     # Add the menus as cascades of the toplevel's menu;
348     # add the toplevel's menu to the toplevel
349     #
350     .script.menubar add cascade \
351     -menu .script.menubar.file \
352     -label {File} \
353     -underline 0
354     .script.menubar add cascade \
355     -menu .script.menubar.edit \
356     -label {Edit} \
357     -underline 0
358     .script.menubar add cascade \
359     -menu .script.menubar.execute \
360     -label {Execute} \
361     -underline 1
362     .script.menubar add cascade \
363     -menu .script.menubar.options \
364     -label {Options} \
365     -underline 0
366     .script.menubar add cascade \
367     -menu .script.menubar.view \
368     -label {View} \
369     -underline 0
370     .script.menubar add cascade \
371     -menu .script.menubar.tools \
372     -label {Tools} \
373     -underline 0
374     .script.menubar add cascade \
375     -menu .script.menubar.help \
376     -label {Help} \
377     -underline 0
378     .script configure \
379     -menu .script.menubar
380    
381     #
382     # Add the main frame and the bottom frame to the toplevel .script
383     #
384     pack append .script \
385     .script.main_frm {top frame center expand fill} \
386     .script.check_frm {top frame center fillx}
387    
388     EndSrc.script
389    
390     if {"[info procs XFEdit]" != ""} {
391     catch "XFMiscBindWidgetTree .script"
392     after 2 "catch {XFEditSetShowWindows}"
393     }
394     }
395    
396     # proc StartupSrc.script {args}
397     proc StartupSrc.script {args} {
398     # script startup entrance
399     # as much of the C/global dependencies managed here as possible
400     global ascScripVect ascGlobalVect env
401     if {[catch {set ascScripVect(windowname)} ]} {
402     set ascScripVect(minsize) 10x10
403     set ascScripVect(geometry) 37x21+10+10
404     set ascScripVect(iconname) Script
405     set ascScripVect(initialstate) normal
406     set ascScripVect(font) "-*-*"
407     }
408     if {[catch {set ascGlobalVect(font)} ]} {
409     set ascGlobalVect(font) "-*-*"
410     set ascGlobalVect(labelfont) "-*-*"
411     set ascGlobalVect(tbg) "white"
412     set ascGlobalVect(tfg) "black"
413     set ascGlobalVect(bg) "white"
414     set ascGlobalVect(fg) "black"
415     set ascGlobalVect(afg) "white"
416     set ascGlobalVect(abg) "black"
417     set ascGlobalVect(sfg) "white"
418     set ascGlobalVect(sbg) "black"
419     set ascGlobalVect(visibility) 1
420     set ascGlobalVect(c_loaded) "0"
421     set ascGlobalVect(toolbitmap) \
422     "@$env(ASCENDBITMAPS)/toolAttributes.xbm"
423     }
424     }
425    
426     # proc EndSrc.script {}
427     proc EndSrc.script {} {
428     # script startup exit
429     global ascScripVect
430     set ascScripVect(geometry) [sanegeometry $ascScripVect(geometry)]
431     set minw [lindex [split $ascScripVect(minsize) x] 0]
432     set minh [lindex [split $ascScripVect(minsize) x] 1]
433     set gw [lindex [split [lindex [split $ascScripVect(geometry) +-] 0] x] 0]
434     set gh [lindex [split [lindex [split $ascScripVect(geometry) +-] 0] x] 1]
435     set gpx [lindex [split [split $ascScripVect(geometry) x] +-] 1]
436     set gpy [lindex [split [split $ascScripVect(geometry) x] +-] 2]
437     if {[expr $gw < $minw]} {set gw $minw}
438     if {[expr $gh < $minh]} {set gh $minh}
439     set gwh "${gw}x${gh}"
440     wm minsize .script $minw $minh
441     wm geometry .script "${gwh}+${gpx}+$gpy"
442     # wm geometry .script [gospos .script $gpx $gpy]
443     wm iconname .script $ascScripVect(iconname)
444    
445     if {$ascScripVect(initialstate)!="iconic" && \
446     $ascScripVect(initialstate)!="iconified" && \
447     $ascScripVect(initialstate) !="withdrawn"} {
448     wm deiconify .script
449     }
450     if {"$ascScripVect(initialstate)"=="withdrawn"} {
451     wm withdraw .script
452     }
453    
454     }
455    
456    
457     #
458     # proc build_scriptbox {parentname winnum font}
459     #---------------------------------------------------------------------------
460     # creates a text widget with scrollbars in the context
461     # of parentname, if same does not already exist.
462     # the name of the text widget is
463     # $parentname.script_box_$winnum
464     # returns the name $parentname.script_box_$winnum
465     # The widget with this name has a child named text2.
466     # scrollbars are done with bg/fg colors
467     # text is done with tbg/tfg, sbg/sfg for plain and selected text,
468     # respectively.
469     # if the widget already exists, recolors it from the given input.
470     #---------------------------------------------------------------------------
471     #
472     proc build_scriptbox {parentname winnum font} {
473    
474     if {[winfo exists $parentname.script_box_$winnum]} {
475     return $parentname.script_box_$winnum
476     }
477    
478     # build widget $parentname.script_box_$winnum
479     frame $parentname.script_box_$winnum \
480     -relief {raised}
481    
482     # build widget $parentname.script_box_$winnum.scrollbar1
483     scrollbar $parentname.script_box_$winnum.scrollbar1 \
484     -command "$parentname.script_box_$winnum.text2 yview"
485    
486     # build widget $parentname.script_box_$winnum.text2
487     text $parentname.script_box_$winnum.text2 \
488     -exportselection 0 \
489     -borderwidth {2} \
490     -height {2} \
491     -relief {raised} \
492     -setgrid {1} \
493     -width {10} \
494     -wrap {word} \
495     -yscrollcommand "$parentname.script_box_$winnum.scrollbar1 set" \
496     -font $font
497    
498     # pack widget $parentname.script_box_$winnum
499     pack append $parentname.script_box_$winnum \
500     $parentname.script_box_$winnum.scrollbar1 {right frame center filly} \
501     $parentname.script_box_$winnum.text2 {top frame center expand fill}
502     catch {emacs-bind $parentname.script_box_$winnum.text2}
503     set w $parentname.script_box_$winnum.text2
504     bind $w <F2> Script_do_Cut
505     bind $w <F3> Script_do_Copy
506     bind $w <F4> Script_do_Paste
507     bind $w <F5> {
508     Script_do_ExecuteStats
509     }
510     bind $w <F6> {
511     Script_do_ExecuteStats 0
512     }
513     $w mark set insert end
514     }
515    
516    
517     # Internal procedures
518    
519     # eof
520     #

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22