CLIM mail archive

[Prev][Next][Index][Thread]

Command tables/menus (CLIM 1.0)



    Date: Mon, 11 May 1992 17:24 EDT
    From: Curt Eggemeyer <curt@eraserhead.jpl.nasa.gov>

    This is a quickie how to question.  My situation is as follows:

    I want each of my command-tables to appear as a single item on my
    :command-menu pane.  When I click on one of them then a sub-menu of a
    subset of the commands within that command-table to appear for selection.
    I also want every command within all of my commands invokable from an
    interactor pane. I know I can use add-menu-item-to-command-table or include the sub-command spec in the define-command-table :menu form, but that
    means I have my menu specification separate from my command which seems
    messy.  Is there a way to get something like the example below to do what
    I want?  Is there something trivial I am missing?


    (define-command-table one)  ;it would be nice if there was a :menu t option
    (define-command-table two)

    (define-application-frame whatever () ()
	    (:panes (app :application) (active :interactor)
		    (top-most-menu :command-menu))
	    (layout ((normal
		      (column 1 (:row 1/50 (one 1/2) (two 1/2))
				(:row 1/10)
				(:row :rest app)))))
	    (:command-table (t :inherit-from (one two))))

    (define-command (test1 :command-table one :menu t :name t) () ...)
    (define-command (test2 :command-table one :menu t :name t) () ...)
    (define-command (test3 :command-table one :menu t :name t) () ...)
    ;;Here we have 3 different commands in command-table two but their menu
    ;;items appear similar to those in command-table one's!
    (define-command (test4 :command-table two :menu "test1" :name t) () ...)
    (define-command (test5 :command-table two :menu "test2" :name t) () ...)
    (define-command (test6 :command-table two :menu "test3" :name t) () ...)
     ... etc.
 


The CLIM test suites, the source of which is included with CLIM
distributions in SYS:CLIM;TESTS;TEST-SUITE.LISP, does exactly this.

(define-command-table graphics)

(define-command (... :command-table graphics) ...)
(define-command (... :command-table graphics) ...)

(define-command-table output-recording)

(define-command (... :command-table output-recording) ...)
(define-command (... :command-table output-recording) ...)

...

(define-application-frame clim-tests ()
    ()
  (:command-table (clim-tests
		   :inherit-from (graphics
				  output-recording
				  formatted-output
				  redisplay
				  presentations
				  menus-and-dialogs
				  benchmarks)
		   :menu (("Graphics" :menu graphics)
			  ("Output Recording" :menu output-recording)
			  ("Formatted Output" :menu formatted-output)
			  ("Redisplay" :menu redisplay)
			  ("Presentations" :menu presentations)
			  ("Menus and Dialogs" :menu menus-and-dialogs)
			  ("Benchmarks" :menu benchmarks)
			  ("Exit" :command (exit-clim-tests)))))
  (:command-definer nil)
  (:panes ...)
  (:layout ...))


References:

Main Index | Thread Index