create or modify drop-down menu
More...
|
#define | menu_attach(a, b, c, d) mt_menu_attach(a,b,c,d,aes_global) |
|
#define | menu_bar(a, b) mt_menu_bar(a,b,aes_global) |
|
#define | menu_click(a, b) mt_menu_click(a,b,aes_global) |
|
#define | menu_icheck(a, b, c) mt_menu_icheck(a,b,c,aes_global) |
|
#define | menu_ienable(a, b, c) mt_menu_ienable(a,b,c,aes_global) |
|
#define | menu_istart(a, b, c, d) mt_menu_istart(a,b,c,d,aes_global) |
|
#define | menu_popup(a, b, c, d) mt_menu_popup(a,b,c,d,aes_global) |
|
#define | menu_register(a, b) mt_menu_register(a,b,aes_global) |
|
#define | menu_settings(a, b) mt_menu_settings(a,b,aes_global) |
|
#define | menu_text(a, b, c) mt_menu_text(a,b,c,aes_global) |
|
#define | menu_tnormal(a, b, c) mt_menu_tnormal(a,b,c,aes_global) |
|
#define | menu_unregister(a) mt_menu_unregister(a,aes_global) |
|
|
short | mt_menu_attach (short me_flag, OBJECT *me_tree, short me_item, MENU *me_mdata, short *global) |
|
short | mt_menu_bar (OBJECT *me_tree, short me_mode, short *global) |
|
short | mt_menu_click (short click, short setit, short *global) |
|
short | mt_menu_icheck (OBJECT *me_tree, short me_item, short me_check, short *global) |
|
short | mt_menu_ienable (OBJECT *me_tree, short me_item, short me_enable, short *global) |
|
short | mt_menu_istart (short me_flag, OBJECT *me_tree, short me_imenu, short me_item, short *global) |
|
short | mt_menu_popup (MENU *me_menu, short me_xpos, short me_ypos, MENU *me_mdata, short *global) |
|
short | mt_menu_register (short ap_id, char *me_text, short *global) |
|
short | mt_menu_settings (short me_flag, MN_SET *me_values, short *global) |
|
short | mt_menu_text (OBJECT *me_tree, short me_item, char *me_text, short *global) |
|
short | mt_menu_tnormal (OBJECT *me_tree, short me_item, short me_normal, short *global) |
|
short | mt_menu_unregister (short id, short *global) |
|
create or modify drop-down menu
The Menu Library assists in the handling of system menu bars and popup menus. In addition, individual control of menu items can also be handled through these functions.
short mt_menu_attach |
( |
short |
me_flag, |
|
|
OBJECT * |
me_tree, |
|
|
short |
me_item, |
|
|
MENU * |
me_mdata, |
|
|
short * |
global_aes |
|
) |
| |
allows an application to attach, change, or remove a sub-menu. It also allows the application to inquire information regarding a currently defined sub-menu.
- Parameters
-
me_flag | indicates the action the application desires as follows:
- ME_INQUIRE (0) Return information on a sub-menu attached to the menu item designated by me_tree and me_item in me_mdata.
- ME_ATTACH (1) Attach or change a sub-menu. me_mdata should be initialized by the application. me_tree and me_item should be the OBJECT pointer and index to the menu which is to have the sub-menu attached. If me_mdata is NULL, any sub-menu attached will be removed.
- ME_REMOVE (2) Remove a sub-menu. me_tree and me_item should be the OBJECT pointer and index to the menu item which a sub-menu was attached to. me_mdata should be NULL.
|
me_tree | see above |
me_item | see above |
me_mdata | see above |
global_aes | global AES array |
- Returns
- 0 if an error occurred and the sub-menu could not be attached or 1 if the operation was successful.
- Since
- This function is only available from AES version 3.30 and above. In AES versions 4.0 and greater, mt_appl_getinfo() should be used to determine its exact functionality.
AES versions supporting mt_menu_attach() less than 4.1 contain a bug which causes the AES to crash when changing or removing a sub-menu attachment. At present, if you wish to attach a scrolling menu, the menu items must be G_STRING's. The ob_x and ob_y fields of the root menu object should always be set to 0 prior to making the mt_menu_attach() call. In addition, under AES 3.40, no more than one scrolling sub-menu should be contained in each tree.
If a menu bar having attachments is removed with mt_menu_bar( NULL, MENU_REMOVE ) those attachments are removed by the system and must be reattached with this call if the menu is redisplayed at a later time.
Several recommendations regarding sub-menus should be adhered to:
- Menu items which will have sub-menus attached to them should be padded with blanks to the end of the menu.
- Menu items which will have sub-menus attached to them should not have a keyboard equivalent.
- Sub-menus will display faster if a byte-boundary is specified.
- Sub-menus will be shifted vertically to align the start object with the main menu item which it is attached to.
- Sub-menus will always be adjusted to automatically fit on the screen.
- There can be a maximum of 64 sub-menu attachments per process (attaching a sub-menu to more than one menu item counts as only one attachment).
- Do not attach a sub-menu to itself.
- As a user-interface guideline, there should only be one level of sub-menus, though it is possible to have up to four levels currently.
- mt_menu_istart() works only on sub-menus attached with mt_menu_attach().
- See also
- mt_menu_istart(), mt_menu_settings(), mt_menu_popup()
short mt_menu_bar |
( |
OBJECT * |
me_tree, |
|
|
short |
me_mode, |
|
|
short * |
global_aes |
|
) |
| |
displays a specialized OBJECT tree on the screen as the application menu. It can also be used to determine the owner of the currently displayed menu bar in a multitasking AES.
- Parameters
-
me_tree | is a pointer to an OBJECT tree which has been formatted for use as a system menu. |
me_mode | is a flag indicating the action to take as follows:
- MENU_REMOVE (0) Erase the menu bar specified in me_tree.
- MENU_INSTALL (1) Display the menu bar specified in me_tree.
- MENU_INQUIRE (-1) Return the AES application identifier of the process which owns the currently displayed system menu. me_tree can be set to NULL. The AES version must be greater than 4.0 and mt_appl_getinfo() with AES_INQUIRE mode must indicate that this is feature is supported.
|
global_aes | global AES array |
- Returns
- The return value depend on me_mode parameter as follow:
- If me_mode is MENU_REMOVE or MENU_INSTALL, the return value indicates an error condition where >0 means no error and 0 means an error occurred.
- if me_mode is MENU_INQUIRE, mt_menu_bar() returns the application identifier of the process which owns the currently displayed menu bar.
- Since
- AES versions
- See also
- mt_menu_ienable(), mt_menu_icheck()
The safest way to redraw an application's menu bar is to redraw it only if you are sure it is currently the active menu bar. In a non-multitasking AES, this is a certainty, however, in a multitasking AES you should first inquire the menu bar's owner within the scope of a mt_wind_update() call with BEG_UPDATE mode to prevent the system from swapping active menu bars while in the process of redrawing.
- Note
- it seems that some AES support other values for me_mode. These values are MENU_GETMODE, MENU_SETMODE, MENU_UPDATE and MENU_INSTL. TO BE COMPLETED.
short mt_menu_click |
( |
short |
click, |
|
|
short |
setit, |
|
|
short * |
global_aes |
|
) |
| |
- Parameters
-
click | specifies if the AES shall manage menu as
- 0 : Drop down menu
- 1 : PullDown
|
setit | is one of the following value:
- 0 = Menu prompting query
- 1 = Menu prompting set
|
global_aes | global AES array |
- Returns
- adjusted menu prompting (0 = drop down, 1 = Pulldown)
- Since
- PC/GEM3, mt_appl_getinfo() with parameter AES_PCGEM gives the availability of this function.
- See also
short mt_menu_icheck |
( |
OBJECT * |
me_tree, |
|
|
short |
me_item, |
|
|
short |
me_check, |
|
|
short * |
global_aes |
|
) |
| |
adds/removes a checkmark in front of a menu item.
- Parameters
-
me_tree | specifies the object tree of the current menu |
me_item | should be the object index of a menu item |
me_check | If me_check is UNCHECK (0), no checkmark will be displayed next to this item whereas if me_check is CHECK (1), a checkmark will be displayed. |
global_aes | global AES array |
- Returns
- 0 if an error occurred or non-zero otherwise.
- Since
- All AES versions
- See also
- mt_objc_change()
short mt_menu_ienable |
( |
OBJECT * |
me_tree, |
|
|
short |
me_item, |
|
|
short |
me_enable, |
|
|
short * |
global_aes |
|
) |
| |
enables/disables menu items.
- Parameters
-
me_tree | specifies the object tree of the menu to alter |
me_item | is the object index of the menu item to modify |
me_enable | should be set to DISABLE (0) to disable the item or ENABLE (1) to enable it. |
global_aes | global AES array |
- Returns
- 0 if an error occurred or non-zero otherwise.
- Since
- All AES versions.
- Note
- [PC GEM 3] : A special calling convention has been established for enabling and disabling menu titles. If the high bit of me_item is set, then it will be enabled/disabled and the result will be drawn on the screen. This only works for menu titles since they are guarenteed to be displayed on the screen.
- See also
- mt_objc_change()
short mt_menu_istart |
( |
short |
me_flag, |
|
|
OBJECT * |
me_tree, |
|
|
short |
me_imenu, |
|
|
short |
me_item, |
|
|
short * |
global_aes |
|
) |
| |
shifts a sub-menu that is attached to a menu item to align vertically with the specified object in the sub-menu.
- Parameters
-
me_flag | should be set to MIS_SETALIGN (1) to modify the alignment of a sub-menu and its parent menu item. If me_flag is set to MIS_GETALIGN (0), no modifications will be made, however the sub-menu item index which is currently aligned with its parent menu item is returned. |
me_tree | points to the object tree of the menu to alter |
me_imenu | specifies the object within the submenu which will be aligned with menu item me_item |
me_item | see above |
global_aes | global AES array |
- Returns
- 0 if an error occurred or the positive object index of the sub-menu item which is currently aligned with its parent menu item.
- Since
- This function is only available with AES versions 3.30 and above.
- See also
- mt_menu_attach()
Generally, a sub-menu is aligned so that the currently selected sub-menu item is aligned with its parent menu.
short mt_menu_popup |
( |
MENU * |
me_menu, |
|
|
short |
me_xpos, |
|
|
short |
me_ypos, |
|
|
MENU * |
me_mdata, |
|
|
short * |
global_aes |
|
) |
| |
displays a popup menu and returns the user's selection.
- Parameters
-
me_menu | points to a MENU structure containing the popup menu |
me_xpos | x-coordinate of the upper-left corner where the starting object will be placed. |
me_ypos | y-coordinate of the upper-left corner where the starting object will be placed. |
me_mdata | If the function returns a value of 1, the MENU structure pointed to by me_mdata will be filled in with the ending state of the menu (including the object the user selected).
As of AES version 4.1, if me_menu->mn_scroll is set to SCROLL_LISTBOX when this function is called, a drop-down list box will be displayed instead of a popup menu.
Dropdown list boxes will only display a scroll bar if at least eight entries exist. If you want to force the scroll bar to appear, pad the object with empty G_STRING objects with their OS_DISABLED flag set. |
global_aes | global AES array |
- Returns
- 0 if an error occurred or 1 if successful.
- Since
- This function is only available with AES versions 3.30 and above.
- See also
- mt_menu_attach(), mt_menu_settings()
short mt_menu_register |
( |
short |
ap_id, |
|
|
char * |
me_text, |
|
|
short * |
global_aes |
|
) |
| |
registers desk accessories in the 'Desk' menu and renames MultiTOS applications which appear there.
- Parameters
-
ap_id | specifies the application identifier of the application to register |
me_text | points to a NULL-terminated string containing the title which is to appear in the 'Desk' menu for the accessory or application. |
global_aes | global AES array |
- Returns
- -1 if an error occurred or the menu identifier otherwise.
- Since
- All AES versions.
- See also
- Note
- Applications other than desk accessories should not call this function unless they are running under MultiTOS.
-
If ap_id is set to REG_NEWNAME (-1) then the process name given in me_text will be used as the new process name. The new process name should be exactly eight characters terminated with a NULL. Pad the string with space characters if necessary.
Desk accessories should store the return value as this is the value that will be included with future AC_OPEN messages to identify the accessory.
Applications running under MultiTOS may use this function to provide a more functional title for the 'Desk' menu than the program's filename.
Calling mt_menu_register() with a parameter of REG_NEWNAME is used to change the internal process name of the application returned by mt_appl_find() and mt_appl_search(). This is useful if you know another process will attempt to find your application as a specific process name and the user may have renamed your application filename (normally used as the process name).
short mt_menu_settings |
( |
short |
me_flag, |
|
|
MN_SET * |
me_values, |
|
|
short * |
global_aes |
|
) |
| |
changes the global settings for popup and scrollable menus
- Parameters
-
me_flag | is one of the following value:
- MN_INQUIRE (0) : current settings are read into the MN_SET structure pointed to by me_values.
- MN_CHANGE (1) : current settings are set from the MN_SET structure pointed to by me_values.
|
me_values | see above |
global_aes | global AES array |
- Returns
- 1
- Since
- This function is only available with AES versions 3.30 and above.
The defaults set by mt_menu_settings() are global and not local to an application. You should therefore limit your use of this function to system applications like CPX's and so forth.
short mt_menu_text |
( |
OBJECT * |
me_tree, |
|
|
short |
me_item, |
|
|
char * |
me_text, |
|
|
short * |
global_aes |
|
) |
| |
changes the text of a menu item.
- Parameters
-
me_tree | specifies the object tree of the menu bar |
me_item | specifies the object index of the menu item to change |
me_text | points to a NULL-terminated character string containing the new text. |
global_aes | global AES array |
- Returns
- 0 if an error occurred or non-zero otherwise.
- Since
- All AES versions.
short mt_menu_tnormal |
( |
OBJECT * |
me_tree, |
|
|
short |
me_item, |
|
|
short |
me_normal, |
|
|
short * |
global_aes |
|
) |
| |
highlights/un-highlights a menu-title.
- Parameters
-
me_tree | specifies the object tree of the menu |
me_item | specifies the object index of the title to change |
me_normal | should be set to HIGHLIGHT (0) to display the title in reverse (highlighted) or UNHIGHLIGHT (1) to display it normally |
global_aes | global AES array |
- Returns
- 0 if an error occurred or non-zero otherwise.
- Since
- AES versions
This call is usually called by an application after a MN_SELECTED message is received and processed to return the menu title to normal.
short mt_menu_unregister |
( |
short |
id, |
|
|
short * |
global_aes |
|
) |
| |
remove accessory name from menu
- Parameters
-
id | application ID of the accessory |
global_aes | global AES array |
- Returns
- at present unknown
This function allows an Accessorie to remove its name from the menu line.
- Since
- PC/GEM2 and MagiC 2.0
- See also
- mt_menu_register()