CLIM mail archive


Re: clim problem

    There is one one main window, with a main menu and several objects;
    the objects are mouse sensitive, so when one is selected, a window
    is opened with some information about the object. Now, the user has
    to discard the window, if he wants to go further. But I would like
    to give the user the ability to have several such windows active
    at the same time. to open some more and to close some others...
    How must I do ?

I have an application which does exactly the same thing -- I get
the parallelism by using the multiprocessing (mp) package in
Allegrocl.  Here is the code I use to invoke or kill the sub-frame
from the main application frame:

	;; 'node-editor' is the sub-application-frame type;
	;; one of its slots; is ne-proc, which holds the running
	;; process, if there is one

	(defmethod run-node-editor ((editor node-editor))
	  (with-slots (ne-proc) editor
	    (cond (ne-proc
		   ;; process already running -- move to top
		   (window-expose (frame-top-level-window editor)))
		   ;; no process running -- start one
		   (setf ne-proc
			  #'run-frame-top-level editor))))))

	(defmethod close-node-editor ((editor node-editor))
	  (with-slots (ne-proc) editor
	    (when ne-proc
	      (let ((temp ne-proc))
		(setf ne-proc nil)
		(mp:process-interrupt temp #'frame-exit editor)))))


Main Index | Thread Index