summaryrefslogtreecommitdiffstats
path: root/ds9/library/box.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/box.tcl')
-rw-r--r--ds9/library/box.tcl126
1 files changed, 126 insertions, 0 deletions
diff --git a/ds9/library/box.tcl b/ds9/library/box.tcl
new file mode 100644
index 0000000..b28d84b
--- /dev/null
+++ b/ds9/library/box.tcl
@@ -0,0 +1,126 @@
+# 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 BoxDialog {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ global pmarker
+
+ # see if we already have a header window visible
+ if {[winfo exists $var(top)]} {
+ raise $var(top)
+ return
+ }
+
+ # variables
+ set rr [$var(frame) get wcs]
+ set var(dcoord) [lindex $rr 0]
+ set var(dformat) $pmarker(dformat)
+ AdjustCoordSystem $varname dcoord
+
+ # procs
+ set var(proc,apply) BoxApply
+ set var(proc,close) BoxClose
+ set var(proc,coordCB) BoxCoordCB
+
+ # base
+ MarkerBaseCenterDialog $varname
+
+ # analysis
+ $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis
+ menu $var(mb).analysis
+
+ MarkerAnalysisStatsDialog $varname
+ MarkerAnalysisHistogramDialog $varname
+ MarkerAnalysisPlot3dDialog $varname
+
+ # init
+ BoxEditCB $varname
+ MarkerBaseCenterRotateCB $varname
+
+ # callbacks
+ $var(frame) marker $var(id) callback edit BoxEditCB $varname
+ $var(frame) marker $var(id) callback rotate \
+ MarkerBaseCenterRotateCB $varname
+
+ set f $var(top).param
+
+ # Radius
+ ttk::label $f.tradius -text Size
+ ttk::entry $f.radius1 -textvariable ${varname}(radius1) -width 13
+ ttk::entry $f.radius2 -textvariable ${varname}(radius2) -width 13
+ DistMenuButton $f.uradius $varname dcoord 1 dformat \
+ [list BoxEditCB $varname]
+ DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat
+
+ # Angle
+ ttk::label $f.tangle -text [msgcat::mc {Angle}]
+ ttk::entry $f.angle -textvariable ${varname}(angle) -width 13
+ ttk::label $f.uangle -text [msgcat::mc {Degrees}]
+
+ grid $f.tradius $f.radius1 $f.radius2 $f.uradius -padx 2 -pady 2 -sticky w
+ grid $f.tangle $f.angle $f.uangle -padx 2 -pady 2 -sticky w
+}
+
+# actions
+
+proc BoxClose {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) delete callback edit BoxEditCB
+ $var(frame) marker $var(id) delete callback rotate MarkerBaseCenterRotateCB
+
+ MarkerBaseCenterClose $varname
+}
+
+proc BoxApply {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ if {$var(radius1) != {} &&
+ $var(radius2) !={}} {
+ $var(frame) marker $var(id) box radius \
+ $var(radius1) $var(radius2) $var(dcoord) $var(dformat)
+ }
+
+ MarkerBaseCenterRotate $varname
+ MarkerBaseCenterApply $varname
+}
+
+# callbacks
+
+proc BoxCoordCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "BoxCoordCB"
+ }
+
+ MarkerAnalysisStatsSystem $varname
+ MarkerAnalysisPlot3dSystem $varname
+ MarkerBaseCoordCB $varname
+ MarkerBaseCenterMoveCB $varname
+ MarkerBaseCenterRotateCB $varname
+}
+
+proc BoxEditCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "BoxEditCB"
+ }
+
+ set r [$var(frame) get marker $var(id) box radius \
+ $var(dcoord) $var(dformat)]
+ set var(radius1) [lindex $r 0]
+ set var(radius2) [lindex $r 1]
+}