00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __CH_UndoGroup__
00024 #define __CH_UndoGroup__
00025
00026 #include "CH_API.h"
00027 #include <UT/UT_Undo.h>
00028 #include "CH_ChannelRef.h"
00029
00030 class CH_Group;
00031 class CH_Manager;
00032
00033 class CH_API CH_UndoGroup : public UT_Undo
00034 {
00035 public:
00036 CH_UndoGroup( CH_Group *chg, bool reverse );
00037 virtual ~CH_UndoGroup();
00038
00039 virtual void undo();
00040 virtual void redo();
00041
00042 protected:
00043 virtual void swap();
00044 CH_Group *getGroup() const;
00045
00046 UT_String myPath;
00047 bool myReverse;
00048 };
00049
00050 class CH_API CH_UndoGroupCreateDelete: public CH_UndoGroup
00051 {
00052 public:
00053 CH_UndoGroupCreateDelete( CH_Group *chg, bool reverse );
00054
00055 private:
00056 virtual void swap();
00057 };
00058
00059 class CH_API CH_UndoGroupRename: public CH_UndoGroup
00060 {
00061 public:
00062 CH_UndoGroupRename(
00063 CH_Group *chg,
00064 const char *oldName, const char *newName );
00065 private:
00066 virtual void swap();
00067
00068 private:
00069 UT_String myOldName;
00070 UT_String myNewName;
00071 };
00072
00073 class CH_API CH_UndoGroupLoadClear: public CH_UndoGroup
00074 {
00075 public:
00076 CH_UndoGroupLoadClear( CH_Group *chg, bool reverse );
00077 ~CH_UndoGroupLoadClear();
00078
00079 private:
00080 virtual void swap();
00081
00082 private:
00083 void saveChannels();
00084
00085 char *myBuffer;
00086 size_t myBufSize;
00087 };
00088
00089 class CH_API CH_UndoGroupAddRemoveChannel: public CH_UndoGroup
00090 {
00091 public:
00092 CH_UndoGroupAddRemoveChannel(
00093 CH_Group *chg, bool reverse,
00094 const CH_ChannelRef &chref );
00095 private:
00096 virtual void swap();
00097
00098 private:
00099 CH_ChannelRef myChanRef;
00100 };
00101
00102 class CH_API CH_UndoGroupMove: public CH_UndoGroup
00103 {
00104 public:
00105 CH_UndoGroupMove( CH_Group *chgsp, CH_Group *chgtp,
00106 const char *old_name, const char *new_name );
00107 private:
00108 virtual void swap();
00109
00110 private:
00111 UT_String myOldName;
00112 UT_String myNewName;
00113 UT_String myTargetParentPath;
00114 };
00115
00116 class CH_API CH_UndoGroupChangeIndex: public CH_UndoGroup
00117 {
00118 public:
00119 CH_UndoGroupChangeIndex( CH_Group *chg, int old_index, int new_index );
00120
00121 private:
00122 virtual void swap();
00123
00124 private:
00125 int myOldIndex;
00126 int myNewIndex;
00127 };
00128 #endif
00129