src/history.cc

changeset 622
622c49e60348
parent 603
47e7773c7841
equal deleted inserted replaced
621:928365840d0d 622:622c49e60348
22 #include "misc.h" 22 #include "misc.h"
23 #include "gui.h" 23 #include "gui.h"
24 #include "gldraw.h" 24 #include "gldraw.h"
25 25
26 // ============================================================================= 26 // =============================================================================
27 // ----------------------------------------------------------------------------- 27 //
28 History::History() : 28 History::History() :
29 m_Position (-1) {} 29 m_Position (-1) {}
30 30
31 // ============================================================================= 31 // =============================================================================
32 // ----------------------------------------------------------------------------- 32 //
33 void History::undo() 33 void History::undo()
34 { 34 {
35 if (m_changesets.isEmpty() || getPosition() == -1) 35 if (m_changesets.isEmpty() || getPosition() == -1)
36 return; 36 return;
37 37
53 dlog ("Position is now %1", getPosition()); 53 dlog ("Position is now %1", getPosition());
54 setIgnoring (false); 54 setIgnoring (false);
55 } 55 }
56 56
57 // ============================================================================= 57 // =============================================================================
58 // ----------------------------------------------------------------------------- 58 //
59 void History::redo() 59 void History::redo()
60 { 60 {
61 if (getPosition() == m_changesets.size()) 61 if (getPosition() == m_changesets.size())
62 return; 62 return;
63 63
74 dlog ("Position is now %1", getPosition()); 74 dlog ("Position is now %1", getPosition());
75 setIgnoring (false); 75 setIgnoring (false);
76 } 76 }
77 77
78 // ============================================================================= 78 // =============================================================================
79 // ----------------------------------------------------------------------------- 79 //
80 void History::clear() 80 void History::clear()
81 { 81 {
82 for (Changeset set : m_changesets) 82 for (Changeset set : m_changesets)
83 for (AbstractHistoryEntry* change : set) 83 for (AbstractHistoryEntry* change : set)
84 delete change; 84 delete change;
86 m_changesets.clear(); 86 m_changesets.clear();
87 dlog ("History: cleared"); 87 dlog ("History: cleared");
88 } 88 }
89 89
90 // ============================================================================= 90 // =============================================================================
91 // ----------------------------------------------------------------------------- 91 //
92 void History::addStep() 92 void History::addStep()
93 { 93 {
94 if (m_currentChangeset.isEmpty()) 94 if (m_currentChangeset.isEmpty())
95 return; 95 return;
96 96
110 setPosition (getPosition() + 1); 110 setPosition (getPosition() + 1);
111 g_win->updateActions(); 111 g_win->updateActions();
112 } 112 }
113 113
114 // ============================================================================= 114 // =============================================================================
115 // ----------------------------------------------------------------------------- 115 //
116 void History::add (AbstractHistoryEntry* entry) 116 void History::add (AbstractHistoryEntry* entry)
117 { 117 {
118 if (isIgnoring()) 118 if (isIgnoring())
119 { 119 {
120 delete entry; 120 delete entry;
125 m_currentChangeset << entry; 125 m_currentChangeset << entry;
126 dlog ("History: added entry of type %1", entry->getTypeName()); 126 dlog ("History: added entry of type %1", entry->getTypeName());
127 } 127 }
128 128
129 // ============================================================================= 129 // =============================================================================
130 // ----------------------------------------------------------------------------- 130 //
131 void AddHistory::undo() const 131 void AddHistory::undo() const
132 { 132 {
133 LDObject* obj = getParent()->getFile()->getObject (getIndex()); 133 LDObject* obj = getParent()->getDocument()->getObject (getIndex());
134 obj->deleteSelf(); 134 obj->deleteSelf();
135 } 135 }
136 136
137 // ============================================================================= 137 // =============================================================================
138 // ----------------------------------------------------------------------------- 138 //
139 void AddHistory::redo() const 139 void AddHistory::redo() const
140 { 140 {
141 LDObject* obj = parseLine (getCode()); 141 LDObject* obj = parseLine (getCode());
142 getParent()->getFile()->insertObj (getIndex(), obj); 142 getParent()->getDocument()->insertObj (getIndex(), obj);
143 g_win->R()->compileObject (obj); 143 g_win->R()->compileObject (obj);
144 } 144 }
145 145
146 // ============================================================================= 146 // =============================================================================
147 // ----------------------------------------------------------------------------- 147 //
148 DelHistory::DelHistory (int idx, LDObject* obj) : 148 DelHistory::DelHistory (int idx, LDObject* obj) :
149 m_Index (idx), 149 m_Index (idx),
150 m_Code (obj->raw()) {} 150 m_Code (obj->raw()) {}
151 151
152 // ============================================================================= 152 // =============================================================================
153 // heh 153 // heh
154 // ----------------------------------------------------------------------------- 154 //
155 void DelHistory::undo() const 155 void DelHistory::undo() const
156 { 156 {
157 LDObject* obj = parseLine (getCode()); 157 LDObject* obj = parseLine (getCode());
158 getParent()->getFile()->insertObj (getIndex(), obj); 158 getParent()->getDocument()->insertObj (getIndex(), obj);
159 g_win->R()->compileObject (obj); 159 g_win->R()->compileObject (obj);
160 } 160 }
161 161
162 // ============================================================================= 162 // =============================================================================
163 // ----------------------------------------------------------------------------- 163 //
164 void DelHistory::redo() const 164 void DelHistory::redo() const
165 { 165 {
166 LDObject* obj = getParent()->getFile()->getObject (getIndex()); 166 LDObject* obj = getParent()->getDocument()->getObject (getIndex());
167 obj->deleteSelf(); 167 obj->deleteSelf();
168 } 168 }
169 169
170 // ============================================================================= 170 // =============================================================================
171 // ----------------------------------------------------------------------------- 171 //
172 void EditHistory::undo() const 172 void EditHistory::undo() const
173 { 173 {
174 LDObject* obj = getCurrentDocument()->getObject (getIndex()); 174 LDObject* obj = getCurrentDocument()->getObject (getIndex());
175 LDObject* newobj = parseLine (getOldCode()); 175 LDObject* newobj = parseLine (getOldCode());
176 obj->replace (newobj); 176 obj->replace (newobj);
177 g_win->R()->compileObject (newobj); 177 g_win->R()->compileObject (newobj);
178 } 178 }
179 179
180 // ============================================================================= 180 // =============================================================================
181 // ----------------------------------------------------------------------------- 181 //
182 void EditHistory::redo() const 182 void EditHistory::redo() const
183 { 183 {
184 LDObject* obj = getCurrentDocument()->getObject (getIndex()); 184 LDObject* obj = getCurrentDocument()->getObject (getIndex());
185 LDObject* newobj = parseLine (getNewCode()); 185 LDObject* newobj = parseLine (getNewCode());
186 obj->replace (newobj); 186 obj->replace (newobj);
187 g_win->R()->compileObject (newobj); 187 g_win->R()->compileObject (newobj);
188 } 188 }
189 189
190 // ============================================================================= 190 // =============================================================================
191 // ----------------------------------------------------------------------------- 191 //
192 void SwapHistory::undo() const 192 void SwapHistory::undo() const
193 { 193 {
194 LDObject::fromID (a)->swap (LDObject::fromID (b)); 194 LDObject::fromID (a)->swap (LDObject::fromID (b));
195 } 195 }
196 196
197 // =============================================================================
198 //
197 void SwapHistory::redo() const 199 void SwapHistory::redo() const
198 { 200 {
199 undo(); // :v 201 undo();
200 } 202 }

mercurial