On Tue, Aug 30, 2005 at 04:38:13AM +0200, Max-Gerd Retzlaff wrote:
Hello,
My File Selector is completed.
Oh, I've forgotten to mention that it is no real gadget that will be called when there is an (ACCEPT 'PATHNAME) in the +gadget-dialog-view+ (or other gadget-views). For that WITH-OUTPUT-AS-GADGET would have to work (compare my earlier mail about that).
But it is a normal ACCEPTING-VALUES dialog that can be displayed in a seperate, new window or "embedded" into a pane of the host application. Actually it is quite uncomplicated in its use, I think.
Right now it inserts a VRACK-PANE in the children slot of the parent's parent and adopts the former children into another VRACK-PANE that is a child of the other VRACK-PANE. (If the parent is embedded into a SCROLLER-PANE it gets the SCROLLER-PANEs parent, if that's again embedded into a BORDER-PANE it gets its parant.) Afterwards, if it was embedded into another pane, the original pane hierarchy is reconstruced.
And the temporary panes are forgotten.
Apropos forgotton, please have a look at the function FORGET-NAMED-PANE and its comment in the beginning of file-selector.lisp:
(in-package :climi)
;;; This is rather ugly. But right now named panes are pushed onto the ;;; slot FRAME-NAMED-PANES of the frame (in an :around method to ;;; make-pane-1 in frames.lisp) and *never* removed. Not nice, as the ;;; File Selector makes temporary panes that are nevertheless named. ;;; Even more ugly as they get the same name on every call of the File ;;; Selector. Apart from the accumulation of unused panes, which pane ;;; will be returned if I call (find-pane-named *application-frame* ;;; 'files) and there are several panes with this name? Therefore the ;;; panes are right now manually removed by the following function.
(defun forget-named-pane (pane &optional (frame *application-frame*)) (setf (frame-named-panes frame) (delete pane (frame-named-panes frame))))
Yeah.
Regards, Max