(in-package :lisp-on-lines) (deflayer dojo) #+nil(define-layered-class description :in-layer dojo () ((dojo-type :accessor dojo-type :initarg :dojo-type :initform nil :special t))) (define-layered-function display-as-dojo-type (type description object component)) (defdisplay :in-layer dojo :after (description object) (when (dojo-type description) (display-as-dojo-type (dojo-type description) description object self))) (defcomponent combo-results () ()) (defmethod render ((self combo-results)) (<:as-is (js:js* `(array ,@(loop for r in (results self) for n upfrom 0 collect `(array , (with-output-to-string (s) (yaclml:with-yaclml-stream s (display self r :type 'as-string))) ,n)))))) (define-layered-method display-as-dojo-type ((type (eql 'combo-box)) attribute object component) (let* ((search-function (search-function attribute)) (select-function (select-function attribute)) (select-callback (ucw::make-new-callback (lambda (x) (funcall select-function (parse-integer x)))))) "The combo box widget" (