diff options
Diffstat (limited to 'ds9/library/analysisparam.tcl')
-rw-r--r-- | ds9/library/analysisparam.tcl | 176 |
1 files changed, 176 insertions, 0 deletions
diff --git a/ds9/library/analysisparam.tcl b/ds9/library/analysisparam.tcl new file mode 100644 index 0000000..a45711b --- /dev/null +++ b/ds9/library/analysisparam.tcl @@ -0,0 +1,176 @@ +# Copyright (C) 1999-2016 +# Smithsonian Astrophysical Observatory, Cambridge, MA, USA +# For conditions of distribution and use, see copyright notice in "copyright" + +package provide DS9 1.0 + +proc AnalysisParam {strname param} { + upvar $strname str + global ianalysis + global ed + + global ds9 + global pds9 + + # find it + for {set i 0} {$i<$ianalysis(param,count)} {incr i} { + if {$ianalysis(param,$i) == "$param"} { + break + } + } + if {$i == $ianalysis(param,count)} { + return + } + + set w {.param} + + set ed(ok) 0 + + DialogCreate $w $param ed(ok) + + # Param + set f [ttk::frame $w.param] + + for {set j 0} {$j<$ianalysis(param,$i,count)} {incr j} { + set ianalysis(param,$i,$j,value) $ianalysis(param,$i,$j,last) + ttk::label $f.l$j -text "$ianalysis(param,$i,$j,title)" + switch -- $ianalysis(param,$i,$j,type) { + entry { + ttk::entry $f.a$j \ + -textvariable ianalysis(param,$i,$j,value) \ + -width 40 + } + checkbox { + ttk::checkbutton $f.a$j -text {} \ + -variable ianalysis(param,$i,$j,value) + } + menu { + set l [split $ianalysis(param,$i,$j,default) |] + ttk::menubutton $f.a$j \ + -text "$ianalysis(param,$i,$j,value)" \ + -menu $f.a$j.menu + set m [menu $f.a$j.menu] + for {set k 0} {$k<[llength $l]} {incr k} { + $m add command -label [lindex $l $k] \ + -command "AnalysisParamMenu ianalysis(param,$i,$j,value) [lindex $l $k] $f.a$j" + } + } + } + ttk::label $f.i$j -text "$ianalysis(param,$i,$j,info)" \ + -font "{$ds9(times)} $pds9(font,size) normal italic" + + grid $f.l$j $f.a$j $f.i$j -padx 2 -pady 2 -sticky w + } + + # Buttons + set f [ttk::frame $w.buttons] + ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed(ok) 1} \ + -default active + ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed(ok) 0} + pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4 + + bind $w <Return> {set ed(ok) 1} + + # Fini + ttk::separator $w.sep -orient horizontal + pack $w.buttons $w.sep -side bottom -fill x + pack $w.param -side top -fill both -expand true + + DialogCenter $w + DialogWait $w ed(ok) $w.buttons.ok + DialogDismiss $w + + if {$ed(ok)} { + for {set j 0} {$j<$ianalysis(param,$i,count)} {incr j} { + set exp "\\\$$ianalysis(param,$i,$j,var)" + if {[regexp $exp $str]} { + regsub -all $exp $str "$ianalysis(param,$i,$j,value)" str + } + set ianalysis(param,$i,$j,last) $ianalysis(param,$i,$j,value) + } + } + + set rr $ed(ok) + unset ed + return $rr +} + +proc AnalysisParamMenu {varname value menu} { + upvar $varname var + + set var $value + $menu configure -text $value +} + +proc ParseIRAFParam {filename} { + global ianalysis + global env + + # we are only concerned with unix like os + set uparm {} + if {[info exists env(UPARM)]} { + set uparm "$env(UPARM)/$filename" + } + set iraf {} + if {[info exists env(HOME)]} { + set iraf "$env(HOME)/$filename" + } + + if {[file exists "$filename"]} { + catch {set ch [open "$filename"]} + } elseif {[file exists "$uparm"]} { + catch {set ch [open "$uparm"]} + } elseif {[file exists "$iraf"]} { + catch {set ch [open "$iraf"]} + } else { + return + } + + set i $ianalysis(param,count) + + while {[gets $ch line] >= 0} { + set exp {([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)} + if {[regexp $exp $line foo p1 p2 p3 p4 p5 p6 p7]} { + if {$p1 != {mode}} { + regsub -all {\"} $p4 {} p4 + regsub -all {\"} $p7 {} p7 + set j $ianalysis(param,$i,count) + set ianalysis(param,$i,$j,var) "$p1" + if {$p3 == {h}} { + set ianalysis(param,$i,$j,title) "(${p1})" + } else { + set ianalysis(param,$i,$j,title) "$p1" + } + set ianalysis(param,$i,$j,info) "$p7" + incr ianalysis(param,$i,count) + switch -- $p2 { + b { + set ianalysis(param,$i,$j,type) checkbox + set ianalysis(param,$i,$j,default) [FromYesNo $p4] + set ianalysis(param,$i,$j,last) [FromYesNo $p4] + set ianalysis(param,$i,$j,value) [FromYesNo $p4] + } + s { + if {$p5 != {}} { + set ianalysis(param,$i,$j,type) menu + set ianalysis(param,$i,$j,default) "$p5" + } else { + set ianalysis(param,$i,$j,type) entry + set ianalysis(param,$i,$j,default) "$p4" + } + set ianalysis(param,$i,$j,last) "$p4" + set ianalysis(param,$i,$j,value) "$p4" + } + default { + set ianalysis(param,$i,$j,type) entry + set ianalysis(param,$i,$j,default) "$p4" + set ianalysis(param,$i,$j,last) "$p4" + set ianalysis(param,$i,$j,value) "$p4" + } + } + } + } + } + + close $ch +} |