I would like to simulate a modal dialog, contained in its own window, via an ACCEPTING-VALUES inside a frame opened with OPEN-WINDOW-STREAM. I use code like this:
(in-package :clim-user)
(define-application-frame window-stream () () (:menu-bar t) (:panes (commands :interactor)) (:layouts (default commands)))
(defun show-dialog (stream) (let (integer string) (restart-case (accepting-values (stream) (setq integer (accept 'integer :stream stream :prompt "Gimme an integer ")) (terpri stream) (setq string (accept 'string :stream stream :prompt "Gimme a string ")) (terpri stream)) (abort () nil)) (values integer string)))
(define-window-stream-command (com-dialog :menu t :name t) () (let ((stream (open-window-stream))) (unwind-protect (multiple-value-bind (integer string) (show-dialog stream) (format t "~&You entered ~D and ~A~%" integer string)) (when (open-stream-p stream) (frame-exit (pane-frame stream)) (close stream)))))
(define-window-stream-command (com-quit :menu t :name t) () (frame-exit *application-frame*))
This mostly works, but the CLIM frame opened with OPEN-WINDOW-STREAM is not closed. I tried using only CLOSE in COM-DIALOG, but without success. How can I close that window?
Paolo