summaryrefslogtreecommitdiffstats
path: root/ds9/library/prefsdialog.tcl
diff options
context:
space:
mode:
Diffstat (limited to 'ds9/library/prefsdialog.tcl')
-rw-r--r--ds9/library/prefsdialog.tcl317
1 files changed, 317 insertions, 0 deletions
diff --git a/ds9/library/prefsdialog.tcl b/ds9/library/prefsdialog.tcl
new file mode 100644
index 0000000..be90b92
--- /dev/null
+++ b/ds9/library/prefsdialog.tcl
@@ -0,0 +1,317 @@
+# 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 PrefsDialog {{which {}}} {
+ global ds9
+ global iprefs
+ global dprefs
+
+ # see if we already have a window visible
+ if {[winfo exists $iprefs(top)]} {
+ raise $iprefs(top)
+ return
+ }
+
+ # create the window
+ set w $iprefs(top)
+ set mb $iprefs(mb)
+
+ Toplevel $w $mb 6 [msgcat::mc {Preferences}] PrefsDialogSave
+
+ $mb add cascade -label [msgcat::mc {File}] -menu $mb.file
+ $mb add cascade -label [msgcat::mc {Edit}] -menu $mb.edit
+
+ menu $mb.file
+ $mb.file add command -label [msgcat::mc {Clear Preferences}] \
+ -command PrefsDialogClear
+ $mb.file add separator
+ $mb.file add command -label [msgcat::mc {Save}] -command PrefsDialogSave
+ $mb.file add command -label [msgcat::mc {Close}] -command PrefsDialogClose
+
+ EditMenu $mb iprefs
+
+ # List
+ set f [ttk::frame $w.param]
+
+ ttk::scrollbar $f.scroll -command [list $f.box yview]
+ set dprefs(list) [listbox $f.box \
+ -yscroll [list $f.scroll set] \
+ -selectmode browse \
+ -setgrid true \
+ -width 18 -height 28 \
+ ]
+ grid $f.box $f.scroll -sticky news
+ grid rowconfigure $f 0 -weight 1
+ grid columnconfigure $f 2 -weight 1
+
+ bind $dprefs(list) <<ListboxSelect>> [list PrefsDialogListUpdate]
+
+ set dprefs(tab) $f
+ set dprefs(tabs) {}
+
+ PrefsDialogGeneral
+ PrefsDialogStartup
+ PrefsDialogMenu
+ PrefsDialogPanner
+ PrefsDialogMagnifier
+ PrefsDialog3d
+ PrefsDialogGraph
+ PrefsDialogScale
+ PrefsDialogColor
+ PrefsDialogBin
+ PrefsDialogZoom
+ PrefsDialogRegion
+ PrefsDialogAnnulus
+ PrefsDialogPanda
+ PrefsDialogAnalysis
+ PrefsDialogPixelTable
+ PrefsDialogContour
+ PrefsDialogSmooth
+ PrefsDialogCatalog
+ PrefsDialogNRES
+ PrefsDialogPlot
+ PrefsDialogVO
+ PrefsDialogPrint
+ PrefsDialogPageSetup
+ PrefsDialogCoord
+ PrefsDialogExamine
+ PrefsDialogHTTP
+
+ # Buttons
+ set f [ttk::frame $w.buttons]
+ ttk::button $f.save -text [msgcat::mc {Save}] \
+ -command PrefsDialogSave
+ ttk::button $f.close -text [msgcat::mc {Close}] \
+ -command PrefsDialogClose
+ ttk::button $f.clear -text [msgcat::mc {Clear Preferences}] \
+ -command PrefsDialogClear
+ pack $f.clear $f.save $f.close \
+ -side left -expand true -padx 2 -pady 4
+
+ # Fini
+ ttk::separator $w.sep -orient horizontal
+ pack $w.buttons $w.sep -side bottom -fill x
+ pack $w.param -fill both -expand true
+
+ # http is hard coded to be last
+ switch $which {
+ http {$dprefs(list) selection set end}
+ default {$dprefs(list) selection set 0}
+ }
+
+ PrefsDialogListUpdate
+}
+
+proc PrefsDialogListUpdate {} {
+ global dprefs
+
+ set which [$dprefs(list) curselection]
+ if {$which == {}} {
+ set which 0
+ }
+ foreach tab $dprefs(tabs) {
+ grid forget $tab
+ }
+
+ grid [lindex $dprefs(tabs) $which] -row 0 -column 2 -sticky new
+}
+
+proc PrefsDialogSave {} {
+ global iprefs
+
+ if {[winfo exists $iprefs(top)]} {
+ destroy $iprefs(top)
+ destroy $iprefs(mb)
+ }
+
+ SavePrefs
+}
+
+proc PrefsDialogClose {} {
+ global iprefs
+ global dprefs
+
+ if {[winfo exists $iprefs(top)]} {
+ destroy $iprefs(top)
+ destroy $iprefs(mb)
+ }
+
+ unset dprefs
+}
+
+proc PrefsDialogClear {} {
+ global iprefs
+ global dprefs
+ global pds9
+
+ if {$pds9(confirm)} {
+ if {[tk_messageBox -type okcancel -icon question -message [msgcat::mc {Clear Preferences?}]] != {ok}} {
+ return
+ }
+ }
+
+ ClearPrefs
+ PrefsDialogClose
+}
+
+# Pref Frames
+
+proc PrefsDialogGeneral {} {
+ global dprefs
+ global ds9
+ global pds9
+ global pmagnifier
+
+ set w $dprefs(tab)
+
+ $dprefs(list) insert end [msgcat::mc {General}]
+ lappend dprefs(tabs) [ttk::frame $w.general]
+
+ # General
+ set f [ttk::labelframe $w.general.misc -text [msgcat::mc {General}]]
+
+ ttk::checkbutton $f.backup \
+ -text [msgcat::mc {Always save files during Backup}] \
+ -variable pds9(backup)
+ ttk::checkbutton $f.auto -text [msgcat::mc {Autoload FITS Regions}] \
+ -variable pds9(automarker)
+ ttk::checkbutton $f.confirm \
+ -text [msgcat::mc {Enable Confirmation Dialogs}] \
+ -variable pds9(confirm)
+ ttk::label $f.tthreads -text [msgcat::mc {Number of Threads}]
+ ttk::entry $f.threads -textvariable ds9(threads) \
+ -validate focusout -validatecommand ChangeThreads -width 8
+
+ grid $f.backup -padx 2 -pady 2 -sticky w
+ grid $f.auto -padx 2 -pady 2 -sticky w
+ grid $f.confirm -padx 2 -pady 2 -sticky w
+ grid $f.tthreads $f.threads -padx 2 -pady 2 -sticky w
+
+ # Language
+ set f [ttk::labelframe $w.general.lang -text [msgcat::mc {Language}]]
+
+ ttk::menubutton $f.lang -textvariable pds9(language,name) -menu $f.lang.menu
+
+ set m $f.lang.menu
+ menu $m
+ $m add radiobutton -label [LanguageToName locale] \
+ -variable pds9(language,name) -command "set pds9(language) locale"
+ $m add separator
+ $m add radiobutton -label [LanguageToName cs] \
+ -variable pds9(language,name) -command "set pds9(language) cs"
+ $m add radiobutton -label [LanguageToName da] \
+ -variable pds9(language,name) -command "set pds9(language) da"
+ $m add radiobutton -label [LanguageToName de] \
+ -variable pds9(language,name) -command "set pds9(language) de"
+ $m add radiobutton -label [LanguageToName en] \
+ -variable pds9(language,name) -command "set pds9(language) en"
+ $m add radiobutton -label [LanguageToName es] \
+ -variable pds9(language,name) -command "set pds9(language) es"
+ $m add radiobutton -label [LanguageToName fr] \
+ -variable pds9(language,name) -command "set pds9(language) fr"
+ $m add radiobutton -label [LanguageToName ja] \
+ -variable pds9(language,name) -command "set pds9(language) ja"
+ $m add radiobutton -label [LanguageToName pt] \
+ -variable pds9(language,name) -command "set pds9(language) pt"
+ $m add radiobutton -label [LanguageToName zh] \
+ -variable pds9(language,name) -command "set pds9(language) zh"
+
+ grid $f.lang -padx 2 -pady 2 -sticky w
+
+ # GUI Font
+ set f [ttk::labelframe $w.general.font -text [msgcat::mc {GUI Font}]]
+
+ FontMenuButton $f.font pds9 font \
+ font,size font,weight font,slant \
+ [list SetDefaultFont true]
+ ttk::button $f.reset -text [msgcat::mc {Reset}] \
+ -command ResetDefaultFont
+
+ grid $f.font $f.reset -padx 2 -pady 2 -sticky w
+
+ # Text Font
+ set f [ttk::labelframe $w.general.textfont -text [msgcat::mc {Text Font}]]
+
+ FontMenuButton $f.textfont pds9 text,font \
+ text,font,size text,font,weight text,font,slant \
+ [list SetDefaultTextFont true]
+ ttk::button $f.textreset -text [msgcat::mc {Reset}] \
+ -command ResetDefaultTextFont
+
+ grid $f.textfont $f.textreset -padx 2 -pady 2 -sticky w
+
+ # Color
+ set f [ttk::labelframe $w.general.color -text [msgcat::mc {Color}]]
+
+ ttk::label $f.tbg -text [msgcat::mc {Background Color}]
+ ColorMenuButton $f.bg pds9 bg PrefsBgColor
+
+ ttk::label $f.tnan -text [msgcat::mc {Blank/Inf/NaN Color}]
+ ColorMenuButton $f.nan pds9 nan PrefsNanColor
+
+ grid $f.tbg $f.bg -padx 2 -pady 2 -sticky w
+ grid $f.tnan $f.nan -padx 2 -pady 2 -sticky w
+
+ # Mosaic
+ set f [ttk::labelframe $w.general.mosaic -text [msgcat::mc {Mosaic}]]
+ ttk::checkbutton $f.align -text {IRAF DETSEC Align} -variable pds9(iraf) \
+ -command PrefsIRAFAlign
+
+ grid $f.align -padx 2 -pady 2 -sticky w
+
+ # Dialog Box
+ set f [ttk::labelframe $w.general.box -text [msgcat::mc {Dialog Box}]]
+
+ ttk::radiobutton $f.motif -text {Motif} -variable pds9(dialog) \
+ -value motif
+ ttk::radiobutton $f.windows -text {Windows} -variable pds9(dialog) \
+ -value windows
+ grid $f.motif $f.windows -padx 2 -pady 2 -sticky w
+
+ switch $ds9(wm) {
+ x11 {}
+ aqua -
+ win32 {
+ ttk::radiobutton $f.native -text [msgcat::mc {Native Dialog}] \
+ -variable pds9(dialog) -value native
+ grid $f.native -row 0 -column 2 -padx 2 -pady 2 -sticky w
+ }
+ }
+
+ ttk::checkbutton $f.center -text [msgcat::mc {Center Non-modal Dialogs}] \
+ -variable pds9(dialog,center)
+ ttk::checkbutton $f.all -text [msgcat::mc {Default All Files}] \
+ -variable pds9(dialog,all)
+
+ grid $f.center - -padx 2 -pady 2 -sticky w
+ grid $f.all - -padx 2 -pady 2 -sticky w
+
+ pack $w.general.misc $w.general.lang $w.general.font \
+ $w.general.textfont $w.general.color $w.general.mosaic \
+ $w.general.box \
+ -side top -fill both -expand true
+}
+
+proc PrefsDialogStartup {} {
+ global dprefs
+
+ set w $dprefs(tab)
+
+ $dprefs(list) insert end [msgcat::mc {Startup}]
+ lappend dprefs(tabs) [ttk::frame $w.startup]
+
+ set f [ttk::labelframe $w.startup.params -text [msgcat::mc {At Startup}]]
+
+ ttk::checkbutton $f.xpa -text [msgcat::mc {Initialize XPA}] \
+ -variable pds9(xpa)
+ ttk::checkbutton $f.samp -text [msgcat::mc {Connect SAMP}] \
+ -variable pds9(samp)
+
+ grid $f.xpa -padx 2 -pady 2 -sticky w
+ grid $f.samp -padx 2 -pady 2 -sticky w
+
+ pack $f -side top -fill both -expand true -anchor nw
+}