[mcclim-cvs] CVS mcclim/Examples
dlichteblau
dlichteblau at common-lisp.net
Wed Dec 27 14:47:24 UTC 2006
Update of /project/mcclim/cvsroot/mcclim/Examples
In directory clnet:/tmp/cvs-serv17453/Examples
Modified Files:
demodemo.lisp
Log Message:
As an extension, recognize an initarg :PRESENTATION-TYPE-KEY to the list
pane. Like :VALUE-KEY and :NAME-KEY, it can specify a function to be
called for each list item. The presentation type key can return NIL, or a
presentation type to be used for the item.
If such a type is returned, selection of the item will throw a
presentation of that type before the value-change callback is called.
In addition, right click will be recognized on the list pane and open
a presentation menu.
* gadgets.lisp (META-LIST-PANE): New slot presentation-type-key.
((VALUE-CHANGED-CALLBACK :BEFORE META-LIST-PANE)): Optionally
throw a presentation. (AD-HOC-PRESENTATION,
OUTPUT-RECORD-HIT-DETECTION-RECTANGLE*): New class and method.
(GENERIC-LIST-PANE-HANDLE-RIGHT-CLICK,
META-LIST-PANE-CALL-PRESENTATION-MENU): New functions.
((HANDLE-EVENT GENERIC-LIST-PANE)): Handle right clicks.
* Examples/demodemo.lisp (list-pane-test): Modified to demonstrate
presentation-type-key.
* Backends/gtkairo/event.lisp (HANDLE-EVENT-P): New generic
function. (BUTTON-HANDLER): Trap the event only if handle-event-p
returns true.
* Backends/gtkairo/gadgets.lisp ((HANDLE-EVENT-P GTK-LIST),
(CONNECT-NATIVE-SIGNALS GTK-LIST)): Handle right clicks.
(GTK-LIST-ONE-VALUE): New function. ((HANDLE-EVENT GTK-LIST)):
Call meta-list-pane-call-presentation-menu.
--- /project/mcclim/cvsroot/mcclim/Examples/demodemo.lisp 2006/12/24 14:27:48 1.16
+++ /project/mcclim/cvsroot/mcclim/Examples/demodemo.lisp 2006/12/27 14:47:24 1.17
@@ -218,7 +218,9 @@
(make-pane 'list-pane
:value 'clim:region-intersection
:items (apropos-list "INTER" :clim t)
- :name-key (lambda (x) (format nil "~(~S~)" x)))))
+ :presentation-type-key (constantly 'list-test-symbol)
+ :name-key (lambda (x) (format nil "~(~S~)" x))))
+ (interactor :interactor :height 200))
(:layouts
(defaults
(labelling (:label "Matching symbols"
@@ -230,7 +232,17 @@
substring
(make-pane 'push-button
:label "Update"
- :activate-callback 'update-list-test)))))))
+ :activate-callback 'update-list-test))
+ interactor)))))
+
+(define-presentation-type list-test-symbol ())
+
+(define-list-test-command com-describe-symbol
+ ((sym 'list-test-symbol :gesture :select))
+ ;; Let's print only three lines, we don't have space for more.
+ (with-input-from-string (s (with-output-to-string (s) (describe sym s)))
+ (dotimes (x 3)
+ (write-line (read-line s nil "") *standard-input*))))
(defun update-list-test (pane)
(declare (ignore pane))
More information about the Mcclim-cvs
mailing list