#ifndef _OPERATION_H_
#define _OPERATION_H_
#include "atom.h"
/**
* All operations are derived from the abstract class Operation. For user defined operations there exists another abstract class - Addon - which itself
* inherits from Operation (read the information about Addon and the sample addon - Dump - if you are interested in writing addons).
*
* And if you write your own addon: Don't forget to implement the destructor to clean up memory and avoid memory leaks !!
*
* The following operations exist so far:
* ADDELEMENT, REMOVEELEMENT, CONVERTTRACK, MOVEPART, COPYPART, COPYGHOSTPART, MOVEEVENT, COPYEVENT, CHANGENOTE,
* GLUENOTE, SPLITNOTE, ADDORNAMENT, REMOVEORNAMENT, ADDSYMBOL,
* ADDTOSELECTION, REMOVEFROMSELECTION, NEWSELECTION, SELECTLEFT, SELECTRIGHT, UNSELECT, SPLITPART, GLUEPARTS,
* COPYSELECTION, CUTSELECTION, PASTESELECTION, DELETESELECTION
**/
class Operation : public Atoma
{
protected:
const char * _description;
bool _to_be_undone;
public:
/**
* Default Constructor
**/
Operation();
/**
* The destructor has definitely to be implemented:
* I.e. deleted notes, parts, tracks(!) have to be remembered in order
* to be able to undo the operation. Deleting the operation-object
* means to free the memory!
**/
virtual ~Operation();
/**
* Implemented for undoable operations
**/
virtual void undo()=0;
/**
* Implemented for undoable operations
**/
virtual void redo()=0;
/**
* Returns the description of an operation
**/
const char * description();
/**
* Returns true if the operation is undoable
**/
bool isToBeUndone();
/**
* Sets the undoable flag to true
**/
void toBeUndone();
/**
* Always returns false, since operations never are events
**/
virtual bool isEvent() const { return false; }
};
#endif
| Generated by: wuerthne on al on Sun Jan 6 22:32:42 2002, using kdoc 2.0a53. |