For those interested, I have a mostly portable version of accept-values-pane
running on lispworks CLIM and today I have it semi-working on McCLIM.
Here is the patch file I load to supply missing parts of McCLIM. It would be
cool
if someone could add this functionality to the code base.
I plan to post my code in a few days once I figure out how to handle radio-box.
The spec and McCLIM have radio-box :choices and :current-selection as
toggle-button
objects. CLIM makes things a bit easier so I want to make a wrapper around the
button-object constraint.
What's really missing in McCLIM are list-pane and option-pane gadgets.
Another thing. CLIM puts with-look-and-feel-realization in the expansion of
with-output-to-gadget. It would be good if McCLIM did as well. I don't think
the spec forbids that.
Paul
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
;;; -*- Package: clim-internals -*-
(in-package :clim-internals)
;;; Add missing view classes and +xxx-view+ objects.
(macrolet ((frob (name)
(let ((sym (intern (string name) :clim-internals))
(par (intern (concatenate 'string "+" (string name) "+")
:clim-internals)))
`(progn
(defclass ,sym (clim:gadget-view)())
(import '(,sym ,par) :clim)
(export '(,sym ,par) :clim)
(defparameter ,par (make-instance ',sym))))))
(frob toggle-button-view)
(frob push-button-view)
(frob radio-box-view)
(frob check-box-view)
(frob slider-view)
;(frob text-field-view)
(frob text-editor-view)
(frob list-pane-view)
(frob option-pane-view)
)
(import '(name-key value-key test documentation-key) :clim)
(export '(name-key value-key test documentation-key) :clim)
(defun accept-present-default
(type stream view default default-supplied-p present-p query-identifier)
(funcall-presentation-generic-function accept-present-default
type stream view default default-supplied-p present-p query-identifier))
(defmethod pane-frame ((pane standard-encapsulating-stream))
(pane-frame (encapsulating-stream-stream pane)))
(defmethod invoke-with-sheet-medium-bound
(continuation (medium null) (sheet standard-encapsulating-stream))
(invoke-with-sheet-medium-bound continuation medium
(encapsulating-stream-stream sheet)))