diff options
author | Bea Lam <bea.lam@nokia.com> | 2009-10-26 04:11:32 (GMT) |
---|---|---|
committer | Bea Lam <bea.lam@nokia.com> | 2009-10-26 04:11:32 (GMT) |
commit | 90a883796acb961a572c90d53c0505110a466a8a (patch) | |
tree | 63ea307cb9cd2fa2db7d649726ce0d8323a23192 /tools/qmldebugger | |
parent | d0f965f1bde20babbb0574007f9cf8439b955a9b (diff) | |
download | Qt-90a883796acb961a572c90d53c0505110a466a8a.zip Qt-90a883796acb961a572c90d53c0505110a466a8a.tar.gz Qt-90a883796acb961a572c90d53c0505110a466a8a.tar.bz2 |
Fix to show expression query widget and allow QmlEngineDebug values
for widgets to be changed after construction.
Diffstat (limited to 'tools/qmldebugger')
-rw-r--r-- | tools/qmldebugger/engine.cpp | 17 | ||||
-rw-r--r-- | tools/qmldebugger/engine.h | 5 | ||||
-rw-r--r-- | tools/qmldebugger/expressionquerywidget.cpp | 27 | ||||
-rw-r--r-- | tools/qmldebugger/expressionquerywidget.h | 7 | ||||
-rw-r--r-- | tools/qmldebugger/objectpropertiesview.cpp | 9 | ||||
-rw-r--r-- | tools/qmldebugger/objectpropertiesview.h | 5 | ||||
-rw-r--r-- | tools/qmldebugger/objecttree.cpp | 8 | ||||
-rw-r--r-- | tools/qmldebugger/objecttree.h | 5 | ||||
-rw-r--r-- | tools/qmldebugger/watchtable.cpp | 13 | ||||
-rw-r--r-- | tools/qmldebugger/watchtable.h | 5 |
10 files changed, 78 insertions, 23 deletions
diff --git a/tools/qmldebugger/engine.cpp b/tools/qmldebugger/engine.cpp index 3cf5165..a1fd009 100644 --- a/tools/qmldebugger/engine.cpp +++ b/tools/qmldebugger/engine.cpp @@ -12,6 +12,7 @@ #include "engine.h" #include "objectpropertiesview.h" +#include "expressionquerywidget.h" #include "objecttree.h" #include "watchtable.h" @@ -37,7 +38,7 @@ private: }; EnginePane::EnginePane(QmlDebugConnection *conn, QWidget *parent) -: QWidget(parent), m_client(new QmlEngineDebug(conn, this)), m_engines(0), m_context(0), m_watchTableModel(0) +: QWidget(parent), m_client(new QmlEngineDebug(conn, this)), m_engines(0), m_context(0), m_watchTableModel(0), m_exprQueryWidget(0) { QVBoxLayout *layout = new QVBoxLayout(this); layout->setContentsMargins(0, 0, 0, 0); @@ -84,9 +85,19 @@ EnginePane::EnginePane(QmlDebugConnection *conn, QWidget *parent) connect(m_watchTableView, SIGNAL(objectActivated(int)), m_objTree, SLOT(setCurrentObject(int))); - + + m_exprQueryWidget = new ExpressionQueryWidget(m_client); + connect(m_objTree, SIGNAL(currentObjectChanged(QmlDebugObjectReference)), + m_exprQueryWidget, SLOT(setCurrentObject(QmlDebugObjectReference))); + + QSplitter *propertiesTab = new QSplitter(Qt::Vertical); + propertiesTab->addWidget(m_propertiesView); + propertiesTab->addWidget(m_exprQueryWidget); + propertiesTab->setStretchFactor(0, 2); + propertiesTab->setStretchFactor(1, 1); + m_tabs = new QTabWidget(this); - m_tabs->addTab(m_propertiesView, tr("Properties")); + m_tabs->addTab(propertiesTab, tr("Properties")); m_tabs->addTab(m_watchTableView, tr("Watched")); splitter->addWidget(m_objTree); diff --git a/tools/qmldebugger/engine.h b/tools/qmldebugger/engine.h index 8e8c0f2..a3ebe46 100644 --- a/tools/qmldebugger/engine.h +++ b/tools/qmldebugger/engine.h @@ -17,6 +17,7 @@ class QmlDebugWatch; class ObjectTree; class WatchTableModel; class WatchTableView; +class ExpressionQueryWidget; class QTabWidget; @@ -45,12 +46,12 @@ private: ObjectTree *m_objTree; QTabWidget *m_tabs; WatchTableView *m_watchTableView; + WatchTableModel *m_watchTableModel; + ExpressionQueryWidget *m_exprQueryWidget; QmlView *m_engineView; QList<QObject *> m_engineItems; - WatchTableModel *m_watchTableModel; - ObjectPropertiesView *m_propertiesView; }; diff --git a/tools/qmldebugger/expressionquerywidget.cpp b/tools/qmldebugger/expressionquerywidget.cpp index b29b465..53ede3a 100644 --- a/tools/qmldebugger/expressionquerywidget.cpp +++ b/tools/qmldebugger/expressionquerywidget.cpp @@ -1,3 +1,5 @@ +#include <QtCore/qdebug.h> + #include <QtGui/qlabel.h> #include <QtGui/qtextedit.h> #include <QtGui/qlineedit.h> @@ -14,25 +16,21 @@ ExpressionQueryWidget::ExpressionQueryWidget(QmlEngineDebug *client, QWidget *pa m_style(Compact), m_client(client), m_query(0), - m_groupBox(0), m_textEdit(new QTextEdit), m_lineEdit(0), m_button(0) { m_prompt = QLatin1String(">> "); - m_groupBox = new QGroupBox; - QVBoxLayout *vbox = new QVBoxLayout(m_groupBox); - vbox->addWidget(m_textEdit); - QVBoxLayout *layout = new QVBoxLayout(this); - layout->addWidget(m_groupBox); + layout->setMargin(0); + layout->addWidget(m_textEdit); updateTitle(); if (m_style == Compact) { QHBoxLayout *hbox = new QHBoxLayout; - m_button = new QPushButton(tr("Execute")); + m_button = new QPushButton(tr("Query")); m_button->setEnabled(false); connect(m_button, SIGNAL(clicked()), SLOT(executeExpression())); m_lineEdit = new QLineEdit; @@ -41,7 +39,7 @@ ExpressionQueryWidget::ExpressionQueryWidget(QmlEngineDebug *client, QWidget *pa hbox->addWidget(new QLabel(tr("Expression:"))); hbox->addWidget(m_lineEdit); hbox->addWidget(m_button); - vbox->addLayout(hbox); + layout->addLayout(hbox); m_textEdit->setReadOnly(true); m_lineEdit->installEventFilter(this); @@ -50,17 +48,21 @@ ExpressionQueryWidget::ExpressionQueryWidget(QmlEngineDebug *client, QWidget *pa } } +void ExpressionQueryWidget::setEngineDebug(QmlEngineDebug *client) +{ + m_client = client; +} + void ExpressionQueryWidget::updateTitle() { if (m_currObject.debugId() < 0) { - m_groupBox->setTitle(tr("Expression queries")); + m_title = tr("Expression queries"); } else { QString desc = QLatin1String("<") + m_currObject.className() + QLatin1String(": ") + (m_currObject.name().isEmpty() ? QLatin1String("<unnamed>") : m_currObject.name()) + QLatin1String(">"); - m_groupBox->setTitle(tr("Expression queries (using context for %1)" - , "Selected object").arg(desc)); + m_title = tr("Expression queries (using context for %1)" , "Selected object").arg(desc); } } @@ -103,6 +105,9 @@ void ExpressionQueryWidget::showCurrentContext() void ExpressionQueryWidget::executeExpression() { + if (!m_client) + return; + if (m_style == Compact) m_expr = m_lineEdit->text().trimmed(); else diff --git a/tools/qmldebugger/expressionquerywidget.h b/tools/qmldebugger/expressionquerywidget.h index 8db8f9f..3d9b580 100644 --- a/tools/qmldebugger/expressionquerywidget.h +++ b/tools/qmldebugger/expressionquerywidget.h @@ -21,7 +21,9 @@ public: Shell }; - ExpressionQueryWidget(QmlEngineDebug *client, QWidget *parent = 0); + ExpressionQueryWidget(QmlEngineDebug *client = 0, QWidget *parent = 0); + + void setEngineDebug(QmlEngineDebug *client); protected: bool eventFilter(QObject *obj, QEvent *event); @@ -44,7 +46,6 @@ private: QmlEngineDebug *m_client; QmlDebugExpressionQuery *m_query; - QGroupBox *m_groupBox; QTextEdit *m_textEdit; QLineEdit *m_lineEdit; QPushButton *m_button; @@ -52,6 +53,8 @@ private: QString m_expr; QString m_lastExpr; + QString m_title; + QmlDebugObjectReference m_currObject; QmlDebugObjectReference m_objectAtLastFocus; }; diff --git a/tools/qmldebugger/objectpropertiesview.cpp b/tools/qmldebugger/objectpropertiesview.cpp index 61afe3f..274552a 100644 --- a/tools/qmldebugger/objectpropertiesview.cpp +++ b/tools/qmldebugger/objectpropertiesview.cpp @@ -53,8 +53,15 @@ ObjectPropertiesView::ObjectPropertiesView(QmlEngineDebug *client, QWidget *pare layout->addWidget(m_tree); } +void ObjectPropertiesView::setEngineDebug(QmlEngineDebug *client) +{ + m_client = client; +} + void ObjectPropertiesView::reload(const QmlDebugObjectReference &obj) { + if (!m_client) + return; if (m_query) delete m_query; @@ -68,7 +75,7 @@ void ObjectPropertiesView::reload(const QmlDebugObjectReference &obj) void ObjectPropertiesView::queryFinished() { - if (!m_query) + if (!m_client || !m_query) return; QmlDebugObjectReference obj = m_query->object(); diff --git a/tools/qmldebugger/objectpropertiesview.h b/tools/qmldebugger/objectpropertiesview.h index 0f72ff4..d555940 100644 --- a/tools/qmldebugger/objectpropertiesview.h +++ b/tools/qmldebugger/objectpropertiesview.h @@ -9,13 +9,16 @@ QT_BEGIN_NAMESPACE class QTreeWidget; class QTreeWidgetItem; +class QmlDebugConnection; class ObjectPropertiesView : public QWidget { Q_OBJECT public: - ObjectPropertiesView(QmlEngineDebug *client, QWidget *parent = 0); + ObjectPropertiesView(QmlEngineDebug *client = 0, QWidget *parent = 0); + void setEngineDebug(QmlEngineDebug *client); + signals: void activated(const QmlDebugObjectReference &, const QmlDebugPropertyReference &); diff --git a/tools/qmldebugger/objecttree.cpp b/tools/qmldebugger/objecttree.cpp index 1254ae7..981a80b 100644 --- a/tools/qmldebugger/objecttree.cpp +++ b/tools/qmldebugger/objecttree.cpp @@ -24,8 +24,16 @@ ObjectTree::ObjectTree(QmlEngineDebug *client, QWidget *parent) this, SLOT(currentItemChanged(QTreeWidgetItem *))); } +void ObjectTree::setEngineDebug(QmlEngineDebug *client) +{ + m_client = client; +} + void ObjectTree::reload(int objectDebugId) { + if (!m_client) + return; + if (m_query) { delete m_query; m_query = 0; diff --git a/tools/qmldebugger/objecttree.h b/tools/qmldebugger/objecttree.h index 3c0a5c6..95820f3 100644 --- a/tools/qmldebugger/objecttree.h +++ b/tools/qmldebugger/objecttree.h @@ -11,14 +11,17 @@ class QmlEngineDebug; class QmlDebugObjectReference; class QmlDebugObjectQuery; class QmlDebugContextReference; +class QmlDebugConnection; class ObjectTree : public QTreeWidget { Q_OBJECT public: - ObjectTree(QmlEngineDebug *client, QWidget *parent = 0); + ObjectTree(QmlEngineDebug *client = 0, QWidget *parent = 0); + void setEngineDebug(QmlEngineDebug *client); + signals: void currentObjectChanged(const QmlDebugObjectReference &); void expressionWatchRequested(const QmlDebugObjectReference &, const QString &); diff --git a/tools/qmldebugger/watchtable.cpp b/tools/qmldebugger/watchtable.cpp index 512bfb2..774727b 100644 --- a/tools/qmldebugger/watchtable.cpp +++ b/tools/qmldebugger/watchtable.cpp @@ -23,6 +23,11 @@ WatchTableModel::~WatchTableModel() delete m_columns[i].watch; } +void WatchTableModel::setEngineDebug(QmlEngineDebug *client) +{ + m_client = client; +} + void WatchTableModel::addWatch(QmlDebugWatch *watch, const QString &title) { QString property; @@ -193,7 +198,7 @@ void WatchTableModel::addValue(int column, const QVariant &value) void WatchTableModel::togglePropertyWatch(const QmlDebugObjectReference &object, const QmlDebugPropertyReference &property) { - if (!property.hasNotifySignal()) + if (!m_client || !property.hasNotifySignal()) return; QmlDebugWatch *watch = findWatch(object.debugId(), property.name()); @@ -228,6 +233,9 @@ void WatchTableModel::watchedValueChanged(const QByteArray &propertyName, const void WatchTableModel::expressionWatchRequested(const QmlDebugObjectReference &obj, const QString &expr) { + if (!m_client) + return; + QmlDebugWatch *watch = m_client->addWatch(obj, expr, this); if (watch->state() == QmlDebugWatch::Dead) { @@ -241,6 +249,9 @@ void WatchTableModel::expressionWatchRequested(const QmlDebugObjectReference &ob void WatchTableModel::stopWatching(int column) { + if (!m_client) + return; + QmlDebugWatch *watch = findWatch(column); if (watch) { m_client->removeWatch(watch); diff --git a/tools/qmldebugger/watchtable.h b/tools/qmldebugger/watchtable.h index abada2b..772142c 100644 --- a/tools/qmldebugger/watchtable.h +++ b/tools/qmldebugger/watchtable.h @@ -13,6 +13,7 @@ QT_BEGIN_NAMESPACE class QmlDebugWatch; class QmlEngineDebug; +class QmlDebugConnection; class QmlDebugPropertyReference; class QmlDebugObjectReference; @@ -20,9 +21,11 @@ class WatchTableModel : public QAbstractTableModel { Q_OBJECT public: - WatchTableModel(QmlEngineDebug *client, QObject *parent = 0); + WatchTableModel(QmlEngineDebug *client = 0, QObject *parent = 0); ~WatchTableModel(); + void setEngineDebug(QmlEngineDebug *client); + QmlDebugWatch *findWatch(int column) const; int columnForWatch(QmlDebugWatch *watch) const; |