--- ray/src/util/do_file.tcl 1995/03/21 16:19:26 2.7 +++ ray/src/util/do_file.tcl 2003/02/22 02:07:30 2.17 @@ -1,14 +1,12 @@ -# SCCSid "$SunId$ LBL" +# RCSid: $Id: do_file.tcl,v 2.17 2003/02/22 02:07:30 greg Exp $ # # Choose the Rad Input File to work on. # -set rif_glob *.rif - proc preen {} { # clean up radvar global radvar rifname foreach n {objects scene materials illum mkillum render oconv pfilt - AMBFILE OPTFILE EXPOSURE ZONE REPORT} { + RAWFILE ZFILE AMBFILE OPTFILE EXPOSURE ZONE REPORT} { if {! [info exists radvar($n)]} { set radvar($n) {} } @@ -19,7 +17,7 @@ proc preen {} { # clean up radvar set n 1 foreach v $oldval { if {"[string index $v 0]" == "-"} { - lappend radvar(view) "$n $v" + lappend radvar(view) "u$n $v" } elseif {[lsearch -glob $radvar(view) \ "[lindex $v 0] *"] >= 0} { continue @@ -45,6 +43,9 @@ proc preen {} { # clean up radvar if {! [info exists radvar(RESOLUTION)]} { set radvar(RESOLUTION) 512 } + if {! [info exists radvar(EYESEP)]} { + set radvar(EYESEP) 1 + } if [info exists radvar(QUALITY)] { cardval radvar(QUALITY) {High Medium Low} } else { @@ -75,7 +76,7 @@ proc preen {} { # clean up radvar proc setradvar stmt { # assign a rad variable global radvar - regexp {^([a-zA-Z][a-zA-Z0-9]*) *= *(.*)$} $stmt dummy vnam vval + regexp {^([a-zA-Z][a-zA-Z0-9]*) *=[ ]*(.*)$} $stmt dummy vnam vval switch -glob $vnam { obj* { eval lappend radvar(objects) $vval } sce* { eval lappend radvar(scene) $vval } @@ -93,6 +94,7 @@ proc setradvar stmt { # assign a rad variable AMB* { set radvar(AMBFILE) $vval } OPT* { set radvar(OPTFILE) $vval } EXP* { set radvar(EXPOSURE) $vval } + EYE* { set radvar(EYESEP) $vval } RES* { set radvar(RESOLUTION) $vval } UP { set radvar(UP) $vval } IND* { set radvar(INDIRECT) $vval } @@ -100,6 +102,8 @@ proc setradvar stmt { # assign a rad variable PEN* { set radvar(PENUMBRAS) $vval } VAR* { set radvar(VARIABILITY) $vval } REP* { set radvar(REPORT) $vval } + RAW* { set radvar(RAWFILE) $vval } + ZF* {set radvar(ZFILE) $vval } } } @@ -119,7 +123,7 @@ proc putradvar {fi vn} { # print out a rad variable } if {[lsearch -exact {ZONE QUALITY OCTREE PICTURE AMBFILE OPTFILE EXPOSURE RESOLUTION UP INDIRECT DETAIL PENUMBRAS - VARIABILITY REPORT} $vn] >= 0} { + EYESEP RAWFILE ZFILE VARIABILITY REPORT} $vn] >= 0} { puts $fi "$vn= $radvar($vn)" return } @@ -141,7 +145,7 @@ proc putradvar {fi vn} { # print out a rad variable proc load_vars {f {vl all}} { # load RIF variables global curmess radvar alldone if {"$f" == ""} {return 0} - if {! [file exists $f]} { + if {! [file isfile $f]} { beep set curmess "$f: no such file." return 0 @@ -158,7 +162,7 @@ proc load_vars {f {vl all}} { # load RIF variables if {"$vl" == "all"} { catch {unset radvar} while {[gets $fi curli] != -1} { - if [regexp {^[a-zA-Z][a-zA-Z0-9]*= } $curli] { + if [regexp {^[a-zA-Z][a-zA-Z0-9]* *=} $curli] { setradvar $curli } else { break @@ -167,7 +171,11 @@ proc load_vars {f {vl all}} { # load RIF variables set curmess {Project loaded.} } else { foreach n $vl { - catch {unset radvar($n)} + if [regexp {[a-z][a-z]*} $n] { + set radvar($n) {} + } else { + catch {unset radvar($n)} + } } while {[gets $fi curli] != -1} { if [regexp {^[a-zA-Z][a-zA-Z0-9]* *=} $curli] { @@ -236,13 +244,19 @@ proc newsave f { # save a RIF return 0 } } elseif {[file exists $f]} { + set ftyp [file type $f] + if { $ftyp != "file" } { + beep + set curmess "Selected file $f is a $ftyp." + return 0 + } if [tk_dialog .dlg {Verification} \ "Overwrite existing file $f?" \ questhead 1 {Go Ahead} {Cancel}] { return 0 } } - if {[file exists $f] && ! [file writable $f] && + if {[file isfile $f] && ! [file writable $f] && [catch {exec chmod u+w $f} curmess]} { beep return 0 @@ -259,6 +273,12 @@ proc newsave f { # save a RIF proc newnew f { # create a new RIF global rifname readonly curmess radvar if [file exists $f] { + set ftyp [file type $f] + if { $ftyp != "file" } { + beep + set curmess "Selected file $f is a $ftyp." + return 0 + } if [tk_dialog .dlg {Verification} \ "File $f exists -- disregard it?" \ questhead 1 {Yes} {Cancel}] { @@ -276,10 +296,10 @@ proc newnew f { # create a new RIF } proc do_file w { - global rifname readonly rif_glob curfile curpat + global rifname readonly myglob curfile curpat if {"$w" == "done"} { cd [file dirname $rifname] - set rif_glob $curpat + set myglob(rif) $curpat return } frame $w @@ -300,6 +320,6 @@ proc do_file w { helplink $w.left.new trad file new helplink $w.left.ro trad file readonly getfile -view view_txt -perm \ - -win $w.right -glob [file dirname $rifname]/$rif_glob + -win $w.right -glob [file dirname $rifname]/$myglob(rif) set curfile [file tail $rifname] }