19c3e808a3af072a3d5148a9ab077b0e5c7c9441
[rrq/hourglass.git] / sitetool / sitetool.lsp
1 ;; This is a gui tool for editing the Hourglass site configuration
2
3 (load "runtk.lsp")
4
5 (define (pad TXT (N 0))
6   (string TXT (dup " " (max (- N (length TXT)) 0))))
7
8 (define (wrap TXT (WIDTH 60))
9   (let ((OUT '()) (LN "") (FST 0))
10     (dolist (W (parse (replace "\n" TXT " ") " "))
11       (when (> (+ (length LN) (length W) FST) WIDTH)
12         (push (pad LN) OUT -1)
13         (setf LN "")
14         (setf FST 0))
15       (extend LN (if (= FST) "" " ") W)
16       (setf FST 1))
17     (unless (empty? LN) (push (pad LN) OUT -1))
18     (join OUT "\n")))
19    
20 ; Register all tooltips
21 (dolist (SETTING (parse (read-file "tooltips.txt") "---\n"))
22   (let ((TAG (when (regex "(\\S+)" SETTING 0) $1)))
23     (tk (format "set desc(%s) {%s}" TAG (replace "\n" SETTING " ")))))
24
25 (tk:load-tcl "sitetool.tcl")
26
27 (while true
28   (tk:read-loop)
29   (println (eval-string (or (read-line) (exit))))
30   )