History

Add UndoStackScriptingInterface and support when editing entities

Ryan Huffman committed 12 years ago

Commit 14555c41 parent 0bda7696 files · +156 −6Browse files

Showing the changes to libraries/script-engine/src/UndoStackScriptingInterface.cpp (1 of 6 files). Show all

Unified · Split

libraries/script-engine/src/UndoStackScriptingInterface.cpp+46−0
@@ -0,0 +1,46 @@
1+//
2+// UndoStackScriptingInterface.cpp
3+// libraries/script-engine/src
4+//
5+// Created by Ryan Huffman on 10/22/14.
6+// Copyright 2014 High Fidelity, Inc.
7+//
8+// Distributed under the Apache License, Version 2.0.
9+// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
10+//
11+
12+#include <QDebug>
13+#include <QScriptValueList>
14+#include <QScriptEngine>
15+
16+#include "UndoStackScriptingInterface.h"
17+
18+UndoStackScriptingInterface::UndoStackScriptingInterface(QUndoStack* undoStack) : _undoStack(undoStack) {
19+}
20+
21+void UndoStackScriptingInterface::pushCommand(QScriptValue undoFunction, QScriptValue undoData,
22+ QScriptValue redoFunction, QScriptValue redoData) {
23+ ScriptUndoCommand* undoCommand = new ScriptUndoCommand(undoFunction, undoData, redoFunction, redoData);
24+ qDebug() << "Pushing command";
25+ _undoStack->push(undoCommand);
26+}
27+
28+ScriptUndoCommand::ScriptUndoCommand(QScriptValue undoFunction, QScriptValue undoData,
29+ QScriptValue redoFunction, QScriptValue redoData) :
30+ _undoFunction(undoFunction),
31+ _undoData(undoData),
32+ _redoFunction(redoFunction),
33+ _redoData(redoData) {
34+}
35+
36+void ScriptUndoCommand::undo() {
37+ QScriptValueList args;
38+ args << _undoData;
39+ _undoFunction.call(QScriptValue(), args);
40+}
41+
42+void ScriptUndoCommand::redo() {
43+ QScriptValueList args;
44+ args << _redoData;
45+ _redoFunction.call(QScriptValue(), args);
46+}