Hi Kenny,

I never quite finished that expander stuff when I was doing it before.  I ran
into difficulties with the up/down icons but I think I know how to fix
that now.  However
there seems to be another problem.  If you try evaluate the test-window form at
the bottom, every second time, you get "Tcl Error: out of stack
space".  I think there
must be something that needs to be destroyed somewhere but none of the other
composite widgets seem to have to do that.

Any ideas?


(defmodel expander (frame-stack)
  ((label :initarg :label :accessor label :initform (c-in nil))
   (expansion :initarg :expansion :accessor expansion :initform nil)
   (expanded :initarg :expanded :accessor expanded :initform (c-in nil)))
  (:default-initargs
    :fm-parent (error "expander widget must have some kind of parent")))


(defmacro mk-expander ((&rest inits) &body body)
  `(make-instance 'expander
                  ,@inits
                  :fm-parent *parent*
                  :expansion (c? (the-kids ,@body))
                  :expanded (c-in t)
                  :kids (c? (the-kids
                             (mk-button-ex ((^label) (setf (expanded
(upper self expander))
                                                          (not
(expanded (upper self expander))))))
                             (^expansion)))
                  :kids-packing (c? (when (^kids)
                                      (if (^expanded)
                                          (format nil "pack~{ ~a~} -side top 
-anchor nw  -padx ~a -pady ~a"
                                                  (mapcar 'path (^kids))
                                                  (^padx) (^pady))

                                          (format nil "pack forget~{ ~a~}"
                                                  (mapcar 'path (cdr 
(^kids)))))))))


(defmodel expander-test (window)
  ()
  (:default-initargs
      :kids (c? (the-kids
                 (mk-stack (:packing (c?pack-self))
                   (mk-expander (:label "hi")
                     (mk-label :text "hi")
                     (mk-label :text "ho")))))))

(test-window 'expander-test)
_______________________________________________
cells-devel site list
[email protected]
http://common-lisp.net/mailman/listinfo/cells-devel

Reply via email to