1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#!/bin/sh
exec rep "$0" "$@"
!#
(require 'gtk)
(require 'libglade)
(defvar xml nil)
(defun output (data)
(let
((text-widget (glade-xml-get-widget xml "text1")))
(when (integerp data)
(setq data (make-string 1 data)))
(gtk-text-insert text-widget nil nil nil data (length data))))
(defun entry-key-press (widget event)
(when (string= (gdk-event-string event) "\r")
;; RET
(let
((input (gtk-entry-get-text widget))
error result string)
(output (format nil "\n%s\n" input))
(setq result (condition-case data
(let
((standard-output output))
(eval (read-from-string input)))
(error
(setq error t)
data)))
(let
((print-escape t))
(setq string (format nil "%s %S\n"
(if error "error-->" " =>") result)))
(output string)
(gtk-entry-set-text widget ""))))
(defun window-closed (widget)
(gtk-main-quit))
(setq xml (or (glade-xml-new
(local-file-name
(expand-file-name "./rep-ui.glade"
(file-name-directory load-filename))))
(error "something bad happened")))
;; focus the entry
(let
((entry (glade-xml-get-widget xml "entry1")))
(gtk-widget-grab-focus entry));
(output (format nil "[ rep %s -- %s ]\n\n" rep-version rep-build-id))
(glade-xml-signal-autoconnect xml)
(gtk-main)
;; Local variables:
;; major-mode: lisp-mode
;; End:
|