[mcclim-devel] Command translator question

Paul Werkowski pw at snoopy.mv.com
Sat Apr 30 13:02:49 UTC 2005


----- Original Message ----- 
From: "Duncan Rose" <duncan at robotcat.demon.co.uk>
To: <mcclim-devel at common-lisp.net>
Sent: Saturday, April 30, 2005 4:54 AM
Subject: [mcclim-devel] Command translator question


|
| I'm trying to define a presentation command translator which will
| invoke 'describe presentation' on specific types. Unfortunately it
| doesn't work (or at least, works in a way that I'm not expecting so if
| it's working it's not doing what I want ;-)
|
| Looking at the translators defined in the Listener and in
| builtin-commands.lisp hasn't helped. Here's the translator:
|
| (define-presentation-to-command-translator port-select-to-command  ;
| name
|    (t                     ; from-type
|     com-describe          ; command-name - maybe
| com-describe-presentation?
|     global-command-table  ; command table containing command
|     :gesture :select      ; activate on :select (left-button click)
|     ;; :tester ...
|     :documentation
|     "Invoke the 'describe presentation' command on the selected
| presentation"
|     :pointer-documentation ((object stream) (format stream "Describe ~A"
| object))
|     :menu t               ; command should appear in popped-up menus
|     ;; :priority ...
|     :echo nil)            ; don't echo the command when it is invoked
|    ;; arglist must be a subset (using string-equal) of:
|    ;;    (object presentation context-type frame event window x y)
|    (object)
|    ;; body of translator; returns a list of the arguments to the command
|    ;; named by command-name.
|    (list object))
|
| In case I was providing the wrong 'from-type' I changed it to T (all
| types, I hope). I've written this using the Beagle back end but it
| doesn't work for me when run under CLX either...
|
| Any suggestions would be appreciated, I'm obviously missing something...

Well, you have not defined COM-DESCRIBE in the attached glimpse.lisp.
I have never tried using the global command table in translators so I can't
say
for sure that it should work. I have always used the frame command table for
translators.

Just a nit, but I don't ever recall seeing the idiom (setf  x (push thing
x)) used
elsewhere, just (push thing x) will do.

Another nit, you should avoid using unxported CLIMI features.
MAP-OVER-PORTS instead of  CLIMI::*ALL-PORTS*
MAP-OVER-GRAFTS instead of CLIMI::PORT-GRAFTS
would make it possible for me to try this code in a "classic CLIM".

Paul






More information about the mcclim-devel mailing list