start sanitizing gdb options dialog

This commit is contained in:
hjk
2008-12-11 14:01:53 +01:00
parent fff956db02
commit a556ddada8
9 changed files with 140 additions and 124 deletions

View File

@@ -58,7 +58,6 @@ SOURCES += attachexternaldialog.cpp \
gdbengine.cpp \ gdbengine.cpp \
gdbmi.cpp \ gdbmi.cpp \
gdboptionpage.cpp \ gdboptionpage.cpp \
gdbtypemacros.cpp \
gdbengine.h \ gdbengine.h \
moduleshandler.cpp \ moduleshandler.cpp \
moduleswindow.cpp \ moduleswindow.cpp \
@@ -79,7 +78,6 @@ FORMS += attachexternaldialog.ui \
breakcondition.ui \ breakcondition.ui \
mode.ui \ mode.ui \
gdboptionpage.ui \ gdboptionpage.ui \
gdbtypemacros.ui \
startexternaldialog.ui \ startexternaldialog.ui \
RESOURCES += debugger.qrc RESOURCES += debugger.qrc

View File

@@ -183,7 +183,6 @@ DebuggerPlugin::DebuggerPlugin()
{ {
m_pm = 0; m_pm = 0;
m_generalOptionPage = 0; m_generalOptionPage = 0;
m_typeMacroPage = 0;
m_locationMark = 0; m_locationMark = 0;
m_manager = 0; m_manager = 0;
} }
@@ -202,7 +201,6 @@ void DebuggerPlugin::shutdown()
//qDebug() << "DebuggerPlugin::~DebuggerPlugin"; //qDebug() << "DebuggerPlugin::~DebuggerPlugin";
removeObject(m_debugMode); removeObject(m_debugMode);
removeObject(m_generalOptionPage); removeObject(m_generalOptionPage);
removeObject(m_typeMacroPage);
// FIXME: when using the line below, BreakWindow etc gets deleted twice. // FIXME: when using the line below, BreakWindow etc gets deleted twice.
// so better leak for now... // so better leak for now...
@@ -212,9 +210,6 @@ void DebuggerPlugin::shutdown()
delete m_generalOptionPage; delete m_generalOptionPage;
m_generalOptionPage = 0; m_generalOptionPage = 0;
delete m_typeMacroPage;
m_typeMacroPage = 0;
delete m_locationMark; delete m_locationMark;
m_locationMark = 0; m_locationMark = 0;
@@ -409,13 +404,10 @@ bool DebuggerPlugin::initialize(const QStringList &arguments, QString *error_mes
mdebug->addAction(cmd); mdebug->addAction(cmd);
m_generalOptionPage = 0; m_generalOptionPage = 0;
m_typeMacroPage = 0;
// FIXME: // FIXME:
m_generalOptionPage = new GdbOptionPage(&theGdbSettings()); m_generalOptionPage = new GdbOptionPage(&theGdbSettings());
addObject(m_generalOptionPage); addObject(m_generalOptionPage);
m_typeMacroPage = new TypeMacroPage(&theGdbSettings());
addObject(m_typeMacroPage);
m_locationMark = 0; m_locationMark = 0;

View File

@@ -54,7 +54,6 @@ namespace Internal {
class DebuggerManager; class DebuggerManager;
class DebugMode; class DebugMode;
class GdbOptionPage; class GdbOptionPage;
class TypeMacroPage;
class LocationMark; class LocationMark;
class DebuggerPlugin : public ExtensionSystem::IPlugin class DebuggerPlugin : public ExtensionSystem::IPlugin
@@ -103,7 +102,6 @@ private:
ExtensionSystem::PluginManager *m_pm; ExtensionSystem::PluginManager *m_pm;
GdbOptionPage *m_generalOptionPage; GdbOptionPage *m_generalOptionPage;
TypeMacroPage *m_typeMacroPage;
QString m_previousMode; QString m_previousMode;
LocationMark *m_locationMark; LocationMark *m_locationMark;

View File

@@ -80,7 +80,7 @@ enum DataDumperState
DataDumperUnavailable, DataDumperUnavailable,
}; };
// FIXME: Move to extra file?
class GdbSettings class GdbSettings
{ {
public: public:

View File

@@ -58,7 +58,11 @@ GdbOptionPage::GdbOptionPage(GdbSettings *settings)
#if defined(Q_OS_WIN32) #if defined(Q_OS_WIN32)
defaultCommand.append(".exe"); defaultCommand.append(".exe");
#endif #endif
QString defaultScript = coreIFace->resourcePath() +
QLatin1String("/gdb/qt4macros");
m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString(); m_settings->m_gdbCmd = s->value("Location", defaultCommand).toString();
m_settings->m_scriptFile= s->value("ScriptFile", defaultScript).toString();
m_settings->m_gdbEnv = s->value("Environment", "").toString(); m_settings->m_gdbEnv = s->value("Environment", "").toString();
m_settings->m_autoRun = s->value("AutoRun", true).toBool(); m_settings->m_autoRun = s->value("AutoRun", true).toBool();
m_settings->m_autoQuit = s->value("AutoQuit", true).toBool(); m_settings->m_autoQuit = s->value("AutoQuit", true).toBool();
@@ -72,36 +76,56 @@ QString GdbOptionPage::name() const
QString GdbOptionPage::category() const QString GdbOptionPage::category() const
{ {
return "Debugger|Gdb"; return "Debugger";
} }
QString GdbOptionPage::trCategory() const QString GdbOptionPage::trCategory() const
{ {
return tr("Debugger|Gdb"); return tr("Debugger");
} }
QWidget *GdbOptionPage::createPage(QWidget *parent) QWidget *GdbOptionPage::createPage(QWidget *parent)
{ {
QWidget *w = new QWidget(parent); QWidget *w = new QWidget(parent);
m_ui.setupUi(w); m_ui.setupUi(w);
m_ui.gdbEdit->setText(m_settings->m_gdbCmd); m_ui.gdbLocationEdit->setText(m_settings->m_gdbCmd);
m_ui.envEdit->setText(m_settings->m_gdbEnv); m_ui.environmentEdit->setText(m_settings->m_gdbEnv);
m_ui.autoStartBox->setChecked(m_settings->m_autoRun); m_ui.autoStartBox->setChecked(m_settings->m_autoRun);
m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit); m_ui.autoQuitBox->setChecked(m_settings->m_autoQuit);
connect(m_ui.pushButtonBrowse, SIGNAL(clicked()), m_ui.gdbStartupScriptEdit->setText(m_settings->m_scriptFile);
this, SLOT(browse()));
// FIXME
m_ui.autoStartBox->hide();
m_ui.autoQuitBox->hide();
m_ui.environmentEdit->hide();
m_ui.labelEnvironment->hide();
connect(m_ui.browseForGdbButton, SIGNAL(clicked()),
this, SLOT(browseForGdb()));
connect(m_ui.browseForScriptButton, SIGNAL(clicked()),
this, SLOT(browseForScript()));
return w; return w;
} }
void GdbOptionPage::browse() void GdbOptionPage::browseForGdb()
{ {
QString fileName = QFileDialog::getOpenFileName(m_ui.pushButtonBrowse, QString fileName = QFileDialog::getOpenFileName(m_ui.browseForGdbButton,
"Browse for gdb executable"); "Browse for gdb executable");
if (fileName.isEmpty()) if (fileName.isEmpty())
return; return;
m_settings->m_gdbCmd = fileName; m_settings->m_gdbCmd = fileName;
m_ui.gdbEdit->setText(fileName); m_ui.gdbLocationEdit->setText(fileName);
}
void GdbOptionPage::browseForScript()
{
QString fileName = QFileDialog::getOpenFileName(m_ui.browseForGdbButton,
"Browse for gdb startup script");
if (fileName.isEmpty())
return;
m_settings->m_scriptFile = fileName;
m_ui.gdbStartupScriptEdit->setText(fileName);
} }
void GdbOptionPage::finished(bool accepted) void GdbOptionPage::finished(bool accepted)
@@ -109,10 +133,11 @@ void GdbOptionPage::finished(bool accepted)
if (!accepted) if (!accepted)
return; return;
m_settings->m_gdbCmd = m_ui.gdbEdit->text(); m_settings->m_gdbCmd = m_ui.gdbLocationEdit->text();
m_settings->m_gdbEnv = m_ui.envEdit->text(); m_settings->m_gdbEnv = m_ui.environmentEdit->text();
m_settings->m_autoRun = m_ui.autoStartBox->isChecked(); m_settings->m_autoRun = m_ui.autoStartBox->isChecked();
m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked(); m_settings->m_autoQuit = m_ui.autoQuitBox->isChecked();
m_settings->m_scriptFile = m_ui.gdbStartupScriptEdit->text();
Core::ICore *coreIFace = m_pm->getObject<Core::ICore>(); Core::ICore *coreIFace = m_pm->getObject<Core::ICore>();
if (!coreIFace || !coreIFace->settings()) if (!coreIFace || !coreIFace->settings())

View File

@@ -35,7 +35,6 @@
#define GDBOPTIONPAGE_H #define GDBOPTIONPAGE_H
#include "ui_gdboptionpage.h" #include "ui_gdboptionpage.h"
#include "ui_gdbtypemacros.h"
#include <coreplugin/dialogs/ioptionspage.h> #include <coreplugin/dialogs/ioptionspage.h>
@@ -63,7 +62,8 @@ public:
void finished(bool accepted); void finished(bool accepted);
public slots: public slots:
void browse(); void browseForGdb();
void browseForScript();
private: private:
ExtensionSystem::PluginManager *m_pm; ExtensionSystem::PluginManager *m_pm;
@@ -72,6 +72,7 @@ private:
GdbSettings *m_settings; GdbSettings *m_settings;
}; };
#if 0
class TypeMacroPage : public Core::IOptionsPage class TypeMacroPage : public Core::IOptionsPage
{ {
Q_OBJECT Q_OBJECT
@@ -100,6 +101,7 @@ private:
GdbSettings *m_settings; GdbSettings *m_settings;
QWidget *m_widget; QWidget *m_widget;
}; };
#endif
} // namespace Internal } // namespace Internal
} // namespace Debugger } // namespace Debugger

