YANS -- Yet another new style
[dyninst.git] / paradyn / tcl / applic.tcl
1 #applic.tcl
2 # window to get application choices from user
3 # $Log: applic.tcl,v $
4 # Revision 1.4  1994/07/21 01:53:30  rbi
5 # YANS -- Yet another new style
6 #
7 # Revision 1.3  1994/06/18  20:31:10  hollings
8 # Changed default host to empty string since the environment variable host is
9 # not guarnteed to be defined.
10 #
11 # Revision 1.2  1994/05/26  21:23:10  karavan
12 # changed parent window name.
13 #
14 # Revision 1.1  1994/05/23  01:56:22  karavan
15 # initial version.
16 #
17
18 ## initialize application defn screen, without displaying it yet
19
20 proc InitApplicDefnScreen {} {
21
22 global ADparent PdNumDefinedProcesses definedProcesses applicCmd \
23         env ADshow ADapplic applicDaemon
24
25 set newdefinedProcesses ""
26 set PdNumDefinedProcesses 0
27 set ADparent .main
28 set ADshow $ADparent.show
29 set ADapplic $ADparent.applic
30
31 for {set i 0} {$i < 12} {incr i} {
32         set definedProcesses($i) ""
33 }
34
35 ########## screen 1 accepts new process defn from user #######
36
37 frame $ADparent.applic
38 frame $ADparent.applic.top -relief raised
39 frame $ADparent.applic.bot -relief raised
40
41 frame $ADparent.applic.top.user -border 2
42 frame $ADparent.applic.top.machine -border 2
43 frame $ADparent.applic.top.daemon -border 2
44 frame $ADparent.applic.top.cmd -border 2
45 label $ADparent.applic.title -text "Application Definition Entry"
46
47 # single-line user, machine, daemon, command  entries
48
49 label $ADparent.applic.top.user.lbl -anchor w -text "User: " \
50         -anchor e -width 12
51 label $ADparent.applic.top.machine.lbl -anchor w -text "Machine: " \
52         -anchor e -width 12
53 label $ADparent.applic.top.daemon.lbl -anchor w -text "Daemon: " \
54         -anchor e -width 12
55 label $ADparent.applic.top.cmd.lbl -anchor w -text "Command: " \
56         -anchor e -width 12
57
58 entry $ADparent.applic.top.user.ent -width 80 -textvariable applicUser \
59         -relief sunken
60 $ADparent.applic.top.user.ent insert end $env(USER)
61 bind $ADparent.applic.top.user.ent <Return> \
62         "focus $ADparent.applic.top.machine.ent"
63 entry $ADparent.applic.top.machine.ent -width 80 -textvariable applicMachine \
64         -relief sunken
65 $ADparent.applic.top.machine.ent insert end ""
66 bind $ADparent.applic.top.machine.ent <Return> \
67         "focus $ADparent.applic.top.daemon.ent"
68
69 entry $ADparent.applic.top.daemon.ent -width 80 -textvariable applicDaemon \
70         -relief sunken
71 bind $ADparent.applic.top.daemon.ent <Return> \
72         "focus $ADparent.applic.top.cmd.ent"
73 entry $ADparent.applic.top.cmd.ent -width 80 -textvariable applicCmd \
74         -relief sunken
75 bind $ADparent.applic.top.cmd.ent <Return> \
76         "focus $ADparent.applic.top.user.ent"
77
78 pack $ADparent.applic.title $ADparent.applic.top $ADparent.applic.bot \
79         -side top -expand yes -fill both
80 pack $ADparent.applic.top.user $ADparent.applic.top.machine  \
81         $ADparent.applic.top.daemon \
82         $ADparent.applic.top.cmd -side top \
83          -expand yes -fill both
84
85 pack $ADparent.applic.top.user.lbl $ADparent.applic.top.user.ent \
86         -side left -expand yes -fill x
87 pack $ADparent.applic.top.machine.lbl $ADparent.applic.top.machine.ent \
88         -side left -expand yes -fill x
89 pack $ADparent.applic.top.daemon.lbl $ADparent.applic.top.daemon.ent \
90         -side left -expand yes -fill x
91 pack $ADparent.applic.top.cmd.lbl $ADparent.applic.top.cmd.ent \
92         -side left -expand yes -fill x
93
94 # add/accept/cancel/done
95
96 button $ADparent.applic.bot.b1 -text "Accept" \
97         -command {AcceptNewApplicDefn $applicUser $applicMachine \
98                 $applicDaemon $applicCmd definedProcesses}
99 button $ADparent.applic.bot.b2 -text "Cancel" \
100         -command {pack forget $ADparent.applic; pack $ADparent.show}
101
102 pack $ADparent.applic.bot.b1 $ADparent.applic.bot.b2 -side left \
103         -fill x -padx 10 
104
105 ############ screen 0 displays defined applications ############3
106
107 frame $ADparent.show
108
109 label $ADparent.show.title -text "Paradyn Process Definition" \
110         -anchor center -relief ridge
111 frame $ADparent.show.top
112 frame $ADparent.show.bottom
113
114 button $ADparent.show.bottom.b1 -text "Add Process" -command {AddProcess}
115 button $ADparent.show.bottom.b2 -text "DONE" \
116         -command {pack forget $ADparent.show ; pack forget .main}
117
118 label $ADparent.show.top.lbl -text "Currently Defined Processes:" \
119         -anchor w -width 84
120
121 listbox $ADparent.show.top.alist -geometry 80x12 -bg white
122
123 pack $ADparent.show.title $ADparent.show.top $ADparent.show.bottom \
124         -side top -expand yes -fill both 
125 pack $ADparent.show.top.lbl -side top -pady 5
126 pack $ADparent.show.top.alist -side top -fill both -expand yes 
127 pack $ADparent.show.bottom.b1 $ADparent.show.bottom.b2 -side left \
128         -fill both -padx 10
129
130 }
131
132 ### display application definition screen 0, already defined, on frame
133
134 proc ApplicDefn {} {
135
136 global ADshow
137 pack .main -side bottom -fill x
138 pack $ADshow
139 }
140
141 proc AddProcess {} {
142 global applicCmd
143 global ADparent PdNumDefinedProcesses
144 if {$PdNumDefinedProcesses < 6} {
145         set applicCmd ""
146         pack forget $ADparent.show      
147         pack $ADparent.applic
148         focus $ADparent.applic.top.daemon.ent
149 }
150 }
151
152 proc AcceptNewApplicDefn {user machine daemon cmd defined} {
153 global PdNumDefinedProcesses ADparent applicDaemon applicCmd
154
155 upvar $defined dlist
156 set retval [catch \
157         {paradyn process -user $user -machine $machine -daemon $daemon $cmd}]
158
159 if {$retval == 1} {
160         focus $ADparent.applic.top.daemon.ent
161 } else {
162         incr PdNumDefinedProcesses
163
164         $ADparent.show.top.alist insert end $user:$machine:$daemon
165         $ADparent.show.top.alist insert end \ \ $cmd
166         pack forget $ADparent.applic
167         pack $ADparent.show
168 }
169 #reset daemon and cmd
170 set applicDaemon ""
171 set applicCmd ""
172
173 }