--- ray/src/util/do_action.tcl 1994/11/30 15:23:56 2.5 +++ ray/src/util/do_action.tcl 2005/02/16 05:40:12 2.12 @@ -1,11 +1,14 @@ -# SCCSid "$SunId$ LBL" +# RCSid: $Id: do_action.tcl,v 2.12 2005/02/16 05:40:12 greg Exp $ # # Action screen for trad # +set batch_fmt "Process %d on %s started" +set hostname [exec hostname] + proc make_script {} { # make run script global scname rpview curmess - set rfn /usr/tmp/rf[pid] + set rfn /tmp/rf[pid] if {! [save_vars $rfn]} { beep set curmess "Cannot save variables to temporary file!" @@ -16,7 +19,7 @@ proc make_script {} { # make run script lappend radcom -v $rpview } if {"$scname" == {}} { - set rof /usr/tmp/ro[pid] + set rof /tmp/ro[pid] } else { set rof $scname } @@ -47,7 +50,7 @@ proc make_oct args { # Make octree file ($args is {-t proc run_rad args { # Run rad command with given arguments global curmess - set rfn /usr/tmp/rf[pid] + set rfn /tmp/rf[pid] if {! [save_vars $rfn]} { beep set curmess "Cannot save variables to temporary file!" @@ -64,13 +67,14 @@ proc run_rad args { # Run rad command with given argu } proc run_batch {} { # start rendering in background - global rpview bfname batch_pid curmess rifname mywin + global rpview bfname batch_pid curmess rifname mywin batch_fmt hostname if {! [chksave]} {return} if [catch {set fo [open $bfname w]} curmess] { return } # Make space for PID to be written later - puts $fo " " + puts $fo \ +" " if {$rpview == " ALL"} { set radcom "rad" } else { @@ -84,7 +88,8 @@ proc run_batch {} { # start rendering in background set batch_pid [eval exec $radcom >>& $bfname &] # Now, write PID and close file seek $fo 0 - puts -nonewline $fo $batch_pid + puts -nonewline $fo "[format $batch_fmt $batch_pid $hostname]\ + [exec date]" close $fo set curmess "Batch rendering process $batch_pid started." # Correct button stati @@ -167,9 +172,9 @@ proc make_vmenus {} { # make/update view menus proc do_action w { # Action screen global rifname rvview rpview radvar bfname batch_pid \ - curmess scname mywin alldone + curmess scname mywin alldone batch_fmt hostname if {"$w" == "done"} { - unset rpview bfname batch_pid mywin + unset rvview rpview bfname batch_pid mywin return } set bfname [file rootname [file tail $rifname]].err @@ -191,10 +196,10 @@ proc do_action w { # Action screen # Render interactively label $w.ril -text {Render interactively} place $w.ril -relx .1429 -rely .2439 - button $w.rirv -text rview -relief raised \ + button $w.rirv -text rvu -relief raised \ -command {run_rad -v $rvview -o x11} place $w.rirv -relwidth .1071 -relheight .0610 -relx .4643 -rely .2439 - helplink $w.rirv trad action rview + helplink $w.rirv trad action rvu label $w.rivl -text View: place $w.rivl -relx .6072 -rely .2439 menubutton $w.rivmb -textvariable rvview -anchor w -relief raised @@ -218,13 +223,34 @@ proc do_action w { # Action screen -command {view_txt $bfname} place $w.rbce -relwidth .1786 -relheight .0610 -relx .6429 -rely .5488 helplink $w.rbce trad action checkerr - if [file exists $bfname] { + if [file isfile $bfname] { set fi [open $bfname r] - eval set batch_pid [gets $fi] - gets $fi radcom + if {[scan [gets $fi] $batch_fmt batch_pid batch_host] != 2} { + set batch_host unknown + set radcom {} + } else { + gets $fi radcom + } close $fi - if [catch {exec /bin/kill -0 $batch_pid}] { + if [string match "rad -v *" $radcom] { + set rpview [lindex $radcom 2] + } else { + set rpview " ALL" + } + if {"$hostname" != "$batch_host"} { if $alldone { + set curmess "Batch rendering finished\ + on $batch_host." + } else { + set curmess "Batch rendering on\ + $batch_host -- status UNKNOWN." + $w.rbst configure -state disabled + $w.rbvmb configure -state disabled + } + set batch_pid 0 + $w.rbki configure -state disabled + } elseif {[catch {exec /bin/kill -0 $batch_pid}]} { + if $alldone { set curmess "Batch rendering finished." } else { set curmess "Batch rendering stopped." @@ -234,11 +260,6 @@ proc do_action w { # Action screen $w.rbki configure -state disabled } else { set curmess "Batch rendering process $batch_pid running." - if [string match "rad -v *" $radcom] { - set rpview [lindex $radcom 2] - } else { - set rpview " ALL" - } $w.rbst configure -state disabled $w.rbvmb configure -state disabled }