View File

@@ -7,7 +7,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>433</width> <width>433</width>
<height>216</height> <height>233</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@@ -23,7 +23,7 @@
<item> <item>
<widget class="QGroupBox" name="groupBox"> <widget class="QGroupBox" name="groupBox">
<property name="title"> <property name="title">
<string>Gdb Debug Options</string> <string>Locations</string>
</property> </property>
<layout class="QGridLayout"> <layout class="QGridLayout">
<property name="margin"> <property name="margin">
@@ -33,33 +33,36 @@
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="1"> <item row="0" column="1">
<widget class="QLineEdit" name="gdbEdit"/> <widget class="QLineEdit" name="gdbLocationEdit"/>
</item> </item>
<item row="1" column="1" colspan="2"> <item row="1" column="1" colspan="2">
<widget class="QLineEdit" name="envEdit"/> <widget class="QLineEdit" name="environmentEdit"/>
</item> </item>
<item row="0" column="0"> <item row="0" column="0">
<widget class="QLabel" name="label"> <widget class="QLabel" name="labelGdbLocaltion">
<property name="toolTip">
<string>This is either a full abolute path leading to the gdb binary you intend to use or the name of a gdb binary that wiull be searched in your PATH.</string>
</property>
<property name="text"> <property name="text">
<string>Gdb Location:</string> <string>Gdb Location:</string>
</property> </property>
<property name="buddy"> <property name="buddy">
<cstring>gdbEdit</cstring> <cstring>gdbLocationEdit</cstring>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
<widget class="QLabel" name="label_2"> <widget class="QLabel" name="labelEnvironment">
<property name="text"> <property name="text">
<string>Environment:</string> <string>Environment:</string>
</property> </property>
<property name="buddy"> <property name="buddy">
<cstring>envEdit</cstring> <cstring>environmentEdit</cstring>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2"> <item row="0" column="2">
<widget class="QPushButton" name="pushButtonBrowse"> <widget class="QPushButton" name="browseForGdbButton">
<property name="text"> <property name="text">
<string/> <string/>
</property> </property>
@@ -72,6 +75,36 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1">
<widget class="QLineEdit" name="gdbStartupScriptEdit"/>
</item>
<item row="2" column="2">
<widget class="QToolButton" name="browseForScriptButton">
<property name="minimumSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="text">
<string>...</string>
</property>
<property name="icon">
<iconset resource="../coreplugin/core.qrc">
<normaloff>:/qworkbench/images/fileopen.png</normaloff>:/qworkbench/images/fileopen.png</iconset>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelGdbStartupScript">
<property name="toolTip">
<string>This is either empty or points to a file containing gdb commands that will be executed immediately after gdb starts up.</string>
</property>
<property name="text">
<string>Gdb Startup Script:</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
</item> </item>

