home *** CD-ROM | disk | FTP | other *** search
Text File | 1997-12-14 | 9.1 KB | 304 lines | [TEXT/ALFA] |
- ## -*-Tcl-*-
- # ###################################################################
- # Alpha - new Tcl folder configuration
- #
- # FILE: "globals.tcl"
- # created: 13/6/94 {9:39:12 pm}
- # last update: 14/12/97 {2:17:12 pm}
- #
- # Reorganisation carried out by Vince Darley with much help from Tom
- # Fetherston, Johan Linde and suggestions from the Alpha-D mailing list.
- # Alpha is shareware; please register with the author using the register
- # button in the about box.
- #
- # ###################################################################
- ##
-
- namespace eval flag {}
- namespace eval global {}
-
- proc alpha::getGlobalPreferences {} {}
-
- set tileWidth [expr $screenWidth - 10]
- if {$tileWidth > 510} {set defWidth 510} else {set defWidth $tileWidth }
- set tileHeight [expr $screenHeight - 60]
- set defHeight $tileHeight
-
- set tclvars {}
- set allFlags {}
- set allVars {}
- set invisibleModeVars(wordWrap) 1
-
- # The following three procs, together w/ the initialization
- # for the flags below, allow Tcl to control Alpha's internal
- # variables. We use semi-colons so they are not exported to
- # tclIndex files.
- ;proc initFlag {var args} {
- linkAlpha $var [lindex $args 0]
- eval newPref flag $var $args
- }
- ;proc initVar {var args} {
- linkAlpha $var [lindex $args 0]
- eval newPref variable $var $args
- }
- # The internal vars over-ride differently to other prefs
- ;proc linkAlpha {var val} {
- linkVar $var
- if {$val != ""} { global $var ; set $var $val }
- }
-
- proc flag::options {v} {
- global flag::list
- set thelist [set flag::list($v)]
- set litems [lindex $thelist 1]
- switch -- [lindex $thelist 0] {
- "varitem" {
- return [uplevel \#0 "set $litems"]
- }
- "varindex" {
- return [uplevel \#0 "set $litems"]
- }
- "array" {
- global $litems
- return [lsort [array names $litems]]
- }
- }
- return $litems
- }
-
- catch {initFlag lockStatus 1}
- initFlag autoHScroll 1
- initFlag autoSave 0
- initFlag blinkingCursor 1
- initFlag blockCursor 0
- initFlag coloring 1
- initFlag dragAndDrop 1
- initFlag horScrollBar 0
- initFlag hyperText 1
- initFlag indentOnCR 1
- initFlag moveInsertion
- initFlag openAllFiles
- initFlag powerThumb 1
- initFlag projectorAware
- initFlag showInvisibles 0
- initFlag smallMenuFont 1
- initFlag sortedIsDefault
- initFlag tearoffMenus 1
- initFlag tempMem 1
- initFlag undoOn 1
- initFlag wordWrap
- newPref flag askDeleteSelection 0
- newPref flag backup 0
- newPref flag forceMainScreen 1
- newPref flag electricTab 0
- newPref flag iconifyOnSwitch 0
- newPref flag infoWindowsDirty 0
- newPref flag intelCutPaste 1
- newPref flag sortFuncsMenu 1
- newPref flag doubleSpaces 1
- newPref flag printHeader 1
- newPref flag printHeaderFullPath 0
- newPref flag printHeaderTime 1
- ##
- # If you try and complete a command for which no unique
- # suffix exists, the choice is to cancel or present the
- # user with a list of options from which to pick.
- ##
- newPref flag listPickIfMultCmps 1
- # if we have a choice between, say \left, \leftRight, \leftMore,
- # then we don't get stuck on '\left' with this option.
- newPref flag listPickIfNonUniqueStuckCmp 1
- newPref flag quietlyClearMarks 1
-
- newPref var backupFolder ""
- newPref var backupExtension "~"
- newPref var backupAgeRequirementInHours 0.0
- newPref var createFtpType unix global "" "mac unix ibm"
- newPref var horMargin 4
- newPref var indentationAmount 4
- newPref var minItemsInTitlePopup 5
- newPref var numWinsToTile 2
- newPref var tileHeight
- newPref var tileLeft 2
- newPref var tileMargin 22
- newPref var tileProportion .60
- newPref var tileTop 40
- newPref var tileWidth
- newPref var batchListWindowFraction 0.25 global win::SetProportions
-
- newPref variable keyboard US global keys::keyboardChanged keyboards array
-
- newPref var spelling 0 global "" "American British" index
- newPref var reportErrors 1 global "" \
- [list "Log startup errors" "Report errors immediately"] index
- newPref flag synchroniseWithInternetConfig 0
- initVar printerFont "" global "" "system monaco courier geneva helvetica profont times {new york}"
- initVar printerFontSize "" global "" "9 10 12 14 18"
- initVar defaultFont "monaco" global "" "system monaco courier geneva helvetica profont times {new york}"
- initVar fontSize 9 global "" "9 10 12 14 18"
- initVar savedState "" global "" "none think mpw"
- initVar tabSize 4
- initVar wrapBreak {[\w_]+}
- initVar wrapBreakPreface {([^\w_])}
- initVar wrapHigh
- initVar wrapLow
- initVar bottomMargin
- initVar changesLim
- initVar defHeight
- initVar defLeft 2
- initVar defTop 40
- initVar defWidth
- initVar fillColumn 75
- initVar funcExpr {^[^ \t\(#\r/@].*\(.*\)$}
- initVar funcPar 1
- initVar leftFillColumn
- initVar leftMargin
- initVar paraColumn 180
- initVar sortColumn
- initVar tagFile "$HOME:cTAGS"
- set flag::type(tagFile) io-file
- initVar topMargin
- initVar wordBreak {\w+}
- initVar wordBreakPreface {(\W)}
- # Flags that won't appear in the menu.
- linkVar numLock
- newPref var defaultAlphaDownloadSite "" global "" remote::site array
- # bug in alpha-ic interaction
- if ![catch "icGetPref DownloadFolder" res] {
- newPref var downloadFolder $res
- } else {
- newPref var downloadFolder $HOME
- }
-
- lunion flagPrefs(Backups) backup undoOn autoSave
- lunion varPrefs(Backups) backupFolder backupExtension changesLim \
- backupAgeRequirementInHours
- lunion flagPrefs(Gui) blinkingCursor blockCursor coloring \
- dragAndDrop iconifyOnSwitch intelCutPaste lockStatus showInvisibles \
- smallMenuFont sortFuncsMenu tearoffMenus doubleSpaces hyperText
- lunion varPrefs(Gui) defaultFont fontSize tabSize sortColumn
- lunion flagPrefs(Printer) printHeader printHeaderFullPath printHeaderTime
- lunion varPrefs(Printer) bottomMargin printerFont printerFontSize \
- topMargin leftMargin
- lunion flagPrefs(Tags)
- lunion varPrefs(Tags) funcPar tagFile
- lunion flagPrefs(Window) autoHScroll forceMainScreen horScrollBar \
- moveInsertion powerThumb sortedIsDefault
- lunion varPrefs(Window) defHeight defLeft defTop defWidth \
- minItemsInTitlePopup savedState
- lunion flagPrefs(Tiling)
- lunion varPrefs(Tiling) numWinsToTile batchListWindowFraction horMargin \
- tileHeight tileProportion tileLeft tileMargin tileTop tileWidth
- lunion flagPrefs(Wrapping)
- lunion varPrefs(Wrapping) fillColumn leftFillColumn paraColumn wrapLow \
- wrapHigh
- lunion flagPrefs(Electrics) listPickIfMultCmps listPickIfNonUniqueStuckCmp \
- askDeleteSelection electricTab indentOnCR
- lunion varPrefs(Electrics) indentationAmount
- lunion flagPrefs(Miscellaneous)
- lunion flagPrefs(Helpers)
- lunion varPrefs(Miscellaneous)
- lunion varPrefs(Helpers)
- lunion flagPrefs(WWW) synchroniseWithInternetConfig
- lunion varPrefs(WWW) defaultAlphaDownloadSite createFtpType downloadFolder \
- browserSig ftpSig httpDownloadSig
- lunion flagPrefs(International)
- lunion varPrefs(International) keyboard spelling
- lunion flagPrefs(Packages)
- lunion varPrefs(Packages) reportErrors
-
- proc alpha::addToPreferencePage {page args} {
- global varPrefs flagPrefs allFlags
- set vars [lremove -l $args $allFlags]
- set flags [lremove -l $args $vars]
- eval lunion varPrefs($page) $vars
- eval lunion flagPrefs($page) $flags
- }
-
- namespace eval indent {}
-
- set indent::amounts [list "nothing" "half-tab" "tab"]
-
- proc indent::setup {args} {
- global indent_amounts indentationAmount
- set indent_amounts(0) 0
- set indent_amounts(1) [expr $indentationAmount/2]
- set indent_amounts(2) $indentationAmount
- set indent_amounts(-1) [expr -$indentationAmount/2]
- set indent_amounts(-2) [expr -$indentationAmount]
- }
- indent::setup
- trace variable indentationAmount w indent::setup
-
- proc getFileSig {f} {
- getFileInfo $f arr
- return $arr(creator)
- }
-
- proc getFileType {f} {
- getFileInfo $f arr
- return $arr(type)
- }
-
- # get defaults from internet config
- if $synchroniseWithInternetConfig {
- catch {set browserSig [getFileSig [icGetPref -t 1 Helper•http]]}
- catch {set ftpSig [getFileSig [icGetPref -t 1 Helper•ftp]]}
- } else {
- catch {ensureset browserSig [getFileSig [icGetPref -t 1 Helper•http]]}
- catch {ensureset ftpSig [getFileSig [icGetPref -t 1 Helper•ftp]]}
- }
-
- # now set them
- newPref v browserSig MOSS
- newPref v ftpSig Arch
- newPref v httpDownloadSig $browserSig
-
- namespace eval win {}
-
- proc win::SetProportions {} {
- global tileHeight tileWidth tileTop tileLeft tileHeight \
- errorHeight errorDisp tileMargin batchListWindowFraction
- set errorHeight [expr int ($batchListWindowFraction * ($tileHeight - $tileMargin))]
- set errorDisp [expr int ((1- $batchListWindowFraction) * ($tileHeight - $tileMargin))]
- }
-
- proc wordWrapProc {val} {
- global mode wordWrap modifiedArrayElements
- global ${mode}modeVars
- set wordWrap $val
- set ${mode}modeVars(wordWrap) $val
- lappend modifiedArrayElements [list wordWrap ${mode}modeVars]
- }
-
-
- proc toggleNumLock {} {
- global numLock modifiedVars
-
- set numLock [expr -1 * ($numLock - 1)]
- lappend modifiedVars numLock
- }
-
- #============================================================================
- # declare these as modeVars in advance. I'm not sure it is necessary (Vince)
- lunion modeVars funcExpr wrapBreakPreface wrapBreak wordBreakPreface wordBreak
-
- # 'mode' is nothing when we start up.
- set mode {}
- set lastMode 0
- set reverting {}
-
- ##############################
- # #
- # Things done at startup #
- # #
- ##############################
-
- # For quithook
- set modifiedVars {}
- set modifiedArrVars {}
- set modifiedModeVars {}
- set modifiedModeMenus {}
- set modifiedArrayElements {}
-
-