# HG changeset patch # User kono # Date 980040103 -32400 # Node ID a6adedccd5f630940072fe71d96183cd4d8262cc # Parent a9c1a72bc6a18664346654a62f0c9dc69151c4a7 *** empty log message *** diff -r a9c1a72bc6a1 -r a6adedccd5f6 cad.pl --- a/cad.pl Sun Jan 21 10:21:24 2001 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -specification(Z=f(X), - while(more,(( - Z=X, - ( - (X->( - repeat((skip&(Z=X,empty)),until,not(X)) & - repeat((skip&(Z=not(X),empty)),until,not(X)))) - , - (not(X)->( - repeat((skip&(Z=not(X),empty)),until,not(X)))) - ) - & skip - ))) -). - -implementation(Z=f(X), - exists(y,( - not(y), - []( - ( - next(y) = ((not(X),not(y));(X,y)), - Z = ((X,not(y);(not(X),y))) - ) - ) - )) -). - -?- specification(z=f(x),Y),ex((trace(x,[1,1,0,1,1,1,0,0,1,0,1]),Y)). - -?- speficication(z=f(x),S),implementation(z=f(x),I), - ex(I->fin_free(S)). diff -r a9c1a72bc6a1 -r a6adedccd5f6 test diff -r a9c1a72bc6a1 -r a6adedccd5f6 tmp.pl --- a/tmp.pl Sun Jan 21 10:21:24 2001 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ -tmp(( -not(true& ?(^r,not(@ @ @ @empty),@ @ @ @empty)&true); -?(r^1, - (not(true_false&true);not(r^2&true);not(r^1&true)), - (not(true_false&true);not(r^2&true);r^2 & ^r,not(r^1&true))))). - diff -r a9c1a72bc6a1 -r a6adedccd5f6 xf-disp --- a/xf-disp Sun Jan 21 10:21:24 2001 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2246 +0,0 @@ -#!/usr/local/bin/wish -f -# Program: xf-disp -# Tcl version: 7.3 (Tcl/Tk/XF) -# Tk version: 3.6 -# XF version: 2.2 -# - -# module inclusion -global env -global xfLoadPath -global xfLoadInfo -set xfLoadInfo 0 -if {[info exists env(XF_LOAD_PATH)]} { - if {[string first $env(XF_LOAD_PATH) /usr/local/lib/] == -1} { - set xfLoadPath $env(XF_LOAD_PATH):/usr/local/lib/ - } { - set xfLoadPath /usr/local/lib/ - } -} { - set xfLoadPath /usr/local/lib/ -} - -global argc -global argv -global tkVersion -set tmpArgv "" -for {set counter 0} {$counter < $argc} {incr counter 1} { - case [string tolower [lindex $argv $counter]] in { - {-xfloadpath} { - incr counter 1 - set xfLoadPath "[lindex $argv $counter]:$xfLoadPath" - } - {-xfstartup} { - incr counter 1 - source [lindex $argv $counter] - } - {-xfbindfile} { - incr counter 1 - set env(XF_BIND_FILE) "[lindex $argv $counter]" - } - {-xfcolorfile} { - incr counter 1 - set env(XF_COLOR_FILE) "[lindex $argv $counter]" - } - {-xfcursorfile} { - incr counter 1 - set env(XF_CURSOR_FILE) "[lindex $argv $counter]" - } - {-xffontfile} { - incr counter 1 - set env(XF_FONT_FILE) "[lindex $argv $counter]" - } - {-xfmodelmono} { - if {$tkVersion >= 3.0} { - tk colormodel . monochrome - } - } - {-xfmodelcolor} { - if {$tkVersion >= 3.0} { - tk colormodel . color - } - } - {-xfloading} { - set xfLoadInfo 1 - } - {-xfnoloading} { - set xfLoadInfo 0 - } - {default} { - lappend tmpArgv [lindex $argv $counter] - } - } -} -set argv $tmpArgv -set argc [llength $tmpArgv] -unset counter -unset tmpArgv - - -# procedure to show window .top0 -proc ShowWindow.top0 {args} {# xf ignore me 7 - - # build widget .top0 - if {"[info procs XFEdit]" != ""} { - catch "XFDestroy .top0" - } { - catch "destroy .top0" - } - toplevel .top0 \ - -background {Cornsilk2} - - # Window manager configurations - global tkVersion - wm positionfrom .top0 "" - wm sizefrom .top0 "" - wm maxsize .top0 1000 1000 - wm minsize .top0 10 10 - wm title .top0 {Execution} - - - # build widget .top0.frame0 - frame .top0.frame0 \ - -background {Cornsilk2} \ - -relief {raised} - - # build widget .top0.frame0.scrollbar3 - scrollbar .top0.frame0.scrollbar3 \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {.top0.frame0.canvas2 xview} \ - -foreground {#ffe4c4} \ - -orient {horizontal} \ - -relief {raised} - - # build widget .top0.frame0.scrollbar1 - scrollbar .top0.frame0.scrollbar1 \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {.top0.frame0.canvas2 yview} \ - -foreground {#ffe4c4} \ - -relief {raised} - - # build widget .top0.frame0.canvas2 - canvas .top0.frame0.canvas2 \ - -background {Cornsilk2} \ - -confine {0} \ - -height {384} \ - -insertofftime {600} \ - -relief {raised} \ - -scrollregion {-1c -1c 20c 20c} \ - -selectbackground {#b2dfee} \ - -selectborderwidth {1} \ - -selectforeground {CornSilk2} \ - -width {394} \ - -xscrollcommand {.top0.frame0.scrollbar3 set} \ - -yscrollcommand {.top0.frame0.scrollbar1 set} - # bindings - bind .top0.frame0.canvas2 {crosshair .top0.frame0.canvas2 %x %y} - - # pack widget .top0.frame0 - pack append .top0.frame0 \ - .top0.frame0.scrollbar1 {right frame center filly} \ - .top0.frame0.canvas2 {top frame center expand fill} \ - .top0.frame0.scrollbar3 {top frame center fillx} - - # build widget .top0.frame1 - frame .top0.frame1 \ - -background {Cornsilk2} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .top0.frame1.label6 - label .top0.frame1.label6 \ - -anchor {w} \ - -background {Cornsilk2} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -relief {raised} \ - -text {States:} - - # build widget .top0.frame1.button13 - button .top0.frame1.button13 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {# regexp {([0-9]+)x([0-9]+)} [wm geometry .] dm width height -# set height [expr $height-300] -# lite map $height - lite map 300 -} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text {Map} - - # build widget .top0.frame1.button0 - button .top0.frame1.button0 \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {lite generate a} \ - -font {8x16} \ - -kanjifont {*-fixed-*-normal--16-*-jisx0208.1983-*} \ - -text {Generate} - - # pack widget .top0.frame1 - pack append .top0.frame1 \ - .top0.frame1.label6 {left frame center expand fillx} \ - .top0.frame1.button13 {left frame center} \ - .top0.frame1.button0 {left frame center fillx} - - # build widget .top0.frame6 - frame .top0.frame6 \ - -background {Cornsilk2} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .top0.frame6.button8 - button .top0.frame6.button8 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {lite counter a} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text {Counter Example} - - # build widget .top0.frame6.button10 - button .top0.frame6.button10 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {lite execute a} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text {Execute} - - # build widget .top0.frame6.button9 - button .top0.frame6.button9 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {canvaswh .top0.frame0.canvas2 1.6} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text {Enlarge} - - # build widget .top0.frame6.button11 - button .top0.frame6.button11 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {canvaswh .top0.frame0.canvas2 0.625} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text { Shrink} - - # pack widget .top0.frame6 - pack append .top0.frame6 \ - .top0.frame6.button8 {right frame center fillx} \ - .top0.frame6.button10 {right frame center expand fillx} \ - .top0.frame6.button9 {left frame center} \ - .top0.frame6.button11 {left frame center} - - # pack widget .top0 - pack append .top0 \ - .top0.frame0 {bottom frame center expand fill} \ - .top0.frame1 {bottom frame center fill} \ - .top0.frame6 {top frame center fillx} - - # build canvas items .top0.frame0.canvas2 - set xfTmpTag [.top0.frame0.canvas2 create window -2480.03 -2615.93] - .top0.frame0.canvas2 itemconfigure $xfTmpTag \ - -anchor {nw} - set xfTmpTag [.top0.frame0.canvas2 create line 326 189 326 199] - .top0.frame0.canvas2 itemconfigure $xfTmpTag \ - -tags {cursol} - set xfTmpTag [.top0.frame0.canvas2 create line 321 194 331 194] - .top0.frame0.canvas2 itemconfigure $xfTmpTag \ - -tags {cursol} - - - - if {"[info procs XFEdit]" != ""} { - catch "XFMiscBindWidgetTree .top0" - after 2 "catch {XFEditSetShowWindows}" - } -} - -proc DestroyWindow.top0 {} {# xf ignore me 7 - if {"[info procs XFEdit]" != ""} { - if {"[info commands .top0]" != ""} { - global xfShowWindow.top0 - set xfShowWindow.top0 0 - XFEditSetPath . - after 2 "XFSaveAsProc .top0; XFEditSetShowWindows" - } - } { - catch "destroy .top0" - update - } -} - - -# procedure to show window . -proc ShowWindow. {args} {# xf ignore me 7 - - # Window manager configurations - global tkVersion - wm positionfrom . user - wm sizefrom . user - wm maxsize . 1280 1024 - wm title . {Lite} - - - # build widget .frame - frame .frame \ - -background {Cornsilk2} \ - -relief {raised} - - # build widget .frame.frame0 - frame .frame.frame0 \ - -background {Cornsilk2} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .frame.frame0.label4 - label .frame.frame0.label4 \ - -background {Cornsilk2} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -padx {2} \ - -relief {raised} \ - -text {ITL Formula:} - - # build widget .frame.frame0.button3 - button .frame.frame0.button3 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {text_clear .frame.frame4.text0} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {*-fixed-*-normal--16-*-jisx0208.1983-*} \ - -text {clear} - - # build widget .frame.frame0.menubutton0 - menubutton .frame.frame0.menubutton0 \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -font {8x16} \ - -kanjifont {*-fixed-*-normal--16-*-jisx0208.1983-*} \ - -menu {.frame.frame0.menubutton0.m} \ - -text {file} - # bindings - bind .frame.frame0.menubutton0 {MenuPopupPost .frame.frame0.menubutton0.m %X %Y} - bind .frame.frame0.menubutton0 {MenuPopupRelease .frame.frame0.menubutton0.m %W} - - # build widget .frame.frame0.menubutton0.m - menu .frame.frame0.menubutton0.m \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -font {8x16} \ - -kanjifont {*-fixed-*-normal--16-*-jisx0208.1983-*} - .frame.frame0.menubutton0.m add command \ - -command {filehandling .frame.frame4.text0 load [FSBox "load"]} \ - -label {load} - .frame.frame0.menubutton0.m add command \ - -command {filehandling .frame.frame4.text0 save [FSBox "save"]} \ - -label {save} - .frame.frame0.menubutton0.m add command \ - -command {TokioCommand} \ - -label {Tokio} - .frame.frame0.menubutton0.m add command \ - -command {PrologCommand} \ - -label {Prolog} - # bindings - bind .frame.frame0.menubutton0.m {MenuPopupRelease .frame.frame0.menubutton0.m %W} - bind .frame.frame0.menubutton0.m {MenuPopupPost .frame.frame0.menubutton0.m %X %Y} - - # pack widget .frame.frame0 - pack append .frame.frame0 \ - .frame.frame0.label4 {left frame center expand fillx} \ - .frame.frame0.button3 {right frame center} \ - .frame.frame0.menubutton0 {left frame center fillx} - - # build widget .frame.frame4 - frame .frame.frame4 \ - -background {Cornsilk2} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .frame.frame4.scrollbar1 - scrollbar .frame.frame4.scrollbar1 \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {.frame.frame4.text0 yview} \ - -foreground {#ffe4c4} - - # build widget .frame.frame4.text0 - text .frame.frame4.text0 \ - -background {Cornsilk2} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -height {10} \ - -selectbackground {#b2dfee} \ - -selectborderwidth {1} \ - -selectforeground {CornSilk2} \ - -width {61} \ - -yscrollcommand {.frame.frame4.scrollbar1 set} - # bindings - bind .frame.frame4.text0 {%W mark set insert @%x,%y - %W insert insert [selection get] - %W yview -pickplace insert} - bind .frame.frame4.text0 {%W mark set anchor insert - %W tag add sel insert @%x,%y} - bind .frame.frame4.text0 {%W mark set insert {insert linestart}} - bind .frame.frame4.text0 {%W mark set insert {insert -1char}} - bind .frame.frame4.text0 {%W delete insert} - bind .frame.frame4.text0 {%W mark set insert {insert lineend}} - bind .frame.frame4.text0 {%W mark set insert {insert +1char}} - bind .frame.frame4.text0 {if ![string compare [%W get insert] "\n"] { - %W delete insert} else { - %W delete insert {insert lineend} - }} - bind .frame.frame4.text0 {%W mark set insert {insert +1line}} - bind .frame.frame4.text0 {%W mark set insert {insert -1line}} - bind .frame.frame4.text0 {if [llength [%W tag ranges sel]] { - %W delete sel.first sel.last - }} - - # pack widget .frame.frame4 - pack append .frame.frame4 \ - .frame.frame4.text0 {left frame center expand fill} \ - .frame.frame4.scrollbar1 {right frame center filly} - - # pack widget .frame - pack append .frame \ - .frame.frame0 {top frame center fillx} \ - .frame.frame4 {left frame center expand fill} - - # build widget .frame3 - frame .frame3 \ - -background {Cornsilk2} \ - -borderwidth {2} \ - -relief {raised} - - # build widget .frame3.button4 - button .frame3.button4 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {lite quit 0 -destroy .} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text {Quit} - - # build widget .frame3.checkbutton5 - checkbutton .frame3.checkbutton5 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {lite verbose "$verbose"} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -selector {#b03060} \ - -text {verbose} \ - -variable {verbose} - - # build widget .frame3.button7 - button .frame3.button7 \ - -activebackground {#eed5b7} \ - -activeforeground {CornSilk2} \ - -background {Cornsilk2} \ - -command {lite verify "{[$symbolicName(entry) get 0.0 end]}"} \ - -disabledforeground {#b0b0b0} \ - -font {8x16} \ - -kanjifont {kanji16} \ - -text {Verify} - - # pack widget .frame3 - pack append .frame3 \ - .frame3.button4 {left frame center} \ - .frame3.checkbutton5 {right frame center} \ - .frame3.button7 {top frame n fillx} - - # pack widget . - pack append . \ - .frame {top frame center expand fill} \ - .frame3 {top frame center fill} - - .frame.frame4.text0 insert end {} - - - - if {"[info procs XFEdit]" != ""} { - catch "XFMiscBindWidgetTree ." - after 2 "catch {XFEditSetShowWindows}" - } -} - - -# User defined procedures - - -# Procedure: FSBox -proc FSBox { {fsBoxMessage "Select file:"} {fsBoxFileName ""} {fsBoxActionOk ""} {fsBoxActionCancel ""}} { -# xf ignore me 5 -########## -# Procedure: FSBox -# Description: show file selector box -# Arguments: fsBoxMessage - the text to display -# fsBoxFileName - a file name that should be selected -# fsBoxActionOk - the action that should be performed on ok -# fsBoxActionCancel - the action that should be performed on cancel -# Returns: the filename that was selected, or nothing -# Sideeffects: none -########## -# -# global fsBox(activeBackground) - active background color -# global fsBox(activeForeground) - active foreground color -# global fsBox(background) - background color -# global fsBox(font) - text font -# global fsBox(foreground) - foreground color -# global fsBox(extensions) - scan directory for extensions -# global fsBox(scrollActiveForeground) - scrollbar active background color -# global fsBox(scrollBackground) - scrollbar background color -# global fsBox(scrollForeground) - scrollbar foreground color -# global fsBox(scrollSide) - side where scrollbar is located - - global fsBox - - set tmpButtonOpt "" - set tmpFrameOpt "" - set tmpMessageOpt "" - set tmpScaleOpt "" - set tmpScrollOpt "" - if {"$fsBox(activeBackground)" != ""} { - append tmpButtonOpt "-activebackground \"$fsBox(activeBackground)\" " - } - if {"$fsBox(activeForeground)" != ""} { - append tmpButtonOpt "-activeforeground \"$fsBox(activeForeground)\" " - } - if {"$fsBox(background)" != ""} { - append tmpButtonOpt "-background \"$fsBox(background)\" " - append tmpFrameOpt "-background \"$fsBox(background)\" " - append tmpMessageOpt "-background \"$fsBox(background)\" " - } - if {"$fsBox(font)" != ""} { - append tmpButtonOpt "-font \"$fsBox(font)\" " - append tmpMessageOpt "-font \"$fsBox(font)\" " - } - if {"$fsBox(foreground)" != ""} { - append tmpButtonOpt "-foreground \"$fsBox(foreground)\" " - append tmpMessageOpt "-foreground \"$fsBox(foreground)\" " - } - if {"$fsBox(scrollActiveForeground)" != ""} { - append tmpScrollOpt "-activeforeground \"$fsBox(scrollActiveForeground)\" " - } - if {"$fsBox(scrollBackground)" != ""} { - append tmpScrollOpt "-background \"$fsBox(scrollBackground)\" " - } - if {"$fsBox(scrollForeground)" != ""} { - append tmpScrollOpt "-foreground \"$fsBox(scrollForeground)\" " - } - - if {[file exists [file tail $fsBoxFileName]] && - [IsAFile [file tail $fsBoxFileName]]} { - set fsBox(name) [file tail $fsBoxFileName] - } { - set fsBox(name) "" - } - if {[file exists $fsBoxFileName] && [IsADir $fsBoxFileName]} { - set fsBox(path) $fsBoxFileName - } { - if {"[file rootname $fsBoxFileName]" != "."} { - set fsBox(path) [file rootname $fsBoxFileName] - } - } - if {$fsBox(showPixmap)} { - set fsBox(path) [string trimleft $fsBox(path) @] - } - if {"$fsBox(path)" != "" && [file exists $fsBox(path)] && - [IsADir $fsBox(path)]} { - set fsBox(internalPath) $fsBox(path) - } { - if {"$fsBox(internalPath)" == "" || - ![file exists $fsBox(internalPath)]} { - set fsBox(internalPath) [pwd] - } - } - # build widget structure - - # start build of toplevel - if {"[info commands XFDestroy]" != ""} { - catch {XFDestroy .fsBox} - } { - catch {destroy .fsBox} - } - toplevel .fsBox -borderwidth 0 - catch ".fsBox config $tmpFrameOpt" - wm geometry .fsBox 350x300 - wm title .fsBox {File select box} - wm maxsize .fsBox 1000 1000 - wm minsize .fsBox 100 100 - # end build of toplevel - - label .fsBox.message1 -anchor c -relief raised -text "$fsBoxMessage" - catch ".fsBox.message1 config $tmpMessageOpt" - - frame .fsBox.frame1 -borderwidth 0 -relief raised - catch ".fsBox.frame1 config $tmpFrameOpt" - - button .fsBox.frame1.ok -text "OK" -command " - global fsBox - set fsBox(name) \[.fsBox.file.file get\] - if {$fsBox(showPixmap)} { - set fsBox(path) @\[.fsBox.path.path get\] - } { - set fsBox(path) \[.fsBox.path.path get\] - } - set fsBox(internalPath) \[.fsBox.path.path get\] - $fsBoxActionOk - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy .fsBox} - } { - catch {destroy .fsBox} - }" - catch ".fsBox.frame1.ok config $tmpButtonOpt" - - button .fsBox.frame1.rescan -text "Rescan" -command { - global fsBox - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all)} - catch ".fsBox.frame1.rescan config $tmpButtonOpt" - - button .fsBox.frame1.cancel -text "Cancel" -command " - global fsBox - set fsBox(name) {} - set fsBox(path) {} - $fsBoxActionCancel - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy .fsBox} - } { - catch {destroy .fsBox} - }" - catch ".fsBox.frame1.cancel config $tmpButtonOpt" - - if {$fsBox(showPixmap)} { - frame .fsBox.frame2 -borderwidth 0 -relief raised - catch ".fsBox.frame2 config $tmpFrameOpt" - - scrollbar .fsBox.frame2.scrollbar3 -command {.fsBox.frame2.canvas2 xview} -orient {horizontal} -relief {raised} - catch ".fsBox.frame2.scrollbar3 config $tmpScrollOpt" - - scrollbar .fsBox.frame2.scrollbar1 -command {.fsBox.frame2.canvas2 yview} -relief {raised} - catch ".fsBox.frame2.scrollbar1 config $tmpScrollOpt" - - canvas .fsBox.frame2.canvas2 -confine {true} -relief {raised} -scrollregion {0c 0c 20c 20c} -width {100} -xscrollcommand {.fsBox.frame2.scrollbar3 set} -yscrollcommand {.fsBox.frame2.scrollbar1 set} - catch ".fsBox.frame2.canvas2 config $tmpFrameOpt" - - .fsBox.frame2.canvas2 addtag currentBitmap withtag [.fsBox.frame2.canvas2 create bitmap 5 5 -anchor nw] - } - - frame .fsBox.path -borderwidth 0 -relief raised - catch ".fsBox.path config $tmpFrameOpt" - - frame .fsBox.path.paths -borderwidth 2 -relief raised - catch ".fsBox.path.paths config $tmpFrameOpt" - - menubutton .fsBox.path.paths.paths -borderwidth 0 -menu ".fsBox.path.paths.paths.menu" -relief flat -text "Pathname:" - catch ".fsBox.path.paths.paths config $tmpButtonOpt" - - menu .fsBox.path.paths.paths.menu - catch ".fsBox.path.paths.paths.menu config $tmpButtonOpt" - - .fsBox.path.paths.paths.menu add command -label "[string trimright $fsBox(internalPath) {/@}]" -command " - global fsBox - FSBoxFSShow \[.fsBox.path.path get\] \[.fsBox.pattern.pattern get\] \$fsBox(all) - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 [string trimright $fsBox(internalPath) {/@}]" - - entry .fsBox.path.path -relief raised - catch ".fsBox.path.path config $tmpMessageOpt" - - if {![IsADir $fsBox(internalPath)]} { - set $fsBox(internalPath) [pwd] - } - .fsBox.path.path insert 0 $fsBox(internalPath) - - frame .fsBox.pattern -borderwidth 0 -relief raised - catch ".fsBox.pattern config $tmpFrameOpt" - - frame .fsBox.pattern.patterns -borderwidth 2 -relief raised - catch ".fsBox.pattern.patterns config $tmpFrameOpt" - - menubutton .fsBox.pattern.patterns.patterns -borderwidth 0 -menu ".fsBox.pattern.patterns.patterns.menu" -relief flat -text "Selection pattern:" - catch ".fsBox.pattern.patterns.patterns config $tmpButtonOpt" - - menu .fsBox.pattern.patterns.patterns.menu - catch ".fsBox.pattern.patterns.patterns.menu config $tmpButtonOpt" - - .fsBox.pattern.patterns.patterns.menu add checkbutton -label "Scan extensions" -variable fsBox(extensions) -command { - global fsBox - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all)} - - entry .fsBox.pattern.pattern -relief raised - catch ".fsBox.pattern.pattern config $tmpMessageOpt" - - .fsBox.pattern.pattern insert 0 $fsBox(pattern) - - frame .fsBox.files -borderwidth 0 -relief raised - catch ".fsBox.files config $tmpFrameOpt" - - scrollbar .fsBox.files.vscroll -relief raised -command ".fsBox.files.files yview" - catch ".fsBox.files.vscroll config $tmpScrollOpt" - - scrollbar .fsBox.files.hscroll -orient horiz -relief raised -command ".fsBox.files.files xview" - catch ".fsBox.files.hscroll config $tmpScrollOpt" - - listbox .fsBox.files.files -exportselection false -relief raised -xscrollcommand ".fsBox.files.hscroll set" -yscrollcommand ".fsBox.files.vscroll set" - catch ".fsBox.files.files config $tmpMessageOpt" - - frame .fsBox.file -borderwidth 0 -relief raised - catch ".fsBox.file config $tmpFrameOpt" - - label .fsBox.file.labelfile -relief raised -text "Filename:" - catch ".fsBox.file.labelfile config $tmpMessageOpt" - - entry .fsBox.file.file -relief raised - catch ".fsBox.file.file config $tmpMessageOpt" - - .fsBox.file.file delete 0 end - .fsBox.file.file insert 0 $fsBox(name) - - checkbutton .fsBox.pattern.all -offvalue 0 -onvalue 1 -text "Show all files" -variable fsBox(all) -command { - global fsBox - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all)} - catch ".fsBox.pattern.all config $tmpButtonOpt" - - FSBoxFSShow $fsBox(internalPath) $fsBox(pattern) $fsBox(all) - - # bindings - bind .fsBox.files.files " - FSBoxFSFileSelectDouble %W $fsBox(showPixmap) \{$fsBoxActionOk\} %y" - bind .fsBox.files.files " - FSBoxFSFileSelect %W $fsBox(showPixmap) %y" - bind .fsBox.files.files " - FSBoxFSFileSelect %W $fsBox(showPixmap) %y" - bind .fsBox.files.files " - FSBoxFSFileSelect %W $fsBox(showPixmap) %y" - bind .fsBox.files.files " - FSBoxFSFileSelect %W $fsBox(showPixmap) %y" - - bind .fsBox.path.path { - FSBoxFSNameComplete path} - bind .fsBox.path.path { - global tkVersion - global fsBox - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all) - FSBoxFSInsertPath - if {$tkVersion >= 3.0} { - .fsBox.file.file icursor end - } { - .fsBox.file.file cursor end - } - focus .fsBox.file.file} - catch "bind .fsBox.path.path {}" - bind .fsBox.path.path { - global tkVersion - if {$tkVersion >= 3.0} { - .fsBox.file.file icursor end - } { - .fsBox.file.file cursor end - } - focus .fsBox.file.file} - - bind .fsBox.file.file { - FSBoxFSNameComplete file} - bind .fsBox.file.file " - global fsBox - set fsBox(name) \[.fsBox.file.file get\] - if {$fsBox(showPixmap)} { - set fsBox(path) @\[.fsBox.path.path get\] - } { - set fsBox(path) \[.fsBox.path.path get\] - } - set fsBox(internalPath) \[.fsBox.path.path get\] - $fsBoxActionOk - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy .fsBox} - } { - catch {destroy .fsBox} - }" - bind .fsBox.file.file { - global tkVersion - if {$tkVersion >= 3.0} { - .fsBox.path.path icursor end - } { - .fsBox.path.path cursor end - } - focus .fsBox.path.path} - bind .fsBox.file.file { - global tkVersion - if {$tkVersion >= 3.0} { - .fsBox.pattern.pattern icursor end - } { - .fsBox.pattern.pattern cursor end - } - focus .fsBox.pattern.pattern} - - bind .fsBox.pattern.pattern { - global fsBox - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all)} - bind .fsBox.pattern.pattern { - global tkVersion - if {$tkVersion >= 3.0} { - .fsBox.file.file icursor end - } { - .fsBox.file.file cursor end - } - focus .fsBox.file.file} - catch "bind .fsBox.pattern.pattern {}" - - # packing - pack append .fsBox.files .fsBox.files.vscroll "$fsBox(scrollSide) filly" .fsBox.files.hscroll {bottom fillx} .fsBox.files.files {left fill expand} - pack append .fsBox.file .fsBox.file.labelfile {left} .fsBox.file.file {left fill expand} - pack append .fsBox.frame1 .fsBox.frame1.ok {left fill expand} .fsBox.frame1.rescan {left fill expand} .fsBox.frame1.cancel {left fill expand} - pack append .fsBox.path.paths .fsBox.path.paths.paths {left} - pack append .fsBox.pattern.patterns .fsBox.pattern.patterns.patterns {left} - pack append .fsBox.path .fsBox.path.paths {left} .fsBox.path.path {left fill expand} - pack append .fsBox.pattern .fsBox.pattern.patterns {left} .fsBox.pattern.all {right fill} .fsBox.pattern.pattern {left fill expand} - if {$fsBox(showPixmap)} { - pack append .fsBox.frame2 .fsBox.frame2.scrollbar1 {left filly} .fsBox.frame2.canvas2 {top expand fill} .fsBox.frame2.scrollbar3 {top fillx} - - pack append .fsBox .fsBox.message1 {top fill} .fsBox.frame1 {bottom fill} .fsBox.pattern {bottom fill} .fsBox.file {bottom fill} .fsBox.path {bottom fill} .fsBox.frame2 {right fill} .fsBox.files {left fill expand} - } { - pack append .fsBox .fsBox.message1 {top fill} .fsBox.frame1 {bottom fill} .fsBox.pattern {bottom fill} .fsBox.file {bottom fill} .fsBox.path {bottom fill} .fsBox.files {left fill expand} - } - - if {"$fsBoxActionOk" == "" && "$fsBoxActionCancel" == ""} { - # wait for the box to be destroyed - update idletask - grab .fsBox - tkwait window .fsBox - - if {"[string trim $fsBox(path)]" != "" || - "[string trim $fsBox(name)]" != ""} { - if {"[string trimleft [string trim $fsBox(name)] /]" == ""} { - return [string trimright [string trim $fsBox(path)] /] - } { - return [string trimright [string trim $fsBox(path)] /]/[string trimleft [string trim $fsBox(name)] /] - } - } - } -} - - -# Procedure: FSBoxBindSelectOne -proc FSBoxBindSelectOne { fsBoxW fsBoxY} { -# xf ignore me 6 - - set fsBoxNearest [$fsBoxW nearest $fsBoxY] - if {$fsBoxNearest >= 0} { - $fsBoxW select from $fsBoxNearest - $fsBoxW select to $fsBoxNearest - } -} - - -# Procedure: FSBoxFSFileSelect -proc FSBoxFSFileSelect { fsBoxW fsBoxShowPixmap fsBoxY} { -# xf ignore me 6 - global fsBox - - FSBoxBindSelectOne $fsBoxW $fsBoxY - set fsBoxNearest [$fsBoxW nearest $fsBoxY] - if {$fsBoxNearest >= 0} { - set fsBoxTmpEntry [$fsBoxW get $fsBoxNearest] - if {"[string index $fsBoxTmpEntry [expr [string length $fsBoxTmpEntry]-1]]" == "/" || - "[string index $fsBoxTmpEntry [expr [string length $fsBoxTmpEntry]-1]]" == "@"} { - set fsBoxFileName [string range $fsBoxTmpEntry 0 [expr [string length $fsBoxTmpEntry]-2]] - if {![IsADir [string trimright $fsBox(internalPath)/$fsBoxFileName @]] && - ![IsASymlink [string trimright $fsBox(internalPath)/$fsBoxFileName @]]} { - set fsBoxFileName $fsBoxTmpEntry - } - } { - if {"[string index $fsBoxTmpEntry [expr [string length $fsBoxTmpEntry]-1]]" == "*"} { - set fsBoxFileName [string range $fsBoxTmpEntry 0 [expr [string length $fsBoxTmpEntry]-2]] - if {![file executable $fsBox(internalPath)/$fsBoxFileName]} { - set fsBoxFileName $fsBoxTmpEntry - } - } { - set fsBoxFileName $fsBoxTmpEntry - } - } - if {![IsADir [string trimright $fsBox(internalPath)/$fsBoxFileName @]]} { - set fsBox(name) $fsBoxFileName - .fsBox.file.file delete 0 end - .fsBox.file.file insert 0 $fsBox(name) - if {$fsBoxShowPixmap} { - catch ".fsBox.frame2.canvas2 itemconfigure currentBitmap -bitmap \"@$fsBox(internalPath)/$fsBox(name)\"" - } - } - } -} - - -# Procedure: FSBoxFSFileSelectDouble -proc FSBoxFSFileSelectDouble { fsBoxW fsBoxShowPixmap fsBoxAction fsBoxY} { -# xf ignore me 6 - global fsBox - - FSBoxBindSelectOne $fsBoxW $fsBoxY - set fsBoxNearest [$fsBoxW nearest $fsBoxY] - if {$fsBoxNearest >= 0} { - set fsBoxTmpEntry [$fsBoxW get $fsBoxNearest] - if {"$fsBoxTmpEntry" == "../"} { - set fsBoxTmpEntry [string trimright [string trim $fsBox(internalPath)] "@/"] - if {"$fsBoxTmpEntry" == ""} { - return - } - FSBoxFSShow [file dirname $fsBoxTmpEntry] [.fsBox.pattern.pattern get] $fsBox(all) - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 $fsBox(internalPath) - } { - if {"[string index $fsBoxTmpEntry [expr [string length $fsBoxTmpEntry]-1]]" == "/" || - "[string index $fsBoxTmpEntry [expr [string length $fsBoxTmpEntry]-1]]" == "@"} { - set fsBoxFileName [string range $fsBoxTmpEntry 0 [expr [string length $fsBoxTmpEntry]-2]] - if {![IsADir [string trimright $fsBox(internalPath)/$fsBoxFileName @]] && - ![IsASymlink [string trimright $fsBox(internalPath)/$fsBoxFileName @]]} { - set fsBoxFileName $fsBoxTmpEntry - } - } { - if {"[string index $fsBoxTmpEntry [expr [string length $fsBoxTmpEntry]-1]]" == "*"} { - set fsBoxFileName [string range $fsBoxTmpEntry 0 [expr [string length $fsBoxTmpEntry]-2]] - if {![file executable $fsBox(internalPath)/$fsBoxFileName]} { - set fsBoxFileName $fsBoxTmpEntry - } - } { - set fsBoxFileName $fsBoxTmpEntry - } - } - if {[IsADir [string trimright $fsBox(internalPath)/$fsBoxFileName @]]} { - set fsBox(internalPath) "[string trimright $fsBox(internalPath) {/@}]/$fsBoxFileName" - FSBoxFSShow $fsBox(internalPath) [.fsBox.pattern.pattern get] $fsBox(all) - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 $fsBox(internalPath) - } { - set fsBox(name) $fsBoxFileName - if {$fsBoxShowPixmap} { - set fsBox(path) @$fsBox(internalPath) - } { - set fsBox(path) $fsBox(internalPath) - } - if {"$fsBoxAction" != ""} { - eval "global fsBox; $fsBoxAction" - } - if {"[info commands XFDestroy]" != ""} { - catch {XFDestroy .fsBox} - } { - catch {destroy .fsBox} - } - } - } - } -} - - -# Procedure: FSBoxFSInsertPath -proc FSBoxFSInsertPath {} { -# xf ignore me 6 - global fsBox - - set fsBoxLast [.fsBox.path.paths.paths.menu index last] - set fsBoxNewEntry [string trimright [.fsBox.path.path get] "/@"] - for {set fsBoxCounter 0} {$fsBoxCounter <= $fsBoxLast} {incr fsBoxCounter 1} { - if {"$fsBoxNewEntry" == "[lindex [.fsBox.path.paths.paths.menu entryconfigure $fsBoxCounter -label] 4]"} { - return - } - } - if {$fsBoxLast < 9} { - .fsBox.path.paths.paths.menu add command -label "$fsBoxNewEntry" -command " - global fsBox - FSBoxFSShow $fsBoxNewEntry \[.fsBox.pattern.pattern get\] \$fsBox(all) - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 $fsBoxNewEntry" - } { - for {set fsBoxCounter 0} {$fsBoxCounter < $fsBoxLast} {incr fsBoxCounter 1} { - .fsBox.path.paths.paths.menu entryconfigure $fsBoxCounter -label [lindex [.fsBox.path.paths.paths.menu entryconfigure [expr $fsBoxCounter+1] -label] 4] - .fsBox.path.paths.paths.menu entryconfigure $fsBoxCounter -command " - global fsBox - FSBoxFSShow [lindex [.fsBox.path.paths.paths.menu entryconfigure [expr $fsBoxCounter+1] -label] 4] \[.fsBox.pattern.pattern get\] \$fsBox(all) - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 [lindex [.fsBox.path.paths.paths.menu entryconfigure [expr $fsBoxCounter+1] -label] 4]" - } - .fsBox.path.paths.paths.menu entryconfigure $fsBoxLast -label "$fsBoxNewEntry" - .fsBox.path.paths.paths.menu entryconfigure $fsBoxCounter -command " - global fsBox - FSBoxFSShow \[.fsBox.path.path get\] \[.fsBox.pattern.pattern get\] \$fsBox(all) - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 $fsBoxNewEntry" - } -} - - -# Procedure: FSBoxFSNameComplete -proc FSBoxFSNameComplete { fsBoxType} { -# xf ignore me 6 - global tkVersion - global fsBox - - set fsBoxNewFile "" - if {"$fsBoxType" == "path"} { - set fsBoxDirName [file dirname [.fsBox.path.path get]] - set fsBoxFileName [file tail [.fsBox.path.path get]] - } { - set fsBoxDirName [file dirname [.fsBox.path.path get]/] - set fsBoxFileName [file tail [.fsBox.file.file get]] - } - - set fsBoxNewFile "" - if {[IsADir [string trimright $fsBoxDirName @]]} { - catch "glob -nocomplain $fsBoxDirName/${fsBoxFileName}*" fsBoxResult - foreach fsBoxCounter $fsBoxResult { - if {"$fsBoxNewFile" == ""} { - set fsBoxNewFile [file tail $fsBoxCounter] - } { - if {"[string index [file tail $fsBoxCounter] 0]" != - "[string index $fsBoxNewFile 0]"} { - set fsBoxNewFile "" - break - } - set fsBoxCounter1 0 - set fsBoxTmpFile1 $fsBoxNewFile - set fsBoxTmpFile2 [file tail $fsBoxCounter] - set fsBoxLength1 [string length $fsBoxTmpFile1] - set fsBoxLength2 [string length $fsBoxTmpFile2] - set fsBoxNewFile "" - if {$fsBoxLength1 > $fsBoxLength2} { - set fsBoxLength1 $fsBoxLength2 - } - while {$fsBoxCounter1 < $fsBoxLength1} { - if {"[string index $fsBoxTmpFile1 $fsBoxCounter1]" == "[string index $fsBoxTmpFile2 $fsBoxCounter1]"} { - append fsBoxNewFile [string index $fsBoxTmpFile1 $fsBoxCounter1] - } { - break - } - incr fsBoxCounter1 1 - } - } - } - } - if {"$fsBoxNewFile" != ""} { - if {[IsADir [string trimright $fsBoxDirName/$fsBoxNewFile @]] || - ![IsAFile [string trimright $fsBoxDirName/$fsBoxNewFile @]]} { - if {[IsADir [string trimright $fsBoxDirName/$fsBoxNewFile @]]} { - if {"$fsBoxDirName" == "/"} { - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 "/[string trimright [string trim $fsBoxNewFile /] @]/" - } { - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 "[string trimright $fsBoxDirName /]/[string trimright [string trim $fsBoxNewFile /] @]/" - } - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all) - FSBoxFSInsertPath - } { - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 "[string trimright $fsBoxDirName /]/[string trimright [string trim $fsBoxNewFile /] @]" - } - } { - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 "[string trimright $fsBoxDirName {@/}]/" - .fsBox.file.file delete 0 end - .fsBox.file.file insert 0 $fsBoxNewFile - if {$tkVersion >= 3.0} { - .fsBox.file.file icursor end - } { - .fsBox.file.file cursor end - } - focus .fsBox.file.file - } - } -} - - -# Procedure: FSBoxFSShow -proc FSBoxFSShow { fsBoxPath fsBoxPattern fsBoxAll} { -# xf ignore me 6 - global fsBox - - set tmpButtonOpt "" - if {"$fsBox(activeBackground)" != ""} { - append tmpButtonOpt "-activebackground \"$fsBox(activeBackground)\" " - } - if {"$fsBox(activeForeground)" != ""} { - append tmpButtonOpt "-activeforeground \"$fsBox(activeForeground)\" " - } - if {"$fsBox(background)" != ""} { - append tmpButtonOpt "-background \"$fsBox(background)\" " - } - if {"$fsBox(font)" != ""} { - append tmpButtonOpt "-font \"$fsBox(font)\" " - } - if {"$fsBox(foreground)" != ""} { - append tmpButtonOpt "-foreground \"$fsBox(foreground)\" " - } - - set fsBox(pattern) $fsBoxPattern - if {[file exists $fsBoxPath] && [file readable $fsBoxPath] && - [IsADir $fsBoxPath]} { - set fsBox(internalPath) $fsBoxPath - } { - if {[file exists $fsBoxPath] && [file readable $fsBoxPath] && - [IsAFile $fsBoxPath]} { - set fsBox(internalPath) [file dirname $fsBoxPath] - .fsBox.file.file delete 0 end - .fsBox.file.file insert 0 [file tail $fsBoxPath] - set fsBoxPath $fsBox(internalPath) - } { - while {"$fsBoxPath" != "" && "$fsBoxPath" != "/" && - ![file isdirectory $fsBoxPath]} { - set fsBox(internalPath) [file dirname $fsBoxPath] - set fsBoxPath $fsBox(internalPath) - } - } - } - if {"$fsBoxPath" == ""} { - set fsBoxPath "/" - set fsBox(internalPath) "/" - } - .fsBox.path.path delete 0 end - .fsBox.path.path insert 0 $fsBox(internalPath) - - if {[.fsBox.files.files size] > 0} { - .fsBox.files.files delete 0 end - } - if {$fsBoxAll} { - if {[catch "exec ls -F -a $fsBoxPath" fsBoxResult]} { - puts stderr "$fsBoxResult" - } - } { - if {[catch "exec ls -F $fsBoxPath" fsBoxResult]} { - puts stderr "$fsBoxResult" - } - } - set fsBoxElementList [lsort $fsBoxResult] - - foreach fsBoxCounter [winfo children .fsBox.pattern.patterns.patterns] { - if {[string length [info commands XFDestroy]] > 0} { - catch {XFDestroy $fsBoxCounter} - } { - catch {destroy $fsBoxCounter} - } - } - menu .fsBox.pattern.patterns.patterns.menu - catch ".fsBox.pattern.patterns.patterns.menu config $tmpButtonOpt" - - if {$fsBox(extensions)} { - .fsBox.pattern.patterns.patterns.menu add command -label "*" -command { - global fsBox - set fsBox(pattern) "*" - .fsBox.pattern.pattern delete 0 end - .fsBox.pattern.pattern insert 0 $fsBox(pattern) - FSBoxFSShow [.fsBox.path.path get] $fsBox(pattern) $fsBox(all)} - } - - if {"$fsBoxPath" != "/"} { - .fsBox.files.files insert end "../" - } - foreach fsBoxCounter $fsBoxElementList { - if {[string match $fsBoxPattern $fsBoxCounter] || - [IsADir [string trimright $fsBoxPath/$fsBoxCounter "/@"]]} { - if {"$fsBoxCounter" != "../" && - "$fsBoxCounter" != "./"} { - .fsBox.files.files insert end $fsBoxCounter - } - } - - if {$fsBox(extensions)} { - catch "file rootname $fsBoxCounter" fsBoxRootName - catch "file extension $fsBoxCounter" fsBoxExtension - set fsBoxExtension [string trimright $fsBoxExtension "/*@"] - if {"$fsBoxExtension" != "" && "$fsBoxRootName" != ""} { - set fsBoxInsert 1 - set fsBoxLast [.fsBox.pattern.patterns.patterns.menu index last] - for {set fsBoxCounter1 0} {$fsBoxCounter1 <= $fsBoxLast} {incr fsBoxCounter1 1} { - if {"*$fsBoxExtension" == "[lindex [.fsBox.pattern.patterns.patterns.menu entryconfigure $fsBoxCounter1 -label] 4]"} { - set fsBoxInsert 0 - } - } - if {$fsBoxInsert} { - .fsBox.pattern.patterns.patterns.menu add command -label "*$fsBoxExtension" -command " - global fsBox - set fsBox(pattern) \"*$fsBoxExtension\" - .fsBox.pattern.pattern delete 0 end - .fsBox.pattern.pattern insert 0 \$fsBox(pattern) - FSBoxFSShow \[.fsBox.path.path get\] \$fsBox(pattern) \$fsBox(all)" - } - } - } - } - if {$fsBox(extensions)} { - .fsBox.pattern.patterns.patterns.menu add separator - } - if {$fsBox(extensions) || - "[.fsBox.pattern.patterns.patterns.menu index last]" == "none"} { - .fsBox.pattern.patterns.patterns.menu add checkbutton -label "Scan extensions" -variable "fsBox(extensions)" -command { - global fsBox - FSBoxFSShow [.fsBox.path.path get] [.fsBox.pattern.pattern get] $fsBox(all)} - } -} - - -# Procedure: InputBoxInternal -proc InputBoxInternal { inputBoxMessage inputBoxCommandOk inputBoxCommandCancel inputBoxGeometry inputBoxTitle lineNum} { -# xf ignore me 6 - global inputBox - - set tmpButtonOpt "" - set tmpFrameOpt "" - set tmpMessageOpt "" - set tmpScaleOpt "" - set tmpScrollOpt "" - if {"$inputBox(activeBackground)" != ""} { - append tmpButtonOpt "-activebackground \"$inputBox(activeBackground)\" " - } - if {"$inputBox(activeForeground)" != ""} { - append tmpButtonOpt "-activeforeground \"$inputBox(activeForeground)\" " - } - if {"$inputBox(background)" != ""} { - append tmpButtonOpt "-background \"$inputBox(background)\" " - append tmpFrameOpt "-background \"$inputBox(background)\" " - append tmpMessageOpt "-background \"$inputBox(background)\" " - } - if {"$inputBox(font)" != ""} { - append tmpButtonOpt "-font \"$inputBox(font)\" " - append tmpMessageOpt "-font \"$inputBox(font)\" " - } - if {"$inputBox(foreground)" != ""} { - append tmpButtonOpt "-foreground \"$inputBox(foreground)\" " - append tmpMessageOpt "-foreground \"$inputBox(foreground)\" " - } - if {"$inputBox(scrollActiveForeground)" != ""} { - append tmpScrollOpt "-activeforeground \"$inputBox(scrollActiveForeground)\" " - } - if {"$inputBox(scrollBackground)" != ""} { - append tmpScrollOpt "-background \"$inputBox(scrollBackground)\" " - } - if {"$inputBox(scrollForeground)" != ""} { - append tmpScrollOpt "-foreground \"$inputBox(scrollForeground)\" " - } - - # start build of toplevel - if {"[info commands XFDestroy]" != ""} { - catch {XFDestroy $inputBox(toplevelName)} - } { - catch {destroy $inputBox(toplevelName)} - } - toplevel $inputBox(toplevelName) -borderwidth 0 - catch "$inputBox(toplevelName) config $tmpFrameOpt" - if {[catch "wm geometry $inputBox(toplevelName) $inputBoxGeometry"]} { - wm geometry $inputBox(toplevelName) 350x150 - } - wm title $inputBox(toplevelName) $inputBoxTitle - wm maxsize $inputBox(toplevelName) 1000 1000 - wm minsize $inputBox(toplevelName) 100 100 - # end build of toplevel - - message $inputBox(toplevelName).message1 -anchor "$inputBox(anchor)" -justify "$inputBox(justify)" -relief raised -text "$inputBoxMessage" - catch "$inputBox(toplevelName).message1 config $tmpMessageOpt" - - set xfTmpWidth [string range $inputBoxGeometry 0 [expr [string first x $inputBoxGeometry]-1]] - if {"$xfTmpWidth" != ""} { - # set message size - catch "$inputBox(toplevelName).message1 configure -width [expr $xfTmpWidth-10]" - } { - $inputBox(toplevelName).message1 configure -aspect 1500 - } - - frame $inputBox(toplevelName).frame0 -borderwidth 0 -relief raised - catch "$inputBox(toplevelName).frame0 config $tmpFrameOpt" - - frame $inputBox(toplevelName).frame1 -borderwidth 0 -relief raised - catch "$inputBox(toplevelName).frame1 config $tmpFrameOpt" - - if {$lineNum == 1} { - scrollbar $inputBox(toplevelName).frame1.hscroll -orient "horizontal" -relief raised -command "$inputBox(toplevelName).frame1.input view" - catch "$inputBox(toplevelName).frame1.hscroll config $tmpScrollOpt" - - entry $inputBox(toplevelName).frame1.input -relief raised -scrollcommand "$inputBox(toplevelName).frame1.hscroll set" - catch "$inputBox(toplevelName).frame1.input config $tmpMessageOpt" - - $inputBox(toplevelName).frame1.input insert 0 $inputBox($inputBox(toplevelName),inputOne) - - # bindings - bind $inputBox(toplevelName).frame1.input " - global inputBox - set inputBox($inputBox(toplevelName),inputOne) \[$inputBox(toplevelName).frame1.input get\] - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy $inputBox(toplevelName)} - } { - catch {destroy $inputBox(toplevelName)} - } - $inputBoxCommandOk" - - # packing - pack append $inputBox(toplevelName).frame1 $inputBox(toplevelName).frame1.hscroll {bottom fill} $inputBox(toplevelName).frame1.input {top fill expand} - } { - text $inputBox(toplevelName).frame1.input -relief raised -wrap none -borderwidth 2 -yscrollcommand "$inputBox(toplevelName).frame1.vscroll set" - catch "$inputBox(toplevelName).frame1.input config $tmpMessageOpt" - - scrollbar $inputBox(toplevelName).frame1.vscroll -relief raised -command "$inputBox(toplevelName).frame1.input yview" - catch "$inputBox(toplevelName).frame1.vscroll config $tmpScrollOpt" - - $inputBox(toplevelName).frame1.input insert 1.0 $inputBox($inputBox(toplevelName),inputMulti) - - # bindings - bind $inputBox(toplevelName).frame1.input " - global inputBox - set inputBox($inputBox(toplevelName),inputMulti) \[$inputBox(toplevelName).frame1.input get 1.0 end\] - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy $inputBox(toplevelName)} - } { - catch {destroy $inputBox(toplevelName)} - } - $inputBoxCommandOk" - bind $inputBox(toplevelName).frame1.input " - global inputBox - set inputBox($inputBox(toplevelName),inputMulti) \[$inputBox(toplevelName).frame1.input get 1.0 end\] - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy $inputBox(toplevelName)} - } { - catch {destroy $inputBox(toplevelName)} - } - $inputBoxCommandOk" - - # packing - pack append $inputBox(toplevelName).frame1 $inputBox(toplevelName).frame1.vscroll "$inputBox(scrollSide) filly" $inputBox(toplevelName).frame1.input {left fill expand} - } - - button $inputBox(toplevelName).frame0.button0 -text "OK" -command " - global inputBox - if {$lineNum == 1} { - set inputBox($inputBox(toplevelName),inputOne) \[$inputBox(toplevelName).frame1.input get\] - } { - set inputBox($inputBox(toplevelName),inputMulti) \[$inputBox(toplevelName).frame1.input get 1.0 end\] - } - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy $inputBox(toplevelName)} - } { - catch {destroy $inputBox(toplevelName)} - } - $inputBoxCommandOk" - catch "$inputBox(toplevelName).frame0.button0 config $tmpButtonOpt" - - button $inputBox(toplevelName).frame0.button1 -text "Cancel" -command " - global inputBox - if {$lineNum == 1} { - set inputBox($inputBox(toplevelName),inputOne) \"\" - } { - set inputBox($inputBox(toplevelName),inputMulti) \"\" - } - if {\"\[info commands XFDestroy\]\" != \"\"} { - catch {XFDestroy $inputBox(toplevelName)} - } { - catch {destroy $inputBox(toplevelName)} - } - $inputBoxCommandCancel" - catch "$inputBox(toplevelName).frame0.button1 config $tmpButtonOpt" - - pack append $inputBox(toplevelName).frame0 $inputBox(toplevelName).frame0.button0 {left fill expand} $inputBox(toplevelName).frame0.button1 {left fill expand} - - pack append $inputBox(toplevelName) $inputBox(toplevelName).frame0 {bottom fill} $inputBox(toplevelName).frame1 {bottom fill expand} $inputBox(toplevelName).message1 {top fill} -} - - -# Procedure: InputBoxMulti -proc InputBoxMulti { {inputBoxMessage "Input box:"} {inputBoxCommandOk ""} {inputBoxCommandCancel ""} {inputBoxGeometry "350x150"} {inputBoxTitle "Input box"}} { -# xf ignore me 5 -########## -# Procedure: InputBoxMulti -# Description: show input box with one text line -# Arguments: {inputBoxMessage} - message to display -# {inputBoxCommandOk} - the command to call after ok -# {inputBoxCommandCancel} - the command to call after cancel -# {inputBoxGeometry} - the geometry for the window -# {inputBoxTitle} - the title for the window -# Returns: The entered text -# Sideeffects: none -# Notes: there exist also a function called: -# InputBoxOne - to enter one line text -########## -# -# global inputBox(activeBackground) - active background color -# global inputBox(activeForeground) - active foreground color -# global inputBox(anchor) - anchor for message box -# global inputBox(background) - background color -# global inputBox(erase) - erase previous text -# global inputBox(font) - message font -# global inputBox(foreground) - foreground color -# global inputBox(justify) - justify for message box -# global inputBox(scrollActiveForeground) - scrollbar active background color -# global inputBox(scrollBackground) - scrollbar background color -# global inputBox(scrollForeground) - scrollbar foreground color -# global inputBox(scrollSide) - side where scrollbar is located -# global inputBox(toplevelName) - the toplevel name -# global inputBox(toplevelName,inputMulti) - the text in the text widget - - global inputBox - - if {"$inputBoxGeometry" == ""} { - set inputBoxGeometry 350x150 - } - if {$inputBox(erase)} { - set inputBox($inputBox(toplevelName),inputMulti) "" - } { - if {![info exists inputBox($inputBox(toplevelName),inputMulti)]} { - set inputBox($inputBox(toplevelName),inputMulti) "" - } - } - InputBoxInternal $inputBoxMessage $inputBoxCommandOk $inputBoxCommandCancel $inputBoxGeometry $inputBoxTitle 2 - - # wait for the box to be destroyed - update idletask - grab $inputBox(toplevelName) - tkwait window $inputBox(toplevelName) - - return $inputBox($inputBox(toplevelName),inputMulti) -} - - -# Procedure: InputBoxOne -proc InputBoxOne { {inputBoxMessage "Input box:"} {inputBoxCommandOk ""} {inputBoxCommandCancel ""} {inputBoxGeometry "350x150"} {inputBoxTitle "Input box"}} { -# xf ignore me 5 -########## -# Procedure: InputBoxOne -# Description: show input box with one text line -# Arguments: {inputBoxMessage} - message to display -# {inputBoxCommandOk} - the command to call after ok -# {inputBoxCommandCancel} - the command to call after cancel -# {inputBoxGeometry} - the geometry for the window -# {inputBoxTitle} - the title for the window -# Returns: The entered text -# Sideeffects: none -# Notes: there exist also a function called: -# InputBoxMulti - to enter multiline text -########## -# -# global inputBox(activeBackground) - active background color -# global inputBox(activeForeground) - active foreground color -# global inputBox(anchor) - anchor for message box -# global inputBox(background) - background color -# global inputBox(erase) - erase previous text -# global inputBox(font) - message font -# global inputBox(foreground) - foreground color -# global inputBox(justify) - justify for message box -# global inputBox(scrollActiveForeground) - scrollbar active background color -# global inputBox(scrollBackground) - scrollbar background color -# global inputBox(scrollForeground) - scrollbar foreground color -# global inputBox(scrollSide) - side where scrollbar is located -# global inputBox(toplevelName) - the toplevel name -# global inputBox(toplevelName,inputOne) - the text in the entry widget - - global inputBox - - if {$inputBox(erase)} { - set inputBox($inputBox(toplevelName),inputOne) "" - } { - if {![info exists inputBox($inputBox(toplevelName),inputOne)]} { - set inputBox($inputBox(toplevelName),inputOne) "" - } - } - InputBoxInternal $inputBoxMessage $inputBoxCommandOk $inputBoxCommandCancel $inputBoxGeometry $inputBoxTitle 1 - - # wait for the box to be destroyed - update idletask - grab $inputBox(toplevelName) - tkwait window $inputBox(toplevelName) - - return $inputBox($inputBox(toplevelName),inputOne) -} - - -# Procedure: IsADir -proc IsADir { pathName} { -# xf ignore me 5 -########## -# Procedure: IsADir -# Description: check if name is a directory (including symbolic links) -# Arguments: pathName - the path to check -# Returns: 1 if its a directory, otherwise 0 -# Sideeffects: none -########## - - if {[file isdirectory $pathName]} { - return 1 - } { - catch "file type $pathName" fileType - if {"$fileType" == "link"} { - if {[catch "file readlink $pathName" linkName]} { - return 0 - } - catch "file type $linkName" fileType - while {"$fileType" == "link"} { - if {[catch "file readlink $linkName" linkName]} { - return 0 - } - catch "file type $linkName" fileType - } - return [file isdirectory $linkName] - } - } - return 0 -} - - -# Procedure: IsAFile -proc IsAFile { fileName} { -# xf ignore me 5 -########## -# Procedure: IsAFile -# Description: check if filename is a file (including symbolic links) -# Arguments: fileName - the filename to check -# Returns: 1 if its a file, otherwise 0 -# Sideeffects: none -########## - - if {[file isfile $fileName]} { - return 1 - } { - catch "file type $fileName" fileType - if {"$fileType" == "link"} { - if {[catch "file readlink $fileName" linkName]} { - return 0 - } - catch "file type $linkName" fileType - while {"$fileType" == "link"} { - if {[catch "file readlink $linkName" linkName]} { - return 0 - } - catch "file type $linkName" fileType - } - return [file isfile $linkName] - } - } - return 0 -} - - -# Procedure: IsASymlink -proc IsASymlink { fileName} { -# xf ignore me 5 -########## -# Procedure: IsASymlink -# Description: check if filename is a symbolic link -# Arguments: fileName - the path/filename to check -# Returns: none -# Sideeffects: none -########## - - catch "file type $fileName" fileType - if {"$fileType" == "link"} { - return 1 - } - return 0 -} - - -# Procedure: PrologCommand -proc PrologCommand {} { -prolog {prolog_call [InputBoxOne "Prolog Command:"]} lite -} - - -# Procedure: TokioCommand -proc TokioCommand {} { -prolog {tokio_call [InputBoxOne "Tokio Command:"]} lite -} - - -# Procedure: canvaswh -proc canvaswh { c scale} { -global scalex scaley -if {! $scalex && ! $scaley } { - regexp {([0-9]+)x([0-9]+)} [wm geometry .] dm w h - set h [$c canvasy [expr $h/2]] - set w [$c canvasx [expr $w/2]] -} else { - set h $scaley - set w $scalex -} -$c scale all $w $h $scale $scale -} - - -# Procedure: crosshair -proc crosshair { c x y} { -global scalex scaley -if {[$c find withtag cursol] != {}} { - $c delete cursol -} -set cs 5 -set x [$c canvasx $x] -set y [$c canvasy $y] -$c create line $x [expr $y - $cs] $x [expr $y + $cs] -tags cursol -$c create line [expr $x - $cs] $y [expr $x + $cs] $y -tags cursol -set scalex $x -set scaley $y -} - - -# Procedure: event -proc event { args now} { -prolog "tokio_event $args $now" tokio -} - - -# Procedure: filehandling -proc filehandling { t mode file} { -if {[string compare $mode "load"] == 0} { - if [file isfile $file] { - $t delete 0.0 end - set F [open $file r] - while {[gets $F string] != -1} { - $t insert end "$string\n" - } - close $F - } -} else { - set line [$t get 0.0 end] -# if [file writable $dir] { - if [expr [llength $line] > 0] { - set F [open $file w] - puts $F $line - close $F - } -# } -} -} - - -# Procedure: lite -proc lite { a b} { -prolog "event $a $b" lite -} - - -# Procedure: text_clear -proc text_clear { t} { -$t delete 0.0 end -} - - -# Internal procedures - - -# Procedure: Alias -if {"[info procs Alias]" == ""} { -proc Alias { args} { -# xf ignore me 7 -########## -# Procedure: Alias -# Description: establish an alias for a procedure -# Arguments: args - no argument means that a list of all aliases -# is returned. Otherwise the first parameter is -# the alias name, and the second parameter is -# the procedure that is aliased. -# Returns: nothing, the command that is bound to the alias or a -# list of all aliases - command pairs. -# Sideeffects: internalAliasList is updated, and the alias -# proc is inserted -########## - global internalAliasList - - if {[llength $args] == 0} { - return $internalAliasList - } { - if {[llength $args] == 1} { - set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"] - if {$xfTmpIndex != -1} { - return [lindex [lindex $internalAliasList $xfTmpIndex] 1] - } - } { - if {[llength $args] == 2} { - eval "proc [lindex $args 0] {args} {#xf ignore me 4 -return \[eval \"[lindex $args 1] \$args\"\]}" - set xfTmpIndex [lsearch $internalAliasList "[lindex $args 0] *"] - if {$xfTmpIndex != -1} { - set internalAliasList [lreplace $internalAliasList $xfTmpIndex $xfTmpIndex "[lindex $args 0] [lindex $args 1]"] - } { - lappend internalAliasList "[lindex $args 0] [lindex $args 1]" - } - } { - error "Alias: wrong number or args: $args" - } - } - } -} -} - - -# Procedure: GetSelection -if {"[info procs GetSelection]" == ""} { -proc GetSelection {} { -# xf ignore me 7 -########## -# Procedure: GetSelection -# Description: get current selection -# Arguments: none -# Returns: none -# Sideeffects: none -########## - - # the save way - set xfSelection "" - catch "selection get" xfSelection - if {"$xfSelection" == "selection doesn't exist or form \"STRING\" not defined"} { - return "" - } { - return $xfSelection - } -} -} - - -# Procedure: MenuPopupAdd -if {"[info procs MenuPopupAdd]" == ""} { -proc MenuPopupAdd { xfW xfButton xfMenu {xfModifier ""} {xfCanvasTag ""}} { -# xf ignore me 7 -# the popup menu handling is from (I already gave up with popup handling :-): -# -# Copyright 1991,1992 by James Noble. -# Everyone is granted permission to copy, modify and redistribute. -# This notice must be preserved on all copies or derivates. -# -########## -# Procedure: MenuPopupAdd -# Description: attach a popup menu to widget -# Arguments: xfW - the widget -# xfButton - the button we use -# xfMenu - the menu to attach -# {xfModifier} - a optional modifier -# {xfCanvasTag} - a canvas tagOrId -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - - set tk_popupPriv($xfMenu,focus) "" - set tk_popupPriv($xfMenu,grab) "" - if {"$xfModifier" != ""} { - set press "$xfModifier-" - set motion "$xfModifier-" - set release "Any-" - } { - set press "" - set motion "" - set release "" - } - - bind $xfMenu "<${motion}B${xfButton}-Motion>" "MenuPopupMotion $xfMenu %W %X %Y" - bind $xfMenu "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W" - if {"$xfCanvasTag" == ""} { - bind $xfW "<${press}ButtonPress-${xfButton}>" "MenuPopupPost $xfMenu %X %Y" - bind $xfW "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W" - } { - $xfW bind $xfCanvasTag "<${press}ButtonPress-${xfButton}>" "MenuPopupPost $xfMenu %X %Y" - $xfW bind $xfCanvasTag "<${release}ButtonRelease-${xfButton}>" "MenuPopupRelease $xfMenu %W" - } -} -} - - -# Procedure: MenuPopupMotion -if {"[info procs MenuPopupMotion]" == ""} { -proc MenuPopupMotion { xfMenu xfW xfX xfY} { -# xf ignore me 7 -########## -# Procedure: MenuPopupMotion -# Description: handle the popup menu motion -# Arguments: xfMenu - the topmost menu -# xfW - the menu -# xfX - the root x coordinate -# xfY - the root x coordinate -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - - if {"[info commands $xfW]" != "" && [winfo ismapped $xfW] && - "[winfo class $xfW]" == "Menu" && - [info exists tk_popupPriv($xfMenu,focus)] && - "$tk_popupPriv($xfMenu,focus)" != "" && - [info exists tk_popupPriv($xfMenu,grab)] && - "$tk_popupPriv($xfMenu,grab)" != ""} { - set xfPopMinX [winfo rootx $xfW] - set xfPopMaxX [expr $xfPopMinX+[winfo width $xfW]] - if {$xfX >= $xfPopMinX && $xfX <= $xfPopMaxX} { - $xfW activate @[expr $xfY-[winfo rooty $xfW]] - if {![catch "$xfW entryconfig @[expr $xfY-[winfo rooty $xfW]] -menu" result]} { - if {"[lindex $result 4]" != ""} { - foreach binding [bind $xfMenu] { - bind [lindex $result 4] $binding [bind $xfMenu $binding] - } - } - } - } { - $xfW activate none - } - } -} -} - - -# Procedure: MenuPopupPost -if {"[info procs MenuPopupPost]" == ""} { -proc MenuPopupPost { xfMenu xfX xfY} { -# xf ignore me 7 -########## -# Procedure: MenuPopupPost -# Description: post the popup menu -# Arguments: xfMenu - the menu -# xfX - the root x coordinate -# xfY - the root x coordinate -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - - if {"[info commands $xfMenu]" != ""} { - if {![info exists tk_popupPriv($xfMenu,focus)]} { - set tk_popupPriv($xfMenu,focus) [focus] - } { - if {"$tk_popupPriv($xfMenu,focus)" == ""} { - set tk_popupPriv($xfMenu,focus) [focus] - } - } - set tk_popupPriv($xfMenu,grab) $xfMenu - - catch "$xfMenu activate none" - catch "$xfMenu post $xfX $xfY" - catch "focus $xfMenu" - catch "grab -global $xfMenu" - } -} -} - - -# Procedure: MenuPopupRelease -if {"[info procs MenuPopupRelease]" == ""} { -proc MenuPopupRelease { xfMenu xfW} { -# xf ignore me 7 -########## -# Procedure: MenuPopupRelease -# Description: remove the popup menu -# Arguments: xfMenu - the topmost menu widget -# xfW - the menu widget -# Returns: none -# Sideeffects: none -########## - global tk_popupPriv - global tkVersion - - if {"[info commands $xfW]" != "" && [winfo ismapped $xfW] && - "[winfo class $xfW]" == "Menu" && - [info exists tk_popupPriv($xfMenu,focus)] && - "$tk_popupPriv($xfMenu,focus)" != "" && - [info exists tk_popupPriv($xfMenu,grab)] && - "$tk_popupPriv($xfMenu,grab)" != ""} { - if {$tkVersion >= 3.0} { - catch "grab release $tk_popupPriv($xfMenu,grab)" - } { - catch "grab none" - } - catch "focus $tk_popupPriv($xfMenu,focus)" - set tk_popupPriv($xfMenu,focus) "" - set tk_popupPriv($xfMenu,grab) "" - if {"[$xfW index active]" != "none"} { - $xfW invoke active; catch "$xfMenu unpost" - } - } - catch "$xfMenu unpost" -} -} - - -# Procedure: NoFunction -if {"[info procs NoFunction]" == ""} { -proc NoFunction { args} { -# xf ignore me 7 -########## -# Procedure: NoFunction -# Description: do nothing (especially with scales and scrollbars) -# Arguments: args - a number of ignored parameters -# Returns: none -# Sideeffects: none -########## -} -} - - -# Procedure: SN -if {"[info procs SN]" == ""} { -proc SN { {xfName ""}} { -# xf ignore me 7 -########## -# Procedure: SN -# Description: map a symbolic name to the widget path -# Arguments: xfName -# Returns: the symbolic name -# Sideeffects: none -########## - - SymbolicName $xfName -} -} - - -# Procedure: SymbolicName -if {"[info procs SymbolicName]" == ""} { -proc SymbolicName { {xfName ""}} { -# xf ignore me 7 -########## -# Procedure: SymbolicName -# Description: map a symbolic name to the widget path -# Arguments: xfName -# Returns: the symbolic name -# Sideeffects: none -########## - - global symbolicName - - if {"$xfName" != ""} { - set xfArrayName "" - append xfArrayName symbolicName ( $xfName ) - if {![catch "set \"$xfArrayName\"" xfValue]} { - return $xfValue - } { - if {"[info commands XFProcError]" != ""} { - XFProcError "Unknown symbolic name:\n$xfName" - } { - puts stderr "XF error: unknown symbolic name:\n$xfName" - } - } - } - return "" -} -} - - -# Procedure: Unalias -if {"[info procs Unalias]" == ""} { -proc Unalias { aliasName} { -# xf ignore me 7 -########## -# Procedure: Unalias -# Description: remove an alias for a procedure -# Arguments: aliasName - the alias name to remove -# Returns: none -# Sideeffects: internalAliasList is updated, and the alias -# proc is removed -########## - global internalAliasList - - set xfIndex [lsearch $internalAliasList "$aliasName *"] - if {$xfIndex != -1} { - rename $aliasName "" - set internalAliasList [lreplace $internalAliasList $xfIndex $xfIndex] - } -} -} - - - -# application parsing procedure -proc XFLocalParseAppDefs {xfAppDefFile} { - global xfAppDefaults - - # basically from: Michael Moore - if {[file exists $xfAppDefFile] && - [file readable $xfAppDefFile] && - "[file type $xfAppDefFile]" == "link"} { - catch "file type $xfAppDefFile" xfType - while {"$xfType" == "link"} { - if {[catch "file readlink $xfAppDefFile" xfAppDefFile]} { - return - } - catch "file type $xfAppDefFile" xfType - } - } - if {!("$xfAppDefFile" != "" && - [file exists $xfAppDefFile] && - [file readable $xfAppDefFile] && - "[file type $xfAppDefFile]" == "file")} { - return - } - if {![catch "open $xfAppDefFile r" xfResult]} { - set xfAppFileContents [read $xfResult] - close $xfResult - foreach line [split $xfAppFileContents "\n"] { - # backup indicates how far to backup. It applies to the - # situation where a resource name ends in . and when it - # ends in *. In the second case you want to keep the * - # in the widget name for pattern matching, but you want - # to get rid of the . if it is the end of the name. - set backup -2 - set line [string trim $line] - if {[string index $line 0] == "#" || "$line" == ""} { - # skip comments and empty lines - continue - } - set list [split $line ":"] - set resource [string trim [lindex $list 0]] - set i [string last "." $resource] - set j [string last "*" $resource] - if {$j > $i} { - set i $j - set backup -1 - } - incr i - set name [string range $resource $i end] - incr i $backup - set widname [string range $resource 0 $i] - set value [string trim [lindex $list 1]] - if {"$widname" != "" && "$widname" != "*"} { - # insert the widget and resourcename to the application - # defaults list. - if {![info exists xfAppDefaults]} { - set xfAppDefaults "" - } - lappend xfAppDefaults [list $widname [string tolower $name] $value] - } - } - } -} - -# application loading procedure -proc XFLocalLoadAppDefs {{xfClasses ""} {xfPriority "startupFile"} {xfAppDefFile ""}} { - global env - - if {"$xfAppDefFile" == ""} { - set xfFileList "" - if {[info exists env(XUSERFILESEARCHPATH)]} { - append xfFileList [split $env(XUSERFILESEARCHPATH) :] - } - if {[info exists env(XAPPLRESDIR)]} { - append xfFileList [split $env(XAPPLRESDIR) :] - } - if {[info exists env(XFILESEARCHPATH)]} { - append xfFileList [split $env(XFILESEARCHPATH) :] - } - append xfFileList " /usr/lib/X11/app-defaults" - append xfFileList " /usr/X11/lib/X11/app-defaults" - - foreach xfCounter1 $xfClasses { - foreach xfCounter2 $xfFileList { - set xfPathName $xfCounter2 - if {[regsub -all "%N" "$xfPathName" "$xfCounter1" xfResult]} { - set xfPathName $xfResult - } - if {[regsub -all "%T" "$xfPathName" "app-defaults" xfResult]} { - set xfPathName $xfResult - } - if {[regsub -all "%S" "$xfPathName" "" xfResult]} { - set xfPathName $xfResult - } - if {[regsub -all "%C" "$xfPathName" "" xfResult]} { - set xfPathName $xfResult - } - if {[file exists $xfPathName] && - [file readable $xfPathName] && - ("[file type $xfPathName]" == "file" || - "[file type $xfPathName]" == "link")} { - catch "option readfile $xfPathName $xfPriority" - if {"[info commands XFParseAppDefs]" != ""} { - XFParseAppDefs $xfPathName - } { - if {"[info commands XFLocalParseAppDefs]" != ""} { - XFLocalParseAppDefs $xfPathName - } - } - } { - if {[file exists $xfCounter2/$xfCounter1] && - [file readable $xfCounter2/$xfCounter1] && - ("[file type $xfCounter2/$xfCounter1]" == "file" || - "[file type $xfCounter2/$xfCounter1]" == "link")} { - catch "option readfile $xfCounter2/$xfCounter1 $xfPriority" - if {"[info commands XFParseAppDefs]" != ""} { - XFParseAppDefs $xfCounter2/$xfCounter1 - } { - if {"[info commands XFLocalParseAppDefs]" != ""} { - XFLocalParseAppDefs $xfCounter2/$xfCounter1 - } - } - } - } - } - } - } { - # load a specific application defaults file - if {[file exists $xfAppDefFile] && - [file readable $xfAppDefFile] && - ("[file type $xfAppDefFile]" == "file" || - "[file type $xfAppDefFile]" == "link")} { - catch "option readfile $xfAppDefFile $xfPriority" - if {"[info commands XFParseAppDefs]" != ""} { - XFParseAppDefs $xfAppDefFile - } { - if {"[info commands XFLocalParseAppDefs]" != ""} { - XFLocalParseAppDefs $xfAppDefFile - } - } - } - } -} - -# application setting procedure -proc XFLocalSetAppDefs {{xfWidgetPath "."}} { - global xfAppDefaults - - if {![info exists xfAppDefaults]} { - return - } - foreach xfCounter $xfAppDefaults { - if {"$xfCounter" == ""} { - break - } - set widname [lindex $xfCounter 0] - if {[string match $widname ${xfWidgetPath}] || - [string match "${xfWidgetPath}*" $widname]} { - set name [string tolower [lindex $xfCounter 1]] - set value [lindex $xfCounter 2] - # Now lets see how many tcl commands match the name - # pattern specified. - set widlist [info command $widname] - if {"$widlist" != ""} { - foreach widget $widlist { - # make sure this command is a widget. - if {![catch "winfo id $widget"] && - [string match "${xfWidgetPath}*" $widget]} { - catch "$widget configure -$name $value" - } - } - } - } - } -} - - -# prepare auto loading -global auto_path -global tk_library -global xfLoadPath -foreach xfElement [eval list [split $xfLoadPath :] $auto_path] { - if {[file exists $xfElement/tclIndex]} { - lappend auto_path $xfElement - } -} -catch "unset auto_index" - -catch "unset auto_oldpath" - -catch "unset auto_execs" - - -# initialize global variables -proc InitGlobals {} { - global {checkbutton5} - set {checkbutton5} {0} - global {fsBox} - set {fsBox(activeBackground)} {} - set {fsBox(activeForeground)} {} - set {fsBox(all)} {0} - set {fsBox(background)} {} - set {fsBox(button)} {0} - set {fsBox(extensions)} {0} - set {fsBox(font)} {} - set {fsBox(foreground)} {} - set {fsBox(internalPath)} {/user/kono/ITL/demo} - set {fsBox(name)} {ahoaho} - set {fsBox(path)} {/user/kono/ITL/demo} - set {fsBox(pattern)} {*} - set {fsBox(scrollActiveForeground)} {} - set {fsBox(scrollBackground)} {} - set {fsBox(scrollForeground)} {} - set {fsBox(scrollSide)} {left} - set {fsBox(showPixmap)} {0} - global {inputBox} - set {inputBox(activeBackground)} {} - set {inputBox(activeForeground)} {} - set {inputBox(anchor)} {n} - set {inputBox(background)} {} - set {inputBox(erase)} {1} - set {inputBox(font)} {} - set {inputBox(foreground)} {} - set {inputBox(justify)} {center} - set {inputBox(scrollActiveForeground)} {} - set {inputBox(scrollBackground)} {} - set {inputBox(scrollForeground)} {} - set {inputBox(scrollSide)} {left} - set {inputBox(toplevelName)} {.inputBox} - global {scalex} - set {scalex} {326} - global {scaley} - set {scaley} {194} - global {verbose} - set {verbose} {0} - - # please don't modify the following - # variables. They are needed by xf. - global {autoLoadList} - set {autoLoadList(xf-disp)} {0} - global {internalAliasList} - set {internalAliasList} {} - global {moduleList} - set {moduleList(xf-disp)} {} - global {preloadList} - set {preloadList(xfInternal)} {} - global {symbolicName} - set {symbolicName(canvas)} {.top0.frame0.canvas2} - set {symbolicName(diag)} {.top0.frame6.button8} - set {symbolicName(entry)} {.frame.frame4.text0} - set {symbolicName(execute)} {.top0.frame6.button10} - set {symbolicName(generate)} {.top0.frame1.button0} - set {symbolicName(map)} {.top0.frame1.button13} - set {symbolicName(root)} {.} - set {symbolicName(states)} {.top0.frame1.label6} - set {symbolicName(verbose)} {.frame3.checkbutton5} - set {symbolicName(verify)} {.frame3.button7} - global {xfWmSetPosition} - set {xfWmSetPosition} {} - global {xfWmSetSize} - set {xfWmSetSize} {} - global {xfAppDefToplevels} - set {xfAppDefToplevels} {} -} - -# initialize global variables -InitGlobals - -# display/remove toplevel windows. -ShowWindow. - -global xfShowWindow.top0 -set xfShowWindow.top0 1 -ShowWindow.top0 - -# load default bindings. -if {[info exists env(XF_BIND_FILE)] && - "[info procs XFShowHelp]" == ""} { - source $env(XF_BIND_FILE) -} - -# parse and apply application defaults. -XFLocalLoadAppDefs Xf-disp -XFLocalSetAppDefs - -# eof -# -