Version: 3.3.0
wxCommand Class Referenceabstract

#include <wx/cmdproc.h>

+ Inheritance diagram for wxCommand:

Detailed Description

wxCommand is a base class for modelling an application command, which is an action usually performed by selecting a menu item, pressing a toolbar button or any other means provided by the application to change the data or view.

Library:  wxCore
Category:  Document/View Framework
See also
wxCommand Overview

Public Member Functions

 wxCommand (bool canUndo=false, const wxString &name=wxEmptyString)
 Constructor. More...
 
virtual ~wxCommand ()
 Destructor. More...
 
virtual bool CanUndo () const
 Returns true if the command can be undone, false otherwise. More...
 
virtual bool Do ()=0
 Override this member function to execute the appropriate action when called. More...
 
virtual wxString GetName () const
 Returns the command name. More...
 
virtual bool Undo ()=0
 Override this member function to un-execute a previous Do. More...
 
- Public Member Functions inherited from wxObject
 wxObject ()
 Default ctor; initializes to nullptr the internal reference data. More...
 
 wxObject (const wxObject &other)
 Copy ctor. More...
 
virtual ~wxObject ()
 Destructor. More...
 
virtual wxClassInfoGetClassInfo () const
 This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar). More...
 
wxObjectRefDataGetRefData () const
 Returns the wxObject::m_refData pointer, i.e. the data referenced by this object. More...
 
bool IsKindOf (const wxClassInfo *info) const
 Determines whether this class is a subclass of (or the same class as) the given class. More...
 
bool IsSameAs (const wxObject &obj) const
 Returns true if this object has the same data pointer as obj. More...
 
void Ref (const wxObject &clone)
 Makes this object refer to the data in clone. More...
 
void SetRefData (wxObjectRefData *data)
 Sets the wxObject::m_refData pointer. More...
 
void UnRef ()
 Decrements the reference count in the associated data, and if it is zero, deletes the data. More...
 
void UnShare ()
 This is the same of AllocExclusive() but this method is public. More...
 
void operator delete (void *buf)
 The delete operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__ is defined. More...
 
void * operator new (size_t size, const wxString &filename=nullptr, int lineNum=0)
 The new operator is defined for debugging versions of the library only, when the identifier __WXDEBUG__ is defined. More...
 

Additional Inherited Members

- Protected Member Functions inherited from wxObject
void AllocExclusive ()
 Ensure that this object's data is not shared with any other object. More...
 
virtual wxObjectRefDataCreateRefData () const
 Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it. More...
 
virtual wxObjectRefDataCloneRefData (const wxObjectRefData *data) const
 Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data. More...
 
- Protected Attributes inherited from wxObject
wxObjectRefDatam_refData
 Pointer to an object which is the object's reference-counted data. More...
 

Constructor & Destructor Documentation

◆ wxCommand()

wxCommand::wxCommand ( bool  canUndo = false,
const wxString name = wxEmptyString 
)

Constructor.

wxCommand is an abstract class, so you will need to derive a new class and call this constructor from your own constructor.

Parameters
canUndoTells the command processor whether this command is undo-able. You can achieve the same functionality by overriding the CanUndo() member function (if for example the criteria for undoability is context-dependent).
nameMust be supplied for the command processor to display the command name in the application's edit menu.

◆ ~wxCommand()

virtual wxCommand::~wxCommand ( )
virtual

Destructor.

Member Function Documentation

◆ CanUndo()

virtual bool wxCommand::CanUndo ( ) const
virtual

Returns true if the command can be undone, false otherwise.

◆ Do()

virtual bool wxCommand::Do ( )
pure virtual

Override this member function to execute the appropriate action when called.

Returns
true to indicate that the action has taken place, false otherwise. Returning false will indicate to the command processor that the action is not undoable and should not be added to the command history.

Implemented in wxRichTextCommand.

◆ GetName()

virtual wxString wxCommand::GetName ( ) const
virtual

Returns the command name.

◆ Undo()

virtual bool wxCommand::Undo ( )
pure virtual

Override this member function to un-execute a previous Do.

How you implement this command is totally application dependent, but typical strategies include:

  • Perform an inverse operation on the last modified piece of data in the document. When redone, a copy of data stored in command is pasted back or some operation reapplied. This relies on the fact that you know the ordering of Undos; the user can never Undo at an arbitrary position in the command history.
  • Restore the entire document state (perhaps using document transacting). Potentially very inefficient, but possibly easier to code if the user interface and data are complex, and an "inverse execute" operation is hard to write. The docview sample uses the first method, to remove or restore segments in the drawing.
Returns
true to indicate that the action has taken place, false otherwise. Returning false will indicate to the command processor that the action is not redoable and no change should be made to the command history.

Implemented in wxRichTextCommand.