Add an item to the menu in L3DT.
Declaration | zmenu.h |
---|---|
Implementation | zmenu.cpp |
bool zmenu_InsertItem(const char* lpScript, const char* lpItemText, unsigned long MenuContext, unsigned long Flags);
Name | Type | Comment |
---|---|---|
lpFnName | const char* | A pointer to a C-style string containing the ZeoScript script to be executed by this menu option when selected. |
lpOptionName | const char* | A pointer to a C-style string containing the display name of the menu option. |
MenuContext | unsigned long | An enumerated integer to indicate into which menu the item should be inserted. See comments for supported values. |
Flags | unsigned long | Reserved. Must be 0. |
False if an error occurred, and true otherwise.
The lpFnName argument must be the name of a function loaded from your plugin via the zfunc_Load method. See the example provided below.
By default, this function adds the menu item into the 'Extensions→[your plugin name]' menu in L3DT. However, using the MenuContext argument, you may insert your item into other menus. The following values are recognised:
Defined constant | Value | Menu |
---|---|---|
ZMENU_CONTEXT_EXT_CUR | 0 | Extensions→[extension name] |
ZMENU_CONTEXT_EXT_ROOT | 1 | Extensions |
ZMENU_CONTEXT_FILE_IMPORT | 2 | File→Import |
ZMENU_CONTEXT_FILE_EXPORT | 3 | File→Export |
The '.' (dot) character is used to delimit nested submenus. Thus, if you provide an lpOptionName of “mysubmenu.myoption”, your option will appear at 'Extensions→[your plugin name]→mysubmenu→myoption' (assuming the default MenuContext). Unfortunately, this means you cannot use dots for abbreviations or ellipsis (e.g. 'about…')
This is from the InitPlugin function of L3DTio_TorqueTER:
// load the extension function zfunc_Load("L3DTio_TorqueTER.T3D.MaterialManagerUI", "ExtT3DMtlManagerUI", VarID_void, NULL); // load the menu item for the function zmenu_InsertItem("T3D.MaterialManagerUI", "L3DTio_TorqueTER.Torque T3D.Material Manager", ZMENU_CONTEXT_FILE_EXPORT, 0);