Added a little bit of error handling.
[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.8  1994/11/03 17:59:38  rbi
5 # Added a little bit of error handling.
6 #
7 # Revision 1.7  1994/11/03  16:10:42  rbi
8 # New process definition interface.
9 #
10 # Revision 1.6  1994/08/23  18:01:11  karavan
11 # fixed argument parsing to paradyn process command.
12 #
13 # Revision 1.5  1994/07/21  17:47:43  rbi
14 # No more jumpy resizes.
15 #
16 # Revision 1.4  1994/07/21  01:53:30  rbi
17 # YANS -- Yet another new style
18 #
19 # Revision 1.3  1994/06/18  20:31:10  hollings
20 # Changed default host to empty string since the environment variable host is
21 # not guarnteed to be defined.
22 #
23 # Revision 1.2  1994/05/26  21:23:10  karavan
24 # changed parent window name.
25 #
26 # Revision 1.1  1994/05/23  01:56:22  karavan
27 # initial version.
28 #
29
30 proc DefineProcess {} {
31 global env
32   set W .pDefn
33   catch {destroy $W}
34   toplevel $W
35   wm title $W "Process Defn"
36   wm iconname $W "Process Defn"
37
38 # define all of the main frames
39   set T $W.title
40   label $T -text "Define A Process" \
41             -anchor center -relief raised \
42             -font "-Adobe-times-bold-r-normal--*-120*" 
43   set D $W.data
44   frame $D
45   set B $W.buttons
46   frame $B
47   pack $T $D $B -side top -expand yes -fill both
48
49 #
50 #  In the data area, each line contains a label and an entry
51 #  
52   frame $D.user -border 2
53   label $D.user.lbl -text "User: " -anchor e -width 12
54   entry $D.user.ent -width 50 -textvariable applicUser -relief sunken
55   $D.user.ent delete 0 end 
56   $D.user.ent insert end $env(USER)
57   bind $D.user.ent <Tab> "focus $D.machine.ent"
58   bind $D.user.ent <Return> "$B.accept invoke"
59   pack $D.user -side top -expand yes -fill x
60   pack $D.user.lbl $D.user.ent -side left -expand yes -fill x
61
62   frame $D.machine -border 2
63   label $D.machine.lbl -text "Machine: " -anchor e -width 12
64   entry $D.machine.ent -width 50 -textvariable applicMachine -relief sunken
65   bind $D.machine.ent <Tab> "focus $D.daemon.ent"
66   bind $D.machine.ent <Return> "$B.accept invoke"
67   pack $D.machine -side top -expand yes -fill x
68   pack $D.machine.lbl $D.machine.ent -side left -expand yes -fill x
69
70   frame $D.daemon -border 2
71   label $D.daemon.lbl -text "Daemon: " -anchor e -width 12
72   entry $D.daemon.ent -width 50 -textvariable applicDaemon -relief sunken
73   bind $D.daemon.ent <Tab> "focus $D.cmd.ent"
74   bind $D.daemon.ent <Return> "$B.accept invoke"
75   pack $D.daemon -side top -expand yes -fill x
76   pack $D.daemon.lbl $D.daemon.ent -side left -expand yes -fill x
77
78   frame $D.cmd -border 2
79   label $D.cmd.lbl -text "Command: " -anchor e -width 12
80   entry $D.cmd.ent -width 50 -textvariable applicCmd -relief sunken
81   bind $D.cmd.ent <Tab> "focus $D.user.ent"
82   bind $D.cmd.ent <Return> "$B.accept invoke"
83   pack $D.cmd -side top -expand yes -fill x
84   pack $D.cmd.lbl $D.cmd.ent -side left -expand yes -fill x
85         
86   button $B.accept -text "Accept" -background green3 \
87     -command {AcceptNewApplicDefn $applicUser $applicMachine $applicDaemon $applicCmd} 
88   $B.accept configure -activebackground green3
89   button $B.cancel -text "Cancel" -background red3 \
90     -command {destroy .pDefn}
91   $B.cancel configure -activebackground red3
92   pack $B.accept $B.cancel -side left -padx 8 -expand no -fill x
93   focus $D.user.ent
94 }
95
96 proc AcceptNewApplicDefn {user machine daemon cmd} {
97   set pcmd [list paradyn process]
98
99   if {[string length $user] > 0} {
100     lappend pcmd "-user" $user
101   }
102
103   if {[string length $machine] > 0} {
104     lappend pcmd "-machine" $machine
105   }
106
107   if {[string length $daemon] > 0} {
108     lappend pcmd "-daemon" $daemon
109   }
110
111   set pcmd [concat $pcmd $cmd]
112  
113   set retval [catch $pcmd]
114
115   if {$retval == 1} {
116     set result "Illegal Process Definition"
117     eval [list uimpd showError 25 $result]
118   }
119   destroy .pDefn
120 }