Public Types | Public Member Functions | Protected Member Functions | Protected Attributes

ActionItem Class Reference

This reference page is linked to from the following overview topics: Classes Involved in the Action System, Building Action Tables, When to Derive from ActionTable and ActionItem.


Search for all occurrences

Detailed Description

Represents an operation contained in an ActionTabls.

ActionItem is an abstract class with operations to support various UI operations. The system provides a default implementation of this class that works when the table is built with the ActionTable::BuildActionTable() method. However, developers may want to specialize this class for more special-purpose applications. For example, MAXScript does this to export macroScripts to an ActionTable. Methods that are marked as internal should not be used.

Version:
4.0
See also:
Class ActionTable, Class ActionCallback, Structure ActionDescription, Class ActionContext, Class IActionManager, Class DynamicMenu, Class DynamicMenuCallback, Class MAXIcon, Class Interface, class FPMixinInterface

#include <actiontable.h>

Inheritance diagram for ActionItem:
Inheritance graph
[legend]

List of all members.

Public Types

enum   ActionItemFps {
  kGetId, kIsVisible, kIsEnabled, kIsChecked,
  kGetDescription, kGetCategory, kGetButtonText, kGetMenuText
}
 

Function IDs for function published (Fps) methods and properties.

More...

Public Member Functions

CoreExport  ActionItem ()
  Constructor.
virtual CoreExport  ~ActionItem ()
  Destructor.
virtual int  GetId ()=0
  Retrieves a unique identifier for the action.
virtual BOOL  ExecuteAction ()=0
  Executes the operation associated with the action item.
virtual CoreExport void  EmitMacro ()
  Called by 3ds Max to allow the ActionItem to customize macroRecorder output for this action.
CoreExport BOOL  Execute ()
  Calls ExecuteAction() and handles macro recording etc.
virtual void  GetButtonText (MSTR &buttonText)=0
  Retrieves the text that will be used when the ActionItem is on a text button.
virtual void  GetMenuText (MSTR &menuText)=0
  Retrieves the text to use when the item is on a menu (either Quad menu or main menu bar).
virtual void  GetDescriptionText (MSTR &descText)=0
  Retrieves the text that will be used for tool tips and menu help.
virtual void  GetCategoryText (MSTR &catText)=0
  Retrieves the text for the category of the operation.
virtual BOOL  IsChecked ()=0
  Returns whether a menu item is in a checked state, or if a button is in a pressed state.
virtual BOOL  IsItemVisible ()=0
  Determines if an item is visible on a context menu.
virtual BOOL  IsEnabled ()=0
  Determines if the operation is available to the user.
virtual MaxIcon GetIcon ()=0
  Returns an icon associated with an ActionItem.
virtual void  DeleteThis ()=0
  Called by 3ds Max to delete the ActionItem.
virtual CoreExport ActionTable GetTable ()
  Returns a pointer to the table that owns the ActionItem.
virtual CoreExport void  SetTable (ActionTable *pTable)
  Sets the table that owns the item.
CoreExport MCHAR *  GetShortcutString ()
  Returns the string that describes all the keyboard shortcuts associated with the item.
virtual CoreExport MacroEntry GetMacroScript ()
  Returns the representation of the macroScript for the item, if it's implemented by a macroScript, it returns NULL otherwise.
virtual CoreExport BOOL  IsDynamicMenu ()
  Determines if a menu is created or if an action takes place.
virtual CoreExport void  SetIsDynamicMenu ()
  This method may be called after an action item is created to tell the system that it is a dynamic menu action.
virtual CoreExport IMenu GetDynamicMenu (HWND hwnd, IPoint2 &m)
  If the ActionItem does produce a menu, this method is called to return a pointer to the menu.
virtual CoreExport BOOL  IsDynamicAction ()
  ActionItems that are deleted after they execute should return TRUE.
virtual CoreExport
FPInterfaceDesc
GetDescByID (Interface_ID id)
virtual CoreExport
FPInterfaceDesc
GetDesc ()
virtual CoreExport BaseInterface GetInterface (Interface_ID id)
virtual CoreExport Interface_ID  GetID ()

Protected Member Functions

BEGIN_FUNCTION_MAP  RO_PROP_FN (kGetId, GetId, TYPE_DWORD)
  RO_PROP_FN (kIsVisible, IsItemVisible, TYPE_BOOL)
  RO_PROP_FN (kIsEnabled, IsEnabled, TYPE_BOOL)
  RO_PROP_FN (kIsChecked, IsChecked, TYPE_BOOL)
  VFN_1 (kGetDescription, GetDescriptionText, TYPE_TSTR_BR)
  VFN_1 (kGetCategory, GetCategoryText, TYPE_TSTR_BR)
  VFN_1 (kGetButtonText, GetButtonText, TYPE_TSTR_BR)
  VFN_1 (kGetMenuText, GetMenuText, TYPE_TSTR_BR)

