home *** CD-ROM | disk | FTP | other *** search
-
-
- #===============================================================================
-
-
- proc addArrDef {arr def val} {
- addDef [list $arr $def] $val arr
- }
-
- proc removeArrDef {arr def} {
- removeDef [list $arr $def] arr
- }
-
- proc addDef {def val {prefix {}}} {
- global ${prefix}prefDefs
-
- readDefs $prefix
- set ${prefix}prefDefs($def) $val
- writeDefs $prefix
- catch {unset ${prefix}prefDefs}
- }
-
- proc removeDef {def {prefix {}}} {
- global ${prefix}prefDefs
-
- readDefs $prefix
- catch {unset ${prefix}prefDefs($def)}
- writeDefs $prefix
- catch {unset ${prefix}prefDefs}
- }
-
- proc readDefs {{prefix {}}} {
- global HOME PREFS globalPrefix
-
- if {![file exists "$PREFS:${prefix}defs.tcl"]} return
-
- set globalPrefix $prefix
- uplevel #0 {source "$PREFS:${globalPrefix}defs.tcl"}
- }
-
-
- proc writeDefs {{prefix {}}} {
- global HOME PREFS ${prefix}prefDefs
-
- if {![info exists ${prefix}prefDefs]} {
- catch {removeFile "$PREFS:${prefix}defs.tcl"}
- return
- }
-
- if {![file exists "$PREFS"]} {
- mkdir "$PREFS"
- }
- set fd [open "$PREFS:${prefix}defs.tcl" "w"]
- foreach nm [array names ${prefix}prefDefs] {
- puts $fd [list set ${prefix}prefDefs($nm) [set ${prefix}prefDefs($nm)]]
- }
- close $fd
- }
-
-
- proc readUserDefs {} {
- global prefDefs arrprefDefs PREFS
-
- if {[file exists "$PREFS:defs.tcl"]} {
- source "$PREFS:defs.tcl"
-
- foreach nm [array names prefDefs] {
- global $nm
- set $nm $prefDefs($nm)
- }
- catch {unset prefDefs}
- }
-
- if {[file exists "$PREFS:arrdefs.tcl"]} {
- source "$PREFS:arrdefs.tcl"
-
- foreach nm [array names arrprefDefs] {
- set arr [lindex $nm 0]
- set field [lindex $nm 1]
- set val $arrprefDefs($nm)
- global $arr
- set ${arr}($field) $val
- }
- catch {unset arrprefDefs}
- }
-
- # Use "prefs.tcl" to define or change any tcl information. */
- if {![file exists "$PREFS:prefs.tcl"]} {
-
- if {![file exists "$PREFS"]} {
- mkdir "$PREFS"
- }
- set fd [open "$PREFS:prefs.tcl" "w"]
- close $fd
- }
- uplevel #0 {
- if {[catch {source "$PREFS:prefs.tcl"}]} {
- alertnote "An error occurred while loading \"prefs.tcl\""
- }
- }
- }
-
-
- proc viewSavedSetting {} {
- global prefDefs arrprefDefs
-
- saveModifiedVars
-
- readDefs
- readDefs arr
-
- set res [listpick -p "The following settings have been saved:" [getSavedSettings]]
-
- if {[regexp {([^(]+)\(([^)]+)\)} $res dummy arr field]} {
- set arg [list $arr $field]
- set val $arrprefDefs($arg)
- if {[string length $val] > 80} {
- global tileLeft tileTop tileWidth
- new -g $tileLeft $tileTop $tileWidth 100 -n "\$${arr}($field)"
- insertText "'$res's value is:\r\r$val\r"
- setWinInfo read-only 1
- setWinInfo dirty 0
- goto 0
- } else {
- alertnote "'$res's value is:\r\r$val\r"
- }
- } else {
- global $res
- alertnote "'$res's value is:\r\r$prefDefs($res)"
- }
-
- unset prefDefs arrprefDefs
- }
-
- proc removeSavedSetting {} {
- global prefDefs arrprefDefs
-
- readDefs
- readDefs arr
- set res [listpick -p "Remove which setting?" [getSavedSettings]]
-
- if {$res == ""} return
- if {[regexp {([^(]+)\(([^)]+)\)} $res dummy arr field]} {
- global $arr
- # catch {unset ${arr}($field)}
- removeArrDef $arr $field
- } else {
- global $res
- # catch {unset $res}
- removeDef $res
- }
-
- unset prefDefs arrprefDefs
- }
-
-
- proc getSavedSettings {} {
- global prefDefs arrprefDefs
-
- readDefs
- readDefs arr
-
- set names [array names prefDefs]
- foreach pair [array names arrprefDefs] {
- lappend names "[lindex $pair 0]([lindex $pair 1])"
- }
-
- return [lsort $names]
- }
-
- #===============================================================================
-
- proc buildRecentFiles {} {
- global recentFilesSave modifiedVars
-
- lappend modifiedVars
-
- message "Building recent files menuâ•”"
- if {[info exists recentFilesSave]} {
- foreach f $recentFilesSave {
- pushRecent $f
- }
- }
-
- catch {unset recentFilesSave}
- }
-
-
- proc pushRecent {name} {
- global recentFiles
-
- if {[string match {*\**} $name] || [string match "Untit*" $name] } return
- if {[info exists recentFiles] && ([set ind [lsearch -exact $recentFiles $name]] >= 0)} {
- set recentFiles [lreplace $recentFiles $ind $ind]
- }
- lappend recentFiles $name
- if {[llength $recentFiles] > 10} {
- set recentFiles [lrange $recentFiles 1 end]
- }
- foreach f $recentFiles {
- lappend tails [file tail $f]
- }
- menu -m -n recent -p recentProc [lsort -ignore $tails]
- }
-
- proc recentProc {menu name} {
- global recentFiles
-
- if {[set ind [lsearch $recentFiles "*:$name"]] >= 0} {
- edit [lindex $recentFiles $ind]
- }
- }
-
-
- proc editRecentFile {} {
- global recentFiles
-
- foreach f $recentFiles {
- lappend tails [file tail $f]
- }
-
- foreach res [listpick -l -p {File?} [lsort -ignore $tails]] {
- set ind [lsearch $recentFiles \*:$res]
- catch {edit [lindex $recentFiles $ind]}
- }
- }
-
-
- #===============================================================================
-
- proc editPrefs.tcl {} {
- global PREFS
- if {![file exists "$PREFS:prefs.tcl"]} {
- set fd [open "$PREFS:prefs.tcl" "w"]
- close $fd
- }
- edit "$PREFS:prefs.tcl"
- }
-
- # Automatically add a line to the user input file
- proc addUserLine {line} {
- global HOME PREFS
-
- if {![file exists "$PREFS"]} {
- mkdir "$PREFS"
- }
- set fid [open "$PREFS:prefs.tcl" "a+"]
- if {![catch {seek $fid -1 end}]} {
- if {[read $fid 1] == "\r"} {
- set line "\r$line"
- }
- }
- seek $fid 0 end
- puts $fid $line
- close $fid
- }
-
-
-
-