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

question about command menus

    Date: Thu, 1 Nov 90 14:55 PST
    From: maglio%cogsci@ucsd.edu (Paul Maglio)

    Perhaps I'm missing something obvious:  Is there any way to get
    two different command menus in one program framework to share
    menu items?  Like can one command have more than one menu-level?
    Maybe what I want are hierarchical command menus...  

    Any answers, ideas, or comments are greatly appreciated.  


Sure, but the documentation (P76, Book 11, dw:define-program-command) is
incorrect, it shows: 

   ....&key ...
   (menu-level '(:top-level))

which (to me anyway) implies a quoted list of menu levels that you want the
command to appear on.  Actually if you use a NON-quoted list, it works fine,
i.e.   :menu-level (:top-level :another-menu)


Here's an example I tested it out with, it seems to work fine.

;;; -*- Mode: LISP; Syntax: Common-lisp; Package: USER; Base: 10 -*-
(dw:define-program-framework 1oi
0  :select-key #\o
  :command-definer t
  (:inherit-from '("colon full command" "standard arguments" "input editor compatibility")
   :kbd-accelerator-p 'nil)
  :state-variables (
  ((status :display)
   (tasks :display)
   (display :display
	    :redisplay-after-commands t
	    '((dw:margin-scroll-bar )
	      (dw:margin-scroll-bar :margin :bottom)))
   (listener :listener
	     :typeout-window t
	    `((dw:margin-scroll-bar )))
   (menu :command-menu :menu-level :top-level)
   (menu-2 :command-menu :menu-level :menu-2))
     (:layout (dw::main :column row-1 row-2) (row-1 :row column-2 display)
      (column-2 :column status tasks) (row-2 :row menu-2 listener menu))
     (:sizes (dw::main (row-1 .8) :then (row-2 :even))
      (row-1 (column-2 .25) :then (display :even))
      (column-2 (status 5 :lines) :then (tasks :even))
      (row-2 (menu :ask-window self :size-for-pane menu)
	     (menu-2 :ask-window self :size-for-pane menu-2)
	     :then (listener :even))))))

(define-oi-command 1(com-0menu-test
		     :menu-accelerator t
		     :menu-level (:top-level2 0:menu-2))
   (format (dw:get-program-pane 'display) "A test ~%"))