6#include <private/qqmldebugconnection_p.h>
24 ds >> data.url >> data.lineNumber >> data.columnNumber >> data.idString
25 >> data.objectName >> data.objectType >> data.objectId >> data.contextId
43 ds >> type >> data.name >> data.value >> data.valueTypeName
50 QQmlDebugClient(*
new QQmlEngineDebugClientPrivate(connection))
61 const QQmlEngineDebugPropertyReference &property,
bool *success)
65 if (state() == QQmlDebugClient::Enabled) {
67 QPacket ds(connection()->currentDataStreamVersion());
68 ds << QByteArray(
"WATCH_PROPERTY") << id << property.objectDebugId
69 << property.name.toUtf8();
70 sendMessage(ds.data());
80 qWarning(
"QQmlEngineDebugClient::addWatch(): Not implemented");
90 if (state() == QQmlDebugClient::Enabled) {
92 QPacket ds(connection()->currentDataStreamVersion());
93 ds << QByteArray(
"WATCH_EXPR_OBJECT") << id << object.debugId << expr;
94 sendMessage(ds.data());
105 if (state() == QQmlDebugClient::Enabled) {
107 QPacket ds(connection()->currentDataStreamVersion());
108 ds << QByteArray(
"WATCH_OBJECT") << id << object.debugId;
109 sendMessage(ds.data());
119 qWarning(
"QQmlEngineDebugClient::addWatch(): Not implemented");
126 if (state() == QQmlDebugClient::Enabled) {
127 QPacket ds(connection()->currentDataStreamVersion());
128 ds << QByteArray(
"NO_WATCH") << id;
129 sendMessage(ds.data());
136 Q_D(QQmlEngineDebugClient);
140 if (state() == QQmlDebugClient::Enabled) {
142 QPacket ds(connection()->currentDataStreamVersion());
143 ds << QByteArray(
"LIST_ENGINES") << id;
144 sendMessage(ds.data());
153 Q_D(QQmlEngineDebugClient);
154 d->rootContext = QQmlEngineDebugContextReference();
157 if (state() == QQmlDebugClient::Enabled && engine.debugId != -1) {
159 QPacket ds(connection()->currentDataStreamVersion());
160 ds << QByteArray(
"LIST_OBJECTS") << id << engine.debugId;
161 sendMessage(ds.data());
170 Q_D(QQmlEngineDebugClient);
171 d->object = QQmlEngineDebugObjectReference();
174 if (state() == QQmlDebugClient::Enabled && object.debugId != -1) {
176 QPacket ds(connection()->currentDataStreamVersion());
177 ds << QByteArray(
"FETCH_OBJECT") << id << object.debugId <<
false <<
true;
178 sendMessage(ds.data());
185 const QString &file, qint32 lineNumber, qint32 columnNumber,
bool *success)
187 Q_D(QQmlEngineDebugClient);
191 if (state() == QQmlDebugClient::Enabled) {
193 QPacket ds(connection()->currentDataStreamVersion());
194 ds << QByteArray(
"FETCH_OBJECTS_FOR_LOCATION") << id << file << lineNumber
195 << columnNumber <<
false <<
true;
196 sendMessage(ds.data());
205 Q_D(QQmlEngineDebugClient);
206 d->object = QQmlEngineDebugObjectReference();
209 if (state() == QQmlDebugClient::Enabled && object.debugId != -1) {
211 QPacket ds(connection()->currentDataStreamVersion());
212 ds << QByteArray(
"FETCH_OBJECT") << id << object.debugId <<
true <<
true;
213 sendMessage(ds.data());
220 qint32 lineNumber, qint32 columnNumber,
bool *success)
222 Q_D(QQmlEngineDebugClient);
226 if (state() == QQmlDebugClient::Enabled) {
228 QPacket ds(connection()->currentDataStreamVersion());
229 ds << QByteArray(
"FETCH_OBJECTS_FOR_LOCATION") << id << file << lineNumber
230 << columnNumber <<
true <<
true;
231 sendMessage(ds.data());
238 qint32 objectDebugId,
const QString &expr,
bool *success)
240 Q_D(QQmlEngineDebugClient);
241 d->exprResult = QVariant();
244 if (state() == QQmlDebugClient::Enabled) {
246 QPacket ds(connection()->currentDataStreamVersion());
247 ds << QByteArray(
"EVAL_EXPRESSION") << id << objectDebugId << expr
248 << engines()[0].debugId;
249 sendMessage(ds.data());
256 qint32 objectDebugId,
const QString &expr,
bool *success)
258 Q_D(QQmlEngineDebugClient);
259 d->exprResult = QVariant();
262 if (state() == QQmlDebugClient::Enabled) {
264 QPacket ds(connection()->currentDataStreamVersion());
265 ds << QByteArray(
"EVAL_EXPRESSION") << id << objectDebugId << expr;
266 sendMessage(ds.data());
273 qint32 objectDebugId,
274 const QString &propertyName,
275 const QVariant &bindingExpression,
277 const QString &source, qint32 line,
282 if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
284 QPacket ds(connection()->currentDataStreamVersion());
285 ds << QByteArray(
"SET_BINDING") << id << objectDebugId << propertyName
286 << bindingExpression << isLiteralValue << source << line;
287 sendMessage(ds.data());
294 qint32 objectDebugId,
295 const QString &propertyName,
300 if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
302 QPacket ds(connection()->currentDataStreamVersion());
303 ds << QByteArray(
"RESET_BINDING") << id << objectDebugId << propertyName;
304 sendMessage(ds.data());
311 qint32 objectDebugId,
const QString &methodName,
312 const QString &methodBody,
bool *success)
316 if (state() == QQmlDebugClient::Enabled && objectDebugId != -1) {
318 QPacket ds(connection()->currentDataStreamVersion());
319 ds << QByteArray(
"SET_METHOD_BODY") << id << objectDebugId
320 << methodName << methodBody;
321 sendMessage(ds.data());
333 o.debugId = data.objectId;
334 o.className = data.objectType;
335 o.idString = data.idString;
336 o.name = data.objectName;
337 o.source.url = data.url;
338 o.source.lineNumber = data.lineNumber;
339 o.source.columnNumber = data.columnNumber;
340 o.contextDebugId = data.contextId;
347 ds >> childCount >> recur;
349 for (qint32 ii = 0; ii < childCount; ++ii) {
351 decode(ds, o.children.last(), !recur);
357 for (qint32 ii = 0; ii < propCount; ++ii) {
360 QQmlEngineDebugPropertyReference prop;
361 prop.objectDebugId = o.debugId;
362 prop.name = data.name;
363 prop.binding = data.binding;
365 prop.valueTypeName = data.valueTypeName;
371 prop.value = data.value;
377 obj.name = data.value.toString();
378 obj.className = prop.valueTypeName;
379 prop.value = QVariant::fromValue(obj);
385 o.properties << prop;
390 QList<QQmlEngineDebugObjectReference> &o,
395 for (qint32 i = 0; i < count; i++) {
397 decode(ds, obj, simple);
404 Q_D(
const QQmlEngineDebugClient);
410 Q_D(
const QQmlEngineDebugClient);
411 return d->rootContext;
416 Q_D(
const QQmlEngineDebugClient);
422 Q_D(
const QQmlEngineDebugClient);
428 Q_D(
const QQmlEngineDebugClient);
429 return d->exprResult;
434 Q_D(
const QQmlEngineDebugClient);
441 ds >> c.name >> c.debugId;
446 for (qint32 ii = 0; ii < contextCount; ++ii) {
448 decode(ds, c.contexts.last());
454 for (qint32 ii = 0; ii < objectCount; ++ii) {
456 decode(ds, obj,
true);
458 obj.contextDebugId = c.debugId;
465 Q_D(QQmlEngineDebugClient);
467 QPacket ds(connection()->currentDataStreamVersion(), data);
471 ds >> type >> queryId;
475 if (type ==
"LIST_ENGINES_R") {
480 for (qint32 ii = 0; ii < count; ++ii) {
486 }
else if (type ==
"LIST_OBJECTS_R") {
488 decode(ds, d->rootContext);
490 }
else if (type ==
"FETCH_OBJECT_R") {
492 decode(ds, d->object,
false);
494 }
else if (type ==
"FETCH_OBJECTS_FOR_LOCATION_R") {
496 decode(ds, d->objects,
false);
498 }
else if (type ==
"EVAL_EXPRESSION_R") {;
501 }
else if (type ==
"WATCH_PROPERTY_R") {
504 }
else if (type ==
"WATCH_OBJECT_R") {
507 }
else if (type ==
"WATCH_EXPR_OBJECT_R") {
510 }
else if (type ==
"UPDATE_WATCH") {
514 ds >> debugId >> name >> value;
515 emit valueChanged(name, value);
518 }
else if (type ==
"OBJECT_CREATED") {
522 ds >> engineId >> objectId >> parentId;
523 emit newObject(objectId);
525 }
else if (type ==
"SET_BINDING_R") {
527 }
else if (type ==
"RESET_BINDING_R") {
529 }
else if (type ==
"SET_METHOD_BODY_R") {
531 }
else if (type ==
"NO_WATCH_R") {
540 Q_D(QQmlEngineDebugClient);
546#include "moc_qqmlenginedebugclient_p.cpp"
qint32 addWatch(const QQmlEngineDebugContextReference &, const QString &, bool *success)
qint32 resetBindingForObject(qint32 objectDebugId, const QString &propertyName, bool *success)
void decode(QPacket &ds, QQmlEngineDebugContextReference &)
qint32 queryObjectsForLocationRecursive(const QString &file, qint32 lineNumber, qint32 columnNumber, bool *success)
qint32 queryExpressionResultBC(qint32 objectDebugId, const QString &expr, bool *success)
QList< QQmlEngineDebugObjectReference > objects() const
qint32 addWatch(const QQmlEngineDebugFileReference &, bool *success)
qint32 queryExpressionResult(qint32 objectDebugId, const QString &expr, bool *success)
qint32 queryRootContexts(const QQmlEngineDebugEngineReference &, bool *success)
qint32 addWatch(const QQmlEngineDebugObjectReference &, const QString &, bool *success)
void removeWatch(qint32 watch, bool *success)
qint32 queryAvailableEngines(bool *success)
void decode(QPacket &ds, QList< QQmlEngineDebugObjectReference > &o, bool simple)
qint32 addWatch(const QQmlEngineDebugObjectReference &, bool *success)
qint32 setMethodBody(qint32 objectDebugId, const QString &methodName, const QString &methodBody, bool *success)
qint32 addWatch(const QQmlEngineDebugPropertyReference &, bool *success)
qint32 setBindingForObject(qint32 objectDebugId, const QString &propertyName, const QVariant &bindingExpression, bool isLiteralValue, const QString &source, qint32 line, bool *success)
qint32 queryObjectRecursive(const QQmlEngineDebugObjectReference &, bool *success)
QQmlEngineDebugContextReference rootContext() const
void messageReceived(const QByteArray &) override
QQmlEngineDebugObjectReference object() const
qint32 queryObject(const QQmlEngineDebugObjectReference &, bool *success)
QList< QQmlEngineDebugEngineReference > engines() const
QVariant resultExpr() const
qint32 queryObjectsForLocation(const QString &file, qint32 lineNumber, qint32 columnNumber, bool *success)
void decode(QPacket &ds, QQmlEngineDebugObjectReference &, bool simple)
Combined button and popup list for selecting options.
QPacket & operator>>(QPacket &ds, QQmlObjectProperty &data)
QPacket & operator>>(QPacket &ds, QQmlObjectData &data)