




Generates a popup menu or menu-component.
A pane in an interface.
An interface or 
nil
.
A string or 
nil
.
A string or 
nil
.
A boolean.
The generic function 
make-pane-popup-menu
 generates a popup menu for 
pane
.
interface
 can be 
nil
 if 
pane
 has already been created, in which case the 
interface
 of 
pane
 is used (obtained by the element accessor 
element-interface
).
title
 and 
menu-name
 provide a title and name for 
menu
. 
title
 and 
menu-name
 both default to 
nil
.
If 
component-p
 is true, then 
make-pane-popup-menu
 creates a menu-component rather than a menu. The default value of 
component-p
 is 
nil
.
This code makes an interface with two graph-panes. The 
initialize-instance
 method uses 
make-pane-popup-menu
 to add a menu to the menu bar from which the user can perform operations on the graphs. 
Note that, because 
make-pane-popup-menu
 calls 
make-menu-for-pane
 to make each menu, the callbacks in the menus are automatically done on the appropriate graph.
(capi:define-interface gg ()
  ()
  (:panes
   (g1 capi:graph-pane)
   (g2 capi:graph-pane))
  (:layouts
   (main-layout capi:column-layout '(g1 g2)))
  (:menu-bar)
  (:default-initargs
   :visible-min-width 200
   :visible-min-height 300))
 
(defmethod initialize-instance :after ((self gg)
                                       &key)
  (with-slots (g1 g2) self
    (setf
     (capi:interface-menu-bar-items self)
     (append
      (capi:interface-menu-bar-items self)
      (list 
       (make-instance
        'capi:menu
        :title "Graphs"
        :items
        (list 
         (capi:make-pane-popup-menu 
          g1 self :title "graph1")
                   
         (capi:make-pane-popup-menu 
          g2 self :title "graph2"))))))))
 
(capi:display (make-instance 'gg))