src/history.h

changeset 603
47e7773c7841
parent 600
209e3f1f7b2c
child 604
01bdac75994a
equal deleted inserted replaced
602:ac1744536b33 603:47e7773c7841
31 31
32 class AbstractHistoryEntry; 32 class AbstractHistoryEntry;
33 33
34 // ============================================================================= 34 // =============================================================================
35 class History 35 class History
36 { PROPERTY (private, int, Position, NUM_OPS, STOCK_WRITE) 36 {
37 PROPERTY (public, LDDocument*, File, NO_OPS, STOCK_WRITE) 37 PROPERTY (private, int, Position, NUM_OPS, STOCK_WRITE)
38 PROPERTY (public, bool, Ignoring, BOOL_OPS, STOCK_WRITE) 38 PROPERTY (public, LDDocument*, File, NO_OPS, STOCK_WRITE)
39 PROPERTY (public, bool, Ignoring, BOOL_OPS, STOCK_WRITE)
39 40
40 public: 41 public:
41 typedef QList<AbstractHistoryEntry*> Changeset; 42 typedef QList<AbstractHistoryEntry*> Changeset;
42 43
43 enum Type 44 enum Type
44 { Del, 45 {
46 Del,
45 Edit, 47 Edit,
46 Add, 48 Add,
47 Move, 49 Move,
48 Swap, 50 Swap,
49 }; 51 };
55 57
56 void addStep(); 58 void addStep();
57 void add (AbstractHistoryEntry* entry); 59 void add (AbstractHistoryEntry* entry);
58 60
59 inline long getSize() const 61 inline long getSize() const
60 { return m_changesets.size(); 62 {
63 return m_changesets.size();
61 } 64 }
62 65
63 inline History& operator<< (AbstractHistoryEntry* entry) 66 inline History& operator<< (AbstractHistoryEntry* entry)
64 { add (entry); 67 {
68 add (entry);
65 return *this; 69 return *this;
66 } 70 }
67 71
68 inline const Changeset& getChangeset (long pos) const 72 inline const Changeset& getChangeset (long pos) const
69 { return m_changesets[pos]; 73 {
74 return m_changesets[pos];
70 } 75 }
71 76
72 private: 77 private:
73 Changeset m_currentChangeset; 78 Changeset m_currentChangeset;
74 QList<Changeset> m_changesets; 79 QList<Changeset> m_changesets;
76 81
77 // ============================================================================= 82 // =============================================================================
78 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 83 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
79 // ============================================================================= 84 // =============================================================================
80 class AbstractHistoryEntry 85 class AbstractHistoryEntry
81 { PROPERTY (public, History*, Parent, NO_OPS, STOCK_WRITE) 86 {
87 PROPERTY (public, History*, Parent, NO_OPS, STOCK_WRITE)
82 88
83 public: 89 public:
84 virtual ~AbstractHistoryEntry() {} 90 virtual ~AbstractHistoryEntry() {}
85 virtual void undo() const {} 91 virtual void undo() const {}
86 virtual void redo() const {} 92 virtual void redo() const {}
87 93
88 virtual History::Type getType() const 94 virtual History::Type getType() const
89 { return (History::Type) 0; 95 {
96 return (History::Type) 0;
90 } 97 }
91 98
92 virtual const char* getTypeName() const 99 virtual const char* getTypeName() const
93 { return ""; 100 {
101 return "";
94 } 102 }
95 }; 103 };
96 104
97 // ============================================================================= 105 // =============================================================================
98 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 106 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
99 // ============================================================================= 107 // =============================================================================
100 class DelHistory : public AbstractHistoryEntry 108 class DelHistory : public AbstractHistoryEntry
101 { PROPERTY (private, int, Index, NO_OPS, STOCK_WRITE) 109 {
110 PROPERTY (private, int, Index, NO_OPS, STOCK_WRITE)
102 PROPERTY (private, str, Code, NO_OPS, STOCK_WRITE) 111 PROPERTY (private, str, Code, NO_OPS, STOCK_WRITE)
103 112
104 public: 113 public:
105 IMPLEMENT_HISTORY_TYPE (Del) 114 IMPLEMENT_HISTORY_TYPE (Del)
106 DelHistory (int idx, LDObject* obj); 115 DelHistory (int idx, LDObject* obj);
108 117
109 // ============================================================================= 118 // =============================================================================
110 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 119 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
111 // ============================================================================= 120 // =============================================================================
112 class EditHistory : public AbstractHistoryEntry 121 class EditHistory : public AbstractHistoryEntry
113 { PROPERTY (private, int, Index, NO_OPS, STOCK_WRITE) 122 {
123 PROPERTY (private, int, Index, NO_OPS, STOCK_WRITE)
114 PROPERTY (private, str, OldCode, NO_OPS, STOCK_WRITE) 124 PROPERTY (private, str, OldCode, NO_OPS, STOCK_WRITE)
115 PROPERTY (private, str, NewCode, NO_OPS, STOCK_WRITE) 125 PROPERTY (private, str, NewCode, NO_OPS, STOCK_WRITE)
116 126
117 public: 127 public:
118 IMPLEMENT_HISTORY_TYPE (Edit) 128 IMPLEMENT_HISTORY_TYPE (Edit)
125 135
126 // ============================================================================= 136 // =============================================================================
127 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 137 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
128 // ============================================================================= 138 // =============================================================================
129 class AddHistory : public AbstractHistoryEntry 139 class AddHistory : public AbstractHistoryEntry
130 { PROPERTY (private, int, Index, NO_OPS, STOCK_WRITE) 140 {
141 PROPERTY (private, int, Index, NO_OPS, STOCK_WRITE)
131 PROPERTY (private, str, Code, NO_OPS, STOCK_WRITE) 142 PROPERTY (private, str, Code, NO_OPS, STOCK_WRITE)
132 143
133 public: 144 public:
134 IMPLEMENT_HISTORY_TYPE (Add) 145 IMPLEMENT_HISTORY_TYPE (Add)
135 146
140 151
141 // ============================================================================= 152 // =============================================================================
142 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 153 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
143 // ============================================================================= 154 // =============================================================================
144 class MoveHistory : public AbstractHistoryEntry 155 class MoveHistory : public AbstractHistoryEntry
145 { public: 156 {
157 public:
146 IMPLEMENT_HISTORY_TYPE (Move) 158 IMPLEMENT_HISTORY_TYPE (Move)
147 159
148 QList<int> indices; 160 QList<int> indices;
149 vertex dest; 161 vertex dest;
150 162
155 167
156 // ============================================================================= 168 // =============================================================================
157 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 169 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
158 // ============================================================================= 170 // =============================================================================
159 class SwapHistory : public AbstractHistoryEntry 171 class SwapHistory : public AbstractHistoryEntry
160 { public: 172 {
173 public:
161 IMPLEMENT_HISTORY_TYPE (Swap) 174 IMPLEMENT_HISTORY_TYPE (Swap)
162 175
163 SwapHistory (int a, int b) : 176 SwapHistory (int a, int b) :
164 a (a), 177 a (a),
165 b (b) {} 178 b (b) {}

mercurial