CLIM mail archive

[Prev][Next][Index][Thread]

Accept Values pane



Hi - I'm having a problem with an accept-values pane (I think), and I'm 
hoping somebody here can help.

I'm trying to use an accept-values pane, whose contents can vary.  
Below is code that demonstrates my problem.  When I run this, the 
accept-values pane (called 'editors) displays some radio boxes which
I can click.  If I press the "Next" command button, the old radio boxes
disappear, and new ones are displayed.  This is just what I want.

However, if instead of clicking the "Next" button, I click the "Test"
option in the list-pane 'slots, I get sort of a partial prompt for the
new choices, but in the interactor pane instead!  If I press return
to that prompt, THEN the 'editors pane displays as I want, with the
new radio boxes.
 
I get the feeling I'm doing something illegal here, but I can't see what
it is.  Any ideas?

(btw, I'm using Allegro CL 4.2.beta.2.0 and CLIM 2.0.beta)

Thanks!!!

... Rick
Martin Marietta Astronautics
duffy@pogo.den.mmc.com

______________________________________________________________________

;; -*- Mode: Lisp; Syntax: ANSI-Common-Lisp; Package: CLIM-USER; Base: 10 -*-

(in-package :clim-user) 

(clim:define-application-frame xtest ()
  ((choices :initform '("CHOICE1" "CHOICE2" "CHOICE3")))
  (:command-table (xtest :inherit-from  (accept-values-pane)))
  (:pointer-documentation t)
  (:panes 
   (editors :accept-values
            :display-function
            `(accept-values-pane-displayer
              :displayer ,#'(lambda(f s) (display-editors f s))))
   (commands :interactor :height '(5 :line))
   (slots list-pane :mode :nonexclusive
          :value-changed-callback #'slot-selected :items '("TEST2")))
  (:layouts
   (default
         (vertically () 
           (:fill (horizontally () (1/4 slots) (:fill editors)))
           (1/5 commands)))))


;; display-editors - accept new stuff in editors pane
;;
(defmethod display-editors (frame stream)
  (with-slots (choices) frame
    (accept `(subset ,@choices) :stream stream)))
  
;; NEXT command button - set new choices, then redisplay editor pane
;;
(define-xtest-command (com-next :menu "Next")
    ()
  (with-slots (choices) *application-frame*
    (setf choices '("NEWCHOICE1" "NEWCHOICE2" "NEWCHOICE3"))
    (redisplay-frame-pane *application-frame* 'editors :force-p t)))

;; TEST List-pane option - implement same behaviour as NEXT button
;;
(defmethod slot-selected (list-pane items)
  (com-next))

;; run the test
;;
(defun testit ()
  (clim:run-frame-top-level (clim:make-application-frame 'xtest)))


 



Main Index | Thread Index