Manual

Main API Application Menu Commands

# API Application Menu Commands

For background information about the commands described on this page, refer to the information about user interface extension in the corresponding section of the API reference. Alternatively, you can use user interface configuration to control more aspects of the user interface.

On this page, API commands of the application menu category are described. This category covers all commands to extend the uDraw(Graph) user interface by attaching dialog elements (i.e. menus and icons) that are exclusively used by the application. The commands of this category are enclosed by keyword "app_menu(...)". They are not available when command-line option -nogui has been used. In this case you have to use the commands of category graphical user interface instead. Click here to get an overview of all API commands.

## app_menu(create_menus(menus))

Creates a menu for the application specified by list "menus" which are attached to the Edit menu in the uDraw(Graph) user interface. Details about application menus are available in the user interface extension guide. The menus are built hierarchically, so they may contain submenus to realize cascades. The menus will appear in the same order in the user interface as the entries in the list. The parameter "menus" is also used for pop-up menus that are created by using the pop-up menu node attribute and pop-up menu edge attribute in the graph, so special cases for pop-up menus are described here. The following menu entry elements can be used in list "menus":

- menu_entry(menu_id,menu_label)

  A single menu entry, where "menu_id" is the identifier sent back to the application with answer menu_selection(...) when the user selects this entry. Further, the "menu_id" can be used with command app_menu(activate_menus(...)) to enable this menu entry in the user interface. "menu_label" is the text of the entry that will appear in the menu.

  Note: The parameter "menu_label" can be a language key starting with "#%..." to use the internationalization feature for multilingual interfaces. This menu entry does not have a mnemonic, so for regular pull-down menus you should use menu_entry_mne(...) instead to provide access by keyboard. But use "menu_entry(...)" for pop-up menus, because naturally they cannot be controlled with the keyboard.

- menu_entry_mne(menu_id,menu_label,menu_mne,menu_mod,menu_acc)

  Same as menu_entry(...) above, but with three additional parameters. "menu_mne" is a string with one character used as mnemonic, so this character must exist in parameter "menu_label". The mnemonic character will be underlined in the menu for keyboard access. The last two parameters are used to specify an optional keyboard accelerator. Parameter "menu_mod" is the modifier key, either alt, shift, control, meta, none (do not quote this parameter, e.g. no "alt"!). "menu_acc" is the accelerator key. So with the alt modifier and "A" for the accelerator key, you can select the corresponding menu entry by pressing "Alt" and "A" together on the keyboard. The accelerators of existing uDraw(Graph) menus must not be overloaded, so do not use the control modifier with O, S, P, C, X, N, L, T, F, A or I.

  Example:
  menu_entry_mne("id1","my menu","y",alt,"m")

  Note: The parameters "menu_label", "menu_mne" and "menu_acc" can be a language key starting with "#%..." to use the internationalization feature for multilingual interfaces. The parameter "menu_mod" is an enumeration and not a string, but here you can use the unquoted value lookup followed by a "string" which is a language key. Note that this string must not begin with "#%...", although it is a language key used to retrieve the actual text from the translation table. Simply remove the "#%" when you use a language key for this parameter, because the lookup in the translation table is done in any case, so the distinction between a usual string (without "#%") and a language key (with "#%") is not necessary here.

  Example:
  menu_entry_mne("id1","#%m1","#%m1_mne",lookup "#%m1_mod","#%m1_acc")

  For pop-up menus, the entry "menu_entry_mne(...)" is not recommended, because naturally pop-up menus cannot be controlled with the keyboard. Use entry menu_entry(...) instead.

- menu_entry_disabled(menu_id,menu_label)

  Same as menu_entry(...) above, but here the entry is always deactivated and can never be selected with the mouse. Do not use this entry for regular pull-down menus, because these entries can be activated (and deactivated) with API command app_menu(activate_menus(...)). This is not possible in pop-up menus, where the menu is an attribute value of a particular node/edge. To activate and deactivate entries in a pop-up menu, you have to create a new menu with normal and deactivated entries. Afterwards, you have to set this menu as the value of the pop-up menu attribute for the node/edge, either with command graph(change_attr(...)) or more easily with types and visualization definitions.

  Note: The parameter "menu_label" can be a language key starting with "#%..." to use the internationalization feature for multilingual interfaces.

