diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-05-06 11:01:36 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2009-05-06 11:01:36 (GMT) |
commit | 7bfee916ec053fa0b4092c7f9ed635376e58abe1 (patch) | |
tree | 02eeba67498d88a216f612d8107ed01fd1feb510 /src/declarative/debugger | |
parent | 3a69c01af5f85522cc241dd95429aa87a78dc964 (diff) | |
download | Qt-7bfee916ec053fa0b4092c7f9ed635376e58abe1.zip Qt-7bfee916ec053fa0b4092c7f9ed635376e58abe1.tar.gz Qt-7bfee916ec053fa0b4092c7f9ed635376e58abe1.tar.bz2 |
Track expression evaluation when debugging is enabled
Diffstat (limited to 'src/declarative/debugger')
-rw-r--r-- | src/declarative/debugger/qmldebugger.cpp | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/src/declarative/debugger/qmldebugger.cpp b/src/declarative/debugger/qmldebugger.cpp index 1f7fd68..033a15f 100644 --- a/src/declarative/debugger/qmldebugger.cpp +++ b/src/declarative/debugger/qmldebugger.cpp @@ -46,6 +46,7 @@ #include <QtDeclarative/qmlbindablevalue.h> #include <private/qmlboundsignal_p.h> #include <private/qmlcontext_p.h> +#include <private/qmlengine_p.h> #include <QtCore/qdebug.h> #include <QtCore/qfile.h> #include <QtCore/qurl.h> @@ -98,13 +99,35 @@ public: int startLine; int endLine; QUrl url; + + QPointer<QmlBindableValue> bindableValue; }; void QmlDebugger::itemPressed(QTreeWidgetItem *i) { QmlDebuggerItem *item = static_cast<QmlDebuggerItem *>(i); - if(item->url.scheme() == QLatin1String("file")) { + if(item->bindableValue) { + + QString str; + + QmlExpressionPrivate *p = item->bindableValue->d; + if(p->log) { + QString str; + QDebug d(&str); + for(int ii = 0; ii < p->log->count(); ++ii) { + d << p->log->at(ii).result() << "\n"; + QStringList warnings = p->log->at(ii).warnings(); + foreach(const QString &warning, warnings) + d << " " << warning << "\n"; + } + m_text->setPlainText(str); + + } else { + m_text->setPlainText("No history"); + } + + } else if(item->url.scheme() == QLatin1String("file")) { QString f = item->url.toLocalFile(); QFile file(f); file.open(QIODevice::ReadOnly); @@ -160,6 +183,7 @@ static bool makeItem(QObject *obj, QmlDebuggerItem *item) if(QmlBindableValue *bv = qobject_cast<QmlBindableValue *>(obj)) { text = bv->property().name() + ": " + bv->expression(); item->setForeground(0, Qt::green); + item->bindableValue = bv; } else if(QmlBoundSignal *bs = qobject_cast<QmlBoundSignal *>(obj)) { QMetaMethod method = obj->parent()->metaObject()->method(bs->index()); QByteArray sig = method.signature(); @@ -203,6 +227,9 @@ static bool makeItem(QObject *obj, QmlDebuggerItem *item) } else { item->setExpanded(true); } + + if(!context) + item->setForeground(0, Qt::lightGray); } item->setText(0, text); |