updated the feature formerly known as "SAVE"
[dyninst.git] / paradyn / tcl / save.tcl
1 # $Id: save.tcl,v 1.4 1999/05/19 07:49:41 karavan Exp $
2 # this file contains the routines for the "SAVE" button 
3
4 proc pdSave {} {
5     global saveGlobalData savePhaseData saveResources saveDirectory \
6             saveMessage saveWindow saveGlobalSearch savePhaseSearch
7
8     # clear previous invalid entry message, if any
9     set saveMessage "Enter name of Directory for Data/Resource Files"
10
11     # make sure directory entry is valid
12     if { ! [file exists $saveDirectory]} {
13         #try to create the directory
14         catch {exec mkdir $saveDirectory}
15     }
16     if { (! [file isdirectory $saveDirectory]) || \
17             (![file writable $saveDirectory]) } {
18         set saveMessage "Error: invalid directory name"
19         puts "\a"
20         return
21     }
22     if {$saveGlobalData == 1}  {
23         if {$savePhaseData == 0} {
24             paradyn save data global $saveDirectory
25         } else {
26             paradyn save data all $saveDirectory
27         }
28     } else {
29         if {$savePhaseData == 1} {
30             paradyn save data phase $saveDirectory
31         }
32     }
33     if {$saveResources == 1} {
34             paradyn save resources all $saveDirectory
35     }
36     if {$saveGlobalSearch == 1} {
37         paradyn save shg global $saveDirectory
38     }
39     if {$savePhaseSearch == 1} {
40         paradyn save shg phase $saveDirectory
41     }
42
43     destroy $saveWindow
44 }
45
46 proc drawSaveMenu {} {
47     global saveGlobalData savePhaseData saveResources saveDirectory \
48             saveMessage saveWindow saveGlobalSearch savePhaseSearch
49     set saveWindow .pdsw
50     toplevel $saveWindow
51     wm title $saveWindow "Paradyn Save"
52     wm iconname $saveWindow "Paradyn Save"
53     
54     set di $saveWindow.directory
55     set wh $saveWindow.what
56     set ex $saveWindow.exit
57     frame $di 
58     frame $wh -relief raised -borderwidth 2
59     frame $ex -relief raised -borderwidth 2
60     pack $wh $di $ex -side top -fill both -padx 2 -pady 5
61
62     # save what?
63     label $wh.la -text "Save Paradyn Data" \
64             -foreground white -anchor c \
65             -font { Times 14 bold } \
66             -relief raised \
67             -background purple
68     pack  $wh.la -side top -fill both -expand true
69
70     frame $wh.data 
71     checkbutton $wh.data.gd -text "Global Data" -variable saveGlobalData 
72     $wh.data.gd select
73     checkbutton $wh.data.pd -text "Phase Data" -variable savePhaseData
74     pack $wh.data.gd $wh.data.pd -side left -padx 25 -pady 5 -anchor w
75     pack $wh.data -side top
76
77     frame $wh.other
78     checkbutton $wh.other.re -text "Where Axis" -variable saveResources
79     $wh.other.re select
80     pack $wh.other.re -side left
81     pack $wh.other -side top 
82
83     frame $wh.perf
84     label $wh.perf.la -text "Performance Consultant: "
85     checkbutton $wh.perf.pc -text "Global Search" \
86             -variable saveGlobalSearch
87     checkbutton $wh.perf.pcph -text "Phase Search(es)" \
88             -variable savePhaseSearch
89     pack $wh.perf.la $wh.perf.pc $wh.perf.pcph -side left \
90             -padx 25 -pady 5 -anchor w
91     pack $wh.perf -side top -fill both
92
93     #directory?
94
95     # make the list frame and set up resizing 
96     frame $di.top 
97     frame $di.bot
98     entry $di.top.ent -width 50 -textvariable saveDirectory -relief sunken
99     bind $di.top.ent <Return> "pdSave"
100     label $di.top.la -text "Directory:"
101     pack $di.top.la $di.top.ent -side left -padx 5
102     set saveMessage "Enter name of Directory for Data/Resource Files"
103     label $di.bot.ms -textvariable saveMessage
104     pack $di.bot.ms -side top
105     pack $di.top $di.bot -side top -fill both
106
107     #exit
108     mkButtonBar $ex {} retval {{SAVE "pdSave"} \
109             {CLEAR "set saveDirectory \"\""} {CANCEL "destroy .pdsw"} }
110 }
111