Represents a atomic transaction of the document. More...
#include <Transactions.h>
Public Member Functions | |
void | addObjectChange (const TransactionalObject *Obj, const Property *Prop) |
void | addObjectDel (const TransactionalObject *Obj) |
void | addObjectNew (TransactionalObject *Obj) |
void | addOrRemoveProperty (TransactionalObject *Obj, const Property *pcProp, bool add) |
void | apply (Document &Doc, bool forward) |
apply the content to the document More... | |
int | getID (void) const |
Return the transaction ID. More... | |
virtual unsigned int | getMemSize (void) const |
This method is used to get the size of objects It is not meant to have the exact size, it is more or less an estimation which runs fast! Is it two bytes or a GB? More... | |
bool | hasObject (const TransactionalObject *Obj) const |
check if this object is used in a transaction More... | |
bool | isEmpty () const |
Returns true if the transaction list is empty; otherwise returns false. More... | |
virtual void | Restore (Base::XMLReader &reader) |
This method is used to restore properties from an XML document. More... | |
virtual void | Save (Base::Writer &writer) const |
This method is used to save properties to an XML document. More... | |
Transaction (int id=0) | |
Construction. More... | |
virtual | ~Transaction () |
Construction. More... | |
Public Member Functions inherited from Base::Persistence | |
void | dumpToStream (std::ostream &stream, int compression) |
virtual unsigned int | getMemSize () const =0 |
This method is used to get the size of objects It is not meant to have the exact size, it is more or less an estimation which runs fast! Is it two bytes or a GB? More... | |
virtual Base::Type | getTypeId (void) const |
virtual void | Restore (XMLReader &)=0 |
This method is used to restore properties from an XML document. More... | |
virtual void | RestoreDocFile (Reader &) |
This method is used to restore large amounts of data from a file In this method you simply stream in your SaveDocFile() saved data. More... | |
void | restoreFromStream (std::istream &stream) |
virtual void | Save (Writer &) const =0 |
This method is used to save properties to an XML document. More... | |
virtual void | SaveDocFile (Writer &) const |
This method is used to save large amounts of data to a binary file. More... | |
Public Member Functions inherited from Base::BaseClass | |
BaseClass () | |
Construction. More... | |
BaseClass (const BaseClass &)=default | |
virtual PyObject * | getPyObject () |
This method returns the Python wrapper for a C++ object. More... | |
virtual Type | getTypeId () const |
bool | isDerivedFrom (const Type type) const |
BaseClass & | operator= (const BaseClass &)=default |
virtual void | setPyObject (PyObject *) |
virtual | ~BaseClass () |
Destruction. More... | |
Static Public Member Functions | |
static int | getLastID (void) |
static int | getNewID (void) |
Generate a new unique transaction ID. More... | |
Static Public Member Functions inherited from Base::Persistence | |
static void * | create (void) |
static std::string | encodeAttribute (const std::string &) |
Encodes an attribute upon saving. More... | |
static Base::Type | getClassTypeId (void) |
static void | init (void) |
Static Public Member Functions inherited from Base::BaseClass | |
static void * | create () |
static Type | getClassTypeId () |
static void | init () |
Public Attributes | |
std::string | Name |
Additional Inherited Members | |
Static Protected Member Functions inherited from Base::BaseClass | |
static void | initSubclass (Base::Type &toInit, const char *ClassName, const char *ParentName, Type::instantiationMethod method=nullptr) |
Represents a atomic transaction of the document.
Transaction::Transaction | ( | int | id = 0 | ) |
Construction.
id | transaction id. If zero, then it will be generated automatically as a monotonically increasing index across the entire application. User can pass in a transaction id to group multiple transactions from different document, so that they can be undo/redo together. |
|
virtual |
Construction.
A destructor.
A more elaborate description of the destructor.
References Base::Persistence::getClassTypeId(), and App::TransactionObject::New.
void Transaction::addObjectChange | ( | const TransactionalObject * | Obj, |
const Property * | Prop | ||
) |
References App::TransactionObject::Chn, App::TransactionFactory::createTransaction(), Base::Persistence::getTypeId(), App::TransactionFactory::instance(), App::TransactionObject::setProperty(), and App::TransactionObject::status.
Referenced by App::Document::onBeforeChangeProperty(), and App::Document::removeObject().
void Transaction::addObjectDel | ( | const TransactionalObject * | Obj | ) |
References App::TransactionObject::Chn, App::TransactionFactory::createTransaction(), App::TransactionObject::Del, Base::Persistence::getTypeId(), App::TransactionFactory::instance(), App::TransactionObject::New, and App::TransactionObject::status.
Referenced by App::Document::addObject(), App::Document::addObjects(), and Gui::Document::slotTransactionAppend().
void Transaction::addObjectNew | ( | TransactionalObject * | Obj | ) |
References App::TransactionFactory::createTransaction(), App::TransactionObject::Del, App::TransactionalObject::detachFromDocument(), Base::Persistence::getTypeId(), App::TransactionFactory::instance(), App::TransactionObject::New, and App::TransactionObject::status.
Referenced by App::Document::removeObject(), and Gui::Document::slotTransactionRemove().
void Transaction::addOrRemoveProperty | ( | TransactionalObject * | Obj, |
const Property * | pcProp, | ||
bool | add | ||
) |
apply the content to the document
References Name.
int Transaction::getID | ( | void | ) | const |
Return the transaction ID.
Referenced by App::Document::abortTransaction(), App::Document::commitTransaction(), App::Document::getAvailableUndos(), App::Document::getTransactionID(), App::Document::redo(), App::Document::renameTransaction(), and App::Document::undo().
|
static |
Referenced by App::Application::getActiveTransaction().
|
virtual |
This method is used to get the size of objects It is not meant to have the exact size, it is more or less an estimation which runs fast! Is it two bytes or a GB?
Implements Base::Persistence.
|
static |
Generate a new unique transaction ID.
Referenced by App::Application::setActiveTransaction().
bool Transaction::hasObject | ( | const TransactionalObject * | Obj | ) | const |
check if this object is used in a transaction
bool Transaction::isEmpty | ( | void | ) | const |
Returns true if the transaction list is empty; otherwise returns false.
|
virtual |
This method is used to restore properties from an XML document.
Implements Base::Persistence.
|
virtual |
This method is used to save properties to an XML document.
A good example you'll find in PropertyStandard.cpp, e.g. the vector:
The writer.ind() expression writes the indentation, just for pretty printing of the XML. As you see, the writing of the XML document is not done with a DOM implementation because of performance reasons. Therefore the programmer has to take care that a valid XML document is written. This means closing tags and writing UTF-8.
Implements Base::Persistence.
std::string App::Transaction::Name |