patch-1.3.35 linux/scripts/header.tk
Next file: linux/scripts/tail.tk
Previous file: linux/scripts/Makefile
Back to the patch index
Back to the overall index
- Lines: 338
- Date:
Sun Oct 15 18:57:01 1995
- Orig file:
v1.3.34/linux/scripts/header.tk
- Orig date:
Thu Jan 1 02:00:00 1970
diff -u --recursive --new-file v1.3.34/linux/scripts/header.tk linux/scripts/header.tk
@@ -0,0 +1,337 @@
+#!/usr/bin/wish -f
+
+#
+# Used to determine size of canvas inserted for booleans. It holds the
+# place where the 'm' button goes in a tristate, and keeps the look and feel
+# consistent.
+#
+set modbutton_width 0
+set modbutton_height 0
+
+
+#
+# Define some macros we will need to parse the kmenu-config.dat file.
+#
+proc mainmenu_name { text } {
+ message .header.message -width 400 -relief raised -bg grey -text "$text"
+ pack .header.label .header.message -side left -padx 15
+ wm title . "$text"
+}
+
+proc menu_option { w menu_num text } {
+ button .f0.x$menu_num -text "$text" -width 50 -command "$w .$w \"$text\""
+ pack .f0.x$menu_num -anchor w -pady 1
+}
+
+#
+# Not used at the moment, but this runs a command in a subprocess and
+# displays the result in a window with a scrollbar.
+#
+proc do_cmd { w command } {
+ catch {destroy $w}
+ toplevel $w -class Dialog
+ frame $w.tb
+ text $w.tb.text -relief raised -bd 2 -yscrollcommand "$w.tb.scroll set"
+ scrollbar $w.tb.scroll -command "$w.tb.text yview"
+ pack $w.tb.scroll -side right -fill y
+ pack $w.tb.text -side left
+
+ set oldFocus [focus]
+ frame $w.back
+ button $w.back.ok -text "OK" -activebackground green -width 20 \
+ -command "destroy $w; focus $oldFocus" -state disabled
+ button $w.back.ccl -text "Cancel" -activebackground green -width 20 \
+ -command "destroy $w; focus $oldFocus"
+ pack $w.tb -side top
+ pack $w.back.ok $w.back.ccl -side left
+ pack $w.back -side bottom -pady 10
+
+ focus $w
+ wm geometry $w +30+35
+
+ $w.tb.text delete 1.0 end
+ set f [open |$command]
+ while {![eof $f]} {
+ $w.tb.text insert end [read $f 256]
+ }
+ close $f
+ $w.back.ok configure -state normal
+}
+
+proc load_configfile { w title func } {
+ catch {destroy $w}
+ toplevel $w -class Dialog
+ global loadfile
+ frame $w.x
+ label $w.bm -bitmap questhead
+ pack $w.bm -pady 10 -side top -padx 10
+ label $w.x.l -text "Enter filename:" -relief raised
+ entry $w.x.x -width 35 -relief sunken -borderwidth 2 \
+ -textvariable loadfile
+ pack $w.x.l $w.x.x -anchor w -side left
+ pack $w.x -side top -pady 10
+ wm title $w "$title"
+
+ set oldFocus [focus]
+ frame $w.f
+ button $w.f.back -text "OK" -activebackground green -width 20 \
+ -command "destroy $w; focus $oldFocus;$func .fileio"
+ button $w.f.canc -text "Cancel" -activebackground red \
+ -width 20 -command "destroy $w; focus $oldFocus"
+ pack $w.f.back $w.f.canc -side left -pady 10 -padx 45
+ pack $w.f -pady 10 -side bottom -padx 10 -anchor w
+ focus $w
+ wm geometry $w +30+35
+}
+
+proc read_config_file { w } {
+ global loadfile
+ if { [string length $loadfile] != 0 && [file readable $loadfile] == 1 } then {
+ read_config $loadfile
+ } else {
+ catch {destroy $w}
+ toplevel $w -class Dialog
+ message $w.m -width 400 -aspect 300 -text \
+ "Unable to read file $loadfile" \
+ -relief raised -fg black
+ label $w.bm -bitmap error
+ pack $w.bm $w.m -pady 10 -side top -padx 10
+ wm title $w "Oops"
+
+ set oldFocus [focus]
+ frame $w.f
+ button $w.f.back -text "Bummer" -activebackground green \
+ -width 10 -command "destroy $w; focus $oldFocus"
+ pack $w.f.back -side bottom -pady 10 -anchor s
+ pack $w.f -pady 10 -side top -padx 10 -anchor s
+ focus $w
+ wm geometry $w +30+35
+ }
+}
+
+proc write_config_file { w } {
+ global loadfile
+ if { [string length $loadfile] != 0 && [file writable $loadfile] == 1 } then {
+ writeconfig $loadfile /dev/null
+ } else {
+ catch {destroy $w}
+ toplevel $w -class Dialog
+ message $w.m -width 400 -aspect 300 -text \
+ "Unable to write file $loadfile" \
+ -relief raised -fg black
+ label $w.bm -bitmap error
+ pack $w.bm $w.m -pady 10 -side top -padx 10
+ wm title $w "Oops"
+
+ set oldFocus [focus]
+ frame $w.f
+ button $w.f.back -text "OK" -activebackground green \
+ -width 10 -command "destroy $w; focus $oldFocus"
+ pack $w.f.back -side bottom -pady 10 -anchor s
+ pack $w.f -pady 10 -side top -padx 10 -anchor s
+ focus $w
+ wm geometry $w +30+35
+ }
+}
+
+proc read_config { filename } {
+ set file1 [open $filename r]
+ while { [gets $file1 line] >= 0} {
+ if [regexp {([0-9A-Z_]+)=([ynm])} $line foo var value] {
+ if { $value == "y" } then { set cmd "global $var; set $var 1" }
+ if { $value == "n" } then { set cmd "global $var; set $var 0" }
+ if { $value == "m" } then { set cmd "global $var; set $var 2" }
+ eval $cmd
+ }
+ if [regexp {# ([0-9A-Z_]+) is not set} $line foo var] {
+ set cmd "global $var; set $var 0"
+ eval $cmd
+ }
+ }
+ close $file1
+}
+proc write_comment { file1 file2 text } {
+ puts $file1 "#"
+ puts $file1 "# $text"
+ puts $file1 "#"
+ puts $file2 "/*"
+ puts $file2 " * $text"
+ puts $file2 " */"
+}
+
+proc write_variable { file1 file2 varname variable dep } {
+ if { $variable == 0 } \
+ then { puts $file1 "# $varname is not set"; \
+ puts $file2 "#undef $varname"}
+ if { $variable == 2 || ($dep == 2 && $variable == 1) } \
+ then { puts $file1 "$varname=m"; \
+ puts $file2 "#undef $varname" }
+ if { $variable == 1 && $dep != 2 } \
+ then { puts $file1 "$varname=y"; \
+ puts $file2 "#define $varname 1" }
+}
+
+proc bool {w mnum line text variable default} {
+ frame $w.x$line
+ global modbutton_width
+ global modbutton_height
+ radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ canvas $w.x$line.m -width $modbutton_width -relief raised \
+ -height $modbutton_height
+ button $w.x$line.help -text "Help" -relief raised \
+ -command "dohelp .dohelp $variable"
+ pack $w.x$line.y $w.x$line.m -anchor w -side left
+ button $w.x$line.l -text "$text" -relief raised
+ pack $w.x$line.n $w.x$line.help $w.x$line.l -anchor w -side left
+ pack $w.x$line -anchor w
+#
+# If we don't know the size yet, update the screen and calculate the size
+# of the 'm' button by measuring the size of the 'y' button. The buttons
+# have fixed size anyways, so it should always be correct.
+#
+ if { $modbutton_width == 0 } then {
+ update
+ set modbutton_width [winfo width $w.x$line.y]
+ set modbutton_height [winfo height $w.x$line.y]
+ $w.x$line.m configure -height $modbutton_height \
+ -width $modbutton_width
+ }
+}
+
+proc int { w mnum line text variable default } {
+ frame $w.x$line
+ button $w.x$line.help -text "Help" -relief raised \
+ -command "dohelp .dohelp $variable "
+ button $w.x$line.l -text "$text" -relief raised
+ entry $w.x$line.x -width 15 -relief sunken -borderwidth 2 \
+ -textvariable $variable
+ pack $w.x$line.x $w.x$line.help $w.x$line.l -anchor w -side left
+ pack $w.x$line -anchor w
+}
+
+proc comment {w line text } {
+#nothing done for comments now.
+}
+
+proc do_make { w line option dir target target } {
+#nothing to do for now.
+}
+
+proc dohelp {w varname } {
+ catch {destroy $w}
+ toplevel $w -class Dialog
+
+ set filefound 0
+ set found 0
+ if { [file readable Documentation/Configure.help] == 1} then {
+ set f [open Documentation/Configure.help r]
+ set filefound 1
+ while {![eof $f]} {
+ gets $f line
+ set line1 [string trim $line]
+ if { $line1 == $varname } then {
+ set found 1
+ } else {
+ if { $found == 0 } continue
+ }
+ if { [string length $line1 ] == 0 } break
+ append message $line
+ }
+ close $f
+ }
+
+ if { $found == 0 } then {
+ if { $filefound == 0 } then {
+ message $w.m -width 400 -aspect 300 -text \
+ "No help available - unable to open file Documentation/Configure.help" -relief raised -fg black
+ } else {
+ message $w.m -width 400 -aspect 300 -text \
+ "No help available for $varname" -relief raised -fg black
+ }
+ label $w.bm -bitmap error
+ pack $w.bm $w.m -pady 10 -side top -padx 10
+ wm title $w "RTFM"
+ } else {
+ message $w.m -width 400 -aspect 300 -text $message \
+ -relief raised -fg black
+ label $w.bm -bitmap info
+ pack $w.bm $w.m -pady 10 -side top -padx 10
+ wm title $w "Configuration help"
+ }
+ set oldFocus [focus]
+ frame $w.f
+ button $w.f.back -text "OK" -activebackground green \
+ -width 10 -command "destroy $w; focus $oldFocus"
+ pack $w.f.back -side bottom -pady 10 -anchor s
+ pack $w.f -pady 10 -side top -padx 10 -anchor s
+ focus $w
+ wm geometry $w +30+35
+}
+
+proc wrapup {w } {
+ catch {destroy $w}
+ toplevel $w -class Dialog
+ message $w.m -width 400 -aspect 300 -text \
+ "The linux kernel is now hopefully configured for your setup. Check the top-level Makefile for additional configuration, and do a 'make dep ; make clean' if you want to be sure all the files are correctly re-made." -relief raised -fg black
+ label $w.bm -bitmap info
+ pack $w.bm $w.m -pady 10 -side top -padx 10
+ wm title $w "Kernel build instructions"
+
+ set oldFocus [focus]
+ frame $w.f
+ button $w.f.back -text "OK" -activebackground green \
+ -width 10 -command "exit"
+ pack $w.f.back -side bottom -pady 10 -anchor s
+ pack $w.f -pady 10 -side top -padx 10 -anchor s
+ focus $w
+ wm geometry $w +30+35
+
+}
+
+proc check_sound_config { num } {
+#nothing for now.
+}
+
+proc tristate {w mnum line text variable default} {
+ frame $w.x$line
+ radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ radiobutton $w.x$line.m -text "m" -variable $variable -value 2 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ button $w.x$line.help -text "Help" -relief raised \
+ -command "dohelp .dohelp $variable"
+ button $w.x$line.l -text "$text" -relief raised
+ pack $w.x$line.y $w.x$line.m $w.x$line.n $w.x$line.help $w.x$line.l -anchor w -side left
+ pack $w.x$line -anchor w
+}
+
+proc dep_tristate {w mnum line text variable default} {
+ frame $w.x$line
+ radiobutton $w.x$line.y -text "y" -variable $variable -value 1 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ radiobutton $w.x$line.n -text "n" -variable $variable -value 0 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ radiobutton $w.x$line.m -text "m" -variable $variable -value 2 \
+ -width 2 -command "update_menu$mnum .menu$mnum"
+ button $w.x$line.help -text "Help" -relief raised \
+ -command "dohelp .dohelp $variable"
+ button $w.x$line.l -text "$text" -relief raised
+ pack $w.x$line.y $w.x$line.m $w.x$line.n $w.x$line.help $w.x$line.l -anchor w -side left
+ pack $w.x$line -anchor w
+}
+
+
+#
+# Next set up the particulars for the top level menu, and define a few
+# buttons which we will stick down at the bottom.
+#
+frame .header
+label .header.label
+
+frame .f0
+
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this