View File

@@ -1,146 +1,115 @@
<ui version="4.0" > <?xml version="1.0" encoding="UTF-8"?>
<author></author> <ui version="4.0">
<comment></comment>
<exportmacro></exportmacro>
<class>TypeMacroPage</class> <class>TypeMacroPage</class>
<widget class="QWidget" name="TypeMacroPage" > <widget class="QWidget" name="TypeMacroPage">
<property name="geometry" > <property name="geometry">
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>519</width> <width>519</width>
<height>238</height> <height>263</height>
</rect> </rect>
</property> </property>
<property name="windowTitle" > <property name="windowTitle">
<string>Form</string> <string>Form</string>
</property> </property>
<layout class="QVBoxLayout" > <layout class="QVBoxLayout">
<property name="margin" > <property name="spacing">
<number>9</number>
</property>
<property name="spacing" >
<number>6</number> <number>6</number>
</property> </property>
<property name="margin">
<number>9</number>
</property>
<item> <item>
<widget class="QGroupBox" name="groupBox" > <layout class="QGridLayout">
<property name="title" > <property name="margin">
<string>Script File</string>
</property>
<layout class="QHBoxLayout" >
<property name="margin" >
<number>9</number>
</property>
<property name="spacing" >
<number>6</number>
</property>
<item>
<widget class="QLineEdit" name="scriptEdit" />
</item>
<item>
<widget class="QToolButton" name="scriptButton" >
<property name="minimumSize" >
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="text" >
<string>...</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<layout class="QGridLayout" >
<property name="margin" >
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing" > <property name="spacing">
<number>6</number> <number>6</number>
</property> </property>
<item row="0" column="0" colspan="2" > <item row="0" column="0" colspan="2">
<widget class="QTreeWidget" name="treeWidget" > <widget class="QTreeWidget" name="treeWidget">
<property name="rootIsDecorated" > <property name="rootIsDecorated">
<bool>false</bool> <bool>false</bool>
</property> </property>
<column> <column>
<property name="text" > <property name="text">
<string>Type</string> <string>Type</string>
</property> </property>
</column> </column>
<column> <column>
<property name="text" > <property name="text">
<string>Macro</string> <string>Macro</string>
</property> </property>
</column> </column>
</widget> </widget>
</item> </item>
<item row="1" column="2" > <item row="1" column="2">
<widget class="QToolButton" name="addButton" > <widget class="QToolButton" name="addButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>21</width> <width>21</width>
<height>23</height> <height>23</height>
</size> </size>
</property> </property>
<property name="text" > <property name="text">
<string>+</string> <string>+</string>
</property> </property>
<property name="icon" > <property name="icon">
<iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/newitem.png</iconset> <iconset>
<normaloff>:/gdbdebugger/images/newitem.png</normaloff>:/gdbdebugger/images/newitem.png</iconset>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0" > <item row="2" column="0">
<widget class="QLabel" name="label_2" > <widget class="QLabel" name="label_2">
<property name="text" > <property name="text">
<string>Macro Name:</string> <string>Macro Name:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0" > <item row="3" column="0">
<widget class="QLabel" name="label_3" > <widget class="QLabel" name="label_3">
<property name="text" > <property name="text">
<string>Parse as:</string> <string>Parse as:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1" > <item row="2" column="1">
<widget class="QLineEdit" name="macroEdit" /> <widget class="QLineEdit" name="macroEdit"/>
</item> </item>
<item row="0" column="2" > <item row="0" column="2">
<layout class="QVBoxLayout" > <layout class="QVBoxLayout">
<property name="margin" > <property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="spacing" > <property name="margin">
<number>0</number> <number>0</number>
</property> </property>
<item> <item>
<widget class="QToolButton" name="delButton" > <widget class="QToolButton" name="delButton">
<property name="minimumSize" > <property name="minimumSize">
<size> <size>
<width>21</width> <width>21</width>
<height>23</height> <height>23</height>
</size> </size>
</property> </property>
<property name="text" > <property name="text">
<string>-</string> <string>-</string>
</property> </property>
<property name="icon" > <property name="icon">
<iconset resource="gdbdebugger.qrc" >:/gdbdebugger/images/delete.png</iconset> <iconset>
<normaloff>:/gdbdebugger/images/delete.png</normaloff>:/gdbdebugger/images/delete.png</iconset>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer> <spacer>
<property name="orientation" > <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
</property> </property>
<property name="sizeHint" > <property name="sizeHint" stdset="0">
<size> <size>
<width>20</width> <width>20</width>
<height>40</height> <height>40</height>
@@ -150,25 +119,25 @@
</item> </item>
</layout> </layout>
</item> </item>
<item row="1" column="1" > <item row="1" column="1">
<widget class="QLineEdit" name="typeEdit" /> <widget class="QLineEdit" name="typeEdit"/>
</item> </item>
<item row="1" column="0" > <item row="1" column="0">
<widget class="QLabel" name="label" > <widget class="QLabel" name="label">
<property name="text" > <property name="text">
<string>Type:</string> <string>Type:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1" > <item row="3" column="1">
<widget class="QComboBox" name="parseAsBox" > <widget class="QComboBox" name="parseAsBox">
<item> <item>
<property name="text" > <property name="text">
<string>ASCII (char *)</string> <string>ASCII (char *)</string>
</property> </property>
</item> </item>
<item> <item>
<property name="text" > <property name="text">
<string>Unicode (short)</string> <string>Unicode (short)</string>
</property> </property>
</item> </item>
@@ -178,9 +147,8 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<pixmapfunction></pixmapfunction>
<resources> <resources>
<include location="gdbdebugger.qrc" /> <include location="gdbdebugger.qrc"/>
</resources> </resources>
<connections/> <connections/>
</ui> </ui>

View File

@@ -77,7 +77,7 @@ QString SettingsPage::name() const
return tr("General"); return tr("General");
} }
QString SettingsPage::category() const QString SettingsPage::category() const
{ {
return QLatin1String("Git"); return QLatin1String("Git");
} }