[mcclim-devel] Is list-pane not fully implemented?

Stas Boukarev stassats at gmail.com
Tue Aug 7 17:52:01 UTC 2012


P C <psilocidal at gmail.com> writes:

> Hello,
>
> I've been trying to get my list-panes fully operational, but it seems as I
> take one step forward, something else seems to push me back two steps.
>
> It is frustrating, but I am more grateful to be learning these tools,
> because this is really the only way I will be exposed to CL. It seems that
> at first, my lists didn't seem to want to be nonexclusive. I found out that
> the problem with that was my McCLIM directory in quicklisp had about half
> of the files missing (?). I don't know how that happened. Then after I
> figured that out, when I try to update the items of the list using (setf
> (list-pane-items pane) new-items), it says there is no generic function to
> handle this. Maybe my problem comes from my work around. This is what I did.
>
> (with-slots
>        (pane)
>      *application-frame*
>    (with-slots
>           (items)
>         pane
>       (setf (climi::list-pane-items (find-pane-named *application-frame*
> 'pane)) new-items-list)))
>
> Is all of this necessary? It seems the second (with-slots ...) is not
> necessary.
>
> I've read through the gadgets.lisp and it seems that the defgeneric and
> defmethods are defined appropriately, but (setf list-pane-items) or (setf
> climi::list-pane-items) errors out as no generic function. Is there a way
> better than what I did?
>
> After I use this to update my list, it redisplays with only half of the
> items; 1500 instead of 3000. Is this a limit of the size that a list-pane
> can handle; or is this from my work around?
>
> Also I would like to mention, :scroll-bars and :visible-items keys don't
> work for me. Are these known bugs? When I had :scroll-bars t and tried to
> update my list, the whole screen became transparent except for around the
> borders where it was refracted.

Try this instead:

(define-application-frame test ()
  ()
  (:menu-bar t)
  (:panes
   (list (make-pane 'list-pane)))
  (:layouts
   (default
    (scrolling (:scroll-bar :vertical)
      list))))

(define-test-command (com-add-items :name t :menu t) ()
  (let ((list-pane (find-pane-named *application-frame* 'list)))
    (setf (clim-extensions:list-pane-items list-pane)
          (loop for i to 3000 collect i))))

(defun test ()
  (run-frame-top-level (make-application-frame 'test)))

-- 
With best regards, Stas.




More information about the mcclim-devel mailing list