summaryrefslogtreecommitdiffstats
path: root/ds9/library/mbin.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/mbin.tcl')
-rw-r--r--ds9/library/mbin.tcl341
1 files changed, 341 insertions, 0 deletions
diff --git a/ds9/library/mbin.tcl b/ds9/library/mbin.tcl
new file mode 100644
index 0000000..cfdb21d
--- /dev/null
+++ b/ds9/library/mbin.tcl
@@ -0,0 +1,341 @@
+# 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
+
+# Menu
+
+proc BinMainMenu {} {
+ global ds9
+
+ menu $ds9(mb).bin
+ $ds9(mb).bin add radiobutton -label [msgcat::mc {Average}] \
+ -variable bin(function) -value average -command ChangeBinFunction
+ $ds9(mb).bin add radiobutton -label [msgcat::mc {Sum}] \
+ -variable bin(function) -value sum -command ChangeBinFunction
+ $ds9(mb).bin add separator
+ $ds9(mb).bin add command -label [msgcat::mc {Bin In}] \
+ -command {Bin .5 .5}
+ $ds9(mb).bin add command -label [msgcat::mc {Bin Out}] \
+ -command {Bin 2 2}
+ $ds9(mb).bin add command -label [msgcat::mc {Bin Fit}] \
+ -command BinToFit
+ $ds9(mb).bin add separator
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 1" \
+ -variable bin(factor) -value { 1 1 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 2" \
+ -variable bin(factor) -value { 2 2 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 4" \
+ -variable bin(factor) -value { 4 4 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 8" \
+ -variable bin(factor) -value { 8 8 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 16" \
+ -variable bin(factor) -value { 16 16 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 32" \
+ -variable bin(factor) -value { 32 32 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 64" \
+ -variable bin(factor) -value { 64 64 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 128" \
+ -variable bin(factor) -value { 128 128 } -command ChangeBinFactor
+ $ds9(mb).bin add radiobutton -label "[msgcat::mc {Bin}] 256" \
+ -variable bin(factor) -value { 256 256 } -command ChangeBinFactor
+ $ds9(mb).bin add separator
+ $ds9(mb).bin add radiobutton -label {128x128} \
+ -variable bin(buffersize) -value 128 -command ChangeBinBufferSize
+ $ds9(mb).bin add radiobutton -label {256x256} \
+ -variable bin(buffersize) -value 256 -command ChangeBinBufferSize
+ $ds9(mb).bin add radiobutton -label {512x512} \
+ -variable bin(buffersize) -value 512 -command ChangeBinBufferSize
+ $ds9(mb).bin add radiobutton -label {1024x1024} \
+ -variable bin(buffersize) -value 1024 -command ChangeBinBufferSize
+ $ds9(mb).bin add radiobutton -label {2048x2048} \
+ -variable bin(buffersize) -value 2048 -command ChangeBinBufferSize
+ $ds9(mb).bin add radiobutton -label {4096x4096} \
+ -variable bin(buffersize) -value 4096 -command ChangeBinBufferSize
+ $ds9(mb).bin add radiobutton -label {8192x8192} \
+ -variable bin(buffersize) -value 8192 -command ChangeBinBufferSize
+ $ds9(mb).bin add separator
+ $ds9(mb).bin add command -label "[msgcat::mc {Binning Parameters}]..." \
+ -command BinDialog
+}
+
+proc PrefsDialogBinMenu {w} {
+ set f [ttk::labelframe $w.mbin -text [msgcat::mc {Bin}]]
+
+ ttk::menubutton $f.menu -text [msgcat::mc {Menu}] -menu $f.menu.menu
+ PrefsDialogButtonbarBin $f.buttonbar
+
+ grid $f.menu $f.buttonbar -padx 2 -pady 2
+
+ set m $f.menu.menu
+ menu $m
+ $m add radiobutton -label [msgcat::mc {Average}] \
+ -variable pbin(function) -value average
+ $m add radiobutton -label [msgcat::mc {Sum}] \
+ -variable pbin(function) -value sum
+ $m add separator
+ $m add radiobutton -label "[msgcat::mc {Bin}] 1" \
+ -variable pbin(factor) -value { 1 1 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 2" \
+ -variable pbin(factor) -value { 2 2 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 4" \
+ -variable pbin(factor) -value { 4 4 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 8" \
+ -variable pbin(factor) -value { 8 8 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 16" \
+ -variable pbin(factor) -value { 16 16 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 32" \
+ -variable pbin(factor) -value { 32 32 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 64" \
+ -variable pbin(factor) -value { 64 64 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 128" \
+ -variable pbin(factor) -value { 128 128 }
+ $m add radiobutton -label "[msgcat::mc {Bin}] 256" \
+ -variable pbin(factor) -value { 256 256 }
+ $m add separator
+ $m add radiobutton -label {128x128} -variable pbin(buffersize) -value 128
+ $m add radiobutton -label {256x256} -variable pbin(buffersize) -value 256
+ $m add radiobutton -label {512x512} -variable pbin(buffersize) -value 512
+ $m add radiobutton -label {1024x1204} -variable pbin(buffersize) -value 1024
+ $m add radiobutton -label {2048x2048} -variable pbin(buffersize) -value 2048
+ $m add radiobutton -label {4096x4096} -variable pbin(buffersize) -value 4096
+ $m add radiobutton -label {8192x8192} -variable pbin(buffersize) -value 8192
+
+ pack $f -side top -fill both -expand true
+}
+
+proc PrefsDialogBin {} {
+ global dprefs
+
+ set w $dprefs(tab)
+
+ $dprefs(list) insert end [msgcat::mc {Bin}]
+ lappend dprefs(tabs) [ttk::frame $w.bin]
+
+ # Mouse
+ set f [ttk::labelframe $w.bin.mouse -text [msgcat::mc {Mouse Wheel Bin}]]
+
+ ttk::checkbutton $f.click -text [msgcat::mc {Enable}] \
+ -variable pbin(wheel)
+ ttk::label $f.title2 -text [msgcat::mc {Factor}]
+ ttk::entry $f.factor -textvariable pbin(wheel,factor) -width 10
+
+ grid $f.click $f.title2 $f.factor -padx 2 -pady 2 -sticky w
+
+ pack $w.bin.mouse -side top -fill both -expand true
+}
+
+# Buttons
+
+proc ButtonsBinDef {} {
+ global pbuttons
+
+ array set pbuttons {
+ bin,average 0
+ bin,sum 0
+ bin,in 1
+ bin,out 1
+ bin,fit 1
+ bin,1 1
+ bin,2 1
+ bin,4 1
+ bin,8 1
+ bin,16 1
+ bin,32 1
+ bin,64 1
+ bin,128 0
+ bin,256 0
+ bin,128x 0
+ bin,256x 0
+ bin,512x 0
+ bin,1024x 0
+ bin,2048x 0
+ bin,4096x 0
+ bin,8192x 0
+ bin,params 0
+ }
+}
+
+proc CreateButtonsBin {} {
+ global buttons
+ global ds9
+
+ ttk::frame $ds9(buttons).bin
+
+ RadioButton $ds9(buttons).bin.average \
+ [string tolower [msgcat::mc {Average}]] \
+ bin(function) average ChangeBinFunction
+ RadioButton $ds9(buttons).bin.sum \
+ [string tolower [msgcat::mc {Sum}]] \
+ bin(function) sum ChangeBinFunction
+
+ ButtonButton $ds9(buttons).bin.in \
+ [string tolower [msgcat::mc {Bin In}]] {Bin .5 .5}
+ ButtonButton $ds9(buttons).bin.out \
+ [string tolower [msgcat::mc {Bin Out}]] {Bin 2 2}
+ ButtonButton $ds9(buttons).bin.fit \
+ [string tolower [msgcat::mc {Bin Fit}]] BinToFit
+
+ RadioButton $ds9(buttons).bin.1 \
+ "[string tolower [msgcat::mc {Bin}]] 1" \
+ bin(factor) { 1 1 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.2 \
+ "[string tolower [msgcat::mc {Bin}]] 2" \
+ bin(factor) { 2 2 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.4 \
+ "[string tolower [msgcat::mc {Bin}]] 4" \
+ bin(factor) { 4 4 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.8 \
+ "[string tolower [msgcat::mc {Bin}]] 8" \
+ bin(factor) { 8 8 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.16 \
+ "[string tolower [msgcat::mc {Bin}]] 16" \
+ bin(factor) { 16 16 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.32 \
+ "[string tolower [msgcat::mc {Bin}]] 32" \
+ bin(factor) { 32 32 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.64 \
+ "[string tolower [msgcat::mc {Bin}]] 64" \
+ bin(factor) { 64 64 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.128 \
+ "[string tolower [msgcat::mc {Bin}]] 128" \
+ bin(factor) { 128 128 } ChangeBinFactor
+ RadioButton $ds9(buttons).bin.256 \
+ "[string tolower [msgcat::mc {Bin}]] 256" \
+ bin(factor) { 256 256 } ChangeBinFactor
+
+ RadioButton $ds9(buttons).bin.128x {128x128} \
+ bin(buffersize) 128 ChangeBinBufferSize
+ RadioButton $ds9(buttons).bin.256x {256x256} \
+ bin(buffersize) 256 ChangeBinBufferSize
+ RadioButton $ds9(buttons).bin.512x {512x512} \
+ bin(buffersize) 512 ChangeBinBufferSize
+ RadioButton $ds9(buttons).bin.1024x {1024x1024} \
+ bin(buffersize) 1024 ChangeBinBufferSize
+ RadioButton $ds9(buttons).bin.2048x {2048x2048} \
+ bin(buffersize) 2048 ChangeBinBufferSize
+ RadioButton $ds9(buttons).bin.4096x {4096x4096} \
+ bin(buffersize) 4096 ChangeBinBufferSize
+ RadioButton $ds9(buttons).bin.8192x {8192x8192} \
+ bin(buffersize) 8192 ChangeBinBufferSize
+
+ ButtonButton $ds9(buttons).bin.params \
+ [string tolower [msgcat::mc {Parameters}]] BinDialog
+
+ set buttons(bin) "
+ $ds9(buttons).bin.average pbuttons(bin,average)
+ $ds9(buttons).bin.sum pbuttons(bin,sum)
+ $ds9(buttons).bin.in pbuttons(bin,in)
+ $ds9(buttons).bin.out pbuttons(bin,out)
+ $ds9(buttons).bin.fit pbuttons(bin,fit)
+ $ds9(buttons).bin.1 pbuttons(bin,1)
+ $ds9(buttons).bin.2 pbuttons(bin,2)
+ $ds9(buttons).bin.4 pbuttons(bin,4)
+ $ds9(buttons).bin.8 pbuttons(bin,8)
+ $ds9(buttons).bin.16 pbuttons(bin,16)
+ $ds9(buttons).bin.32 pbuttons(bin,32)
+ $ds9(buttons).bin.64 pbuttons(bin,64)
+ $ds9(buttons).bin.128 pbuttons(bin,128)
+ $ds9(buttons).bin.256 pbuttons(bin,256)
+ $ds9(buttons).bin.128x pbuttons(bin,128x)
+ $ds9(buttons).bin.256x pbuttons(bin,256x)
+ $ds9(buttons).bin.512x pbuttons(bin,512x)
+ $ds9(buttons).bin.1024x pbuttons(bin,1024x)
+ $ds9(buttons).bin.2048x pbuttons(bin,2048x)
+ $ds9(buttons).bin.4096x pbuttons(bin,4096x)
+ $ds9(buttons).bin.8192x pbuttons(bin,8192x)
+ $ds9(buttons).bin.params pbuttons(bin,params)
+ "
+}
+
+proc PrefsDialogButtonbarBin {f} {
+ global buttons
+ global pbuttons
+
+ ttk::menubutton $f -text [msgcat::mc {Buttonbar}] -menu $f.menu
+
+ set m $f.menu
+ menu $m
+ $m add checkbutton -label [msgcat::mc {Average}] \
+ -variable pbuttons(bin,average) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label [msgcat::mc {Sum}] \
+ -variable pbuttons(bin,sum) -command {UpdateButtons buttons(bin)}
+ $m add separator
+ $m add checkbutton -label [msgcat::mc {Bin In}] \
+ -variable pbuttons(bin,in) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label [msgcat::mc {Bin Out}] \
+ -variable pbuttons(bin,out) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label [msgcat::mc {Bin Fit}] \
+ -variable pbuttons(bin,fit) -command {UpdateButtons buttons(bin)}
+ $m add separator
+ $m add checkbutton -label "[msgcat::mc {Bin}] 1" \
+ -variable pbuttons(bin,1) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 2" \
+ -variable pbuttons(bin,2) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 4" \
+ -variable pbuttons(bin,4) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 8" \
+ -variable pbuttons(bin,8) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 16" \
+ -variable pbuttons(bin,16) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 32" \
+ -variable pbuttons(bin,32) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 64" \
+ -variable pbuttons(bin,64) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 128" \
+ -variable pbuttons(bin,128) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label "[msgcat::mc {Bin}] 256" \
+ -variable pbuttons(bin,256) -command {UpdateButtons buttons(bin)}
+ $m add separator
+ $m add checkbutton -label {128x128} \
+ -variable pbuttons(bin,128x) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label {256x256} \
+ -variable pbuttons(bin,256x) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label {512x512} \
+ -variable pbuttons(bin,512x) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label {1024x1204} \
+ -variable pbuttons(bin,1024x) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label {2048x2048} \
+ -variable pbuttons(bin,2048x) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label {4096x4096} \
+ -variable pbuttons(bin,4096x) -command {UpdateButtons buttons(bin)}
+ $m add checkbutton -label {8192x8192} \
+ -variable pbuttons(bin,8192x) -command {UpdateButtons buttons(bin)}
+ $m add separator
+ $m add checkbutton -label "[msgcat::mc {Binning Parameters}]..." \
+ -variable pbuttons(bin,params) -command {UpdateButtons buttons(bin)}
+}
+
+# Support
+
+proc UpdateBinMenu {} {
+ global ds9
+ global current
+ global bin
+
+ global debug
+ if {$debug(tcl,update)} {
+ puts stderr "UpdateBinMenu"
+ }
+
+ if {$current(frame) != {}} {
+ if {[$current(frame) has fits]} {
+ if {[$current(frame) has fits bin]} {
+ $ds9(mb) entryconfig [msgcat::mc {Bin}] -state normal
+ } else {
+ $ds9(mb) entryconfig [msgcat::mc {Bin}] -state disabled
+ }
+ } else {
+ $ds9(mb) entryconfig [msgcat::mc {Bin}] -state normal
+ }
+
+ set bin(function) [$current(frame) get bin function]
+ set bin(factor) "[$current(frame) get bin factor]"
+ set bin(depth) [$current(frame) get bin depth]
+ set bin(buffersize) [$current(frame) get bin buffer size]
+ } else {
+ $ds9(mb) entryconfig [msgcat::mc {Bin}] -state disabled
+ }
+}
+