wxArt2D
|
a group of commands, used to group commands together for undo/redo More...
#include <comevt.h>
Public Member Functions | |
a2dCommandGroup (const wxString &name, a2dCommandGroup *parent=NULL) | |
constructor More... | |
a2dCommandGroup (a2dCommandGroup *parent, const a2dCommandId &commandId=sm_noCommandId, const a2dCommandId &commandTypeId=sm_noCommandTypeId, const wxString &menuString=wxEmptyString) | |
~a2dCommandGroup (void) | |
destructor | |
a2dCommand * | TClone (CloneOptions options=clone_deep, a2dRefMap *refs=NULL) |
virtual wxString | GetGroupName () const |
return command name | |
bool | ClearCommandsById (const a2dCommandId &commandId, a2dCommand *fromcommand=NULL) |
erase commands with a certain id, starting at fromcommand | |
virtual bool | ClearAfterCurrentCommand (a2dCommand *current) |
Hierarchically clear all commands after current. | |
virtual class a2dCommandGroup * | IsCommandGroup () |
This is like a wxDynamicCast, but much faster. | |
virtual a2dCommand * | FindPrevious (a2dCommand *current) const |
Find the previous command of the given command. | |
virtual a2dCommand * | FindNext (a2dCommand *current) const |
Find the next command of the given command. | |
virtual bool | Remove (a2dCommand *command) |
Remove the given command in this group or a subgroup. | |
void | Add (a2dCommand *command) |
add a command to the group | |
virtual bool | ContainsCommand (a2dCommand *command) |
return true if this command/group are nested group contains the given command | |
a2dCommandGroup * | GetParentGroup () |
return the parent group of this group | |
void | SetParentGroup (a2dCommandGroup *parent) |
set the parent group of this group | |
virtual bool | Do () |
Override this to perform a command. | |
virtual bool | Undo () |
Override this to undo a command. | |
virtual bool | Redo () |
![]() | |
a2dCommand (bool canUndo=false, const a2dCommandId &commandId=sm_noCommandId, const a2dCommandId &commandTypeId=sm_noCommandTypeId, const wxString &menuString=wxEmptyString) | |
constructor More... | |
~a2dCommand (void) | |
destructor | |
a2dCommand * | TClone (CloneOptions options=clone_deep, a2dRefMap *refs=NULL) |
virtual wxString | GetName () const |
const a2dCommandId * | GetCommandId () |
a specific id for this command. More... | |
const a2dCommandId * | GetCommandTypeId () |
used to identify groups of simular commands | |
virtual a2dCommand * | CloneAndBind (a2dObject *object) |
Copy and instantiate the command. More... | |
virtual bool | PreDo () |
Override this to perform a dependency action before command is done. | |
virtual bool | PostDo () |
Override this to perform a dependency action after command is done. | |
virtual bool | CanUndo () const |
bool | Modifies () |
void | SetCommandProcessor (a2dCommandProcessor *cmp) |
set when submitting this command via a2dCommandProcessor | |
a2dCommandProcessor * | GetCommandProcessor () |
virtual void | DistributeEvent (wxEventType eventType) |
![]() | |
virtual bool | ProcessEvent (wxEvent &event) |
bool | SearchDynamicEventTable (wxEvent &event) |
void | Connect (int winid, int lastId, int eventType, wxObjectEventFunction func, wxObject *userData=(wxObject *) NULL, wxEvtHandler *eventSink=(wxEvtHandler *) NULL) |
bool | Disconnect (int winid, int lastId, wxEventType eventType, wxObjectEventFunction func=NULL, wxObject *userData=(wxObject *) NULL, wxEvtHandler *eventSink=(wxEvtHandler *) NULL) |
void | ProcessConnectedEvent (wxEvent &event) |
wxCHECK_VERSION(2,9,0) More... | |
void | ConnectEvent (wxEventType type, wxEvtHandler *eventSink) |
bool | DisconnectEvent (wxEventType type, wxEvtHandler *eventSink) |
bool | DisconnectEventAll (wxEvtHandler *eventSink) |
Remove all dynamic events in classA, going to classB (eventSink) More... | |
a2dObject () | |
constructor | |
virtual | ~a2dObject () |
destructor | |
void | operator= (const a2dObject &other) |
assignment operator | |
int | GetOwnedBy () |
like it to be protected, but this does not work with wxList macros More... | |
virtual a2dObject * | SetNonDynamic () |
Call to mark this object as non-dynamic (static/local/auto) More... | |
void | CheckReferences () |
Check zero reference count and delete if count is 0. More... | |
a2dObject * | Clone (CloneOptions options, a2dRefMap *refs=NULL) const |
create an exact copy of this property | |
a2dObject (const a2dObject &other, CloneOptions options, a2dRefMap *refs) | |
virtual void | SetName (const wxString &name) |
Creates the a2dStringProperty PROPID_Name. More... | |
virtual bool | IsTemporary_DontSave () const |
Check if this is a temporary object, which should not be saved. | |
void | SaveAsDocument (a2dIOHandlerXmlSerOut &out) |
Save this object and all below as an XML document. More... | |
virtual void | Save (wxObject *parent, a2dIOHandlerXmlSerOut &out, a2dObjectList *towrite) |
write all needed to an XML type of file called the CVG format More... | |
void | LoadFromDocument (a2dIOHandlerXmlSerIn &parser) |
Load this object and all below from an XML document. More... | |
virtual void | Load (wxObject *parent, a2dIOHandlerXmlSerIn &parser) |
load object from CVG file More... | |
wxInt64 | GetUniqueSerializationId () const |
return a unique id for this object More... | |
virtual bool | AlwaysWriteSerializationId () const |
If true, always write an id. More... | |
virtual bool | LinkReference (a2dObject *other) |
link a reference in the object to the given value More... | |
virtual void | ResolveInform () |
inform an object that reference resolution was done More... | |
void | Walker (wxObject *parent, a2dWalkerIOHandler &handler) |
This is used to recursively walk through an object tree. | |
void | SetCheck (bool check) |
general flag use at will. More... | |
bool | GetCheck () const |
general flag use at will. | |
void | SetRelease (bool value) |
set release flag More... | |
bool | GetRelease () const |
get release flag More... | |
a2dAutoZeroPtr< a2dObject > ** | GetAutoZeroPtrList () |
return the list head pointer for autozero pointers to this object More... | |
DECLARE_PROPERTIES () | |
a2dNamedProperty * | GetProperty (const a2dPropertyId *propertyId, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) const |
get property on this object More... | |
void | SetProperty (a2dNamedProperty *propertyHolder, a2dPropertyId::SetFlags flags=a2dPropertyId::set_none) |
Set the property to the this object. More... | |
void | SetProperty (const a2dNamedProperty &propertyHolder, a2dPropertyId::SetFlags flags=a2dPropertyId::set_none) |
Set the property to the this object and if enabled, to all childs and object members. More... | |
virtual a2dNamedProperty * | FindProperty (const a2dPropertyId *id, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) |
Find a dynamic property with given id in the property list. More... | |
virtual const a2dNamedProperty * | FindProperty (const a2dPropertyId *id, a2dPropertyId::Flags flags=a2dPropertyId::flag_none) const |
Find a dynamic property with given id in the property list. More... | |
virtual bool | HasProperty (const a2dPropertyId *id, const wxString &stringvalue=wxEmptyString) const |
Check if the object has a property with given id and string representation. More... | |
virtual void | OnPropertyChanged (const a2dPropertyId *id) |
This function is called after a property changed. More... | |
virtual bool | EditProperties (const a2dPropertyId *id, bool withUndo=true) |
edit properties of the object More... | |
void | TakeOverProperties (a2dObject *from, a2dPropertyIdList *listOfIds) |
Properties in the id list are taken from the given object, en set to this. More... | |
wxURI | GetURI () const |
quick way to get to PROPID_URI property More... | |
void | SetURI (const wxURI &url) |
quickly set a property PROPID_URI More... | |
const a2dNamedPropertyList & | GetPropertyList () const |
Get the Property List. More... | |
bool | HasDynamicProperties () const |
test if there are dynamic properties in the m_propertylist | |
virtual bool | RemoveProperty (const a2dPropertyId *id, bool all=true) |
This function is called by a2dPropertyId to remove a property from the list. More... | |
void | RemoveTemporaryProperties () |
remove all temporary properties | |
virtual bool | AddProperty (a2dNamedProperty *property) |
This function is called by a2dPropertyId to add a property to the list. More... | |
Protected Member Functions | |
virtual a2dObject * | DoClone (CloneOptions options, a2dRefMap *refs) const |
Clone this object and return a pointer to the new object. | |
![]() | |
void | DoSave (wxObject *parent, a2dIOHandlerXmlSerOut &out, a2dXmlSer_flag xmlparts, a2dObjectList *towrite) |
Save settings. | |
void | DoLoad (wxObject *parent, a2dIOHandlerXmlSerIn &parser, a2dXmlSer_flag xmlparts) |
Load settings. | |
a2dCommand (const a2dCommand &other) | |
this is a not implemented copy constructor that avoids automatic creation of one | |
![]() | |
virtual bool | DoIgnoreIfNotMember (const a2dPropertyId *id) const |
used to decide if a property shall be ignored, if it is not a member More... | |
virtual void | DoWalker (wxObject *parent, a2dWalkerIOHandler &handler) |
iterate over this object and its children More... | |
Protected Attributes | |
a2dCommandGroup * | m_parentGroup |
this is the parent group of this group | |
wxString | m_groupName |
name of group of commands | |
bool | m_ownId |
bool | m_active |
If true, this command group is not yet closed and may still receive commands. | |
a2dCommandList | m_subcommands |
the list of subcommands | |
![]() | |
bool | m_canUndo |
can this command be undone | |
bool | m_modifies |
const a2dCommandId * | m_commandId |
can be used to identify the command | |
const a2dCommandId * | m_commandTypeId |
if set can be used to identify groups of commands | |
a2dCommandProcessor * | m_cmp |
allows commands to get to the command processor that submitted the command. | |
wxString | m_menuString |
if set this will be used for menu Undo/Redo labels, else the m_commandId its name is used. | |
![]() | |
a2dNamedPropertyList | m_propertylist |
properties | |
int | m_refcount |
how many references to this object do exist | |
bool | m_check: 1 |
used for linking multiple referenced objects when serializing | |
bool | m_release: 1 |
when set object is treated as being deleted, and wil be deleted in idle time. | |
bool | m_recursion_active: 1 |
this is used as a recursion stopper | |
bool | m_pendingDisconnects: 1 |
unsigned int | m_iteratorCount |
a2dAutoZeroPtr< a2dObject > * | m_autozeroptrlist |
this is a list of all a2dAutoZeroPtr object pointing to this object | |
Friends | |
class | a2dCommandProcessor |
a2DocumentCommandProcessor may access the list directly | |
Additional Inherited Members | |
![]() | |
enum | CloneOptions { clone_members = 0x00000001, clone_properties = 0x00000002, clone_childs = 0x00000004, clone_unused = 0x00000008, clone_setoriginal = 0x00000010, clone_seteditcopy = 0x00000020, clone_noReference = 0x00000040, clone_noCameleonRef = 0x00000080, clone_toDrag = 0x00000100, clone_flat = 0x00000000, clone_deep = clone_members | clone_properties | clone_childs } |
options for cloning More... | |
typedef a2dAutoZeroPtr< a2dObject > | TAutoZeroPtrListClass |
this is needed inside the smart pointer template code | |
![]() | |
static const a2dCommandId | sm_noCommandId = a2dCommandId( wxT( "NoCommandId" ) ) |
property for command id | |
static const a2dCommandId | sm_noCommandTypeId = a2dCommandId( wxT( "NoCommandTypeId" ) ) |
property for type of command id | |
static const a2dCommandId | sm_groupCommandId = a2dCommandId( wxT( "GroupCommandId" ) ) |
property for group command id | |
![]() | |
static a2dPropertyIdBool * | PROPID_Check = NULL |
used for linking multiple referenced objects when serializing | |
static a2dPropertyIdUri * | PROPID_URI = NULL |
attach an URL to the object | |
static a2dPropertyIdString * | PROPID_Name = NULL |
Name property, to return name of this object. | |
static a2dPropertyIdVoidPtr * | PROPID_autozeroptrlist = NULL |
static const a2dSignal | sm_Edit_properties = wxNewId() |
edit properties event, see EditProperties() | |
![]() | |
enum | { refcount_nondynamic = 0x76543210 } |
special refcount value for non-dynamic objects | |
a group of commands, used to group commands together for undo/redo
A group can be recorded distributed across the application, you start a command group, and you end it. See CommandGroupBegin() CommandGroupEnd(). All command submitted in between become part of the group. This is very handy when commands lead to other commands indirectly. Like when moving objects connected with wires: moving an object will create a move command, but the wires will be re-routed, generating extra move commands for all moved wires. Combining those in a group, will Undo this as a whole, which is what a user does expect. Same for a polygon which is drawn vertex by vertex, while bussy doing this, an Undo action should remove the last added vertex. But when finishing a polygon, and drawing several more, the Undo should remove the polygon as a whole in one Undo action. This behaviour is all handled within a2dCommandProcessor(), it knows which group is currently active, and commands in nested groups are undone/redone at once, while single commands in the active group are undone one by one. Undo-ing/redo-ing a group, means it will undo/redo all seperate nested commands, but to the users it is as if it is one action.
Another application of groups is simple to assemble a group of commands, which can be submitted as a new command. A group gets a unique a2dCommandId at construction. The group of commands is submitted in one row in Do().
a2dCommandGroup::a2dCommandGroup | ( | const wxString & | name, |
a2dCommandGroup * | parent = NULL |
||
) |
constructor
name | name of this command |
parent | of this group |
Definition at line 211 of file comevt.cpp.
|
virtual |
Override this to redo a command Default is the same as do
Reimplemented from a2dCommand.
Reimplemented in a2dCommand_SetTextChangesMask, a2dCommand_SetFillStrokeExtMask, a2dCommand_ToBackMask, a2dCommand_ToTopMask, a2dCommand_DeleteMask, a2dCommand_AlignMask, a2dCommand_RotateMask, a2dCommand_TransformMask, and a2dCommandMasked.
Definition at line 444 of file comevt.cpp.