Protected Attributes

END_FUNCTION_MAP ActionTable mpTable
  Points to the table that owns the action.

Member Enumeration Documentation


Constructor & Destructor Documentation

CoreExport ActionItem ( )

Constructor.

virtual CoreExport ~ActionItem ( ) [virtual]

Destructor.


Member Function Documentation

virtual int GetId ( ) [pure virtual]

Retrieves a unique identifier for the action.

This action must be unique in the table, but not does not have to be unique between tables.

Implemented in ActionItemStandin.

virtual BOOL ExecuteAction ( ) [pure virtual]

Executes the operation associated with the action item.

This returns a BOOL that indicates if the action was actually executed. If the item is disabled, or if the table that owns it is not activated, then it won't execute, and returns FALSE.

Returns:
TRUE if the action is executed; otherwise FALSE.

Implemented in ActionItemStandin.

virtual CoreExport void EmitMacro ( ) [virtual]

Called by 3ds Max to allow the ActionItem to customize macroRecorder output for this action.

CoreExport BOOL Execute ( )

Calls ExecuteAction() and handles macro recording etc.

Called by 3ds Max.

virtual void GetButtonText ( MSTR buttonText ) [pure virtual]

Retrieves the text that will be used when the ActionItem is on a text button.

The text is stored into the buttonText parameter.

Parameters:
[out] buttonText - The retrieved text.

Implemented in ActionItemStandin.

virtual void GetMenuText ( MSTR menuText ) [pure virtual]

Retrieves the text to use when the item is on a menu (either Quad menu or main menu bar).

This can be different from the button text. This method is called just before the menu is displayed, so it can update the text at that time. For example, the "Undo" menu item in 3ds Max's main menu adds the name of the command that will be undone.

Parameters:
[out] menuText - The retrieved text.

Implemented in ActionItemStandin.

virtual void GetDescriptionText ( MSTR descText ) [pure virtual]

Retrieves the text that will be used for tool tips and menu help.

This is also the string that is displayed for the operation in all the lists in the customization dialogs.

Parameters:
[out] descText - The retrieved text.

Implemented in ActionItemStandin.

virtual void GetCategoryText ( MSTR catText ) [pure virtual]

Retrieves the text for the category of the operation.

This is used in the customization dialog to fill the "category" drop-down list.

Parameters:
[out] catText - The retrieved text.

Implemented in ActionItemStandin.

virtual BOOL IsChecked ( ) [pure virtual]

Returns whether a menu item is in a checked state, or if a button is in a pressed state.

For menus, this means that this function will return TRUE if a check mark appears next to the item. If the item is on a button, this is used to determine of the button is in the "Pressed" state. Note that button states are automatically updated on selection change and command mode changes. If your plug-in performs an operation that requires the CUI buttons to be redrawn, you need to call the method CUIFrameMgr::SetMacroButtonStates(TRUE).

Returns:
TRUE if menu item is checked, or if a button is 'pressed'. FALSE otherwise

Implemented in ActionItemStandin.

virtual BOOL IsItemVisible ( ) [pure virtual]

Determines if an item is visible on a context menu.

If it returns FALSE, then the item is not included in the menu. This can be used to create items that a context sensitive. For example, you may want an item to appear on a menu only when the selected object is of a particular type. To do this, you have this method check the class id of the current selection.

Implemented in ActionItemStandin.

virtual BOOL IsEnabled ( ) [pure virtual]

Determines if the operation is available to the user.

If this method returns FALSE, and the ActionItem it is on a menu, or button, the item is grayed out. If it assigned to a keyboard shortcut, then it will not execute the operation if invoked. If your plugin performs an operation that requires the CUI buttons to be redrawn, you need to call the method CUIFrameMgr::SetMacroButtonStates(TRUE)

Returns:
TRUE for enabled; FALSE for disabled.

Implemented in ActionItemStandin.

virtual MaxIcon* GetIcon ( ) [pure virtual]

Returns an icon associated with an ActionItem.

If an icon is available for the ActionItem, then you should override this function to return or else returns NULL. The icon is used on CUI buttons, and in the list of operations in the customization dialogs.

Implemented in ActionItemStandin.

virtual void DeleteThis ( ) [pure virtual]

Called by 3ds Max to delete the ActionItem.

This normally happens when the table that owns it is deleted.

Implemented in ActionItemStandin.

virtual CoreExport ActionTable* GetTable ( ) [virtual]

Returns a pointer to the table that owns the ActionItem.

An item can only be owned by a single table.

Default Implementation
    { return mpTable; }
virtual CoreExport void SetTable ( ActionTable pTable ) [virtual]

Sets the table that owns the item.

