*layout-divider-default-size* deprecated
Unable to parse email body. Email id is 7330
Unable to parse email body. Email id is 7330
I'd like to override (setf capi:layout-description) for a class of
mine, but the method I define is never called. I can't figure out what
I'm doing wrong.
In the example below, my method should just print a message to show
that it was called, but it doesn't. Thanks for any help.
Mitch
;;; clear-pinboard-objects is called when clear-button is pressed.
;;; Since (setf capi:layout-description) is overridden for the
;;; my-pinboard-layout class, the pinboard shouldn't be cleared.
;;; Instead the string from the following defmethod should print
(defun clear-pinboard-objects (pinboard)
(print "My layout-description will be called next")
(setf (capi:layout-description pinboard) nil))
(defmethod (setf capi:layout-description)
((pinboard my-pinboard-layout) objects)
(declare (ignore objects))
(print "My layout-description was called"))
(defclass my-pinboard-layout (capi:pinboard-layout)
()
(:default-initargs
:background :red))
(capi:define-interface my-pinboard ()
()
(:panes
(clear-button
capi:push-button
:text "Clear? Pinboard"
:callback-type :none
:callback #'(lambda ()
(clear-pinboard-objects pinboard))))
(:layouts
(buttons
capi:row-layout
'(clear-button))
(pinboard
my-pinboard-layout
nil
:draw-pinboard-objects :local-buffer)
(main-layout
capi:column-layout
'(pinboard buttons)
:x-adjust :centre))
(:default-initargs
:layout 'main-layout
:best-width 400
:best-height 400))
(defun test-my-pinboard ()
(capi:display (make-instance 'my-pinboard)))
On Sun, 06 Jan 2008 23:49:22 -0500, Mitch <mitch@bermita.com> wrote:
> (defmethod (setf capi:layout-description)
> ((pinboard my-pinboard-layout) objects)
> (declare (ignore objects))
> (print "My layout-description was called"))
When you define SETF functions, the "new value" must be the first
argument, i.e. in your case it should be
(defmethod (setf capi:layout-description)
(objects (pinboard my-pinboard-layout))
...
Edi.