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
69 private:
70 // Keep track of the location where this cell is inserted into
71 // the notebook.
72
74 DTree::iterator newref;
77 };
78
79
84
86 public:
87 enum class Position { in, next, previous };
88
91
92 virtual void execute(DocumentThread&, GUIBase&) override;
93 virtual void revert(DocumentThread&, GUIBase&) override;
94
95 private:
97 DTree::iterator newref;
99 };
100
104
106 public:
107 ActionSetRunStatus(DataCell::id_t ref_id_, bool running);
109
110 virtual void execute(DocumentThread&, GUIBase&) override;
111 virtual void revert(DocumentThread&, GUIBase&) override;
112
113 virtual bool undoable() const override;
114 private:
115 DTree::iterator this_cell;
117 };
118
119
123
125 public:
127 virtual ~ActionRemoveCell();
128
129 virtual void execute(DocumentThread&, GUIBase&) override;
130 virtual void revert(DocumentThread&, GUIBase&) override;
131
132 private:
133 // Keep track of the location where this cell (and its child
134 // cells) was in the notebook. We keep a reference to the
135 // parent cell and the index of the current cell as child of
136 // that parent.
137
139 DTree::iterator reference_parent_cell;
141 };
142
146
148 public:
150 virtual ~ActionSplitCell();
151
152 virtual void execute(DocumentThread&, GUIBase&) override;
153 virtual void revert(DocumentThread&, GUIBase&) override;
154
155 private:
156 DTree::iterator newref; // the newly created cell
157 };
158
159
168
170 public:
171 ActionInsertText(DataCell::id_t ref_id, int pos, const std::string&);
172 virtual ~ActionInsertText() {};
173
174 virtual void execute(DocumentThread&, GUIBase&) override;
175 virtual void revert(DocumentThread&, GUIBase&) override;
176
177 private:
178 DTree::iterator this_cell;
180 std::string text;
181 };
182
190
192 public:
193 ActionCompleteText(DataCell::id_t ref_id, int pos, const std::string&, int alternative);
195
196 virtual void execute(DocumentThread&, GUIBase&) override;
197 virtual void revert(DocumentThread&, GUIBase&) override;
198
199 int length() const;
200 int alternative() const;
201
202 private:
203 DTree::iterator this_cell;
205 std::string text;
206 int alternative_; // in case there is more than one completion alternative
207 };
208
217
219 public:
221 virtual ~ActionEraseText() {};
222
223 virtual void execute(DocumentThread&, GUIBase&) override;
224 virtual void revert(DocumentThread&, GUIBase&) override;
225
226 private:
227 DTree::iterator this_cell;
229 std::string removed_text;
230 };
231
232 }
233
234
235//
236// class ActionMergeCells
237
238
239
Add a cell to the notebook.
Definition: Actions.hh:59
Position pos
Definition: Actions.hh:75
virtual ~ActionAddCell()
Definition: Actions.hh:64
int child_num
Definition: Actions.hh:76
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:42
DTree::iterator newref
Definition: Actions.hh:74
Position
Definition: Actions.hh:61
DataCell newcell
Definition: Actions.hh:73
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:63
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:23
virtual bool undoable() const
Can this action be undone?
Definition: Actions.cc:18
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:191
int alternative() const
Definition: Actions.cc:301
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:279
std::string text
Definition: Actions.hh:205
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:289
virtual ~ActionCompleteText()
Definition: Actions.hh:194
int alternative_
Definition: Actions.hh:206
int length() const
Definition: Actions.cc:296
DTree::iterator this_cell
Definition: Actions.hh:203
int insert_pos
Definition: Actions.hh:204
Remove a text string starting at the indicated position, and with the indicated length,...
Definition: Actions.hh:218
int to_pos
Definition: Actions.hh:228
std::string removed_text
Definition: Actions.hh:229
virtual ~ActionEraseText()
Definition: Actions.hh:221
int from_pos
Definition: Actions.hh:228
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:311
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:320
DTree::iterator this_cell
Definition: Actions.hh:227
Add a text string (can be just a single character) at the point of the cursor.
Definition: Actions.hh:169
virtual ~ActionInsertText()
Definition: Actions.hh:172
std::string text
Definition: Actions.hh:180
int insert_pos
Definition: Actions.hh:179
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:267
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:259
DTree::iterator this_cell
Definition: Actions.hh:178
Position the cursor relative to the indicated cell.
Definition: Actions.hh:85
virtual ~ActionPositionCursor()
Definition: Actions.hh:90
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:140
DTree::iterator newref
Definition: Actions.hh:97
Position pos
Definition: Actions.hh:98
Position
Definition: Actions.hh:87
bool needed_new_cell
Definition: Actions.hh:96
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:80
Remove a cell and all its child cells from the document.
Definition: Actions.hh:124
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:172
DTree::iterator reference_parent_cell
Definition: Actions.hh:139
size_t reference_child_index
Definition: Actions.hh:140
DTree removed_tree
Definition: Actions.hh:138
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:159
virtual ~ActionRemoveCell()
Definition: Actions.cc:155
Update the running status of the indicated cell.
Definition: Actions.hh:105
DTree::iterator this_cell
Definition: Actions.hh:115
bool was_running_
Definition: Actions.hh:116
virtual ~ActionSetRunStatus()
Definition: Actions.hh:108
virtual bool undoable() const override
Can this action be undone?
Definition: Actions.cc:234
bool new_running_
Definition: Actions.hh:116
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:239
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:249
Split a cell into two separate cells, at the point of the cursor.
Definition: Actions.hh:147
virtual void revert(DocumentThread &, GUIBase &) override
Revert the change to the DTree document and the GUI.
Definition: Actions.cc:222
virtual ~ActionSplitCell()
Definition: Actions.cc:195
virtual void execute(DocumentThread &, GUIBase &) override
Perform the action.
Definition: Actions.cc:199
DTree::iterator newref
Definition: Actions.hh:156
Each cell is identified by a serial number 'id' which is used to keep track of it across network call...
Definition: DataCell.hh:51
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:40
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:108