tk.lsp
#!/usr/bin/newlisp ;; file: tk.lsp ;; provides low-level access to Tcl/Tk (map set '(myin tcout) (pipe)) (map set '(tcin myout) (pipe)) (process "/usr/bin/wish" tcin tcout) (define (tk) (write-line myout (append "if {[catch {puts [" (join (map (lambda (e) (if (symbol? e) (term e) (string e))) (args)) " ") "]}]}" [text] { tk_messageBox -message $errorInfo } [/text])) (read-line myin)) ;; usage example next line: (tk " bind . <Destroy> {puts {(exit)}} ") (map constant '(myin tcout tcin myout tk)) (global 'tk) (map load (2 (main-args))) (set 'event-loop-running nil) (define (read-lines chan) (local (buf) (read chan buf (peek chan)) (string buf))) ;; process incoming newLISP requests (define (event-loop (bool true)) (cond ((null? bool) (set 'event-loop-running nil)) ((null? event-loop-running) (set 'event-loop-running true) (while event-loop-running (local (result) (if (catch (eval-string (read-lines myin)) 'result) result (tk (append "tk_messageBox -icon error -title Error" " -message {" (string result) "}")))))))) (event-loop) ;; eof
6.1.2023
<< | Heimatseite | Verzeichnis | Stichworte | Autor | >>