With the latest McCLIM CVS, displaying a gadget within accepting-values seems to work quite well now. Unfortunately, I feel that I'm doing something wrong with the functionality. At first, I tried to simply call throw-object-ptype from my gadget's value-changed-callback (it inherits from value-gadget), but that seemed to have no effect. The function was called, but I'm unsure how that thrown value was supposed to propogate. Who is supposed to "catch" it? I finally settled on the following to get my value properly propogated:
:value-changed-callback #'(lambda (gadget value) (declare (ignore gadget)) (let ((query (find query-identifier (climi::queries climi::*accepting-values-stream*) :key #'climi::query-identifier :test #'equal))) (setf (climi::value query) value) (setf (climi::changedp query) t)) (climi::throw-object-ptype value `(trait-rating ,max)) (debug-msg "Gadget value changed to: ~A" value))
The throw-object-ptype at near the bottom of the callback remains, but doesn't appear to do anything. This method strikes me as quite unclean for a few reasons, not the least of which is relying on a few unexported symbols from clim-internals.
One other thing: com-select-query is not called during the operation of my gadget. Looking at the behavior of the popup menu, I see that it is displayed as a simple value until the query is selected, at which point select-query blocks waiting for the user to make a choice from the newly-drawn popup menu. I'm not sure how to do functionality similar to that in my case. The user may at any time click my gadget to change its value, and I am unsure how to tie in select-query for two reasons:
1) I still don't quite get presentation-to-command-translators, so I don't know how I can make any click on my gadget also translate into com-select-query, as well as having the click register with my gadget to properly change its value.
2) Even if I get com-select-query to be called, I'm unsure how I would block within select-query until the user selects a value in the query.
Could anyone help me shed some light on these issues?
Anthony W. Juckel