aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurindam Jana <aurindam.jana@nokia.com>2012-04-11 09:16:06 +0200
committerhjk <qthjk@ovi.com>2012-04-17 13:01:15 +0200
commit0b8d8568afbe958c784f45d7daa7d6e9017872bb (patch)
treeb7eec56bb04df40b0c71c5758d5c4e26ae57157c
parent44a2ed8072fc050cdfdda00cfd9bd74f23f670ed (diff)
Debugger: DebuggerSettings and QmlJSPropertyInspector
QmlJSPropertyInspector is a part of the debugger view and has dependencies on some of the actions in DebuggerSettings. Add the needed actions to the object pool so that QmlJSPropertyInspector can access them. Change-Id: Iad492f1195721b5e3a9033584b1a3bf64e320b18 Reviewed-by: hjk <qthjk@ovi.com>
-rw-r--r--src/plugins/debugger/debuggeractions.cpp26
-rw-r--r--src/plugins/debugger/debuggerconstants.h5
-rw-r--r--src/plugins/qmljsinspector/qmljsinspectorconstants.h2
-rw-r--r--src/plugins/qmljsinspector/qmljspropertyinspector.cpp61
-rw-r--r--src/plugins/qmljsinspector/qmljspropertyinspector.h8
5 files changed, 102 insertions, 0 deletions
diff --git a/src/plugins/debugger/debuggeractions.cpp b/src/plugins/debugger/debuggeractions.cpp
index aa480a067d..2858c56e7c 100644
--- a/src/plugins/debugger/debuggeractions.cpp
+++ b/src/plugins/debugger/debuggeractions.cpp
@@ -31,6 +31,8 @@
**************************************************************************/
#include "debuggeractions.h"
+#include "debuggerconstants.h"
+
#ifdef Q_OS_WIN
#include "registerpostmortemaction.h"
#endif
@@ -39,6 +41,8 @@
#include <utils/qtcassert.h>
#include <utils/pathchooser.h>
+#include <extensionsystem/pluginmanager.h>
+
#include <QDebug>
#include <QVariant>
#include <QSettings>
@@ -98,9 +102,13 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
SavedAction *item = 0;
+ //The Actions that are accessed by QML Inspector are added to PluginManager
+ //Needed by QML Inspector
item = new SavedAction(this);
insertItem(SettingsDialog, item);
item->setText(tr("Debugger Properties..."));
+ item->setObjectName(QLatin1String(Constants::SETTINGS_DIALOG));
+ ExtensionSystem::PluginManager::instance()->addObject(item);
//
// View
@@ -168,12 +176,15 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
QLatin1String("AlwaysAdjustModulesColumnWidths"));
insertItem(AlwaysAdjustModulesColumnWidths, item);
+ //Needed by QML Inspector
item = new SavedAction(this);
item->setText(tr("Use Alternating Row Colors"));
item->setSettingsKey(debugModeGroup, QLatin1String("UseAlternatingRowColours"));
item->setCheckable(true);
item->setDefaultValue(false);
insertItem(UseAlternatingRowColors, item);
+ item->setObjectName(QLatin1String(Constants::USE_ALTERNATING_ROW_COLORS));
+ ExtensionSystem::PluginManager::instance()->addObject(item);
item = new SavedAction(this);
item->setText(tr("Debugger Font Size Follows Main Editor"));
@@ -246,6 +257,7 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
item->setValue(true);
insertItem(ShowQtNamespace, item);
+ //Needed by QML Inspector
item = new SavedAction(this);
item->setSettingsKey(debugModeGroup, QLatin1String("SortStructMembers"));
item->setText(tr("Sort Members of Classes and Structs Alphabetically"));
@@ -253,6 +265,8 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
item->setDefaultValue(true);
item->setValue(true);
insertItem(SortStructMembers, item);
+ item->setObjectName(QLatin1String(Constants::SORT_STRUCT_MEMBERS));
+ ExtensionSystem::PluginManager::instance()->addObject(item);
//
// DebuggingHelper
@@ -539,6 +553,18 @@ DebuggerSettings::DebuggerSettings(QSettings *settings)
DebuggerSettings::~DebuggerSettings()
{
+ ExtensionSystem::PluginManager *pluginManager =
+ ExtensionSystem::PluginManager::instance();
+ QObject *o = pluginManager->getObjectByName(Constants::SETTINGS_DIALOG);
+ if (o)
+ pluginManager->removeObject(o);
+ o = pluginManager->getObjectByName(Constants::USE_ALTERNATING_ROW_COLORS);
+ if (o)
+ pluginManager->removeObject(o);
+ o = pluginManager->getObjectByName(Constants::SORT_STRUCT_MEMBERS);
+ if (o)
+ pluginManager->removeObject(o);
+
qDeleteAll(m_items);
}
diff --git a/src/plugins/debugger/debuggerconstants.h b/src/plugins/debugger/debuggerconstants.h
index 5925f2df17..efd766b598 100644
--- a/src/plugins/debugger/debuggerconstants.h
+++ b/src/plugins/debugger/debuggerconstants.h
@@ -79,6 +79,11 @@ const char DOCKWIDGET_QML_INSPECTOR[] = "Debugger.Docks.QmlInspector";
const char DOCKWIDGET_QML_SCRIPTCONSOLE[] = "Debugger.Docks.ScriptConsole";
const char DOCKWIDGET_DEFAULT_AREA[] = "Debugger.Docks.DefaultArea";
+// Saved Actions
+const char SETTINGS_DIALOG[] = "SettingsDialog";
+const char USE_ALTERNATING_ROW_COLORS[] = "UseAlternatingRowColors";
+const char SORT_STRUCT_MEMBERS[] = "SortStructMembers";
+
} // namespace Constants
enum DebuggerState
diff --git a/src/plugins/qmljsinspector/qmljsinspectorconstants.h b/src/plugins/qmljsinspector/qmljsinspectorconstants.h
index 41b985f6a6..9753140ca2 100644
--- a/src/plugins/qmljsinspector/qmljsinspectorconstants.h
+++ b/src/plugins/qmljsinspector/qmljsinspectorconstants.h
@@ -49,6 +49,8 @@ const char SHOW_APP_ON_TOP_ACTION[] = "QmlInspector.ShowAppOnTop";
const char S_QML_INSPECTOR [] = "QML.Inspector";
const char S_LIVE_PREVIEW_WARNING_KEY[] = "ShowLivePreview";
+const char ALWAYS_ADJUST_COLUMNS_WIDTHS[] = "AlwaysAdjustColumnWidths";
+
enum DesignTool {
NoTool = 0,
SelectionToolMode = 1,
diff --git a/src/plugins/qmljsinspector/qmljspropertyinspector.cpp b/src/plugins/qmljsinspector/qmljspropertyinspector.cpp
index 4cf6fd74ed..5d978da1aa 100644
--- a/src/plugins/qmljsinspector/qmljspropertyinspector.cpp
+++ b/src/plugins/qmljsinspector/qmljspropertyinspector.cpp
@@ -30,6 +30,11 @@
**
**************************************************************************/
#include "qmljspropertyinspector.h"
+#include "qmljsinspectorconstants.h"
+
+#include <debugger/debuggerconstants.h>
+#include <extensionsystem/pluginmanager.h>
+#include <coreplugin/icore.h>
#include <QHeaderView>
#include <QItemDelegate>
@@ -46,6 +51,7 @@
#include <QMenu>
#include <utils/qtcassert.h>
+#include <utils/savedaction.h>
const int PROPERTY_NAME_COLUMN = 0;
const int PROPERTY_TYPE_COLUMN = 1;
@@ -305,6 +311,56 @@ QmlJSPropertyInspector::QmlJSPropertyInspector(QWidget *parent)
setModel(&m_model);
//Add an empty Row to make the headers visible!
addRow(QString(), QString(), QString(), -1, false);
+
+ m_adjustColumnsAction = new Utils::SavedAction(this);
+ m_adjustColumnsAction->setText(tr("Always Adjust Column Widths to Contents"));
+ m_adjustColumnsAction->setCheckable(true);
+ m_adjustColumnsAction->setValue(false);
+ m_adjustColumnsAction->setDefaultValue(false);
+ m_adjustColumnsAction->setSettingsKey(QLatin1String(Constants::S_QML_INSPECTOR),
+ QLatin1String(Constants::ALWAYS_ADJUST_COLUMNS_WIDTHS));
+ readSettings();
+ connect(Core::ICore::instance(),
+ SIGNAL(saveSettingsRequested()), SLOT(writeSettings()));
+
+ setAlwaysAdjustColumnsAction(m_adjustColumnsAction);
+
+ QAction *act = qobject_cast<QAction *>(
+ ExtensionSystem::PluginManager::instance()->getObjectByName(
+ QLatin1String(Debugger::Constants::USE_ALTERNATING_ROW_COLORS)));
+ if (act) {
+ setAlternatingRowColors(act->isChecked());
+ connect(act, SIGNAL(toggled(bool)),
+ SLOT(setAlternatingRowColorsHelper(bool)));
+ }
+}
+
+void QmlJSPropertyInspector::readSettings()
+{
+ QSettings *settings = Core::ICore::settings();
+ m_adjustColumnsAction->readSettings(settings);
+}
+
+void QmlJSPropertyInspector::writeSettings() const
+{
+ QSettings *settings = Core::ICore::settings();
+ m_adjustColumnsAction->writeSettings(settings);
+}
+
+void QmlJSPropertyInspector::addBaseContextActions(QMenu *menu)
+{
+ QAction *act = qobject_cast<QAction *>(
+ ExtensionSystem::PluginManager::instance()->getObjectByName(
+ QLatin1String(Debugger::Constants::SORT_STRUCT_MEMBERS)));
+ if (act)
+ menu->addAction(act);
+ Utils::BaseTreeView::addBaseContextActions(menu);
+
+ act = qobject_cast<QAction *>(
+ ExtensionSystem::PluginManager::instance()->getObjectByName(
+ QLatin1String(Debugger::Constants::SETTINGS_DIALOG)));
+ if (act)
+ menu->addAction(act);
}
void QmlJSPropertyInspector::clear()
@@ -436,6 +492,11 @@ void QmlJSPropertyInspector::buildPropertyTree(const QmlDebugObjectReference &ob
m_model.setHeaderData(PROPERTY_VALUE_COLUMN, Qt::Horizontal,QVariant("value"));
m_model.setHeaderData(PROPERTY_TYPE_COLUMN, Qt::Horizontal,QVariant("type"));
+ QAction *act = qobject_cast<QAction *>(
+ ExtensionSystem::PluginManager::instance()->getObjectByName(
+ QLatin1String(Debugger::Constants::SORT_STRUCT_MEMBERS)));
+ if (act && act->isChecked())
+ m_model.sort(PROPERTY_NAME_COLUMN);
}
void QmlJSPropertyInspector::addRow(const QString &name,const QString &value,
diff --git a/src/plugins/qmljsinspector/qmljspropertyinspector.h b/src/plugins/qmljsinspector/qmljspropertyinspector.h
index 026f03d37a..bccf144fbf 100644
--- a/src/plugins/qmljsinspector/qmljspropertyinspector.h
+++ b/src/plugins/qmljsinspector/qmljspropertyinspector.h
@@ -45,6 +45,10 @@ QT_BEGIN_NAMESPACE
QT_END_NAMESPACE
+namespace Utils {
+class SavedAction;
+}
+
namespace QmlJSInspector {
namespace Internal {
@@ -125,6 +129,8 @@ public:
};
explicit QmlJSPropertyInspector(QWidget *parent = 0);
+ void readSettings();
+ void addBaseContextActions(QMenu *menu);
void clear();
void setContentsValid(bool contentsValid);
bool contentsValid() const;
@@ -135,6 +141,7 @@ signals:
void customContextMenuRequested(const QPoint &pos);
public slots:
+ void writeSettings() const;
void setCurrentObjects(const QList<QmlDebugObjectReference> &);
void propertyValueEdited(const int objectId,const QString &propertyName,
const QString &propertyValue, bool isLiteral = false);
@@ -158,6 +165,7 @@ private:
QmlJSPropertyInspectorModel m_model;
QList<int> m_currentObjects;
+ Utils::SavedAction *m_adjustColumnsAction;
};
} // Internal