#!/h/paule/autobuild/Linux-bubbles/bin/guile -s
!#

(use-modules (gtk gdk)
             (gtk gtk)
             (gui event-loop)
             (gui entry-port)
             (gui text-output-port))

(define (guile-gui)
  (let* ((window (gtk-window-new 'toplevel))
         (text (gtk-text-new #f #f))
         (entry (gtk-entry-new))
         (vbox (gtk-vbox-new #f 0))
         (port (make-entry-port entry #:paren-matching-style '(highlight-region)))
         (oport (make-text-output-port text))
         (ifont (gdk-font-load "fixed"))
         (icolour (gdk-color-parse "red")))
    (gtk-window-set-policy window #t #t #f)
    (gtk-window-set-default-size window 400 250)
    (gtk-box-pack-start vbox text #t #t 0)
    (gtk-box-pack-end vbox entry #f #f 0)
    (gtk-container-add window vbox)
    (gtk-window-set-title window "Guile")

    (gtk-entry-set-text entry "(inactive)")
    (gtk-widget-set-sensitive entry #f)

    (add-hook! (entry-read-complete-hook entry)
               (lambda (str)
                 (with-fluids ((text-output-font ifont)
                               (text-output-colour icolour))
                              (display str))
                 (newline)))

    (gtk-signal-connect-delayed window
                                "delete-event"
                                (lambda args
                                  (apply throw 'quit args)))

    (gtk-widget-show-all window)

    (set-current-input-port port)
    (set-current-output-port oport)
    (set-current-error-port oport)
    (top-repl)))

(guile-gui)


;;; Local Variables:
;;; mode: scheme
;;; End:
