src/history.h

changeset 421
7d26db0be944
parent 409
8da2563c645a
child 455
c5d14d112034
equal deleted inserted replaced
420:8d6af951b611 421:7d26db0be944
45 Add, 45 Add,
46 Move, 46 Move,
47 Swap, 47 Swap,
48 }; 48 };
49 49
50 History (); 50 History();
51 void undo (); 51 void undo();
52 void redo (); 52 void redo();
53 void clear (); 53 void clear();
54 void updateActions () const; 54 void updateActions() const;
55 55
56 void open (); 56 void open();
57 void close (); 57 void close();
58 void add (AbstractHistoryEntry* entry); 58 void add (AbstractHistoryEntry* entry);
59 long size () const { return m_changesets.size (); } 59 long size() const { return m_changesets.size(); }
60 60
61 History& operator<< (AbstractHistoryEntry* entry) { 61 History& operator<< (AbstractHistoryEntry* entry) {
62 add (entry); 62 add (entry);
63 return *this; 63 return *this;
64 } 64 }
77 // ============================================================================= 77 // =============================================================================
78 class AbstractHistoryEntry { 78 class AbstractHistoryEntry {
79 PROPERTY (History*, parent, setParent) 79 PROPERTY (History*, parent, setParent)
80 80
81 public: 81 public:
82 virtual void undo () const {} 82 virtual void undo() const {}
83 virtual void redo () const {} 83 virtual void redo() const {}
84 virtual ~AbstractHistoryEntry () {} 84 virtual ~AbstractHistoryEntry() {}
85 virtual History::Type getType () const { return (History::Type) 0; } 85 virtual History::Type getType() const { return (History::Type) 0; }
86 }; 86 };
87 87
88 // ============================================================================= 88 // =============================================================================
89 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 89 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
90 // ============================================================================= 90 // =============================================================================
101 101
102 public: 102 public:
103 IMPLEMENT_HISTORY_TYPE (Del) 103 IMPLEMENT_HISTORY_TYPE (Del)
104 104
105 DelHistory (ulong idx, LDObject* obj, Type type = Other) : 105 DelHistory (ulong idx, LDObject* obj, Type type = Other) :
106 m_index (idx), m_code (obj->raw ()), m_type (type) {} 106 m_index (idx),
107 m_code (obj->raw()),
108 m_type (type) {}
107 }; 109 };
108 110
109 // ============================================================================= 111 // =============================================================================
110 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 112 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
111 // ============================================================================= 113 // =============================================================================
116 118
117 public: 119 public:
118 IMPLEMENT_HISTORY_TYPE (Edit) 120 IMPLEMENT_HISTORY_TYPE (Edit)
119 121
120 EditHistory (ulong idx, str oldCode, str newCode) : 122 EditHistory (ulong idx, str oldCode, str newCode) :
121 m_index (idx), m_oldCode (oldCode), m_newCode (newCode) {} 123 m_index (idx),
124 m_oldCode (oldCode),
125 m_newCode (newCode) {}
122 }; 126 };
123 127
124 // ============================================================================= 128 // =============================================================================
125 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 129 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
126 // ============================================================================= 130 // =============================================================================
137 141
138 public: 142 public:
139 IMPLEMENT_HISTORY_TYPE (Add) 143 IMPLEMENT_HISTORY_TYPE (Add)
140 144
141 AddHistory (ulong idx, LDObject* obj, Type type = Other) : 145 AddHistory (ulong idx, LDObject* obj, Type type = Other) :
142 m_index (idx), m_code (obj->raw ()), m_type (type) {} 146 m_index (idx),
147 m_code (obj->raw()),
148 m_type (type) {}
143 }; 149 };
144 150
145 // ============================================================================= 151 // =============================================================================
146 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 152 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
147 // ============================================================================= 153 // =============================================================================
151 157
152 List<ulong> indices; 158 List<ulong> indices;
153 vertex dest; 159 vertex dest;
154 160
155 MoveHistory (List<ulong> indices, vertex dest) : 161 MoveHistory (List<ulong> indices, vertex dest) :
156 indices (indices), dest (dest) {} 162 indices (indices),
163 dest (dest) {}
157 }; 164 };
158 165
159 class SwapHistory : public AbstractHistoryEntry 166 class SwapHistory : public AbstractHistoryEntry {
160 {
161 public: 167 public:
162 IMPLEMENT_HISTORY_TYPE( Swap ) 168 IMPLEMENT_HISTORY_TYPE (Swap)
163 ulong a, b; 169 ulong a, b;
164 170
165 SwapHistory( ulong a, ulong b ) : a( a ), b( b ) {} 171 SwapHistory (ulong a, ulong b) :
172 a (a),
173 b (b) {}
166 }; 174 };
167 175
168 #endif // HISTORY_H 176 #endif // HISTORY_H

mercurial