diff options
Diffstat (limited to 'src/bin/pgaccess/lib/preferences.tcl')
-rw-r--r-- | src/bin/pgaccess/lib/preferences.tcl | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/src/bin/pgaccess/lib/preferences.tcl b/src/bin/pgaccess/lib/preferences.tcl new file mode 100644 index 00000000000..c752e03ba4a --- /dev/null +++ b/src/bin/pgaccess/lib/preferences.tcl @@ -0,0 +1,273 @@ +namespace eval Preferences { + +proc {load} {} { +global PgAcVar + setDefaultFonts + setGUIPreferences + # Set some default values for preferences + set PgAcVar(pref,rows) 200 + set PgAcVar(pref,tvfont) clean + set PgAcVar(pref,autoload) 1 + set PgAcVar(pref,systemtables) 0 + set PgAcVar(pref,lastdb) {} + set PgAcVar(pref,lasthost) localhost + set PgAcVar(pref,lastport) 5432 + set PgAcVar(pref,username) {} + set PgAcVar(pref,password) {} + set PgAcVar(pref,language) english + set retval [catch {set fid [open "~/.pgaccessrc" r]} errmsg] + if {! $retval} { + while {![eof $fid]} { + set pair [gets $fid] + set PgAcVar([lindex $pair 0]) [lindex $pair 1] + } + close $fid + setGUIPreferences + } + # The following preferences values will be ignored from the .pgaccessrc file + set PgAcVar(pref,typecolors) {black red brown #007e00 #004e00 blue orange yellow pink purple cyan magenta lightblue lightgreen gray lightyellow} + set PgAcVar(pref,typelist) {text bool bytea float8 float4 int4 char name int8 int2 int28 regproc oid tid xid cid} + loadInternationalMessages +} + + +proc {save} {} { +global PgAcVar + catch { + set fid [open "~/.pgaccessrc" w] + foreach key [array names PgAcVar pref,*] { puts $fid "$key {$PgAcVar($key)}" } + close $fid + } + if {$PgAcVar(activetab)=="Tables"} { + Mainlib::tab_click Tables + } +} + +proc {configure} {} { +global PgAcVar + Window show .pgaw:Preferences + foreach language [lsort $PgAcVar(AVAILABLE_LANGUAGES)] {.pgaw:Preferences.fpl.flb.llb insert end $language} + wm transient .pgaw:Preferences .pgaw:Main +} + + +proc {loadInternationalMessages} {} { +global Messages PgAcVar + set PgAcVar(AVAILABLE_LANGUAGES) {english} + foreach filename [glob -nocomplain [file join $PgAcVar(PGACCESS_HOME) lib languages *]] { + lappend PgAcVar(AVAILABLE_LANGUAGES) [file tail $filename] + } + catch { unset Messages } + catch { source [file join $PgAcVar(PGACCESS_HOME) lib languages $PgAcVar(pref,language)] } +} + + +proc {changeLanguage} {} { +global PgAcVar + set sel [.pgaw:Preferences.fpl.flb.llb curselection] + if {$sel==""} {return} + set desired [.pgaw:Preferences.fpl.flb.llb get $sel] + if {$desired==$PgAcVar(pref,language)} {return} + set PgAcVar(pref,language) $desired + loadInternationalMessages + return + foreach wid [winfo children .pgaw:Main] { + set wtext {} + catch { set wtext [$wid cget -text] } + if {$wtext != ""} { + $wid configure -text [intlmsg $wtext] + } + } +} + + +proc {setDefaultFonts} {} { +global PgAcVar tcl_platform +if {[string toupper $tcl_platform(platform)]=="WINDOWS"} { + set PgAcVar(pref,font_normal) {"MS Sans Serif" 8} + set PgAcVar(pref,font_bold) {"MS Sans Serif" 8 bold} + set PgAcVar(pref,font_fix) {Terminal 8} + set PgAcVar(pref,font_italic) {"MS Sans Serif" 8 italic} +} else { + set PgAcVar(pref,font_normal) -Adobe-Helvetica-Medium-R-Normal-*-*-120-*-*-*-*-* + set PgAcVar(pref,font_bold) -Adobe-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-* + set PgAcVar(pref,font_italic) -Adobe-Helvetica-Medium-O-Normal-*-*-120-*-*-*-*-* + set PgAcVar(pref,font_fix) -*-Clean-Medium-R-Normal-*-*-130-*-*-*-*-* +} +} + + +proc {setGUIPreferences} {} { +global PgAcVar + foreach wid {Label Text Button Listbox Checkbutton Radiobutton} { + option add *$wid.font $PgAcVar(pref,font_normal) + } + option add *Entry.background #fefefe + option add *Entry.foreground #000000 + option add *Button.BorderWidth 1 +} + +} + + +################### END OF NAMESPACE PREFERENCES ################# + +proc vTclWindow.pgaw:Preferences {base} { + if {$base == ""} { + set base .pgaw:Preferences + } + if {[winfo exists $base]} { + wm deiconify $base; return + } + toplevel $base -class Toplevel + wm focusmodel $base passive + wm geometry $base 450x360+100+213 + wm maxsize $base 1009 738 + wm minsize $base 1 1 + wm overrideredirect $base 0 + wm resizable $base 0 0 + wm deiconify $base + wm title $base [intlmsg "Preferences"] + bind $base <Key-Escape> "Window destroy .pgaw:Preferences" + frame $base.fl \ + -height 75 -relief groove -width 10 + frame $base.fr \ + -height 75 -relief groove -width 10 + frame $base.f1 \ + -height 80 -relief groove -width 125 + label $base.f1.l1 \ + -borderwidth 0 -relief raised \ + -text [intlmsg {Max rows displayed in table/query view}] + entry $base.f1.erows \ + -background #fefefe -borderwidth 1 -textvariable PgAcVar(pref,rows) -width 7 + frame $base.f2 \ + -height 75 -relief groove -width 125 + label $base.f2.l \ + -borderwidth 0 -relief raised -text [intlmsg {Table viewer font}] + label $base.f2.ls \ + -borderwidth 0 -relief raised -text { } + radiobutton $base.f2.pgaw:rb1 \ + -borderwidth 1 -text [intlmsg {fixed width}] -value clean \ + -variable PgAcVar(pref,tvfont) + radiobutton $base.f2.pgaw:rb2 \ + -borderwidth 1 -text [intlmsg proportional] -value helv -variable PgAcVar(pref,tvfont) + frame $base.ff \ + -height 75 -relief groove -width 125 + label $base.ff.l1 \ + -borderwidth 0 -relief raised -text [intlmsg {Font normal}] + entry $base.ff.e1 \ + -background #fefefe -borderwidth 1 -textvariable PgAcVar(pref,font_normal) \ + -width 200 + label $base.ff.l2 \ + -borderwidth 0 -relief raised -text [intlmsg {Font bold}] + entry $base.ff.e2 \ + -background #fefefe -borderwidth 1 -textvariable PgAcVar(pref,font_bold) \ + -width 200 + label $base.ff.l3 \ + -borderwidth 0 -relief raised -text [intlmsg {Font italic}] + entry $base.ff.e3 \ + -background #fefefe -borderwidth 1 -textvariable PgAcVar(pref,font_italic) \ + -width 200 + label $base.ff.l4 \ + -borderwidth 0 -relief raised -text [intlmsg {Font fixed}] + entry $base.ff.e4 \ + -background #fefefe -borderwidth 1 -textvariable PgAcVar(pref,font_fix) \ + -width 200 + frame $base.fls \ + -borderwidth 1 -height 2 -relief sunken -width 125 + frame $base.fal \ + -height 75 -relief groove -width 125 + checkbutton $base.fal.al \ + -borderwidth 1 -text [intlmsg {Auto-load the last opened database at startup}] \ + -variable PgAcVar(pref,autoload) -anchor w + checkbutton $base.fal.st \ + -borderwidth 1 -text [intlmsg {View system tables}] \ + -variable PgAcVar(pref,systemtables) -anchor w + frame $base.fpl \ + -height 49 -relief groove -width 125 + label $base.fpl.lt \ + -borderwidth 0 -relief raised -text [intlmsg {Preferred language}] + frame $base.fpl.flb \ + -height 75 -relief sunken -width 125 + listbox $base.fpl.flb.llb \ + -borderwidth 1 -height 6 -yscrollcommand {.pgaw:Preferences.fpl.flb.vsb set} + scrollbar $base.fpl.flb.vsb \ + -borderwidth 1 -command {.pgaw:Preferences.fpl.flb.llb yview} -orient vert + frame $base.fb \ + -height 75 -relief groove -width 125 + button $base.fb.btnsave \ + -command {if {$PgAcVar(pref,rows)>200} { + tk_messageBox -title [intlmsg Warning] -parent .pgaw:Preferences -message [intlmsg "A big number of rows displayed in table view will take a lot of memory!"] +} +Preferences::changeLanguage +Preferences::save +Window destroy .pgaw:Preferences +tk_messageBox -title [intlmsg Warning] -parent .pgaw:Main -message [intlmsg "Changed fonts may appear in the next working session!"]} \ + -padx 9 -pady 3 -text [intlmsg Save] + button $base.fb.btncancel \ + -command {Window destroy .pgaw:Preferences} -padx 9 -pady 3 -text [intlmsg Cancel] + pack $base.fl \ + -in .pgaw:Preferences -anchor center -expand 0 -fill y -side left + pack $base.fr \ + -in .pgaw:Preferences -anchor center -expand 0 -fill y -side right + pack $base.f1 \ + -in .pgaw:Preferences -anchor center -expand 0 -fill x -pady 5 -side top + pack $base.f1.l1 \ + -in .pgaw:Preferences.f1 -anchor center -expand 0 -fill none -side left + pack $base.f1.erows \ + -in .pgaw:Preferences.f1 -anchor center -expand 0 -fill none -side left + pack $base.f2 \ + -in .pgaw:Preferences -anchor center -expand 0 -fill x -pady 5 -side top + pack $base.f2.l \ + -in .pgaw:Preferences.f2 -anchor center -expand 0 -fill none -side left + pack $base.f2.ls \ + -in .pgaw:Preferences.f2 -anchor center -expand 0 -fill none -side left + pack $base.f2.pgaw:rb1 \ + -in .pgaw:Preferences.f2 -anchor center -expand 0 -fill none -side left + pack $base.f2.pgaw:rb2 \ + -in .pgaw:Preferences.f2 -anchor center -expand 0 -fill none -side left + pack $base.ff \ + -in .pgaw:Preferences -anchor center -expand 0 -fill x -side top + grid columnconf $base.ff 1 -weight 1 + grid $base.ff.l1 \ + -in .pgaw:Preferences.ff -column 0 -row 0 -columnspan 1 -rowspan 1 -sticky w + grid $base.ff.e1 \ + -in .pgaw:Preferences.ff -column 1 -row 0 -columnspan 1 -rowspan 1 -pady 1 + grid $base.ff.l2 \ + -in .pgaw:Preferences.ff -column 0 -row 2 -columnspan 1 -rowspan 1 -sticky w + grid $base.ff.e2 \ + -in .pgaw:Preferences.ff -column 1 -row 2 -columnspan 1 -rowspan 1 -pady 1 + grid $base.ff.l3 \ + -in .pgaw:Preferences.ff -column 0 -row 4 -columnspan 1 -rowspan 1 -sticky w + grid $base.ff.e3 \ + -in .pgaw:Preferences.ff -column 1 -row 4 -columnspan 1 -rowspan 1 -pady 1 + grid $base.ff.l4 \ + -in .pgaw:Preferences.ff -column 0 -row 6 -columnspan 1 -rowspan 1 -sticky w + grid $base.ff.e4 \ + -in .pgaw:Preferences.ff -column 1 -row 6 -columnspan 1 -rowspan 1 -pady 1 + pack $base.fls \ + -in .pgaw:Preferences -anchor center -expand 0 -fill x -pady 5 -side top + pack $base.fal \ + -in .pgaw:Preferences -anchor center -expand 0 -fill x -side top + pack $base.fal.al \ + -in .pgaw:Preferences.fal -anchor center -expand 0 -fill x -side top -anchor w + pack $base.fal.st \ + -in .pgaw:Preferences.fal -anchor center -expand 0 -fill x -side top -anchor w + pack $base.fpl \ + -in .pgaw:Preferences -anchor center -expand 0 -fill x -side top + pack $base.fpl.lt \ + -in .pgaw:Preferences.fpl -anchor center -expand 0 -fill none -side top + pack $base.fpl.flb \ + -in .pgaw:Preferences.fpl -anchor center -expand 0 -fill none -side top + pack $base.fpl.flb.llb \ + -in .pgaw:Preferences.fpl.flb -anchor center -expand 0 -fill none -side left + pack $base.fpl.flb.vsb \ + -in .pgaw:Preferences.fpl.flb -anchor center -expand 0 -fill y -side right + pack $base.fb \ + -in .pgaw:Preferences -anchor center -expand 0 -fill none -side bottom + grid $base.fb.btnsave \ + -in .pgaw:Preferences.fb -column 0 -row 0 -columnspan 1 -rowspan 1 + grid $base.fb.btncancel \ + -in .pgaw:Preferences.fb -column 1 -row 0 -columnspan 1 -rowspan 1 +} + |