I have a mostly portable implementation of ACCEPT-VALUES-PANE running in Lispworks CLIM. For those that don't know, the accept-values-pane is a gadget based non modal dialog.
A display function for an accept-values-pane might contain code like this:
(with-slots (some-value) pane (setq some-value (accept '(member A B C) :stream pane :default some-value :view '(radio-box-view :orientation :vertical) :prompt "Pick one")))
ACCEPT is supposed to do apply MAKE-INSTANCE to the CAR and CDR of the :view parameter and the stuff in the cdr is passed on to the gadget. In this example the presentation method ACCEPT-PRESENT-DEFAULT calls (apply 'MAKE-PANE 'RADIO-BOX-PANE <stuff> VIEW-OPTIONS). But, there is no defined way to get the supplied values. Lispworks CLIM has an internal function named CLIM-INTERNALS::VIEW-GADGET-INITARGS that retrieves them.
It seems that the VIEW class has only two functions. The first is to be a class so generic functions can specialize on subclasses of it, and the second is to pass gadget options via the :view keyword to ACCEPT.
This functionality is pretty important for usable gadget based dialogs so I hope the McCLIM architects can consider how this can be added to the code base.
Paul
Paul Werkowski wrote:
I have a mostly portable implementation of ACCEPT-VALUES-PANE running in Lispworks CLIM. For those that don't know, the accept-values-pane is a gadget based non modal dialog.
...
This functionality is pretty important for usable gadget based dialogs so I hope the McCLIM architects can consider how this can be added to the code base.
Paul
I don't quite understand. Do you have an implementation of accept values panes that you'd like to share, or you're using it in CLIM and would like to use it in McCLIM too? This is an important project that shouldn't be too hard to knock off, given the structure of the current accepting-values code, command table, etc. We would have to understand / solve keyboard focus issues.
As for view object values, there is code in classic CLIM to pass on the "init args" passed to a view object as extra arguments to make-pane; it is probably worthwhile to do that in McCLIM too.
Tim