History

isolate calls to the QtScript libraries to an interface we control

Heather Anderson committed 5 years ago

Commit 1e018db1 parent 713b29e260 files · +6904 −5064Browse files

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

Unified · Split

libraries/script-engine/src/ConsoleScriptingInterface.cpp+59−55
@@ -19,7 +19,10 @@ · 18 unmodified lines
19 19
20#include <QtCore/QDateTime>20#include <QtCore/QDateTime>
21 21
22#include "ScriptContext.h"
22#include "ScriptEngine.h"23#include "ScriptEngine.h"
24#include "ScriptManager.h"
25#include "ScriptValue.h"
23 26
24#define INDENTATION 4 // 1 Tab - 4 spaces27#define INDENTATION 4 // 1 Tab - 4 spaces
25const QString LINE_SEPARATOR = "\n ";28const QString LINE_SEPARATOR = "\n ";
@@ -27,71 +30,71 @@ const QString SPACE_SEPARATOR = " "; · 1 unmodified line
27const QString STACK_TRACE_FORMAT = "\n[Stacktrace]%1%2";30const QString STACK_TRACE_FORMAT = "\n[Stacktrace]%1%2";
28QList<QString> ConsoleScriptingInterface::_groupDetails = QList<QString>();31QList<QString> ConsoleScriptingInterface::_groupDetails = QList<QString>();
29 32
30QScriptValue ConsoleScriptingInterface::info(QScriptContext* context, QScriptEngine* engine) {33ScriptValuePointer ConsoleScriptingInterface::info(ScriptContext* context, ScriptEngine* engine) {
31 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {34 if (ScriptManager* scriptManager = engine->manager()) {
32 scriptEngine->scriptInfoMessage(appendArguments(context));35 scriptManager->scriptInfoMessage(appendArguments(context));
33 }36 }
34 return QScriptValue::NullValue;37 return engine->nullValue();
35}38}
36 39
37QScriptValue ConsoleScriptingInterface::log(QScriptContext* context, QScriptEngine* engine) {40ScriptValuePointer ConsoleScriptingInterface::log(ScriptContext* context, ScriptEngine* engine) {
38 QString message = appendArguments(context);41 QString message = appendArguments(context);
39 if (_groupDetails.count() == 0) {42 if (_groupDetails.count() == 0) {
40 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {43 if (ScriptManager* scriptManager = engine->manager()) {
41 scriptEngine->scriptPrintedMessage(message);44 scriptManager->scriptPrintedMessage(message);
42 }45 }
43 } else {46 } else {
44 logGroupMessage(message, engine);47 logGroupMessage(message, engine);
45 }48 }
46 return QScriptValue::NullValue;49 return engine->nullValue();
47}50}
48 51
49QScriptValue ConsoleScriptingInterface::debug(QScriptContext* context, QScriptEngine* engine) {52ScriptValuePointer ConsoleScriptingInterface::debug(ScriptContext* context, ScriptEngine* engine) {
50 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {53 if (ScriptManager* scriptManager = engine->manager()) {
51 scriptEngine->scriptPrintedMessage(appendArguments(context));54 scriptManager->scriptPrintedMessage(appendArguments(context));
52 }55 }
53 return QScriptValue::NullValue;56 return engine->nullValue();
54}57}
55 58
56QScriptValue ConsoleScriptingInterface::warn(QScriptContext* context, QScriptEngine* engine) {59ScriptValuePointer ConsoleScriptingInterface::warn(ScriptContext* context, ScriptEngine* engine) {
57 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {60 if (ScriptManager* scriptManager = engine->manager()) {
58 scriptEngine->scriptWarningMessage(appendArguments(context));61 scriptManager->scriptWarningMessage(appendArguments(context));
59 }62 }
60 return QScriptValue::NullValue;63 return engine->nullValue();
61}64}
62 65
63QScriptValue ConsoleScriptingInterface::error(QScriptContext* context, QScriptEngine* engine) {66ScriptValuePointer ConsoleScriptingInterface::error(ScriptContext* context, ScriptEngine* engine) {
64 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {67 if (ScriptManager* scriptManager = engine->manager()) {
65 scriptEngine->scriptErrorMessage(appendArguments(context));68 scriptManager->scriptErrorMessage(appendArguments(context));
66 }69 }
67 return QScriptValue::NullValue;70 return engine->nullValue();
68}71}
69 72
70QScriptValue ConsoleScriptingInterface::exception(QScriptContext* context, QScriptEngine* engine) {73ScriptValuePointer ConsoleScriptingInterface::exception(ScriptContext* context, ScriptEngine* engine) {
71 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {74 if (ScriptManager* scriptManager = engine->manager()) {
72 scriptEngine->scriptErrorMessage(appendArguments(context));75 scriptManager->scriptErrorMessage(appendArguments(context));
73 }76 }
74 return QScriptValue::NullValue;77 return engine->nullValue();
75}78}
76 79
77void ConsoleScriptingInterface::time(QString labelName) {80void ConsoleScriptingInterface::time(QString labelName) {
78 _timerDetails.insert(labelName, QDateTime::currentDateTime().toUTC());81 _timerDetails.insert(labelName, QDateTime::currentDateTime().toUTC());
79 QString message = QString("%1: Timer started").arg(labelName);82 QString message = QString("%1: Timer started").arg(labelName);
80 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {83 if (ScriptManager* scriptManager = engine()->manager()) {
81 scriptEngine->scriptPrintedMessage(message);84 scriptManager->scriptPrintedMessage(message);
82 }85 }
83}86}
84 87
85void ConsoleScriptingInterface::timeEnd(QString labelName) {88void ConsoleScriptingInterface::timeEnd(QString labelName) {
86 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {89 if (ScriptManager* scriptManager = engine()->manager()) {
87 if (!_timerDetails.contains(labelName)) {90 if (!_timerDetails.contains(labelName)) {
88 scriptEngine->scriptErrorMessage("No such label found " + labelName);91 scriptManager->scriptErrorMessage("No such label found " + labelName);
89 return;92 return;
90 }93 }
91 94
92 if (_timerDetails.value(labelName).isNull()) {95 if (_timerDetails.value(labelName).isNull()) {
93 _timerDetails.remove(labelName);96 _timerDetails.remove(labelName);
94 scriptEngine->scriptErrorMessage("Invalid start time for " + labelName);97 scriptManager->scriptErrorMessage("Invalid start time for " + labelName);
95 return;98 return;
96 }99 }
97 QDateTime _startTime = _timerDetails.value(labelName);100 QDateTime _startTime = _timerDetails.value(labelName);
@@ -101,18 +104,18 @@ void ConsoleScriptingInterface::timeEnd(QString labelName) { · 3 unmodified lines
101 QString message = QString("%1: %2ms").arg(labelName).arg(QString::number(diffInMS));104 QString message = QString("%1: %2ms").arg(labelName).arg(QString::number(diffInMS));
102 _timerDetails.remove(labelName);105 _timerDetails.remove(labelName);
103 106
104 scriptEngine->scriptPrintedMessage(message);107 scriptManager->scriptPrintedMessage(message);
105 }108 }
106}109}
107 110
108QScriptValue ConsoleScriptingInterface::assertion(QScriptContext* context, QScriptEngine* engine) {111ScriptValuePointer ConsoleScriptingInterface::assertion(ScriptContext* context, ScriptEngine* engine) {
109 QString message;112 QString message;
110 bool condition = false;113 bool condition = false;
111 for (int i = 0; i < context->argumentCount(); i++) {114 for (int i = 0; i < context->argumentCount(); i++) {
112 if (i == 0) {115 if (i == 0) {
113 condition = context->argument(i).toBool(); // accept first value as condition116 condition = context->argument(i)->toBool(); // accept first value as condition
114 } else {117 } else {
115 message += SPACE_SEPARATOR + context->argument(i).toString(); // accept other parameters as message118 message += SPACE_SEPARATOR + context->argument(i)->toString(); // accept other parameters as message
116 }119 }
117 }120 }
118 121
@@ -123,63 +126,64 @@ QScriptValue ConsoleScriptingInterface::assertion(QScriptContext* context, QScri · 4 unmodified lines
123 } else {126 } else {
124 assertionResult = QString("Assertion failed : %1").arg(message);127 assertionResult = QString("Assertion failed : %1").arg(message);
125 }128 }
126 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {129 if (ScriptManager* scriptManager = engine->manager()) {
127 scriptEngine->scriptErrorMessage(assertionResult);130 scriptManager->scriptErrorMessage(assertionResult);
128 }131 }
129 }132 }
130 return QScriptValue::NullValue;133 return engine->nullValue();
131}134}
132 135
133void ConsoleScriptingInterface::trace() {136void ConsoleScriptingInterface::trace() {
134 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {137 ScriptEnginePointer scriptEngine = engine();
135 scriptEngine->scriptPrintedMessage138 if (ScriptManager* scriptManager = scriptEngine->manager()) {
139 scriptManager->scriptPrintedMessage
136 (QString(STACK_TRACE_FORMAT).arg(LINE_SEPARATOR,140 (QString(STACK_TRACE_FORMAT).arg(LINE_SEPARATOR,
137 scriptEngine->currentContext()->backtrace().join(LINE_SEPARATOR)));141 scriptEngine->currentContext()->backtrace().join(LINE_SEPARATOR)));
138 }142 }
139}143}
140 144
141void ConsoleScriptingInterface::clear() {145void ConsoleScriptingInterface::clear() {
142 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine())) {146 if (ScriptManager* scriptManager = engine()->manager()) {
143 scriptEngine->clearDebugLogWindow();147 scriptManager->clearDebugLogWindow();
144 }148 }
145}149}
146 150
147QScriptValue ConsoleScriptingInterface::group(QScriptContext* context, QScriptEngine* engine) {151ScriptValuePointer ConsoleScriptingInterface::group(ScriptContext* context, ScriptEngine* engine) {
148 logGroupMessage(context->argument(0).toString(), engine); // accept first parameter as label152 logGroupMessage(context->argument(0)->toString(), engine); // accept first parameter as label
149 _groupDetails.push_back(context->argument(0).toString());153 _groupDetails.push_back(context->argument(0)->toString());
150 return QScriptValue::NullValue;154 return engine->nullValue();
151}155}
152 156
153QScriptValue ConsoleScriptingInterface::groupCollapsed(QScriptContext* context, QScriptEngine* engine) {157ScriptValuePointer ConsoleScriptingInterface::groupCollapsed(ScriptContext* context, ScriptEngine* engine) {
154 logGroupMessage(context->argument(0).toString(), engine); // accept first parameter as label158 logGroupMessage(context->argument(0)->toString(), engine); // accept first parameter as label
155 _groupDetails.push_back(context->argument(0).toString());159 _groupDetails.push_back(context->argument(0)->toString());
156 return QScriptValue::NullValue;160 return engine->nullValue();
157}161}
158 162
159QScriptValue ConsoleScriptingInterface::groupEnd(QScriptContext* context, QScriptEngine* engine) {163ScriptValuePointer ConsoleScriptingInterface::groupEnd(ScriptContext* context, ScriptEngine* engine) {
160 ConsoleScriptingInterface::_groupDetails.removeLast();164 ConsoleScriptingInterface::_groupDetails.removeLast();
161 return QScriptValue::NullValue;165 return engine->nullValue();
162}166}
163 167
164QString ConsoleScriptingInterface::appendArguments(QScriptContext* context) {168QString ConsoleScriptingInterface::appendArguments(ScriptContext* context) {
165 QString message;169 QString message;
166 for (int i = 0; i < context->argumentCount(); i++) {170 for (int i = 0; i < context->argumentCount(); i++) {
167 if (i > 0) {171 if (i > 0) {
168 message += SPACE_SEPARATOR;172 message += SPACE_SEPARATOR;
169 }173 }
170 message += context->argument(i).toString();174 message += context->argument(i)->toString();
171 }175 }
172 return message;176 return message;
173}177}
174 178
175void ConsoleScriptingInterface::logGroupMessage(QString message, QScriptEngine* engine) {179void ConsoleScriptingInterface::logGroupMessage(QString message, ScriptEngine* engine) {
176 int _addSpaces = _groupDetails.count() * INDENTATION;180 int _addSpaces = _groupDetails.count() * INDENTATION;
177 QString logMessage;181 QString logMessage;
178 for (int i = 0; i < _addSpaces; i++) {182 for (int i = 0; i < _addSpaces; i++) {
179 logMessage.append(SPACE_SEPARATOR);183 logMessage.append(SPACE_SEPARATOR);
180 }184 }
181 logMessage.append(message);185 logMessage.append(message);
182 if (ScriptEngine* scriptEngine = qobject_cast<ScriptEngine*>(engine)) {186 if (ScriptManager* scriptManager = engine->manager()) {
183 scriptEngine->scriptPrintedMessage(logMessage);187 scriptManager->scriptPrintedMessage(logMessage);
184 }188 }
185}189}