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