- Timestamp:
- May 5, 2011, 5:36:53 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/vendor/nokia/qt/4.7.2 (added) merged: 845 /branches/vendor/nokia/qt/current merged: 844 /branches/vendor/nokia/qt/4.6.3 removed
- Property svn:mergeinfo changed
-
trunk/src/scripttools/debugging/qscriptdebuggerconsole.cpp
r651 r846 1 1 /**************************************************************************** 2 2 ** 3 ** Copyright (C) 201 0Nokia Corporation and/or its subsidiary(-ies).3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). 4 4 ** All rights reserved. 5 5 ** Contact: Nokia Corporation (qt-info@nokia.com) … … 45 45 #include "qscriptdebuggerscriptedconsolecommand_p.h" 46 46 #include "qscriptmessagehandlerinterface_p.h" 47 #include "qscriptbreakpointdata_p.h" 48 #include "qscriptdebuggerresponse_p.h" 49 #include "qscriptdebuggervalueproperty_p.h" 50 #include "qscriptscriptdata_p.h" 47 51 48 52 #include <QtCore/qdir.h> … … 51 55 #include <QtCore/qstringlist.h> 52 56 #include <QtCore/qdebug.h> 57 #include <QtScript/qscriptcontextinfo.h> 53 58 #include <QtScript/qscriptengine.h> 54 59 60 Q_DECLARE_METATYPE(QScriptDebuggerResponse) 61 Q_DECLARE_METATYPE(QScriptBreakpointData) 62 Q_DECLARE_METATYPE(QScriptBreakpointMap) 63 Q_DECLARE_METATYPE(QScriptScriptData) 64 Q_DECLARE_METATYPE(QScriptScriptMap) 65 Q_DECLARE_METATYPE(QScriptContextInfo) 66 Q_DECLARE_METATYPE(QScriptDebuggerValue) 67 Q_DECLARE_METATYPE(QScriptDebuggerValueProperty) 68 Q_DECLARE_METATYPE(QScriptDebuggerValuePropertyList) 69 Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommand*) 70 Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommandList) 71 Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommandGroupData) 72 Q_DECLARE_METATYPE(QScriptDebuggerConsoleCommandGroupMap) 73 55 74 QT_BEGIN_NAMESPACE 75 76 static QScriptValue debuggerResponseToScriptValue(QScriptEngine *eng, const QScriptDebuggerResponse &in) 77 { 78 QScriptValue out = eng->newObject(); 79 out.setProperty(QString::fromLatin1("result"), qScriptValueFromValue(eng, in.result())); 80 out.setProperty(QString::fromLatin1("error"), QScriptValue(eng, in.error())); 81 out.setProperty(QString::fromLatin1("async"), QScriptValue(eng, in.async())); 82 return out; 83 } 84 85 static void debuggerResponseFromScriptValue(const QScriptValue &, QScriptDebuggerResponse &) 86 { 87 Q_ASSERT(0); 88 } 89 90 static QScriptValue breakpointDataToScriptValue(QScriptEngine *eng, const QScriptBreakpointData &in) 91 { 92 QScriptValue out = eng->newObject(); 93 out.setProperty(QString::fromLatin1("scriptId"), QScriptValue(eng, qsreal(in.scriptId()))); 94 out.setProperty(QString::fromLatin1("fileName"), QScriptValue(eng, in.fileName())); 95 out.setProperty(QString::fromLatin1("lineNumber"), QScriptValue(eng, in.lineNumber())); 96 out.setProperty(QString::fromLatin1("enabled"), QScriptValue(eng, in.isEnabled())); 97 out.setProperty(QString::fromLatin1("singleShot"), QScriptValue(eng, in.isSingleShot())); 98 out.setProperty(QString::fromLatin1("ignoreCount"), QScriptValue(eng, in.ignoreCount())); 99 out.setProperty(QString::fromLatin1("condition"), QScriptValue(eng, in.condition())); 100 return out; 101 } 102 103 static void breakpointDataFromScriptValue(const QScriptValue &in, QScriptBreakpointData &out) 104 { 105 QScriptValue scriptId = in.property(QString::fromLatin1("scriptId")); 106 if (scriptId.isValid()) 107 out.setScriptId((qint64)scriptId.toNumber()); 108 out.setFileName(in.property(QString::fromLatin1("fileName")).toString()); 109 out.setLineNumber(in.property(QString::fromLatin1("lineNumber")).toInt32()); 110 QScriptValue enabled = in.property(QString::fromLatin1("enabled")); 111 if (enabled.isValid()) 112 out.setEnabled(enabled.toBoolean()); 113 QScriptValue singleShot = in.property(QString::fromLatin1("singleShot")); 114 if (singleShot.isValid()) 115 out.setSingleShot(singleShot.toBoolean()); 116 out.setIgnoreCount(in.property(QString::fromLatin1("ignoreCount")).toInt32()); 117 out.setCondition(in.property(QString::fromLatin1("condition")).toString()); 118 } 119 120 static QScriptValue breakpointMapToScriptValue(QScriptEngine *eng, const QScriptBreakpointMap &in) 121 { 122 QScriptValue out = eng->newObject(); 123 QScriptBreakpointMap::const_iterator it; 124 for (it = in.constBegin(); it != in.constEnd(); ++it) { 125 out.setProperty(QString::number(it.key()), qScriptValueFromValue(eng, it.value())); 126 } 127 return out; 128 } 129 130 static void breakpointMapFromScriptValue(const QScriptValue &, QScriptBreakpointMap &) 131 { 132 Q_ASSERT(0); 133 } 134 135 static QScriptValue scriptDataToScriptValue(QScriptEngine *eng, const QScriptScriptData &in) 136 { 137 QScriptValue out = eng->newObject(); 138 out.setProperty(QString::fromLatin1("contents"), QScriptValue(eng, in.contents())); 139 out.setProperty(QString::fromLatin1("fileName"), QScriptValue(eng, in.fileName())); 140 out.setProperty(QString::fromLatin1("baseLineNumber"), QScriptValue(eng, in.baseLineNumber())); 141 return out; 142 } 143 144 static void scriptDataFromScriptValue(const QScriptValue &in, QScriptScriptData &out) 145 { 146 QString contents = in.property(QString::fromLatin1("contents")).toString(); 147 QString fileName = in.property(QString::fromLatin1("fileName")).toString(); 148 int baseLineNumber = in.property(QString::fromLatin1("baseLineNumber")).toInt32(); 149 QScriptScriptData tmp(contents, fileName, baseLineNumber); 150 out = tmp; 151 } 152 153 static QScriptValue scriptMapToScriptValue(QScriptEngine *eng, const QScriptScriptMap &in) 154 { 155 QScriptValue out = eng->newObject(); 156 QScriptScriptMap::const_iterator it; 157 for (it = in.constBegin(); it != in.constEnd(); ++it) { 158 out.setProperty(QString::number(it.key()), qScriptValueFromValue(eng, it.value())); 159 } 160 return out; 161 } 162 163 static void scriptMapFromScriptValue(const QScriptValue &, QScriptScriptMap &) 164 { 165 Q_ASSERT(0); 166 } 167 168 static QScriptValue consoleCommandToScriptValue( 169 QScriptEngine *eng, QScriptDebuggerConsoleCommand* const &in) 170 { 171 if (!in) 172 return eng->undefinedValue(); 173 QScriptValue out = eng->newObject(); 174 out.setProperty(QString::fromLatin1("name"), QScriptValue(eng, in->name())); 175 out.setProperty(QString::fromLatin1("group"), QScriptValue(eng, in->group())); 176 out.setProperty(QString::fromLatin1("shortDescription"), QScriptValue(eng, in->shortDescription())); 177 out.setProperty(QString::fromLatin1("longDescription"), QScriptValue(eng, in->longDescription())); 178 out.setProperty(QString::fromLatin1("aliases"), qScriptValueFromValue(eng, in->aliases())); 179 out.setProperty(QString::fromLatin1("seeAlso"), qScriptValueFromValue(eng, in->seeAlso())); 180 return out; 181 } 182 183 static void consoleCommandFromScriptValue( 184 const QScriptValue &, QScriptDebuggerConsoleCommand* &) 185 { 186 Q_ASSERT(0); 187 } 188 189 static QScriptValue consoleCommandGroupDataToScriptValue( 190 QScriptEngine *eng, const QScriptDebuggerConsoleCommandGroupData &in) 191 { 192 QScriptValue out = eng->newObject(); 193 out.setProperty(QString::fromLatin1("longDescription"), QScriptValue(eng, in.longDescription())); 194 out.setProperty(QString::fromLatin1("shortDescription"), QScriptValue(eng, in.shortDescription())); 195 return out; 196 } 197 198 static void consoleCommandGroupDataFromScriptValue( 199 const QScriptValue &, QScriptDebuggerConsoleCommandGroupData &) 200 { 201 Q_ASSERT(0); 202 } 203 204 static QScriptValue consoleCommandGroupMapToScriptValue( 205 QScriptEngine *eng, const QScriptDebuggerConsoleCommandGroupMap &in) 206 { 207 QScriptValue out = eng->newObject(); 208 QScriptDebuggerConsoleCommandGroupMap::const_iterator it; 209 for (it = in.constBegin(); it != in.constEnd(); ++it) { 210 out.setProperty(it.key(), qScriptValueFromValue(eng, it.value())); 211 } 212 return out; 213 } 214 215 static void consoleCommandGroupMapFromScriptValue( 216 const QScriptValue &, QScriptDebuggerConsoleCommandGroupMap &) 217 { 218 Q_ASSERT(0); 219 } 220 221 static QScriptValue contextInfoToScriptValue(QScriptEngine *eng, const QScriptContextInfo &in) 222 { 223 QScriptValue out = eng->newObject(); 224 out.setProperty(QString::fromLatin1("scriptId"), QScriptValue(eng, qsreal(in.scriptId()))); 225 out.setProperty(QString::fromLatin1("fileName"), QScriptValue(eng, in.fileName())); 226 out.setProperty(QString::fromLatin1("lineNumber"), QScriptValue(eng, in.lineNumber())); 227 out.setProperty(QString::fromLatin1("columnNumber"), QScriptValue(eng, in.columnNumber())); 228 out.setProperty(QString::fromLatin1("functionName"), QScriptValue(eng, in.functionName())); 229 return out; 230 } 231 232 static void contextInfoFromScriptValue(const QScriptValue &, QScriptContextInfo &) 233 { 234 Q_ASSERT(0); 235 } 236 237 static QScriptValue debuggerScriptValuePropertyToScriptValue(QScriptEngine *eng, const QScriptDebuggerValueProperty &in) 238 { 239 QScriptValue out = eng->newObject(); 240 out.setProperty(QString::fromLatin1("name"), QScriptValue(eng, in.name())); 241 out.setProperty(QString::fromLatin1("value"), qScriptValueFromValue(eng, in.value())); 242 out.setProperty(QString::fromLatin1("valueAsString"), QScriptValue(eng, in.valueAsString())); 243 out.setProperty(QString::fromLatin1("flags"), QScriptValue(eng, static_cast<int>(in.flags()))); 244 return out; 245 } 246 247 static void debuggerScriptValuePropertyFromScriptValue(const QScriptValue &in, QScriptDebuggerValueProperty &out) 248 { 249 QString name = in.property(QString::fromLatin1("name")).toString(); 250 QScriptDebuggerValue value = qscriptvalue_cast<QScriptDebuggerValue>(in.property(QString::fromLatin1("value"))); 251 QString valueAsString = in.property(QString::fromLatin1("valueAsString")).toString(); 252 int flags = in.property(QString::fromLatin1("flags")).toInt32(); 253 QScriptDebuggerValueProperty tmp(name, value, valueAsString, QScriptValue::PropertyFlags(flags)); 254 out = tmp; 255 } 56 256 57 257 /*! … … 77 277 QScriptDebuggerCommandSchedulerInterface *commandScheduler); 78 278 279 QScriptEngine *commandEngine; 79 280 QScriptDebuggerConsoleCommandManager *commandManager; 80 281 QString commandPrefix; … … 100 301 commandPrefix = QLatin1String("."); 101 302 commandManager = new QScriptDebuggerConsoleCommandManager(); 303 304 commandEngine = new QScriptEngine; 305 qScriptRegisterMetaType<QScriptBreakpointData>(commandEngine, breakpointDataToScriptValue, breakpointDataFromScriptValue); 306 qScriptRegisterMetaType<QScriptBreakpointMap>(commandEngine, breakpointMapToScriptValue, breakpointMapFromScriptValue); 307 qScriptRegisterMetaType<QScriptScriptData>(commandEngine, scriptDataToScriptValue, scriptDataFromScriptValue); 308 qScriptRegisterMetaType<QScriptScriptMap>(commandEngine, scriptMapToScriptValue, scriptMapFromScriptValue); 309 qScriptRegisterMetaType<QScriptContextInfo>(commandEngine, contextInfoToScriptValue, contextInfoFromScriptValue); 310 qScriptRegisterMetaType<QScriptDebuggerValueProperty>(commandEngine, debuggerScriptValuePropertyToScriptValue, debuggerScriptValuePropertyFromScriptValue); 311 qScriptRegisterSequenceMetaType<QScriptDebuggerValuePropertyList>(commandEngine); 312 qScriptRegisterMetaType<QScriptDebuggerResponse>(commandEngine, debuggerResponseToScriptValue, debuggerResponseFromScriptValue); 313 qScriptRegisterMetaType<QScriptDebuggerConsoleCommand*>(commandEngine, consoleCommandToScriptValue, consoleCommandFromScriptValue); 314 qScriptRegisterSequenceMetaType<QScriptDebuggerConsoleCommandList>(commandEngine); 315 qScriptRegisterMetaType<QScriptDebuggerConsoleCommandGroupData>(commandEngine, consoleCommandGroupDataToScriptValue, consoleCommandGroupDataFromScriptValue); 316 qScriptRegisterMetaType<QScriptDebuggerConsoleCommandGroupMap>(commandEngine, consoleCommandGroupMapToScriptValue, consoleCommandGroupMapFromScriptValue); 317 // ### can't do this, if it's an object ID the conversion will be incorrect since 318 // ### the object ID refers to an object in a different engine! 319 // qScriptRegisterMetaType(commandEngine, debuggerScriptValueToScriptValue, debuggerScriptValueFromScriptValue); 102 320 } 103 321 … … 105 323 { 106 324 delete commandManager; 325 delete commandEngine; 107 326 } 108 327 … … 127 346 QScriptDebuggerScriptedConsoleCommand *command; 128 347 command = QScriptDebuggerScriptedConsoleCommand::parse( 129 program, fileName, messageHandler);348 program, fileName, commandEngine, messageHandler); 130 349 if (!command) 131 350 continue;
Note:
See TracChangeset
for help on using the changeset viewer.