Previous: Barmenus, Up: Menus

### 3.3 Menu Sets and Menu Conns ¶

A `menu-set` is a set of multiple menus, picmenus, or barmenus that are simultaneously active within the same window. Menu-sets can be used to implement graphical user interfaces. A `menu-conns` is a menu-set that includes connections between menus; this can be used to implement interfaces that allow the user to construct a network from components.

The source file for menu-sets is the GLISP file `menu-set.lsp`; this file is translated as part of the file `drawtrans.lsp` in plain Lisp. Examples of the use of menu sets are given at the top of the file `menu-set.lsp`. In the following descriptions, `ms` is a `menu-set` and `mc` is a `menu-conns`.

`(menu-set-create w)` creates a menu set to be displayed in the window `w`.

`(menu-set-name symbol)` makes a `gensym` name that begins with `symbol`.

`(menu-set-add-menu ms name:symbol sym title items`
`&optional offset:vector)`

This function adds a menu to a menu-set. `sym` is arbitrary information that is saved with the menu.

`(menu-set-add-picmenu ms name sym title spec:picmenu-spec`
`&optional offset:vector nobox)`

`(menu-set-add-component ms name &optional offset:vector)`

This adds a component that has a `picmenu-spec` defined on the property list of `name`.

`(menu-set-add-barmenu ms name sym barmenu title`
`&optional offset:vector)`

`(menu-set-draw ms)` draws all the menus.

`(menu-set-select ms &optional redraw enabled)`

`menu-set-select` gets a selection from a menu-set. If `redraw` is non-`nil`, the menu-set is drawn. `enabled` may be a list of names of menus that are enabled for selection. The result is `(selection menu-name)`, or `((x y) BACKGROUND button)` for a click outside any menu.

`(menu-conns-create ms)` creates a `menu-conns` from a `menu-set`.

`(menu-conns-add-conn mc)`

This function allows the user to select two ports from menus of the `menu-conns`. It then draws a line between the ports and adds the connection to the `connections` of the `menu-conns`.

`(menu-conns-move mc)`

This function allows the user to select a menu and move it. The `menu-set` and connections are redrawn afterwards.

`(menu-conns-find-conn mc pt:vector)`
This finds the connection selected by the point `pt`, if any. This is useful to allow the user to delete a connection:

`(menu-conns-delete-conn mc conn)`

`(menu-conns-find-conns mc menuname port)`
This returns all the connections from the specified `port` (selection) of the menu whose name is `menuname`.

Previous: Barmenus, Up: Menus