summaryrefslogtreecommitdiffstats
path: root/ds9/library/composite.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/composite.tcl')
-rw-r--r--ds9/library/composite.tcl136
1 files changed, 136 insertions, 0 deletions
diff --git a/ds9/library/composite.tcl b/ds9/library/composite.tcl
new file mode 100644
index 0000000..7b3153f
--- /dev/null
+++ b/ds9/library/composite.tcl
@@ -0,0 +1,136 @@
+# 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 CompositeDialog {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ # see if we already have a header window visible
+ if {[winfo exists $var(top)]} {
+ raise $var(top)
+ return
+ }
+
+ # variables
+ set var(global) [$var(frame) get marker $var(id) composite global]
+
+ # procs
+ set var(proc,apply) CompositeApply
+ set var(proc,close) CompositeClose
+ set var(proc,coordCB) CompositeCoordCB
+
+ # base
+ MarkerBaseCenterDialog $varname
+
+ # init
+ MarkerBaseCenterRotateCB $varname
+
+ # callbacks
+ $var(frame) marker $var(id) callback rotate CompositeRotateCB $varname
+
+ set f $var(top).param
+
+ # 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}]
+ ttk::label $f.tcomp -text [msgcat::mc {Angle Complement}]
+ ttk::label $f.comp -textvariable ${varname}(comp) -width 13 -anchor w
+ ttk::label $f.ucomp -text [msgcat::mc {Degrees}]
+
+ # Global
+ ttk::label $f.tglobal -text [msgcat::mc {Global Properties}]
+ ttk::checkbutton $f.global -variable ${varname}(global) \
+ -command "CompositeGlobal $varname"
+
+ grid $f.tangle $f.angle x $f.uangle -padx 2 -pady 2 -sticky w
+ grid $f.tcomp $f.comp x $f.ucomp -padx 2 -pady 2 -sticky w
+ grid $f.tglobal $f.global -padx 2 -pady 2 -sticky w
+
+ CompositeCompAngle $varname
+}
+
+# actions
+
+proc CompositeClose {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) delete callback rotate CompositeRotateCB
+
+ MarkerBaseCenterClose $varname
+}
+
+proc CompositeApply {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ CompositeRotate $varname
+ MarkerBaseCenterApply $varname
+}
+
+proc CompositeRotate {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) angle $var(angle) $var(system) $var(sky)
+
+ CompositeCompAngle $varname
+}
+
+proc CompositeCompAngle {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set comp [expr 360-$var(angle)]
+
+ if {[::math::fuzzy::tge $comp 360]} {
+ set comp [expr $comp - 360]
+ }
+ if {[::math::fuzzy::tlt $comp 0]} {
+ set comp [expr $comp + 360]
+ }
+
+ set var(comp) $comp
+}
+
+proc CompositeGlobal {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) composite global $var(global)
+}
+
+# callbacks
+
+proc CompositeCoordCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "CompositeCoordCB"
+ }
+
+ MarkerBaseCoordCB $varname
+ MarkerBaseCenterMoveCB $varname
+ MarkerBaseCenterRotateCB $varname
+}
+
+proc CompositeRotateCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "CompositeRotateCB"
+ }
+
+ set var(angle) [$var(frame) get marker $var(id) angle \
+ $var(system) $var(sky)]
+
+ CompositeCompAngle $varname
+}