Used internally. May be used if you implement a custom sub-class of ActionItem.

Parameters:
pTable - Points to the table to set.
Default Implementation:
    { mpTable = pTable; }
CoreExport MCHAR* GetShortcutString ( )

Returns the string that describes all the keyboard shortcuts associated with the item.

This will look something like "Alt+A" or "C, Shift+Alt+Q".

Returns:
NULL if no keyboard shortcut is associated with the item.
virtual CoreExport MacroEntry* GetMacroScript ( ) [virtual]

Returns the representation of the macroScript for the item, if it's implemented by a macroScript, it returns NULL otherwise.

Returns:
A pointer to a MacroEntry
Default Implementation
    { return NULL; }
virtual CoreExport BOOL IsDynamicMenu ( ) [virtual]

Determines if a menu is created or if an action takes place.

Returns:
If this method returns TRUE, then the ActionItem creates a menu. If it returns FALSE then an action is performed.
Default Implementation
    { return FALSE; }

Reimplemented in ActionItemStandin.

virtual CoreExport void SetIsDynamicMenu ( ) [virtual]

This method may be called after an action item is created to tell the system that it is a dynamic menu action.

Dynamic menus may be added to the quad menus procedurally (via the IMenuManager API) or 'manually'.

Reimplemented in ActionItemStandin.

virtual CoreExport IMenu* GetDynamicMenu ( HWND  hwnd,
IPoint2 m 
) [virtual]

If the ActionItem does produce a menu, this method is called to return a pointer to the menu.

See class DynamicMenu for an easy way to produce these menus.

Parameters:
HWND hwnd - If the menu is requested by a right-click quad menu, then this hwnd is the handle of the window where the click occurred. If the item is used from a menu bar, this hwnd will be NULL.
m - If the menu is requested by a right-click quad menu, then this parameter is the point in the window where the user clicked.
Returns:
A pointer to the menu.
Default Implementation:
    { return NULL; }

Reimplemented in ActionItemStandin.

virtual CoreExport BOOL IsDynamicAction ( ) [virtual]

ActionItems that are deleted after they execute should return TRUE.

virtual CoreExport FPInterfaceDesc* GetDescByID ( Interface_ID  id ) [virtual]
Remarks:
This method is used to directly implement FPInterface::GetDesc() in your public virtual base mixin class, like this;

FPInterfaceDesc* GetDesc() { return GetDescByID(THIS_INTERFACE_ID); }

Then implement a GetDescByID() in the implementing class to avoid link export issues.
Parameters:
Interface_ID id

The unique interface ID by which to get the FPInterfaceDesc.
Default Implementation:
{ return &nullInterface; }

Reimplemented from FPMixinInterface.

virtual CoreExport FPInterfaceDesc* GetDesc ( ) [virtual]
Remarks:
Returns a pointer to the class which contains the interface metadata.

Implements FPInterface.

virtual CoreExport BaseInterface* GetInterface ( Interface_ID  id ) [virtual]
Remarks:
Returns a pointer to the interface whose ID is specified.
Parameters:
Interface_ID id

The ID of the interface to return.
Default Implementation:
{ return NULL; }

Reimplemented from FPMixinInterface.

Reimplemented in ActionItemStandin.

virtual CoreExport Interface_ID GetID ( ) [virtual]
Remarks:
This method overrides GetID() in those interfaces that do not publish metadata but instead have a unique Interface_ID for quick internal identification in implementation code that might be shared by a bunch of mixin interfaces.
Returns:
The Interface_ID.
Default Implementation:
{ return GetDesc()->ID; }

Reimplemented from FPMixinInterface.

BEGIN_FUNCTION_MAP RO_PROP_FN ( kGetId  ,
GetId  ,
TYPE_DWORD   
) [protected]
RO_PROP_FN ( kIsVisible  ,
IsItemVisible  ,
TYPE_BOOL   
) [protected]
RO_PROP_FN ( kIsEnabled  ,
IsEnabled  ,
TYPE_BOOL   
) [protected]
RO_PROP_FN ( kIsChecked  ,
IsChecked  ,
TYPE_BOOL   
) [protected]
VFN_1 ( kGetDescription  ,
GetDescriptionText  ,
TYPE_TSTR_BR   
) [protected]
VFN_1 ( kGetCategory  ,
GetCategoryText  ,
TYPE_TSTR_BR   
) [protected]
VFN_1 ( kGetButtonText  ,
GetButtonText  ,
TYPE_TSTR_BR   
) [protected]
VFN_1 ( kGetMenuText  ,
GetMenuText  ,
TYPE_TSTR_BR   
) [protected]

Member Data Documentation

END_FUNCTION_MAP ActionTable* mpTable [protected]

Points to the table that owns the action.

Note:
This does not 'own' the memory for the ActionTable pointer

ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem
ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem ActionItem