dynamically adding & removing widgets

Hazen Babcock <[email protected]> Wed, 4 Jul 2007 23:16:03 -0400
Newsgroups gmane.lisp.clg.devel
Message-ID <[email protected]>
Hello,

I'd like to add/remove widgets from a dialog dynamically. I was  
hoping something like this would work but it does not, i.e "button2"  
is never displayed.

(defun dynamic-test ()
   (let* ((dialog (make-instance 'dialog
				:title "Dynamic Test"
				:show-children t))
	 (button1 (make-instance 'button
				 :label "Button1"))
	 (button2 (make-instance 'button
				 :label "Button2"))
	 (v-box (make-instance 'v-box
			       :parent dialog
			       :show-children t
			       :border-width 5
			       :spacing 5
			       :child button1)))
     (signal-connect button1 'clicked #'(lambda ()
					 (format t "Adding~%")
					 (container-add v-box button2)))
     (signal-connect button2 'clicked #'(lambda ()
					 (format t "Removing~%")
					 (container-remove v-box button2)))
     (dialog-add-button dialog
		       "gtk-close"
		       #'widget-destroy
		       :object t)
     (dialog-run dialog)))

Suggestions? Do I need to force a redraw? I think this is possible  
with gtk, but maybe not?

thanks,
-Hazen


-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/