1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
#include <Python.h>
#include <QTextCursor>
#include <QPlainTextEdit>
#include <QGraphicsTextItem>
#include "undo/undo_change_expr.h"
#include "graph/datum.h"
UndoChangeExpr::UndoChangeExpr(Datum* d, QString before,
QString after, QGraphicsTextItem* editor,
int cursor_before, int cursor_after)
: datum(d), before(before), after(after), editor(editor),
cursor_before(cursor_before), cursor_after(cursor_after)
{
setText("'set value'");
}
void UndoChangeExpr::setCursor(int pos)
{
if (editor)
{
QTextCursor c = editor->textCursor();
c.setPosition(pos);
editor->setTextCursor(c);
}
}
void UndoChangeExpr::redo()
{
datum->setText(after.toStdString());
setCursor(cursor_after);
}
void UndoChangeExpr::undo()
{
// Save text value and cursor position
after = QString::fromStdString(datum->getText());
if (editor)
cursor_after = editor->textCursor().position();
// Update the script's text and restore the cursor
datum->setText(before.toStdString());
setCursor(cursor_before);
}
void UndoChangeExpr::swapPointer(Datum* a, Datum* b) const
{
if (datum == a)
datum = b;
}
|