fixes; first version master
authorRalph Ronnquist <ralph.ronnquist@gmail.com>
Fri, 7 Jan 2022 10:14:24 +0000 (21:14 +1100)
committerRalph Ronnquist <ralph.ronnquist@gmail.com>
Fri, 7 Jan 2022 10:14:24 +0000 (21:14 +1100)
sitetool/sitetool.lsp
sitetool/sitetool.tcl

index 19c3e808a3af072a3d5148a9ab077b0e5c7c9441..22bccd90904fc6d9a80f2a807655a38ab7c28acf 100644 (file)
@@ -24,7 +24,8 @@
 
 (tk:load-tcl "sitetool.tcl")
 
-(while true
-  (tk:read-loop)
-  (println (eval-string (or (read-line) (exit))))
-  )
+(when nil
+  (while true
+    (tk:read-loop)
+    (println (eval-string (or (read-line) (exit))))
+    ))
index ca4495738254eb343e1fd08e7fb3b784b0ae11db..ede8716a2a9d2966430ad06ea3eb2ecdc1d18a41 100644 (file)
@@ -1,16 +1,36 @@
+#!/usr/bin/wish
 
+# Tell newlisp embedding to exit on window close
 
-# Report dimensions
-#puts [winfo vrootwidth .]
-#puts [winfo vrootheight .]
+bind . <Destroy> {puts {newLISP: (exit)}}
 
-wm title . {Hourglass sitetool}
-#wm geometry . 600x400
+proc loadsite {} {
+    set f [open hourglass.conf]
+    set data [read $f]
+    close $f
+    global site
+    foreach line [split $data \n] {
+       if [regexp {(\S[^ =]*)\s*=\s*(.*)} $line all key value] {
+           set site($key) [string trim $value]
+       }
+    }
+}
 
-## Tell embedding newlisp to (exit) 
-bind . <Destroy> {puts {newLISP: (exit)}}
+loadsite
 
-set count 3
+proc savesite {} {
+    set f [open hourglass.conf w]
+    puts saving
+    global site
+    foreach key [lsort [array names site]] {
+       if {$key != ""} {
+           set v [string trimright $site($key)]
+           puts "$key = >>>$v<<<"
+           puts $f "$key = $v"
+       }
+    }
+    close $f
+}
 
 proc tooltipOn {w name} {
     if {![winfo exist .balloon]} {
@@ -41,9 +61,27 @@ proc tooltipOff {} {
     }
 }
 
+proc leaving {w} {
+    set i [string first value $w]
+    set k [string replace $w $i [expr $i + 4] name]
+    set key [$k cget -text]
+    set value [$w get 1.0 end]
+    global site
+    set site($key) $value
+}
+
+#
+set count 0
+
 proc setting {name defval} {
     global count;
+    global site;
     incr count;
+    if {[array names site $name] != ""} {
+       set defval "$site($name)"
+    } else {
+       set site($name) $defval
+    }
     set wname .fr.settings.name$count ;
     set wvalue .fr.settings.value$count ;
     set weq .fr.settings.eq$count ;
@@ -51,6 +89,7 @@ proc setting {name defval} {
     label $weq -text { };
     text $wvalue -height 1 -wrap none -padx 4 -font sanserif -width 30;
     $wvalue insert end "$defval";
+    bind $wvalue <Leave> [list leaving $wvalue]
     grid $wname -row $count -column 0;
     grid $weq -row $count -column 1;
     grid $wvalue -row $count -column 2;
@@ -59,6 +98,8 @@ proc setting {name defval} {
     bind $wname <Leave> {tooltipOff}
 }
 
+wm title . {Hourglass sitetool}
+
 frame .fr
 frame .fr.settings 
 grid columnconfigure .fr.settings 0 -weight 1 -uniform A;
@@ -83,7 +124,15 @@ setting {ipset.table} {TIMO}
 setting {wui.port} {1070}
 setting {wui.passwd} {htpasswd}
 
-button .fr.exit -text "exit" -command {exit}
 pack .fr.settings
-pack .fr.exit -pady 4
+
+frame .fr.buttons
+
+button .fr.buttons.save -text save -command {savesite}
+button .fr.buttons.exit -text "done" -command {exit}
+
+grid .fr.buttons.save -column 0 -row 0
+grid .fr.buttons.exit -column 1 -row 0
+pack .fr.buttons
+
 grid .fr -column 0 -row 0 -sticky w -padx {10 4} -pady {12 0}