summaryrefslogtreecommitdiffstats
path: root/ds9/library/markerbase.tcl
diff options
context:
space:
mode:
authorWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:01:15 (GMT)
committerWilliam Joye <wjoye@cfa.harvard.edu>2016-10-27 19:01:15 (GMT)
commit12166aa342f7c8d905097e43a1f50e0775503069 (patch)
tree73a6e7296fbf9898633a02c2503a3e959789d8c3 /ds9/library/markerbase.tcl
parentd4d595fa7fb12903db9227d33d48b2b00120dbd1 (diff)
downloadblt-12166aa342f7c8d905097e43a1f50e0775503069.zip
blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.gz
blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.bz2
Initial commit
Diffstat (limited to 'ds9/library/markerbase.tcl')
-rw-r--r--ds9/library/markerbase.tcl313
1 files changed, 313 insertions, 0 deletions
diff --git a/ds9/library/markerbase.tcl b/ds9/library/markerbase.tcl
new file mode 100644
index 0000000..332380b
--- /dev/null
+++ b/ds9/library/markerbase.tcl
@@ -0,0 +1,313 @@
+# 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 MarkerBaseDialog {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ set tt [$var(frame) get marker $var(id) type]
+ switch -- [lindex $tt 1] {
+ point {set type "[string totitle [lindex $tt 0]] [string totitle [lindex $tt 1]]"}
+ {} {set type [string totitle [lindex $tt 0]]}
+ }
+
+ # variables - some may already be initialized (compass,ruler)
+ if {![info exists var(system)]} {
+ set rr [$var(frame) get wcs]
+ set var(system) [lindex $rr 0]
+ set var(sky) [lindex $rr 1]
+ set var(skyformat) [lindex $rr 2]
+ }
+ AdjustCoordSystem $varname system
+
+ # init
+ MarkerBaseTextCB $varname
+ MarkerBaseColorCB $varname
+ MarkerBaseLineWidthCB $varname
+ MarkerBasePropertyCB $varname
+ MarkerBaseFontCB $varname
+ $var(proc,coordCB) $varname
+
+ # callbacks
+ $var(frame) marker $var(id) callback delete MarkerBaseDeleteCB $varname
+ $var(frame) marker $var(id) callback text MarkerBaseTextCB $varname
+ $var(frame) marker $var(id) callback color MarkerBaseColorCB $varname
+ $var(frame) marker $var(id) callback width MarkerBaseLineWidthCB $varname
+ $var(frame) marker $var(id) callback property MarkerBasePropertyCB $varname
+ $var(frame) marker $var(id) callback font MarkerBaseFontCB $varname
+
+ # window
+ Toplevel $var(top) $var(mb) 6 [msgcat::mc "$type"] \
+ "$var(proc,close) $varname"
+
+ # menus
+ MarkerBaseMenu $varname
+ MarkerBaseFileMenu $varname
+ EditMenu $var(mb) $varname
+ ColorMenu $var(mb).color $varname color [list MarkerBaseColor $varname]
+ WidthDashMenu $var(mb).width $varname linewidth dash \
+ [list MarkerBaseLineWidth $varname] \
+ [list MarkerBaseProperty $varname dash]
+ MarkerBasePropertyMenu $varname
+ FontMenu $var(mb).font $varname font font,size font,weight \
+ font,slant [list MarkerBaseFont $varname]
+
+ # Param
+ set f [ttk::frame $var(top).param]
+ ttk::label $f.tid -text [msgcat::mc {Number}]
+ ttk::label $f.id -text "$var(id)"
+ ttk::label $f.ttext -text [msgcat::mc {Text}]
+ ttk::entry $f.text -textvariable ${varname}(text) -width 45
+ grid $f.tid $f.id -padx 2 -pady 2 -sticky w
+ grid $f.ttext $f.text - - - -padx 2 -pady 2 -sticky w
+
+ # Buttons
+ set f [ttk::frame $var(top).buttons]
+ ttk::button $f.apply -text [msgcat::mc {Apply}] \
+ -command "$var(proc,apply) $varname"
+ ttk::button $f.close -text [msgcat::mc {Close}] \
+ -command "$var(proc,close) $varname"
+ pack $f.apply $f.close -side left -expand true -padx 2 -pady 4
+
+ bind $var(top) <Return> "$var(proc,apply) $varname"
+
+ # Fini
+ ttk::separator $var(top).sep -orient horizontal
+ pack $var(top).buttons $var(top).sep -side bottom -fill x
+ pack $var(top).param -side top -fill both -expand true
+
+ # some window managers need a hint
+ raise $var(top)
+}
+
+# actions
+
+proc MarkerBaseClose {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) delete callback delete MarkerBaseDeleteCB
+ $var(frame) marker $var(id) delete callback text MarkerBaseTextCB
+ $var(frame) marker $var(id) delete callback color MarkerBaseColorCB
+ $var(frame) marker $var(id) delete callback width MarkerBaseLineWidthCB
+ $var(frame) marker $var(id) delete callback property MarkerBasePropertyCB
+ $var(frame) marker $var(id) delete callback font MarkerBaseFontCB
+
+ MarkerBaseDeleteCB $varname
+
+ unset $varname
+}
+
+proc MarkerBaseApply {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) text \{$var(text)\}
+
+ UpdateRegionMenu
+}
+
+proc MarkerBaseColor {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) color $var(color)
+}
+
+proc MarkerBaseLineWidth {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) width $var(linewidth)
+}
+
+proc MarkerBaseProperty {varname prop} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) property $prop $var($prop)
+}
+
+proc MarkerBaseFont {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(frame) marker $var(id) font \
+ \"$var(font) $var(font,size) $var(font,weight) $var(font,slant)\"
+}
+
+# callbacks
+
+proc MarkerBaseDeleteCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBaseDeleteCB"
+ }
+
+ # variables
+ foreach m [array names marker] {
+ set mm [split $m ,]
+ if {[lindex $mm 0] == $var(frame) && [lindex $mm 1] == $var(id)} {
+ unset marker($m)
+ }
+ }
+
+ # destroy the window and menubar
+ if {[winfo exists $var(top)]} {
+ destroy $var(top)
+ destroy $var(mb)
+ }
+}
+
+proc MarkerBaseTextCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBaseTextCB"
+ }
+
+ set var(text) [$var(frame) get marker $var(id) text]
+}
+
+proc MarkerBaseColorCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBaseColorCB"
+ }
+
+ set var(color) [$var(frame) get marker $var(id) color]
+}
+
+proc MarkerBaseLineWidthCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBaseLineWidthCB"
+ }
+
+ set var(linewidth) [$var(frame) get marker $var(id) width]
+}
+
+proc MarkerBasePropertyCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBasePropertyCB"
+ }
+
+ set var(dash) [$var(frame) get marker $var(id) property dash]
+ set var(fixed) [$var(frame) get marker $var(id) property fixed]
+ set var(edit) [$var(frame) get marker $var(id) property edit]
+ set var(move) [$var(frame) get marker $var(id) property move]
+ set var(rotate) [$var(frame) get marker $var(id) property rotate]
+ set var(delete) [$var(frame) get marker $var(id) property delete]
+ set var(include) [$var(frame) get marker $var(id) property include]
+ set var(source) [$var(frame) get marker $var(id) property source]
+}
+
+proc MarkerBaseFontCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBaseFontCB"
+ }
+
+ set f [$var(frame) get marker $var(id) font]
+
+ set var(font) [lindex $f 0]
+ set var(font,size) [lindex $f 1]
+ set var(font,weight) [lindex $f 2]
+ set var(font,slant) [lindex $f 3]
+}
+
+proc MarkerBaseCoordCB {varname {dummy {}}} {
+ upvar #0 $varname var
+ global $varname
+
+ global debug
+ if {$debug(tcl,marker)} {
+ puts stderr "MarkerBaseCoordCB"
+ }
+
+ AdjustCoordSystem $varname system
+}
+
+# menus
+
+proc MarkerBaseMenu {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ $var(mb) add cascade -label [msgcat::mc {File}] -menu $var(mb).file
+ $var(mb) add cascade -label [msgcat::mc {Edit}] -menu $var(mb).edit
+ $var(mb) add cascade -label [msgcat::mc {Color}] -menu $var(mb).color
+ $var(mb) add cascade -label [msgcat::mc {Width}] -menu $var(mb).width
+ $var(mb) add cascade -label [msgcat::mc {Property}] -menu $var(mb).properties
+ $var(mb) add cascade -label [msgcat::mc {Font}] -menu $var(mb).font
+}
+
+proc MarkerBaseFileMenu {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ menu $var(mb).file
+ $var(mb).file add command -label [msgcat::mc {Apply}] \
+ -command "$var(proc,apply) $varname"
+ $var(mb).file add separator
+ $var(mb).file add command -label [msgcat::mc {Close}] \
+ -command "$var(proc,close) $varname"
+}
+
+proc MarkerBasePropertyMenu {varname} {
+ upvar #0 $varname var
+ global $varname
+
+ menu $var(mb).properties
+ $var(mb).properties add checkbutton -label [msgcat::mc {Fixed in Size}] \
+ -variable ${varname}(fixed) \
+ -command "MarkerBaseProperty $varname fixed"
+ $var(mb).properties add separator
+ $var(mb).properties add checkbutton -label [msgcat::mc {Can Edit}] \
+ -variable ${varname}(edit) \
+ -command "MarkerBaseProperty $varname edit"
+ $var(mb).properties add checkbutton -label [msgcat::mc {Can Move}] \
+ -variable ${varname}(move) \
+ -command "MarkerBaseProperty $varname move"
+ $var(mb).properties add checkbutton -label [msgcat::mc {Can Rotate}] \
+ -variable ${varname}(rotate) \
+ -command "MarkerBaseProperty $varname rotate"
+ $var(mb).properties add checkbutton -label [msgcat::mc {Can Delete}] \
+ -variable ${varname}(delete) \
+ -command "MarkerBaseProperty $varname delete"
+ $var(mb).properties add separator
+ $var(mb).properties add radiobutton -label [msgcat::mc {Include}] \
+ -variable ${varname}(include) -value 1 \
+ -command "MarkerBaseProperty $varname include"
+ $var(mb).properties add radiobutton -label [msgcat::mc {Exclude}] \
+ -variable ${varname}(include) -value 0 \
+ -command "MarkerBaseProperty $varname include"
+ $var(mb).properties add separator
+ $var(mb).properties add radiobutton -label [msgcat::mc {Source}] \
+ -variable ${varname}(source) -value 1 \
+ -command "MarkerBaseProperty $varname source"
+ $var(mb).properties add radiobutton -label [msgcat::mc {Background}] \
+ -variable ${varname}(source) -value 0 \
+ -command "MarkerBaseProperty $varname source"
+}