3 |
|
# Action screen for trad |
4 |
|
# |
5 |
|
|
6 |
+ |
set batch_fmt "Process %d on %s started" |
7 |
+ |
set hostname [exec hostname] |
8 |
+ |
|
9 |
|
proc make_script {} { # make run script |
10 |
|
global scname rpview curmess |
11 |
|
set rfn /usr/tmp/rf[pid] |
40 |
|
set fi [open "|make $radvar(OCTREE) $args" r] |
41 |
|
while {[gets $fi curmess] >= 0} { update ; after 1000 } |
42 |
|
catch {close $fi} curmess |
40 |
– |
if {"$args" == {}} {return} |
43 |
|
} |
44 |
|
if {"$args" == {}} { |
45 |
|
run_rad -v 0 |
67 |
|
} |
68 |
|
|
69 |
|
proc run_batch {} { # start rendering in background |
70 |
< |
global rpview bfname batch_pid curmess rifname mywin |
70 |
> |
global rpview bfname batch_pid curmess rifname mywin batch_fmt hostname |
71 |
|
if {! [chksave]} {return} |
72 |
|
if [catch {set fo [open $bfname w]} curmess] { |
73 |
|
return |
74 |
|
} |
75 |
|
# Make space for PID to be written later |
76 |
< |
puts $fo " " |
76 |
> |
puts $fo \ |
77 |
> |
" " |
78 |
|
if {$rpview == " ALL"} { |
79 |
|
set radcom "rad" |
80 |
|
} else { |
88 |
|
set batch_pid [eval exec $radcom >>& $bfname &] |
89 |
|
# Now, write PID and close file |
90 |
|
seek $fo 0 |
91 |
< |
puts -nonewline $fo $batch_pid |
91 |
> |
puts -nonewline $fo "[format $batch_fmt $batch_pid $hostname]\ |
92 |
> |
[exec date]" |
93 |
|
close $fo |
94 |
|
set curmess "Batch rendering process $batch_pid started." |
95 |
|
# Correct button stati |
105 |
|
switch -glob [exec uname] { |
106 |
|
SunOS - |
107 |
|
ULTRIX {set ps "ps -lg"} |
108 |
< |
default {set ps "ps -lu $env(USER)"} |
108 |
> |
default {set ps "ps -lu $env(LOGNAME)"} |
109 |
|
} |
110 |
|
set fi [open "|$ps" r] |
111 |
|
gets $fi li |
151 |
|
catch {destroy $mywin.rbvmb.m} |
152 |
|
if {[llength $radvar(view)] < 2} { |
153 |
|
$mywin.rivmb configure -state disabled |
150 |
– |
$mywin.rbvmb configure -state disabled |
154 |
|
return |
155 |
|
} |
156 |
|
menu $mywin.rivmb.m |
160 |
|
-variable rvview -value [lindex $v 0] |
161 |
|
} |
162 |
|
menu $mywin.rbvmb.m |
163 |
< |
$mywin.rbvmb configure -menu $mywin.rbvmb.m -state normal |
163 |
> |
$mywin.rbvmb configure -menu $mywin.rbvmb.m |
164 |
|
$mywin.rbvmb.m add radiobutton -label ALL \ |
165 |
|
-variable rpview -value " ALL" |
166 |
|
$mywin.rbvmb.m add separator |
172 |
|
|
173 |
|
proc do_action w { # Action screen |
174 |
|
global rifname rvview rpview radvar bfname batch_pid \ |
175 |
< |
curmess scname mywin alldone |
175 |
> |
curmess scname mywin alldone batch_fmt hostname |
176 |
|
if {"$w" == "done"} { |
177 |
< |
unset rpview bfname batch_pid mywin |
177 |
> |
unset rvview rpview bfname batch_pid mywin |
178 |
|
return |
179 |
|
} |
180 |
|
set bfname [file rootname [file tail $rifname]].err |
225 |
|
helplink $w.rbce trad action checkerr |
226 |
|
if [file exists $bfname] { |
227 |
|
set fi [open $bfname r] |
228 |
< |
eval set batch_pid [gets $fi] |
229 |
< |
gets $fi radcom |
228 |
> |
if {[scan [gets $fi] $batch_fmt batch_pid batch_host] != 2} { |
229 |
> |
set batch_host unknown |
230 |
> |
set radcom {} |
231 |
> |
} else { |
232 |
> |
gets $fi radcom |
233 |
> |
} |
234 |
|
close $fi |
235 |
< |
if [catch {exec /bin/kill -0 $batch_pid}] { |
235 |
> |
if [string match "rad -v *" $radcom] { |
236 |
> |
set rpview [lindex $radcom 2] |
237 |
> |
} else { |
238 |
> |
set rpview " ALL" |
239 |
> |
} |
240 |
> |
if {"$hostname" != "$batch_host"} { |
241 |
|
if $alldone { |
242 |
+ |
set curmess "Batch rendering finished\ |
243 |
+ |
on $batch_host." |
244 |
+ |
} else { |
245 |
+ |
set curmess "Batch rendering on\ |
246 |
+ |
$batch_host -- status UNKNOWN." |
247 |
+ |
$w.rbst configure -state disabled |
248 |
+ |
$w.rbvmb configure -state disabled |
249 |
+ |
} |
250 |
+ |
set batch_pid 0 |
251 |
+ |
$w.rbki configure -state disabled |
252 |
+ |
} elseif {[catch {exec /bin/kill -0 $batch_pid}]} { |
253 |
+ |
if $alldone { |
254 |
|
set curmess "Batch rendering finished." |
255 |
|
} else { |
256 |
|
set curmess "Batch rendering stopped." |
260 |
|
$w.rbki configure -state disabled |
261 |
|
} else { |
262 |
|
set curmess "Batch rendering process $batch_pid running." |
239 |
– |
if [string match "rad -v *" $radcom] { |
240 |
– |
set rpview [lindex $radcom 2] |
241 |
– |
} else { |
242 |
– |
set rpview " ALL" |
243 |
– |
} |
263 |
|
$w.rbst configure -state disabled |
264 |
|
$w.rbvmb configure -state disabled |
265 |
|
} |