- submenu_entry(menu_id,menu_label,menus)

  A submenu (i.e. cascade) that contains another list of menu entries, specified by parameter "menus". "menu_id" can be used with command app_menu(activate_menus(...)) to enable this submenu in the user interface. Submenus can be opened by the user, but not selected, so their "menu_id" will never be sent back to the application with a menu selection event. You have to read above, because all the other information about menu_entry(...) applies to this entry, too.

- submenu_entry_mne(menu_id,menu_label,menus,menu_mne)

  Same as submenu_entry(...), but with an additional mnemonic. You have to read above, because all the other information about menu_entry_mne(...) applies to this entry, too (except for modifier and accelerator which are not present here).

- submenu_entry_disabled(menu_id,menu_label,menus)

  Same as submenu_entry(...), but always disabled. You have to read above, because all the other information about menu_entry_disabled(...) applies to this entry, too.

- blank

  A separator line in the menu to group particular menu entries.

## app_menu(create_icons(icons))

Creates icons for the application specified by list "icons" which are attached to the application plane of the icon bar in the uDraw(Graph) user interface. Details about application icons are available in the user interface extension guide. The icons will appear in the same order in the user interface as the entries in the list. The following icon entry elements can be used in list "icons":

- icon_entry(icon_id,filename,lang_string)

  A single icon entry, where "icon_id" is the identifier sent back to the application with answer icon_selection(...) when the user selects this entry. Further, the "icon_id" can be used with command app_menu(activate_icons(...)) to enable this icon entry in the user interface. The "filename" specifies the file with the bitmap used for the icon. This can be a uDraw(Graph) system bitmap (the settings can be found in the configuration file of the standard user interface in "$UDG_HOME/lib/uDrawGraph/uDrawGraph.menu") or a file name in one of the directories specified by environment variable $UDG_ICONDIR. The bitmap file used for icons must be in X11TM Bitmap format (".xbm") with a size of 18x18 pixel. The third optional parameter "help" is a short text or language key mapping to a text that describes the semantic of the icon operation. The help text is automatically displayed in the footer area of the base window as long as the mouse pointer is over the icon.

  Note: The parameter "string" can be a language key starting with "#%..." to use the internationalization feature for multilingual interfaces.

- blank

  A separator gap in the icon bar in order to group particular icons in a visual manner.

## app_menu(activate_menus(menu_ids))

To activate the application menu entries specified by "menu_ids", so it is possible to select them with the mouse. All the other entries previously created by app_menu(create_menus(...)) and not member of list "menu_ids" are automatically deactivated at the same time, so they cannot be selected by the user. In other words, the application only has to enable the menus that should be available at a time without deactivating the other ones. Details about application menus are available in the user interface extension guide.

Note: after controlling the "File" (see below), the application also has to activate and deactivate the "File" menu entries of the File menu. They have a special menu ID, see user interface extension guide.

## app_menu(activate_icons(icon_ids))

To activate the application icon entries specified by "icon_ids", so it is possible to select them with the mouse. All the other entries previously created by app_menu(create_icons(...)) and not member of list "icon_ids" are automatically deactivated at the same time, so they cannot be selected by the user. In other words, the application only has to enable the icons that should be available at a time without deactivating the other ones. Details about application icons are available in the user interface extension guide.

## app_menu(control_file_events)

After sending this command, the application declares to take control on the events of the uDraw(Graph) File menu. Afterwards, the entries in the "File" menu can be enabled and disabled using command app_menu(activate_menus(...)) just like any other application menu entry. The entries of the "File" menu have a special menu ID, listed in the user interface extension guide. After using this command, uDraw(Graph) will not perform any operation when an entry of the "File" menu is selected by the user. Instead, an event is sent by the API with answer menu_selection(...) to let the application decide what to do. Read more about controlling the "File" menu in the user interface extension guide.