summaryrefslogtreecommitdiffstats
path: root/ds9/library/mframe.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/mframe.tcl')
-rw-r--r--ds9/library/mframe.tcl1226
1 files changed, 1226 insertions, 0 deletions
diff --git a/ds9/library/mframe.tcl b/ds9/library/mframe.tcl
new file mode 100644
index 0000000..878ecf4
--- /dev/null
+++ b/ds9/library/mframe.tcl
@@ -0,0 +1,1226 @@
+# 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
+
+# Menus
+
+proc FrameMainMenu {} {
+ global ds9
+ global current
+
+ menu $ds9(mb).frame
+ $ds9(mb).frame add command -label [msgcat::mc {New Frame}] \
+ -command CreateFrame
+ $ds9(mb).frame add command -label [msgcat::mc {New Frame RGB}] \
+ -command CreateRGBFrame
+ $ds9(mb).frame add command -label [msgcat::mc {New Frame 3D}] \
+ -command Create3DFrame
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add command -label [msgcat::mc {Delete Frame}] \
+ -command DeleteCurrentFrame
+ $ds9(mb).frame add command -label [msgcat::mc {Delete All Frames}] \
+ -command DeleteAllFramesMenu
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add command -label [msgcat::mc {Clear Frame}] \
+ -command ClearCurrentFrame
+ $ds9(mb).frame add command -label [msgcat::mc {Reset Frame}] \
+ -command ResetCurrentFrame
+ $ds9(mb).frame add command -label [msgcat::mc {Refresh Frame}] \
+ -command UpdateCurrentFrame
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add radiobutton -label [msgcat::mc {Single Frame}] \
+ -variable current(display) -value single -command DisplayMode
+ $ds9(mb).frame add radiobutton -label [msgcat::mc {Tile Frames}] \
+ -variable current(display) -value tile -command DisplayMode
+ $ds9(mb).frame add radiobutton -label [msgcat::mc {Blink Frames}] \
+ -variable current(display) -value blink -command DisplayMode
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add cascade -label [msgcat::mc {Match}] \
+ -menu $ds9(mb).frame.match
+ $ds9(mb).frame add cascade -label [msgcat::mc {Lock}] \
+ -menu $ds9(mb).frame.lock
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add cascade -label [msgcat::mc {Goto Frame}] \
+ -menu $ds9(mb).frame.goto
+ $ds9(mb).frame add cascade -label [msgcat::mc {Show/Hide Frames}] \
+ -menu $ds9(mb).frame.active
+ $ds9(mb).frame add cascade -label [msgcat::mc {Move Frame}] \
+ -menu $ds9(mb).frame.move
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add command -label [msgcat::mc {First Frame}] \
+ -command FirstFrame
+ $ds9(mb).frame add command -label [msgcat::mc {Previous Frame}] \
+ -command PrevFrame
+ $ds9(mb).frame add command -label [msgcat::mc {Next Frame}] \
+ -command NextFrame
+ $ds9(mb).frame add command -label [msgcat::mc {Last Frame}] \
+ -command LastFrame
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add command -label "[msgcat::mc {Cube}]..." \
+ -command CubeDialog
+ $ds9(mb).frame add command -label "[msgcat::mc {RGB}]..." \
+ -command RGBDialog
+ $ds9(mb).frame add command -label "[msgcat::mc {3D}]..." \
+ -command 3DDialog
+ $ds9(mb).frame add separator
+ $ds9(mb).frame add cascade -label [msgcat::mc {Frame Parameters}] \
+ -menu $ds9(mb).frame.params
+
+ # match
+ menu $ds9(mb).frame.match
+ $ds9(mb).frame.match add cascade -label [msgcat::mc {Frame}] \
+ -menu $ds9(mb).frame.match.frame
+ $ds9(mb).frame.match add cascade -label [msgcat::mc {Crosshair}] \
+ -menu $ds9(mb).frame.match.crosshair
+ $ds9(mb).frame.match add cascade -label [msgcat::mc {Crop}] \
+ -menu $ds9(mb).frame.match.crop
+ $ds9(mb).frame.match add cascade -label [msgcat::mc {Slice}] \
+ -menu $ds9(mb).frame.match.cube
+ $ds9(mb).frame.match add command -label [msgcat::mc {Bin}] \
+ -command MatchBinCurrent
+ $ds9(mb).frame.match add command -label [msgcat::mc {Axes Order}] \
+ -command MatchAxesCurrent
+ $ds9(mb).frame.match add command -label [msgcat::mc {Scale}] \
+ -command MatchScaleCurrent
+ $ds9(mb).frame.match add command -label [msgcat::mc {Scale and Limits}] \
+ -command MatchScaleLimitsCurrent
+ $ds9(mb).frame.match add command -label [msgcat::mc {Colorbar}] \
+ -command MatchColorCurrent
+ $ds9(mb).frame.match add command -label [msgcat::mc {Block}] \
+ -command MatchBlockCurrent
+ $ds9(mb).frame.match add command -label [msgcat::mc {Smooth}] \
+ -command MatchSmoothCurrent
+
+ menu $ds9(mb).frame.match.frame
+ $ds9(mb).frame.match.frame add command -label [msgcat::mc {WCS}] \
+ -command {MatchFrameCurrent wcs}
+ $ds9(mb).frame.match.frame add separator
+ $ds9(mb).frame.match.frame add command -label [msgcat::mc {Image}] \
+ -command {MatchFrameCurrent image}
+ $ds9(mb).frame.match.frame add command -label [msgcat::mc {Physical}] \
+ -command {MatchFrameCurrent physical}
+ $ds9(mb).frame.match.frame add command -label [msgcat::mc {Amplifier}] \
+ -command {MatchFrameCurrent amplifier}
+ $ds9(mb).frame.match.frame add command -label [msgcat::mc {Detector}] \
+ -command {MatchFrameCurrent detector}
+
+ menu $ds9(mb).frame.match.crosshair
+ $ds9(mb).frame.match.crosshair add command -label [msgcat::mc {WCS}] \
+ -command {MatchCrosshairCurrent wcs}
+ $ds9(mb).frame.match.crosshair add separator
+ $ds9(mb).frame.match.crosshair add command -label [msgcat::mc {Image}] \
+ -command {MatchCrosshairCurrent image}
+ $ds9(mb).frame.match.crosshair add command -label [msgcat::mc {Physical}] \
+ -command {MatchCrosshairCurrent physical}
+ $ds9(mb).frame.match.crosshair add command -label [msgcat::mc {Amplifier}] \
+ -command {MatchCrosshairCurrent amplifier}
+ $ds9(mb).frame.match.crosshair add command -label [msgcat::mc {Detector}] \
+ -command {MatchCrosshairCurrent detector}
+
+ menu $ds9(mb).frame.match.crop
+ $ds9(mb).frame.match.crop add command -label [msgcat::mc {WCS}] \
+ -command {MatchCropCurrent wcs}
+ $ds9(mb).frame.match.crop add separator
+ $ds9(mb).frame.match.crop add command -label [msgcat::mc {Image}] \
+ -command {MatchCropCurrent image}
+ $ds9(mb).frame.match.crop add command -label [msgcat::mc {Physical}] \
+ -command {MatchCropCurrent physical}
+ $ds9(mb).frame.match.crop add command -label [msgcat::mc {Amplifier}] \
+ -command {MatchCropCurrent amplifier}
+ $ds9(mb).frame.match.crop add command -label [msgcat::mc {Detector}] \
+ -command {MatchCropCurrent detector}
+
+ menu $ds9(mb).frame.match.cube
+ $ds9(mb).frame.match.cube add command -label [msgcat::mc {WCS}] \
+ -command {MatchCubeCurrent wcs}
+ $ds9(mb).frame.match.cube add separator
+ $ds9(mb).frame.match.cube add command -label [msgcat::mc {Image}] \
+ -command {MatchCubeCurrent image}
+
+ # lock
+ menu $ds9(mb).frame.lock
+ $ds9(mb).frame.lock add cascade -label [msgcat::mc {Frame}] \
+ -menu $ds9(mb).frame.lock.frame
+ $ds9(mb).frame.lock add cascade -label [msgcat::mc {Crosshair}] \
+ -menu $ds9(mb).frame.lock.crosshair
+ $ds9(mb).frame.lock add cascade -label [msgcat::mc {Crop}] \
+ -menu $ds9(mb).frame.lock.crop
+ $ds9(mb).frame.lock add cascade -label [msgcat::mc {Slice}] \
+ -menu $ds9(mb).frame.lock.cube
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Bin}] \
+ -variable bin(lock) -command {LockBinCurrent}
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Axes Order}] \
+ -variable cube(lock,axes) -command {LockAxesCurrent}
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Scale}] \
+ -variable scale(lock) -command {LockScaleCurrent}
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Scale and Limits}] \
+ -variable scale(lock,limits) -command {LockScaleLimitsCurrent}
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Colorbar}] \
+ -variable colorbar(lock) -command {LockColorCurrent}
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Block}] \
+ -variable block(lock) -command {LockBlockCurrent}
+ $ds9(mb).frame.lock add checkbutton -label [msgcat::mc {Smooth}] \
+ -variable smooth(lock) -command {LockSmoothCurrent}
+
+ menu $ds9(mb).frame.lock.frame
+ $ds9(mb).frame.lock.frame add radiobutton -label [msgcat::mc {None}] \
+ -variable panzoom(lock) -value none -command LockFrameCurrent
+ $ds9(mb).frame.lock.frame add separator
+ $ds9(mb).frame.lock.frame add radiobutton -label [msgcat::mc {WCS}] \
+ -variable panzoom(lock) -value wcs -command LockFrameCurrent
+ $ds9(mb).frame.lock.frame add separator
+ $ds9(mb).frame.lock.frame add radiobutton -label [msgcat::mc {Image}] \
+ -variable panzoom(lock) -value image -command LockFrameCurrent
+ $ds9(mb).frame.lock.frame add radiobutton -label [msgcat::mc {Physical}] \
+ -variable panzoom(lock) -value physical -command LockFrameCurrent
+ $ds9(mb).frame.lock.frame add radiobutton -label [msgcat::mc {Amplifier}] \
+ -variable panzoom(lock) -value amplifier -command LockFrameCurrent
+ $ds9(mb).frame.lock.frame add radiobutton -label [msgcat::mc {Detector}] \
+ -variable panzoom(lock) -value detector -command LockFrameCurrent
+
+ menu $ds9(mb).frame.lock.crosshair
+ $ds9(mb).frame.lock.crosshair add radiobutton \
+ -label [msgcat::mc {None}] -variable crosshair(lock) \
+ -value none -command LockCrosshairCurrent
+ $ds9(mb).frame.lock.crosshair add separator
+ $ds9(mb).frame.lock.crosshair add radiobutton \
+ -label [msgcat::mc {WCS}] -variable crosshair(lock) \
+ -value wcs -command LockCrosshairCurrent
+ $ds9(mb).frame.lock.crosshair add separator
+ $ds9(mb).frame.lock.crosshair add radiobutton \
+ -label [msgcat::mc {Image}] -variable crosshair(lock) \
+ -value image -command LockCrosshairCurrent
+ $ds9(mb).frame.lock.crosshair add radiobutton \
+ -label [msgcat::mc {Physical}] -variable crosshair(lock) \
+ -value physical -command LockCrosshairCurrent
+ $ds9(mb).frame.lock.crosshair add radiobutton \
+ -label [msgcat::mc {Amplifier}] -variable crosshair(lock) \
+ -value amplifier -command LockCrosshairCurrent
+ $ds9(mb).frame.lock.crosshair add radiobutton \
+ -label [msgcat::mc {Detector}] -variable crosshair(lock) \
+ -value detector -command LockCrosshairCurrent
+
+ menu $ds9(mb).frame.lock.crop
+ $ds9(mb).frame.lock.crop add radiobutton -label [msgcat::mc {None}] \
+ -variable crop(lock) -value none -command LockCropCurrent
+ $ds9(mb).frame.lock.crop add separator
+ $ds9(mb).frame.lock.crop add radiobutton -label [msgcat::mc {WCS}] \
+ -variable crop(lock) -value wcs -command LockCropCurrent
+ $ds9(mb).frame.lock.crop add separator
+ $ds9(mb).frame.lock.crop add radiobutton -label [msgcat::mc {Image}] \
+ -variable crop(lock) -value image -command LockCropCurrent
+ $ds9(mb).frame.lock.crop add radiobutton -label [msgcat::mc {Physical}] \
+ -variable crop(lock) -value physical -command LockCropCurrent
+ $ds9(mb).frame.lock.crop add radiobutton -label [msgcat::mc {Amplifier}] \
+ -variable crop(lock) -value amplifier -command LockCropCurrent
+ $ds9(mb).frame.lock.crop add radiobutton -label [msgcat::mc {Detector}] \
+ -variable crop(lock) -value detector -command LockCropCurrent
+
+ menu $ds9(mb).frame.lock.cube
+ $ds9(mb).frame.lock.cube add radiobutton -label [msgcat::mc {None}] \
+ -variable cube(lock) -value none -command LockCubeCurrent
+ $ds9(mb).frame.lock.cube add separator
+ $ds9(mb).frame.lock.cube add radiobutton -label [msgcat::mc {WCS}] \
+ -variable cube(lock) -value wcs -command LockCubeCurrent
+ $ds9(mb).frame.lock.cube add separator
+ $ds9(mb).frame.lock.cube add radiobutton -label [msgcat::mc {Image}] \
+ -variable cube(lock) -value image -command LockCubeCurrent
+
+ # active
+ menu $ds9(mb).frame.active
+ $ds9(mb).frame.active add command -label [msgcat::mc {Show All}] \
+ -command ActiveFrameAll
+ $ds9(mb).frame.active add command -label [msgcat::mc {Hide All}] \
+ -command ActiveFrameNone
+ $ds9(mb).frame.active add separator
+
+ # move
+ menu $ds9(mb).frame.move
+ $ds9(mb).frame.move add command -label [msgcat::mc {First}] \
+ -command MoveFirstFrame
+ $ds9(mb).frame.move add command -label [msgcat::mc {Back}] \
+ -command MovePrevFrame
+ $ds9(mb).frame.move add command -label [msgcat::mc {Forward}] \
+ -command MoveNextFrame
+ $ds9(mb).frame.move add command -label [msgcat::mc {Last}] \
+ -command MoveLastFrame
+
+ menu $ds9(mb).frame.goto
+
+ # params
+ menu $ds9(mb).frame.params
+ $ds9(mb).frame.params add cascade -label [msgcat::mc {Tile}] \
+ -menu $ds9(mb).frame.params.tile
+ $ds9(mb).frame.params add cascade -label [msgcat::mc {Blink Interval}] \
+ -menu $ds9(mb).frame.params.blink
+ $ds9(mb).frame.params add command -label [msgcat::mc {Display Size}] \
+ -command DisplayDefaultDialog
+
+ menu $ds9(mb).frame.params.tile
+ $ds9(mb).frame.params.tile add radiobutton -label [msgcat::mc {Grid}] \
+ -variable tile(mode) -value grid -command DisplayMode
+ $ds9(mb).frame.params.tile add radiobutton -label [msgcat::mc {Columns}] \
+ -variable tile(mode) -value column -command DisplayMode
+ $ds9(mb).frame.params.tile add radiobutton -label [msgcat::mc {Rows}] \
+ -variable tile(mode) -value row -command DisplayMode
+ $ds9(mb).frame.params.tile add separator
+ $ds9(mb).frame.params.tile add command \
+ -label "[msgcat::mc {Tile Parameters}]..." -command TileDialog
+
+ menu $ds9(mb).frame.params.blink
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label ".125 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 125
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label ".25 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 250
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label ".5 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 500
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label "1 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 1000
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label "2 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 2000
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label "4 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 4000
+ $ds9(mb).frame.params.blink add radiobutton \
+ -label "8 [msgcat::mc {Seconds}]" \
+ -variable blink(interval) -value 8000
+}
+
+proc PrefsDialogFrameMenu {w} {
+ set f [ttk::labelframe $w.mframe -text [msgcat::mc {Frame}]]
+
+ ttk::menubutton $f.menu -text [msgcat::mc {Menu}] -menu $f.menu.menu
+ PrefsDialogButtonbarFrame $f.buttonbar
+
+ grid $f.menu $f.buttonbar -padx 2 -pady 2
+
+ set m $f.menu.menu
+ menu $m
+ $m add radiobutton -label [msgcat::mc {Single Frame}] \
+ -variable pcurrent(display) -value single
+ $m add radiobutton -label [msgcat::mc {Tile Frames}] \
+ -variable pcurrent(display) -value tile
+ $m add radiobutton -label [msgcat::mc {Blink Frames}] \
+ -variable pcurrent(display) -value blink
+ $m add separator
+ $m add cascade -label [msgcat::mc {Frame Parameters}] \
+ -menu $m.params
+
+ menu $m.params
+ $m.params add cascade -label [msgcat::mc {Tile}] \
+ -menu $m.params.tile
+ $m.params add cascade -label [msgcat::mc {Blink Interval}] \
+ -menu $m.params.blink
+
+ menu $m.params.tile
+ $m.params.tile add radiobutton -label [msgcat::mc {Grid}] \
+ -variable ptile(mode) -value grid
+ $m.params.tile add radiobutton -label [msgcat::mc {Columns}] \
+ -variable ptile(mode) -value column
+ $m.params.tile add radiobutton -label [msgcat::mc {Rows}] \
+ -variable ptile(mode) -value row
+
+ menu $m.params.blink
+ $m.params.blink add radiobutton -label ".125 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 125
+ $m.params.blink add radiobutton -label ".25 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 250
+ $m.params.blink add radiobutton -label ".5 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 500
+ $m.params.blink add radiobutton -label "1 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 1000
+ $m.params.blink add radiobutton -label "2 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 2000
+ $m.params.blink add radiobutton -label "4 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 4000
+ $m.params.blink add radiobutton -label "8 [msgcat::mc {Seconds}]" \
+ -variable pblink(interval) -value 8000
+
+ pack $f -side top -fill both -expand true
+}
+
+# Buttons
+
+proc ButtonsFrameDef {} {
+ global pbuttons
+
+ array set pbuttons {
+ frame,new 1
+ frame,newrgb 1
+ frame,new3d 1
+ frame,delete 1
+ frame,deleteall 0
+ frame,clear 1
+ frame,reset 0
+ frame,refresh 0
+ frame,single 1
+ frame,tile 1
+ frame,blink 1
+
+ frame,match,bin 0
+ frame,match,axes 0
+ frame,match,scale 0
+ frame,match,scalelimits 0
+ frame,match,color 0
+ frame,match,smooth 0
+
+ frame,match,frame,wcs 0
+ frame,match,frame,image 0
+ frame,match,frame,physical 0
+ frame,match,frame,detector 0
+ frame,match,frame,amplifier 0
+
+ frame,match,crosshair,wcs 0
+ frame,match,crosshair,image 0
+ frame,match,crosshair,physical 0
+ frame,match,crosshair,detector 0
+ frame,match,crosshair,amplifier 0
+
+ frame,match,crop,wcs 0
+ frame,match,crop,image 0
+ frame,match,crop,physical 0
+ frame,match,crop,detector 0
+ frame,match,crop,amplifier 0
+
+ frame,match,cube,wcs 0
+ frame,match,cube,image 0
+
+ frame,lock,bin 0
+ frame,lock,axes 0
+ frame,lock,scale 0
+ frame,lock,scalelimits 0
+ frame,lock,color 0
+ frame,lock,smooth 0
+
+ frame,lock,frame,none 0
+ frame,lock,frame,wcs 0
+ frame,lock,frame,image 0
+ frame,lock,frame,physical 0
+ frame,lock,frame,detector 0
+ frame,lock,frame,amplifier 0
+
+ frame,lock,crosshair,none 0
+ frame,lock,crosshair,wcs 0
+ frame,lock,crosshair,image 0
+ frame,lock,crosshair,physical 0
+ frame,lock,crosshair,detector 0
+ frame,lock,crosshair,amplifier 0
+
+ frame,lock,crop,none 0
+ frame,lock,crop,wcs 0
+ frame,lock,crop,image 0
+ frame,lock,crop,physical 0
+ frame,lock,crop,detector 0
+ frame,lock,crop,amplifier 0
+
+ frame,lock,cube,none 0
+ frame,lock,cube,wcs 0
+ frame,lock,cube,image 0
+
+ frame,movefirst 0
+ frame,moveprev 0
+ frame,movenext 0
+ frame,movelast 0
+ frame,first 1
+ frame,prev 1
+ frame,next 1
+ frame,last 1
+ frame,cube 0
+ frame,rgb 0
+ frame,3d 0
+ frame,size 0
+ }
+}
+
+proc CreateButtonsFrame {} {
+ global buttons
+ global ds9
+ global current
+
+ ttk::frame $ds9(buttons).frame
+
+ ButtonButton $ds9(buttons).frame.new \
+ [string tolower [msgcat::mc {New}]] CreateFrame
+ ButtonButton $ds9(buttons).frame.newrgb \
+ [string tolower [msgcat::mc {RGB}]] CreateRGBFrame
+ ButtonButton $ds9(buttons).frame.new3d \
+ [string tolower [msgcat::mc {3D}]] Create3DFrame
+
+ ButtonButton $ds9(buttons).frame.delete \
+ [string tolower [msgcat::mc {Delete}]] DeleteCurrentFrame
+ ButtonButton $ds9(buttons).frame.deleteall \
+ [string tolower [msgcat::mc {Delete All}]] DeleteAllFramesMenu
+
+ ButtonButton $ds9(buttons).frame.clear \
+ [string tolower [msgcat::mc {Clear}]] ClearCurrentFrame
+ ButtonButton $ds9(buttons).frame.reset \
+ [string tolower [msgcat::mc {Reset}]] ResetCurrentFrame
+ ButtonButton $ds9(buttons).frame.refresh \
+ [string tolower [msgcat::mc {Refresh}]] UpdateCurrentFrame
+
+ RadioButton $ds9(buttons).frame.single \
+ [string tolower [msgcat::mc {Single}]] \
+ current(display) single DisplayMode
+ RadioButton $ds9(buttons).frame.tile \
+ [string tolower [msgcat::mc {Tile}]] \
+ current(display) tile DisplayMode
+ RadioButton $ds9(buttons).frame.blink \
+ [string tolower [msgcat::mc {Blink}]] \
+ current(display) blink DisplayMode
+
+ ButtonButton $ds9(buttons).frame.matchbin \
+ [string tolower [msgcat::mc {Match Bin}]] MatchBinCurrent
+ ButtonButton $ds9(buttons).frame.matchaxes \
+ [string tolower [msgcat::mc {Match Axes}]] MatchAxesCurrent
+ ButtonButton $ds9(buttons).frame.matchscale \
+ [string tolower [msgcat::mc {Match Scale}]] MatchScaleCurrent
+ ButtonButton $ds9(buttons).frame.matchscalelimits \
+ [string tolower [msgcat::mc {Match Limits}]] \
+ MatchScaleLimitsCurrent
+ ButtonButton $ds9(buttons).frame.matchcolor \
+ [string tolower [msgcat::mc {Match Color}]] MatchColorCurrent
+ ButtonButton $ds9(buttons).frame.matchsmooth \
+ [string tolower [msgcat::mc {Match Smooth}]] MatchSmoothCurrent
+
+ ButtonButton $ds9(buttons).frame.matchframewcs \
+ [string tolower [msgcat::mc {Match Frame WCS}]] \
+ {MatchFrameCurrent wcs}
+ ButtonButton $ds9(buttons).frame.matchframeimage \
+ [string tolower [msgcat::mc {Match Frame Image}]] \
+ {MatchFrameCurrent image}
+ ButtonButton $ds9(buttons).frame.matchframephysical \
+ [string tolower [msgcat::mc {Match Frame Physical}]] \
+ {MatchFrameCurrent physical}
+ ButtonButton $ds9(buttons).frame.matchframedetector \
+ [string tolower [msgcat::mc {Match Frame Detector}]] \
+ {MatchFrameCurrent detector}
+ ButtonButton $ds9(buttons).frame.matchframeamplifier \
+ [string tolower [msgcat::mc {Match Frame Amplifier}]] \
+ {MatchFrameCurrent amplifier}
+
+ ButtonButton $ds9(buttons).frame.matchcrosshairwcs \
+ [string tolower [msgcat::mc {Match Crosshair WCS}]] \
+ {MatchCrosshairCurrent wcs}
+ ButtonButton $ds9(buttons).frame.matchcrosshairimage \
+ [string tolower [msgcat::mc {Match Crosshair Image}]] \
+ {MatchCrosshairCurrent image}
+ ButtonButton $ds9(buttons).frame.matchcrosshairphysical \
+ [string tolower [msgcat::mc {Match Crosshair Physical}]] \
+ {MatchCrosshairCurrent physical}
+ ButtonButton $ds9(buttons).frame.matchcrosshairdetector \
+ [string tolower [msgcat::mc {Match Crosshair Detector}]] \
+ {MatchCrosshairCurrent detector}
+ ButtonButton $ds9(buttons).frame.matchcrosshairamplifier \
+ [string tolower [msgcat::mc {Match Crosshair Amplifier}]] \
+ {MatchCrosshairCurrent amplifier}
+
+ ButtonButton $ds9(buttons).frame.matchcropwcs \
+ [string tolower [msgcat::mc {Match Crop WCS}]] \
+ {MatchCropCurrent wcs}
+ ButtonButton $ds9(buttons).frame.matchcropimage \
+ [string tolower [msgcat::mc {Match Crop Image}]] \
+ {MatchCropCurrent image}
+ ButtonButton $ds9(buttons).frame.matchcropphysical \
+ [string tolower [msgcat::mc {Match Crop Physical}]] \
+ {MatchCropCurrent physical}
+ ButtonButton $ds9(buttons).frame.matchcropdetector \
+ [string tolower [msgcat::mc {Match Crop Detector}]] \
+ {MatchCropCurrent detector}
+ ButtonButton $ds9(buttons).frame.matchcropamplifier \
+ [string tolower [msgcat::mc {Match Crop Amplifier}]] \
+ {MatchCropCurrent amplifier}
+
+ ButtonButton $ds9(buttons).frame.matchcubewcs \
+ [string tolower [msgcat::mc {Match Slice WCS}]] \
+ {MatchCubeCurrent wcs}
+ ButtonButton $ds9(buttons).frame.matchcubeimage \
+ [string tolower [msgcat::mc {Match Slice Image}]] \
+ {MatchCubeCurrent image}
+
+ CheckButton $ds9(buttons).frame.lockbin \
+ [string tolower [msgcat::mc {Lock Bin}]] bin(lock) LockBinCurrent
+ CheckButton $ds9(buttons).frame.lockaxes \
+ [string tolower [msgcat::mc {Lock Axes}]] \
+ cube(lock,axes) LockAxesCurrent
+ CheckButton $ds9(buttons).frame.lockscale \
+ [string tolower [msgcat::mc {Lock Scale}]] scale(lock) LockScaleCurrent
+ CheckButton $ds9(buttons).frame.lockscalelimits \
+ [string tolower [msgcat::mc {Lock Limits}]] \
+ scale(lock,limits) LockScaleLimitsCurrent
+ CheckButton $ds9(buttons).frame.lockcolor \
+ [string tolower [msgcat::mc {Lock Color}]] color(lock) LockColorCurrent
+ CheckButton $ds9(buttons).frame.locksmooth \
+ [string tolower [msgcat::mc {Lock Smooth}]] \
+ smooth(lock) LockSmoothCurrent
+
+ RadioButton $ds9(buttons).frame.lockframenone \
+ [string tolower [msgcat::mc {Lock Frame None}]] \
+ panzoom(lock) none LockFrameCurrent
+ RadioButton $ds9(buttons).frame.lockframewcs \
+ [string tolower [msgcat::mc {Lock Frame WCS}]] \
+ panzoom(lock) wcs LockFrameCurrent
+ RadioButton $ds9(buttons).frame.lockframeimage \
+ [string tolower [msgcat::mc {Lock Frame Image}]] \
+ panzoom(lock) image LockFrameCurrent
+ RadioButton $ds9(buttons).frame.lockframephysical \
+ [string tolower [msgcat::mc {Lock Frame Physical}]] \
+ panzoom(lock) physical LockFrameCurrent
+ RadioButton $ds9(buttons).frame.lockframedetector \
+ [string tolower [msgcat::mc {Lock Frame Detector}]] \
+ panzoom(lock) detector LockFrameCurrent
+ RadioButton $ds9(buttons).frame.lockframeamplifier \
+ [string tolower [msgcat::mc {Lock Frame Amplifier}]] \
+ panzoom(lock) amplifier LockFrameCurrent
+
+ RadioButton $ds9(buttons).frame.lockcrosshairnone \
+ [string tolower [msgcat::mc {Lock Crosshair None}]] \
+ crosshair(lock) none LockCrosshairCurrent
+ RadioButton $ds9(buttons).frame.lockcrosshairwcs \
+ [string tolower [msgcat::mc {Lock Crosshair WCS}]] \
+ crosshair(lock) wcs LockCrosshairCurrent
+ RadioButton $ds9(buttons).frame.lockcrosshairimage \
+ [string tolower [msgcat::mc {Lock Crosshair Image}]] \
+ crosshair(lock) image LockCrosshairCurrent
+ RadioButton $ds9(buttons).frame.lockcrosshairphysical \
+ [string tolower [msgcat::mc {Lock Crosshair Physical}]] \
+ crosshair(lock) physical LockCrosshairCurrent
+ RadioButton $ds9(buttons).frame.lockcrosshairdetector \
+ [string tolower [msgcat::mc {Lock Crosshair Detector}]] \
+ crosshair(lock) detector LockCrosshairCurrent
+ RadioButton $ds9(buttons).frame.lockcrosshairamplifier \
+ [string tolower [msgcat::mc {Lock Crosshair Amplifier}]] \
+ crosshair(lock) amplifier LockCrosshairCurrent
+
+ RadioButton $ds9(buttons).frame.lockcropnone \
+ [string tolower [msgcat::mc {Lock Crop None}]] \
+ crop(lock) none LockCropCurrent
+ RadioButton $ds9(buttons).frame.lockcropwcs \
+ [string tolower [msgcat::mc {Lock Crop WCS}]] \
+ crop(lock) wcs LockCropCurrent
+ RadioButton $ds9(buttons).frame.lockcropimage \
+ [string tolower [msgcat::mc {Lock Crop Image}]] \
+ crop(lock) image LockCropCurrent
+ RadioButton $ds9(buttons).frame.lockcropphysical \
+ [string tolower [msgcat::mc {Lock Crop Physical}]] \
+ crop(lock) physical LockCropCurrent
+ RadioButton $ds9(buttons).frame.lockcropdetector \
+ [string tolower [msgcat::mc {Lock Crop Detector}]] \
+ crop(lock) detector LockCropCurrent
+ RadioButton $ds9(buttons).frame.lockcropamplifier \
+ [string tolower [msgcat::mc {Lock Crop Amplifier}]] \
+ crop(lock) amplifier LockCropCurrent
+
+ RadioButton $ds9(buttons).frame.lockcubenone \
+ [string tolower [msgcat::mc {Lock Slice None}]] \
+ cube(lock) none LockCubeCurrent
+ RadioButton $ds9(buttons).frame.lockcubewcs \
+ [string tolower [msgcat::mc {Lock Slice WCS}]] \
+ cube(lock) wcs LockCubeCurrent
+ RadioButton $ds9(buttons).frame.lockcubeimage \
+ [string tolower [msgcat::mc {Lock Slice Image}]] \
+ cube(lock) image LockCubeCurrent
+
+ ButtonButton $ds9(buttons).frame.movefirst \
+ [string tolower [msgcat::mc {Move First}]] MoveFirstFrame
+ ButtonButton $ds9(buttons).frame.moveprev \
+ [string tolower [msgcat::mc {Move Back}]] MovePrevFrame
+ ButtonButton $ds9(buttons).frame.movenext \
+ [string tolower [msgcat::mc {Move Forward}]] MoveNextFrame
+ ButtonButton $ds9(buttons).frame.movelast \
+ [string tolower [msgcat::mc {Move Last}]] MoveLastFrame
+
+ ButtonButton $ds9(buttons).frame.first \
+ [string tolower [msgcat::mc {First}]] FirstFrame
+ ButtonButton $ds9(buttons).frame.prev \
+ [string tolower [msgcat::mc {Prev}]] PrevFrame
+ ButtonButton $ds9(buttons).frame.next \
+ [string tolower [msgcat::mc {Next}]] NextFrame
+ ButtonButton $ds9(buttons).frame.last \
+ [string tolower [msgcat::mc {Last}]] LastFrame
+
+ ButtonButton $ds9(buttons).frame.cube \
+ [string tolower "[msgcat::mc {Cube}]..."] CubeDialog
+ ButtonButton $ds9(buttons).frame.rgb \
+ [string tolower "[msgcat::mc {RGB}]..."] RGBDialog
+ ButtonButton $ds9(buttons).frame.3d \
+ [string tolower "[msgcat::mc {3D}]..."] 3DDialog
+
+ ButtonButton $ds9(buttons).frame.size \
+ [string tolower [msgcat::mc {Size}]] DisplayDefaultDialog
+
+ set buttons(frame) "
+ $ds9(buttons).frame.new pbuttons(frame,new)
+ $ds9(buttons).frame.newrgb pbuttons(frame,newrgb)
+ $ds9(buttons).frame.new3d pbuttons(frame,new3d)
+ $ds9(buttons).frame.delete pbuttons(frame,delete)
+ $ds9(buttons).frame.deleteall pbuttons(frame,deleteall)
+ $ds9(buttons).frame.clear pbuttons(frame,clear)
+ $ds9(buttons).frame.reset pbuttons(frame,reset)
+ $ds9(buttons).frame.refresh pbuttons(frame,refresh)
+ $ds9(buttons).frame.single pbuttons(frame,single)
+ $ds9(buttons).frame.tile pbuttons(frame,tile)
+ $ds9(buttons).frame.blink pbuttons(frame,blink)
+
+ $ds9(buttons).frame.matchbin pbuttons(frame,match,bin)
+ $ds9(buttons).frame.matchaxes pbuttons(frame,match,axes)
+ $ds9(buttons).frame.matchscale pbuttons(frame,match,scale)
+ $ds9(buttons).frame.matchscalelimits pbuttons(frame,match,scalelimits)
+ $ds9(buttons).frame.matchcolor pbuttons(frame,match,color)
+ $ds9(buttons).frame.matchsmooth pbuttons(frame,match,smooth)
+
+ $ds9(buttons).frame.matchframewcs pbuttons(frame,match,frame,wcs)
+ $ds9(buttons).frame.matchframeimage pbuttons(frame,match,frame,image)
+ $ds9(buttons).frame.matchframephysical pbuttons(frame,match,frame,physical)
+ $ds9(buttons).frame.matchframedetector pbuttons(frame,match,frame,detector)
+ $ds9(buttons).frame.matchframeamplifier pbuttons(frame,match,frame,amplifier)
+
+ $ds9(buttons).frame.matchcrosshairwcs pbuttons(frame,match,crosshair,wcs)
+ $ds9(buttons).frame.matchcrosshairimage pbuttons(frame,match,crosshair,image)
+ $ds9(buttons).frame.matchcrosshairphysical pbuttons(frame,match,crosshair,physical)
+ $ds9(buttons).frame.matchcrosshairdetector pbuttons(frame,match,crosshair,detector)
+ $ds9(buttons).frame.matchcrosshairamplifier pbuttons(frame,match,crosshair,amplifier)
+
+ $ds9(buttons).frame.matchcropwcs pbuttons(frame,match,crop,wcs)
+ $ds9(buttons).frame.matchcropimage pbuttons(frame,match,crop,image)
+ $ds9(buttons).frame.matchcropphysical pbuttons(frame,match,crop,physical)
+ $ds9(buttons).frame.matchcropdetector pbuttons(frame,match,crop,detector)
+ $ds9(buttons).frame.matchcropamplifier pbuttons(frame,match,crop,amplifier)
+
+ $ds9(buttons).frame.matchcubewcs pbuttons(frame,match,cube,wcs)
+ $ds9(buttons).frame.matchcubeimage pbuttons(frame,match,cube,image)
+
+ $ds9(buttons).frame.lockbin pbuttons(frame,lock,bin)
+ $ds9(buttons).frame.lockaxes pbuttons(frame,lock,axes)
+ $ds9(buttons).frame.lockscale pbuttons(frame,lock,scale)
+ $ds9(buttons).frame.lockscalelimits pbuttons(frame,lock,scalelimits)
+ $ds9(buttons).frame.lockcolor pbuttons(frame,lock,color)
+ $ds9(buttons).frame.locksmooth pbuttons(frame,lock,smooth)
+
+ $ds9(buttons).frame.lockframenone pbuttons(frame,lock,frame,none)
+ $ds9(buttons).frame.lockframewcs pbuttons(frame,lock,frame,wcs)
+ $ds9(buttons).frame.lockframeimage pbuttons(frame,lock,frame,image)
+ $ds9(buttons).frame.lockframephysical pbuttons(frame,lock,frame,physical)
+ $ds9(buttons).frame.lockframedetector pbuttons(frame,lock,frame,detector)
+ $ds9(buttons).frame.lockframeamplifier pbuttons(frame,lock,frame,amplifier)
+
+ $ds9(buttons).frame.lockcrosshairnone pbuttons(frame,lock,crosshair,none)
+ $ds9(buttons).frame.lockcrosshairwcs pbuttons(frame,lock,crosshair,wcs)
+ $ds9(buttons).frame.lockcrosshairimage pbuttons(frame,lock,crosshair,image)
+ $ds9(buttons).frame.lockcrosshairphysical pbuttons(frame,lock,crosshair,physical)
+ $ds9(buttons).frame.lockcrosshairdetector pbuttons(frame,lock,crosshair,detector)
+ $ds9(buttons).frame.lockcrosshairamplifier pbuttons(frame,lock,crosshair,amplifier)
+
+ $ds9(buttons).frame.lockcropnone pbuttons(frame,lock,crop,none)
+ $ds9(buttons).frame.lockcropwcs pbuttons(frame,lock,crop,wcs)
+ $ds9(buttons).frame.lockcropimage pbuttons(frame,lock,crop,image)
+ $ds9(buttons).frame.lockcropphysical pbuttons(frame,lock,crop,physical)
+ $ds9(buttons).frame.lockcropdetector pbuttons(frame,lock,crop,detector)
+ $ds9(buttons).frame.lockcropamplifier pbuttons(frame,lock,crop,amplifier)
+
+ $ds9(buttons).frame.lockcubenone pbuttons(frame,lock,cube,none)
+ $ds9(buttons).frame.lockcubewcs pbuttons(frame,lock,cube,wcs)
+ $ds9(buttons).frame.lockcubeimage pbuttons(frame,lock,cube,image)
+
+ $ds9(buttons).frame.movefirst pbuttons(frame,movefirst)
+ $ds9(buttons).frame.moveprev pbuttons(frame,moveprev)
+ $ds9(buttons).frame.movenext pbuttons(frame,movenext)
+ $ds9(buttons).frame.movelast pbuttons(frame,movelast)
+ $ds9(buttons).frame.first pbuttons(frame,first)
+ $ds9(buttons).frame.prev pbuttons(frame,prev)
+ $ds9(buttons).frame.next pbuttons(frame,next)
+ $ds9(buttons).frame.last pbuttons(frame,last)
+ $ds9(buttons).frame.cube pbuttons(frame,cube)
+ $ds9(buttons).frame.rgb pbuttons(frame,rgb)
+ $ds9(buttons).frame.3d pbuttons(frame,3d)
+ $ds9(buttons).frame.size pbuttons(frame,size)
+ "
+}
+
+proc PrefsDialogButtonbarFrame {f} {
+ global buttons
+ global pbuttons
+ global ds9
+
+ ttk::menubutton $f -text [msgcat::mc {Buttonbar}] -menu $f.menu
+
+ set m $f.menu
+ menu $m
+ $m add checkbutton -label [msgcat::mc {New Frame}] \
+ -variable pbuttons(frame,new) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {New Frame RGB}] \
+ -variable pbuttons(frame,newrgb) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {New Frame 3D}] \
+ -variable pbuttons(frame,new3d) -command {UpdateButtons buttons(frame)}
+ $m add separator
+ $m add checkbutton -label [msgcat::mc {Delete Frame}] \
+ -variable pbuttons(frame,delete) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Delete All Frames}] \
+ -variable pbuttons(frame,deleteall) -command {UpdateButtons buttons(frame)}
+ $m add separator
+ $m add checkbutton -label [msgcat::mc {Clear Frame}] \
+ -variable pbuttons(frame,clear) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Reset Frame}] \
+ -variable pbuttons(frame,reset) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Refresh Frame}] \
+ -variable pbuttons(frame,refresh) -command {UpdateButtons buttons(frame)}
+ $m add separator
+ $m add checkbutton -label [msgcat::mc {Single Frame}] \
+ -variable pbuttons(frame,single) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Tile Frames}] \
+ -variable pbuttons(frame,tile) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Blink Frames}] \
+ -variable pbuttons(frame,blink) -command {UpdateButtons buttons(frame)}
+ $m add separator
+ $m add cascade -label [msgcat::mc {Match}] -menu $m.match
+ $m add cascade -label [msgcat::mc {Lock}] -menu $m.lock
+ $m add separator
+ $m add cascade -label [msgcat::mc {Move Frame}] -menu $m.move
+ $m add separator
+ $m add checkbutton -label [msgcat::mc {First Frame}] \
+ -variable pbuttons(frame,first) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Previous Frame}] \
+ -variable pbuttons(frame,prev) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Next Frame}] \
+ -variable pbuttons(frame,next) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label [msgcat::mc {Last Frame}] \
+ -variable pbuttons(frame,last) -command {UpdateButtons buttons(frame)}
+ $m add separator
+ $m add checkbutton -label "[msgcat::mc {Cube}]..." \
+ -variable pbuttons(frame,cube) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label "[msgcat::mc {RGB}]..." \
+ -variable pbuttons(frame,rgb) -command {UpdateButtons buttons(frame)}
+ $m add checkbutton -label "[msgcat::mc {3D}]..." \
+ -variable pbuttons(frame,3d) -command {UpdateButtons buttons(frame)}
+ $m add separator
+ $m add cascade -label [msgcat::mc {Frame Parameters}] -menu $m.params
+
+ # match
+ menu $m.match
+ $m.match add cascade -label [msgcat::mc {Frame}] \
+ -menu $m.match.frame
+ $m.match add cascade -label [msgcat::mc {Crosshair}] \
+ -menu $m.match.crosshair
+ $m.match add cascade -label [msgcat::mc {Crop}] \
+ -menu $m.match.crop
+ $m.match add cascade -label [msgcat::mc {Slice}] \
+ -menu $m.match.cube
+ $m.match add checkbutton -label [msgcat::mc {Bin}] \
+ -variable pbuttons(frame,match,bin) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match add checkbutton -label [msgcat::mc {Axes Order}] \
+ -variable pbuttons(frame,match,axes) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match add checkbutton -label [msgcat::mc {Scale}] \
+ -variable pbuttons(frame,match,scale) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match add checkbutton -label [msgcat::mc {Scale and Limits}] \
+ -variable pbuttons(frame,match,scalelimits) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match add checkbutton -label [msgcat::mc {Color}] \
+ -variable pbuttons(frame,match,color) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match add checkbutton -label [msgcat::mc {Smooth}] \
+ -variable pbuttons(frame,match,smooth) \
+ -command {UpdateButtons buttons(frame)}
+
+ menu $m.match.frame
+ $m.match.frame add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,match,frame,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.frame add separator
+ $m.match.frame add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,match,frame,image) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.frame add checkbutton -label [msgcat::mc {Physical}] \
+ -variable pbuttons(frame,match,frame,physical) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.frame add checkbutton -label [msgcat::mc {Detector}] \
+ -variable pbuttons(frame,match,frame,detector) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.frame add checkbutton -label [msgcat::mc {Amplifier}] \
+ -variable pbuttons(frame,match,frame,amplifier) \
+ -command {UpdateButtons buttons(frame)}
+
+ menu $m.match.crosshair
+ $m.match.crosshair add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,match,crosshair,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crosshair add separator
+ $m.match.crosshair add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,match,crosshair,image) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crosshair add checkbutton -label [msgcat::mc {Physical}] \
+ -variable pbuttons(frame,match,crosshair,physical) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crosshair add checkbutton -label [msgcat::mc {Detector}] \
+ -variable pbuttons(frame,match,crosshair,detector) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crosshair add checkbutton -label [msgcat::mc {Amplifier}] \
+ -variable pbuttons(frame,match,crosshair,amplifier) \
+ -command {UpdateButtons buttons(frame)}
+
+ menu $m.match.crop
+ $m.match.crop add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,match,crop,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crop add separator
+ $m.match.crop add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,match,crop,image) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crop add checkbutton -label [msgcat::mc {Physical}] \
+ -variable pbuttons(frame,match,crop,physical) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crop add checkbutton -label [msgcat::mc {Detector}] \
+ -variable pbuttons(frame,match,crop,detector) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.crop add checkbutton -label [msgcat::mc {Amplifier}] \
+ -variable pbuttons(frame,match,crop,amplifier) \
+ -command {UpdateButtons buttons(frame)}
+
+
+ menu $m.match.cube
+ $m.match.cube add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,match,cube,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.match.cube add separator
+ $m.match.cube add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,match,cube,image) \
+ -command {UpdateButtons buttons(frame)}
+
+ # lock
+ menu $m.lock
+ $m.lock add cascade -label [msgcat::mc {Frame}] \
+ -menu $m.lock.frame
+ $m.lock add cascade -label [msgcat::mc {Crosshair}] \
+ -menu $m.lock.crosshair
+ $m.lock add cascade -label [msgcat::mc {Crop}] \
+ -menu $m.lock.crop
+ $m.lock add cascade -label [msgcat::mc {Slice}] \
+ -menu $m.lock.cube
+ $m.lock add checkbutton -label [msgcat::mc {Bin}] \
+ -variable pbuttons(frame,lock,bin) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock add checkbutton -label [msgcat::mc {Axes Order}] \
+ -variable pbuttons(frame,lock,axes) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock add checkbutton -label [msgcat::mc {Scale}] \
+ -variable pbuttons(frame,lock,scale) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock add checkbutton -label [msgcat::mc {Scale and Limits}] \
+ -variable pbuttons(frame,lock,scalelimits) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock add checkbutton -label [msgcat::mc {Color}] \
+ -variable pbuttons(frame,lock,color) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock add checkbutton -label [msgcat::mc {Smooth}] \
+ -variable pbuttons(frame,lock,smooth) \
+ -command {UpdateButtons buttons(frame)}
+
+ menu $m.lock.frame
+ $m.lock.frame add checkbutton -label [msgcat::mc {None}] \
+ -variable pbuttons(frame,lock,frame,none) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.frame add separator
+ $m.lock.frame add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,lock,frame,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.frame add separator
+ $m.lock.frame add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,lock,frame,image) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.frame add checkbutton -label [msgcat::mc {Physical}] \
+ -variable pbuttons(frame,lock,frame,physical) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.frame add checkbutton -label [msgcat::mc {Detector}] \
+ -variable pbuttons(frame,lock,frame,detector) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.frame add checkbutton -label [msgcat::mc {Amplifier}] \
+ -variable pbuttons(frame,lock,frame,amplifier) \
+ -command {UpdateButtons buttons(frame)}
+
+ menu $m.lock.crosshair
+ $m.lock.crosshair add checkbutton -label [msgcat::mc {None}] \
+ -variable pbuttons(frame,lock,crosshair,none) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crosshair add separator
+ $m.lock.crosshair add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,lock,crosshair,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crosshair add separator
+ $m.lock.crosshair add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,lock,crosshair,image) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crosshair add checkbutton -label [msgcat::mc {Physical}] \
+ -variable pbuttons(frame,lock,crosshair,physical) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crosshair add checkbutton -label [msgcat::mc {Detector}] \
+ -variable pbuttons(frame,lock,crosshair,detector) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crosshair add checkbutton -label [msgcat::mc {Amplifier}] \
+ -variable pbuttons(frame,lock,crosshair,amplifier) \
+ -command {UpdateButtons buttons(frame)}
+
+ menu $m.lock.crop
+ $m.lock.crop add checkbutton -label [msgcat::mc {None}] \
+ -variable pbuttons(frame,lock,crop,none) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crop add separator
+ $m.lock.crop add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,lock,crop,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crop add separator
+ $m.lock.crop add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,lock,crop,image) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crop add checkbutton -label [msgcat::mc {Physical}] \
+ -variable pbuttons(frame,lock,crop,physical) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crop add checkbutton -label [msgcat::mc {Detector}] \
+ -variable pbuttons(frame,lock,crop,detector) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.crop add checkbutton -label [msgcat::mc {Amplifier}] \
+ -variable pbuttons(frame,lock,crop,amplifier) \
+ -command {UpdateButtons buttons(frame)}
+
+
+ menu $m.lock.cube
+ $m.lock.cube add checkbutton -label [msgcat::mc {None}] \
+ -variable pbuttons(frame,lock,cube,none) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.cube add separator
+ $m.lock.cube add checkbutton -label [msgcat::mc {WCS}] \
+ -variable pbuttons(frame,lock,cube,wcs) \
+ -command {UpdateButtons buttons(frame)}
+ $m.lock.cube add separator
+ $m.lock.cube add checkbutton -label [msgcat::mc {Image}] \
+ -variable pbuttons(frame,lock,cube,image) \
+ -command {UpdateButtons buttons(frame)}
+
+ # move
+ menu $m.move
+ $m.move add checkbutton -label [msgcat::mc {First}] \
+ -variable pbuttons(frame,movefirst) \
+ -command {UpdateButtons buttons(frame)}
+ $m.move add checkbutton -label [msgcat::mc {Back}] \
+ -variable pbuttons(frame,moveprev) \
+ -command {UpdateButtons buttons(frame)}
+ $m.move add checkbutton -label [msgcat::mc {Forward}] \
+ -variable pbuttons(frame,movenext) \
+ -command {UpdateButtons buttons(frame)}
+ $m.move add checkbutton -label [msgcat::mc {Last}] \
+ -variable pbuttons(frame,movelast) \
+ -command {UpdateButtons buttons(frame)}
+
+ # params
+ menu $m.params
+ $m.params add checkbutton -label [msgcat::mc {Display Size}] \
+ -variable pbuttons(frame,size) -command {UpdateButtons buttons(frame)}
+}
+
+# Support
+
+proc UpdateFrameMenuStatic {} {
+ global ds9
+
+ global debug
+ if {$debug(tcl,update)} {
+ puts stderr "UpdateFrameMenuStatic"
+ }
+
+ $ds9(mb).frame entryconfig [msgcat::mc {New Frame RGB}] -state normal
+ $ds9(buttons).frame.newrgb configure -state normal
+
+ if {$ds9(active,num) > 0} {
+ $ds9(mb).frame entryconfig [msgcat::mc {Delete Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Delete All Frames}] -state normal
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Clear Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Reset Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Refresh Frame}] -state normal
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Single Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Tile Frames}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Blink Frames}] -state normal
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Match}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Lock}] -state normal
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Move Frame}] -state normal
+
+ $ds9(mb).frame entryconfig [msgcat::mc {First Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Previous Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Next Frame}] -state normal
+ $ds9(mb).frame entryconfig [msgcat::mc {Last Frame}] -state normal
+
+ $ds9(buttons).frame.delete configure -state normal
+ $ds9(buttons).frame.deleteall configure -state normal
+
+ $ds9(buttons).frame.clear configure -state normal
+ $ds9(buttons).frame.reset configure -state normal
+ $ds9(buttons).frame.refresh configure -state normal
+
+ $ds9(buttons).frame.single configure -state normal
+ $ds9(buttons).frame.tile configure -state normal
+ $ds9(buttons).frame.blink configure -state normal
+
+ $ds9(buttons).frame.movefirst configure -state normal
+ $ds9(buttons).frame.moveprev configure -state normal
+ $ds9(buttons).frame.movenext configure -state normal
+ $ds9(buttons).frame.movelast configure -state normal
+
+ $ds9(buttons).frame.first configure -state normal
+ $ds9(buttons).frame.prev configure -state normal
+ $ds9(buttons).frame.next configure -state normal
+ $ds9(buttons).frame.last configure -state normal
+ } else {
+ $ds9(mb).frame entryconfig [msgcat::mc {Delete Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Delete All Frames}] -state disabled
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Clear Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Reset Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Refresh Frame}] -state disabled
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Single Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Tile Frames}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Blink Frames}] -state disabled
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Match}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Lock}] -state disabled
+
+ $ds9(mb).frame entryconfig [msgcat::mc {Move Frame}] -state disabled
+
+ $ds9(mb).frame entryconfig [msgcat::mc {First Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Previous Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Next Frame}] -state disabled
+ $ds9(mb).frame entryconfig [msgcat::mc {Last Frame}] -state disabled
+
+ $ds9(buttons).frame.delete configure -state disabled
+ $ds9(buttons).frame.deleteall configure -state disabled
+
+ $ds9(buttons).frame.clear configure -state disabled
+ $ds9(buttons).frame.reset configure -state disabled
+ $ds9(buttons).frame.refresh configure -state disabled
+
+ $ds9(buttons).frame.single configure -state disabled
+ $ds9(buttons).frame.tile configure -state disabled
+ $ds9(buttons).frame.blink configure -state disabled
+
+ $ds9(buttons).frame.movefirst configure -state disabled
+ $ds9(buttons).frame.moveprev configure -state disabled
+ $ds9(buttons).frame.movenext configure -state disabled
+ $ds9(buttons).frame.movelast configure -state disabled
+
+ $ds9(buttons).frame.first configure -state disabled
+ $ds9(buttons).frame.prev configure -state disabled
+ $ds9(buttons).frame.next configure -state disabled
+ $ds9(buttons).frame.last configure -state disabled
+ }
+}
+
+proc UpdateFrameMenu {} {
+ global ds9
+ global current
+
+ global debug
+ if {$debug(tcl,update)} {
+ puts stderr "UpdateFrameMenu"
+ }
+
+ if {$current(frame) != {}} {
+ $ds9(mb).frame entryconfig "[msgcat::mc {Cube}]..." \
+ -state normal
+ $ds9(buttons).frame.cube configure -state normal
+
+ switch -- [$current(frame) get type] {
+ base {
+ $ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
+ -state disabled
+ $ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
+ -state normal
+ $ds9(buttons).frame.rgb configure -state disabled
+ $ds9(buttons).frame.3d configure -state normal
+ }
+ rgb {
+ $ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
+ -state normal
+ $ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
+ -state disabled
+ $ds9(buttons).frame.rgb configure -state normal
+ $ds9(buttons).frame.3d configure -state disabled
+ }
+ 3d {
+ $ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
+ -state disabled
+ $ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
+ -state normal
+ $ds9(buttons).frame.rgb configure -state disabled
+ $ds9(buttons).frame.3d configure -state normal
+ }
+ }
+ } else {
+ $ds9(mb).frame entryconfig "[msgcat::mc {Cube}]..." \
+ -state disabled
+ $ds9(mb).frame entryconfig "[msgcat::mc {RGB}]..." \
+ -state disabled
+ $ds9(mb).frame entryconfig "[msgcat::mc {3D}]..." \
+ -state disabled
+ $ds9(buttons).frame.cube configure -state disabled
+ $ds9(buttons).frame.rgb configure -state disabled
+ $ds9(buttons).frame.3d configure -state disabled
+ }
+}
+
+proc UpdateFrameMenuItems {} {
+ global ds9
+
+ global debug
+ if {$debug(tcl,update)} {
+ puts stderr "UpdateFrameMenuItems"
+ }
+
+ # Goto Frame Menu
+ if {[$ds9(mb).frame.goto index end] >= $ds9(menu,size,frame,goto)} {
+ $ds9(mb).frame.goto delete $ds9(menu,size,frame,goto) end
+ }
+
+ set cnt $ds9(menu,size,frame,goto)
+ foreach f $ds9(frames) {
+ set which "[msgcat::mc {Frame}] [string range $f 5 end]"
+ $ds9(mb).frame.goto add radiobutton -label $which \
+ -variable ds9(next) -value $f -command GotoFrame
+
+ # wrap if needed
+ incr cnt
+ if {$cnt>=$ds9(menu,size,wrap)} {
+ set cnt 1
+ $ds9(mb).frame.goto entryconfig $which -columnbreak 1
+ }
+ }
+
+ # Active Frame Menu
+ if {[$ds9(mb).frame.active index end] >= $ds9(menu,size,frame,active)} {
+ $ds9(mb).frame.active delete $ds9(menu,size,frame,active) end
+ }
+
+ set cnt $ds9(menu,size,frame,active)
+ foreach f $ds9(frames) {
+ set which "[msgcat::mc {Frame}] [string range $f 5 end]"
+ $ds9(mb).frame.active add checkbutton -label $which \
+ -variable active($f) -command UpdateActiveFrames
+
+ # wrap if needed
+ incr cnt
+ if {$cnt>=$ds9(menu,size,wrap)} {
+ set cnt 1
+ $ds9(mb).frame.active entryconfig $which -columnbreak 1
+ }
+ }
+}
+