Cadabra
Computer algebra system for field theory problems
Loading...
Searching...
No Matches
Actions.hh
Go to the documentation of this file.
1
2#pragma once
3
4#include "DataCell.hh"
5#include "DocumentThread.hh"
6
7#include <memory>
8
9namespace cadabra {
10
11 class DocumentThread;
12 class GUIBase;
13
30
31
32 class ActionBase {
33 public:
35
40
41 virtual void execute(DocumentThread&, GUIBase&);
42
44
45 virtual void revert(DocumentThread&, GUIBase&)=0;
46
48 virtual bool undoable() const;
49
51 protected:
52 DTree::iterator ref;
53 };
54
58
59 class ActionAddCell : public ActionBase {
60 public:
61 enum class Position { before, after, child };
62
64 virtual ~ActionAddCell() {};
65
66 virtual void execute(DocumentThread&, GUIBase&) override;
67 virtual void revert(DocumentThread&, GUIBase&) override;
68
70 virtual bool undoable() const override;
71 private:
72 // Keep track of the location where this cell is inserted into
73 // the notebook.
74
76 DTree::iterator newref;
79
80 // If we are replacing a cell, keep track of that so we
81 // report that we are not undoable.
83
84 // For input-form cells, we want no undo, as they will go
85 // when the owner cell will be reverted.
87 };
88
89
94
96 public:
97 enum class Position { in, next, previous };
98
101
102 virtual void execute(DocumentThread&, GUIBase&) override;
103 virtual void revert(DocumentThread&, GUIBase&) override;
104
105 private:
107 DTree::iterator newref;
109 };
110
114
116 public:
117 ActionSetRunStatus(DataCell::id_t ref_id_, bool running);
119
120 virtual void execute(DocumentThread&, GUIBase&) override;
121 virtual void revert(DocumentThread&, GUIBase&) override;
122
123 virtual bool undoable() const override;
124 private:
125 DTree::iterator this_cell;
127 };
128
129
133
135 public:
137 virtual ~ActionRemoveCell();
138
139 virtual void execute(DocumentThread&, GUIBase&) override;
140 virtual void revert(DocumentThread&, GUIBase&) override;
141
142 private:
143 // Keep track of the location where this cell (and its child
144 // cells) was in the notebook. We keep a reference to the
145 // parent cell and the index of the current cell as child of
146 // that parent.
147
149 DTree::iterator reference_parent_cell;
151 };
152
156
158 public:
160 virtual ~ActionReplaceCell();
161
162 virtual void execute(DocumentThread&, GUIBase&) override;
163 virtual void revert(DocumentThread&, GUIBase&) override;
164
165 virtual bool undoable() const override;
166 private:
167 };
168
172
174 public:
176 virtual ~ActionSplitCell();
177
178 virtual void execute(DocumentThread&, GUIBase&) override;
179 virtual void revert(DocumentThread&, GUIBase&) override;
180
181 private:
182 DTree::iterator newref; // the newly created cell
183 };
184
185
194
196 public:
197 ActionInsertText(DataCell::id_t ref_id, int pos, const std::string&);
198 virtual ~ActionInsertText() {};
199
200 virtual void execute(DocumentThread&, GUIBase&) override;
201 virtual void revert(DocumentThread&, GUIBase&) override;
202
203 private:
204 DTree::iterator this_cell;
206 std::string text;
207 };
208
216
218 public:
219 ActionCompleteText(DataCell::id_t ref_id, int pos, const std::string&, int alternative);
221
222 virtual void execute(DocumentThread&, GUIBase&) override;
223 virtual void revert(DocumentThread&, GUIBase&) override;
224
225 int length() const;
226 int alternative() const;
227
228 private:
229 DTree::iterator this_cell;
231 std::string text;
232 int alternative_; // in case there is more than one completion alternative
233 };
234
243
245 public:
247 virtual ~ActionEraseText() {};
248
249 virtual void execute(DocumentThread&, GUIBase&) override;
250 virtual void revert(DocumentThread&, GUIBase&) override;
251
252 private:
253 DTree::iterator this_cell;
255 std::string removed_text;
256 };
257
258 }
259
260
261//
262// class ActionMergeCells
263
264
265
Add a cell to the notebook.
Definition Actions.hh:59
Position pos
Definition Actions.hh:77
virtual ~ActionAddCell()
Definition Actions.hh:64
int child_num
Definition Actions.hh:78
bool is_input_form
Definition Actions.hh:86
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:46
DTree::iterator newref
Definition Actions.hh:76
bool is_replacement
Definition Actions.hh:82
Position
Definition Actions.hh:61
DataCell newcell
Definition Actions.hh:75
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:93
virtual bool undoable() const override
Can this action be undone?
Definition Actions.cc:121
All actions derive from the ActionBase object, which defines the interface they need to implement.
Definition Actions.hh:32
DTree::iterator ref
Definition Actions.hh:52
virtual void execute(DocumentThread &, GUIBase &)
Perform the action.
Definition Actions.cc:27
virtual bool undoable() const
Can this action be undone?
Definition Actions.cc:22
DataCell::id_t ref_id
Definition Actions.hh:50
virtual void revert(DocumentThread &, GUIBase &)=0
Revert the change to the DTree document and the GUI.
Complete text at a point in a GUI cell with one or more alternative.
Definition Actions.hh:217
int alternative() const
Definition Actions.cc:387
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:365
std::string text
Definition Actions.hh:231
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:375
virtual ~ActionCompleteText()
Definition Actions.hh:220
int alternative_
Definition Actions.hh:232
int length() const
Definition Actions.cc:382
DTree::iterator this_cell
Definition Actions.hh:229
int insert_pos
Definition Actions.hh:230
Remove a text string starting at the indicated position, and with the indicated length,...
Definition Actions.hh:244
int to_pos
Definition Actions.hh:254
std::string removed_text
Definition Actions.hh:255
virtual ~ActionEraseText()
Definition Actions.hh:247
int from_pos
Definition Actions.hh:254
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:397
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:406
DTree::iterator this_cell
Definition Actions.hh:253
Add a text string (can be just a single character) at the point of the cursor.
Definition Actions.hh:195
virtual ~ActionInsertText()
Definition Actions.hh:198
std::string text
Definition Actions.hh:206
int insert_pos
Definition Actions.hh:205
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:352
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:343
DTree::iterator this_cell
Definition Actions.hh:204
Position the cursor relative to the indicated cell.
Definition Actions.hh:95
virtual ~ActionPositionCursor()
Definition Actions.hh:100
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:202
DTree::iterator newref
Definition Actions.hh:107
Position pos
Definition Actions.hh:108
Position
Definition Actions.hh:97
uint64_t needed_new_cell_with_id
Definition Actions.hh:106
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:131
Remove a cell and all its child cells from the document.
Definition Actions.hh:134
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:234
DTree::iterator reference_parent_cell
Definition Actions.hh:149
size_t reference_child_index
Definition Actions.hh:150
DTree removed_tree
Definition Actions.hh:148
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:221
virtual ~ActionRemoveCell()
Definition Actions.cc:217
Replace the contents of a cell.
Definition Actions.hh:157
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:265
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:261
virtual bool undoable() const override
Can this action be undone?
Definition Actions.cc:269
virtual ~ActionReplaceCell()
Definition Actions.cc:257
Update the running status of the indicated cell.
Definition Actions.hh:115
DTree::iterator this_cell
Definition Actions.hh:125
bool was_running_
Definition Actions.hh:126
virtual ~ActionSetRunStatus()
Definition Actions.hh:118
virtual bool undoable() const override
Can this action be undone?
Definition Actions.cc:318
bool new_running_
Definition Actions.hh:126
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:323
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:333
Split a cell into two separate cells, at the point of the cursor.
Definition Actions.hh:173
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition Actions.cc:306
virtual ~ActionSplitCell()
Definition Actions.cc:279
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition Actions.cc:283
DTree::iterator newref
Definition Actions.hh:182
Each cell is identified by a serial number 'id' which is used to keep track of it across network call...
Definition DataCell.hh:52
DataCells are the basic building blocks for a document.
Definition DataCell.hh:27
A base class with all the logic to manipulate a Cadabra notebook document.
Definition DocumentThread.hh:41
Abstract base class with methods that need to be implemented by any GUI.
Definition GUIBase.hh:16
Functions to handle the exchange properties of two or more symbols in a product.
Definition Adjform.cc:83
tree< DataCell > DTree
Definition DataCell.hh:109