diff options
author | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-08-21 17:33:53 +0200 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@theqtcompany.com> | 2015-08-25 14:42:22 +0000 |
commit | b5717a5315fb40b03f3d0b6b274a563381eb1ec0 (patch) | |
tree | 10b5a2b9984d70701795688211c1e7a793218fb8 /src/plugins/qmljstools/qmlconsolemanager.cpp | |
parent | 0b3283281292848fe2bdab376ebc9ef8518ad265 (diff) | |
download | qt-creator-b5717a5315fb40b03f3d0b6b274a563381eb1ec0.tar.gz |
QmlJS: Lazy-load console items to allow for recursion
Using Utils:TreeView automatically gives us the capability for loading
item as they are expanded. This way we can show recursive structure in
the console as well as load data from the debug server on demand.
Also, properly print error messages received from unsuccessful
command evaluations.
Task-number: QTCREATORBUG-14931
Change-Id: I66d440eedd9723b04670169b27db1ee18f3f2891
Reviewed-by: hjk <hjk@theqtcompany.com>
Diffstat (limited to 'src/plugins/qmljstools/qmlconsolemanager.cpp')
-rw-r--r-- | src/plugins/qmljstools/qmlconsolemanager.cpp | 61 |
1 files changed, 7 insertions, 54 deletions
diff --git a/src/plugins/qmljstools/qmlconsolemanager.cpp b/src/plugins/qmljstools/qmlconsolemanager.cpp index 616a1702ac..fc09fe3a37 100644 --- a/src/plugins/qmljstools/qmlconsolemanager.cpp +++ b/src/plugins/qmljstools/qmlconsolemanager.cpp @@ -57,7 +57,6 @@ QmlConsoleManager::QmlConsoleManager(QObject *parent) d(new QmlConsoleManagerPrivate) { d->qmlConsoleItemModel = new Internal::QmlConsoleItemModel(this); - d->qmlConsoleItemModel->setHasEditableRow(true); d->qmlConsolePane = new Internal::QmlConsolePane(this); d->scriptEvaluator = 0; ExtensionSystem::PluginManager::addObject(d->qmlConsolePane); @@ -76,11 +75,6 @@ void QmlConsoleManager::showConsolePane() d->qmlConsolePane->popup(Core::IOutputPane::ModeSwitch); } -ConsoleItem *QmlConsoleManager::rootItem() const -{ - return d->qmlConsoleItemModel->root(); -} - void QmlConsoleManager::setScriptEvaluator(IScriptEvaluator *scriptEvaluator) { d->scriptEvaluator = scriptEvaluator; @@ -109,7 +103,7 @@ void QmlConsoleManager::printToConsolePane(ConsoleItem *item, bool bringToForegr { if (!d->qmlConsolePane) return; - if (item->itemType == ConsoleItem::ErrorType) + if (item->itemType() == ConsoleItem::ErrorType) bringToForeground = true; if (bringToForeground) d->qmlConsolePane->popup(Core::IOutputPane::ModeSwitch); @@ -118,47 +112,6 @@ void QmlConsoleManager::printToConsolePane(ConsoleItem *item, bool bringToForegr namespace Internal { -ConsoleItem *constructLogItemTree(ConsoleItem *parent, const QVariant &result, - const QString &key = QString()) -{ - if (!result.isValid()) - return 0; - - ConsoleItem *item = new ConsoleItem(parent); - if (result.type() == QVariant::Map) { - if (key.isEmpty()) - item->setText(QLatin1String("Object")); - else - item->setText(key + QLatin1String(" : Object")); - - QMapIterator<QString, QVariant> i(result.toMap()); - while (i.hasNext()) { - i.next(); - ConsoleItem *child = constructLogItemTree(item, i.value(), i.key()); - if (child) - item->insertChild(child, true); - } - } else if (result.type() == QVariant::List) { - if (key.isEmpty()) - item->setText(QLatin1String("List")); - else - item->setText(QString::fromLatin1("[%1] : List").arg(key)); - QVariantList resultList = result.toList(); - for (int i = 0; i < resultList.count(); i++) { - ConsoleItem *child = constructLogItemTree(item, resultList.at(i), - QString::number(i)); - if (child) - item->insertChild(child, true); - } - } else if (result.canConvert(QVariant::String)) { - item->setText(result.toString()); - } else { - item->setText(QLatin1String("Unknown Value")); - } - - return item; -} - QmlConsoleItemModel *QmlConsoleModel::qmlConsoleItemModel() { QmlConsoleManager *manager = qobject_cast<QmlConsoleManager *>(QmlConsoleManager::instance()); @@ -172,15 +125,15 @@ void QmlConsoleModel::evaluate(const QString &expression) QmlConsoleManager *manager = qobject_cast<QmlConsoleManager *>(QmlConsoleManager::instance()); if (manager) { if (manager->d->scriptEvaluator) { - QmlConsoleModel::qmlConsoleItemModel()->appendEditableRow(); + QmlConsoleModel::qmlConsoleItemModel()->shiftEditableRow(); manager->d->scriptEvaluator->evaluateScript(expression); } else { - ConsoleItem *root = manager->rootItem(); - ConsoleItem *item = constructLogItemTree( - root, QCoreApplication::translate("QmlJSTools::Internal::QmlConsoleModel", - "Can only evaluate during a QML debug session.")); + ConsoleItem *item = new ConsoleItem( + ConsoleItem::ErrorType, QCoreApplication::translate( + "QmlJSTools::Internal::QmlConsoleModel", + "Can only evaluate during a QML debug session.")); if (item) { - QmlConsoleModel::qmlConsoleItemModel()->appendEditableRow(); + QmlConsoleModel::qmlConsoleItemModel()->shiftEditableRow(); manager->printToConsolePane(item); } } |