# Copyright (C) 1999-2018 # Smithsonian Astrophysical Observatory, Cambridge, MA, USA # For conditions of distribution and use, see copyright notice in "copyright" package provide DS9 1.0 proc SaveDef {} { global savefits set savefits(type) image set savefits(mosaic) 1 } proc Save {format fn} { global savefits switch -- $format { fits {SaveFitsFile $savefits(type) $fn} sfits {} rgbimage {SaveRGBImageFile $fn} rgbcube {SaveRGBCubeFile $fn} srgbcube {} mecube {SaveMECubeFile $fn} multiframe {} mosaicimage - mosaicimagewcs {SaveMosaicImageWCSFile $fn} mosaicimageiraf {} mosaicimagewfpc {} mosaic - mosaicwcs {SaveMosaicWCSFile $fn $savefits(mosaic)} mosaiciraf {} smosaicwcs {} smosaiciraf {} } } # Process Cmds proc ProcessSaveCmd {varname iname} { upvar $varname var upvar $iname i # we need to be realized ProcessRealizeDS9 set format {} set fn [lindex $var $i] if {$fn == {}} { return } switch -- $fn { fits - sfits - rgbimage - rgbcube - srgbcube - mecube - multiframe - mosaicimagewcs - mosaicimageiraf - mosaicimagewfpc - mosaicwcs - mosaiciraf - smosaicwcs - smosaiciraf { set format $fn set fn {} incr i } mosaicimage - mosaic { set format $fn set fn {} incr i # eat any wcs if {[string range [lindex $var $i] 0 2] == {wcs}} { incr i } } } # one last time if {$fn == {}} { set fn [lindex $var $i] if {$fn == {}} { return } } if {$format == {}} { set format [ExtToFormat $fn] } global savefits set param [string tolower [lindex $var [expr $i+1]]] switch $format { fits { switch $param { slice - image - table { set savefits(type) $param incr i } default {set savefits(type) image} } } mosaic - mosaiciraf - mosaicwcs { if {[string is integer -strict $param]} { set savefits(mosaic) $param incr i } } } global savefitsfbox FileLast savefitsfbox $fn Save $format $fn } # Support proc SaveDialog {format} { global savefits global current set fn [SaveFileDialog savefitsfbox] set which image if {$fn != {}} { set ok 1 if {$current(frame) != {}} { switch -- $format { fits { if {[$current(frame) has fits bin]} { set ok [SaveParams savefits] } } slice { set format fits set savefits(type) slice } mosaicwcs - mosaiciraf { if {[$current(frame) has fits mosaic]} { set ok [SaveMosaicParams savefits] } } } } if {$ok} { Save $format $fn } } } proc SaveParams {varname} { upvar $varname var global ed2 set w {.savefits} set ed2(ok) 0 set ed2(type) $var(type) DialogCreate $w {Fits} ed2(ok) # Param set f [ttk::frame $w.param] ttk::label $f.tfits -text [msgcat::mc {Fits}] ttk::radiobutton $f.image -text [msgcat::mc {Image}] \ -variable ed2(type) -value image ttk::radiobutton $f.table -text {Table} \ -variable ed2(type) -value table grid $f.tfits $f.image $f.table -padx 2 -pady 2 -sticky w # Buttons set f [ttk::frame $w.buttons] ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \ -default active ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0} pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4 bind $w {set ed2(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 ed2(ok) DialogDismiss $w if {$ed2(ok)} { set var(type) $ed2(type) } set rr $ed2(ok) unset ed2 return $rr } proc SaveMosaicParams {varname} { upvar $varname var global ed2 set w {.savefits} set ed2(ok) 0 set ed2(mosaic) $var(mosaic) DialogCreate $w {Mosaic} ed2(ok) # Param set f [ttk::frame $w.param] ttk::label $f.tmosaic -text [msgcat::mc {Mosaic}] ttk::entry $f.mosaic -textvariable ed2(mosaic) -width 8 grid $f.tmosaic $f.mosaic -padx 2 -pady 2 -sticky w # Buttons set f [ttk::frame $w.buttons] ttk::button $f.ok -text [msgcat::mc {OK}] -command {set ed2(ok) 1} \ -default active ttk::button $f.cancel -text [msgcat::mc {Cancel}] -command {set ed2(ok) 0} pack $f.ok $f.cancel -side left -expand true -padx 2 -pady 4 bind $w {set ed2(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 ed2(ok) DialogDismiss $w if {$ed2(ok)} { set var(mosaic) $ed2(mosaic) } set rr $ed2(ok) unset ed2 return $rr }