diff options
author | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 19:01:15 (GMT) |
---|---|---|
committer | William Joye <wjoye@cfa.harvard.edu> | 2016-10-27 19:01:15 (GMT) |
commit | 12166aa342f7c8d905097e43a1f50e0775503069 (patch) | |
tree | 73a6e7296fbf9898633a02c2503a3e959789d8c3 /ds9/library/annulus.tcl | |
parent | d4d595fa7fb12903db9227d33d48b2b00120dbd1 (diff) | |
download | blt-12166aa342f7c8d905097e43a1f50e0775503069.zip blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.gz blt-12166aa342f7c8d905097e43a1f50e0775503069.tar.bz2 |
Initial commit
Diffstat (limited to 'ds9/library/annulus.tcl')
-rw-r--r-- | ds9/library/annulus.tcl | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/ds9/library/annulus.tcl b/ds9/library/annulus.tcl new file mode 100644 index 0000000..1ccaba2 --- /dev/null +++ b/ds9/library/annulus.tcl @@ -0,0 +1,182 @@ +# 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 AnnulusDialog {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 + + set var(method) dist + + # procs + set var(which) annulus + set var(proc,apply) AnnulusApply + set var(proc,close) AnnulusClose + set var(proc,generate) AnnulusGenerate + set var(proc,coordCB) AnnulusCoordCB + set var(proc,editCB) AnnulusEditCB + set var(proc,distCB) AnnulusDistCB + + # base + MarkerBaseAnnulusDialog $varname + + # menus + MarkerBaseAnnulusMethodMenu $varname + + # analysis + $var(mb) add cascade -label [msgcat::mc {Analysis}] -menu $var(mb).analysis + menu $var(mb).analysis + + MarkerAnalysisStatsDialog $varname + MarkerAnalysisRadialDialog $varname + + # callbacks + $var(frame) marker $var(id) callback edit AnnulusEditCB $varname + $var(frame) marker $var(id) callback end edit AnnulusEditCB $varname + + set f $var(top).param + + # Annuli + ttk::label $f.tinner -text [msgcat::mc {Inner}] + ttk::label $f.touter -text [msgcat::mc {Outer}] + ttk::label $f.tradius -text [msgcat::mc {Radius}] + ttk::entry $f.inner -textvariable ${varname}(inner) -width 13 + ttk::entry $f.outer -textvariable ${varname}(outer) -width 13 + DistMenuButton $f.uradius $varname dcoord 1 dformat \ + [list AnnulusDistCB $varname] + DistMenuEnable $f.uradius.menu $varname dcoord 1 dformat + ttk::label $f.tannuli -text [msgcat::mc {Annuli}] + ttk::entry $f.annuli -textvariable ${varname}(annuli) -width 13 + + grid x $f.tinner $f.touter -padx 2 -pady 2 -sticky w + grid $f.tradius $f.inner $f.outer $f.uradius -padx 2 -pady 2 -sticky w + grid $f.tannuli $f.annuli -padx 2 -pady 2 -sticky w + + # Radius + set f [ttk::labelframe $var(top).radius -text [msgcat::mc {Radius}] \ + -padding 2] + + set var(annulitxt) [text $f.txt \ + -height 10 \ + -width 15 \ + -wrap none \ + -font [font actual TkDefaultFont] \ + -yscrollcommand [list $f.yscroll set] \ + ] + ttk::scrollbar $f.yscroll -command [list $var(annulitxt) yview] \ + -orient vertical + + grid $var(annulitxt) $f.yscroll -sticky news + grid rowconfigure $f 0 -weight 1 + grid columnconfigure $f 0 -weight 1 + + # Radius Fini + grid $var(top).radius -row 0 -column 1 -sticky news + grid rowconfigure $var(top) 0 -weight 1 + grid columnconfigure $var(top) 1 -weight 1 + + # init - do this last + AnnulusDistCB $varname +} + +# actions + +proc AnnulusClose {varname} { + upvar #0 $varname var + global $varname + + $var(frame) marker $var(id) delete callback edit AnnulusEditCB + $var(frame) marker $var(id) delete callback end edit AnnulusEditCB + + MarkerBaseCenterClose $varname +} + +proc AnnulusApply {varname} { + upvar #0 $varname var + global $varname + + set levels {} + regsub -all "\n" "[$var(annulitxt) get 1.0 end]" " " levels + # and trim any trailing spaces + set levels [string trimright $levels " "] + + if {$levels != {}} { + $var(frame) marker $var(id) annulus radius "\{$levels\}" \ + $var(dcoord) $var(dformat) + } + + MarkerBaseCenterApply $varname +} + +proc AnnulusGenerate {varname} { + upvar #0 $varname var + global $varname + + MarkerBaseAnnulusGenerateCircle $varname +} + +# callbacks + +proc AnnulusCoordCB {varname {dummy {}}} { + upvar #0 $varname var + global $varname + + global debug + if {$debug(tcl,marker)} { + puts stderr "AnnulusCoordCB" + } + + MarkerAnalysisRadialSystem $varname + MarkerAnalysisStatsSystem $varname + MarkerBaseCoordCB $varname + MarkerBaseCenterMoveCB $varname +} + +proc AnnulusEditCB {varname {dummy {}}} { + upvar #0 $varname var + global $varname + + global debug + if {$debug(tcl,marker)} { + puts stderr "AnnulusEditCB" + } + + set t [$var(frame) get marker $var(id) annulus radius \ + $var(dcoord) $var(dformat)] + + set last [expr [llength $t]-1] + set var(inner) [lindex $t 0] + set var(outer) [lindex $t $last] + set var(annuli) $last + + $var(annulitxt) delete 1.0 end + $var(annulitxt) insert end "$t" +} + +proc AnnulusDistCB {varname {dummy {}}} { + upvar #0 $varname var + global $varname + + global debug + if {$debug(tcl,marker)} { + puts stderr "AnnulusDistCB" + } + + AnnulusEditCB $varname +} |