summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/debuggerkitconfigwidget.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/debugger/debuggerkitconfigwidget.h')
-rw-r--r--src/plugins/debugger/debuggerkitconfigwidget.h155
1 files changed, 119 insertions, 36 deletions
diff --git a/src/plugins/debugger/debuggerkitconfigwidget.h b/src/plugins/debugger/debuggerkitconfigwidget.h
index 9a5fbc9e83..9f83613949 100644
--- a/src/plugins/debugger/debuggerkitconfigwidget.h
+++ b/src/plugins/debugger/debuggerkitconfigwidget.h
@@ -30,29 +30,95 @@
#ifndef DEBUGGER_DEBUGGERKITCONFIGWIDGET_H
#define DEBUGGER_DEBUGGERKITCONFIGWIDGET_H
-#include <projectexplorer/kitconfigwidget.h>
-
#include "debuggerkitinformation.h"
+#include <coreplugin/dialogs/ioptionspage.h>
+#include <projectexplorer/kitconfigwidget.h>
+#include <projectexplorer/abi.h>
+#include <utils/detailswidget.h>
+#include <utils/fileutils.h>
+#include <utils/pathchooser.h>
+#include <utils/persistentsettings.h>
+
#include <QDialog>
+#include <QStandardItemModel>
+#include <QTreeView>
QT_BEGIN_NAMESPACE
-class QLabel;
class QComboBox;
+class QLabel;
class QPushButton;
QT_END_NAMESPACE
-namespace ProjectExplorer { class Kit; }
-namespace Utils {
-class PathChooser;
-class FileName;
-}
-
namespace Debugger {
-
namespace Internal {
+
+class DebuggerItemConfigWidget;
+class DebuggerKitConfigWidget;
+
// -----------------------------------------------------------------------
-// DebuggerKitConfigWidget:
+// DebuggerItemManager
+// -----------------------------------------------------------------------
+
+class DebuggerItemManager : public QStandardItemModel
+{
+ Q_OBJECT
+
+public:
+ DebuggerItemManager(QObject *parent);
+ ~DebuggerItemManager();
+
+ static const DebuggerItem *debuggerFromKit(const ProjectExplorer::Kit *kit);
+ // Returns id.
+ QVariant registerDebugger(const DebuggerItem &item);
+
+ QModelIndex currentIndex() const;
+ void setCurrentIndex(const QModelIndex &index);
+ void setCurrentData(const QString &displayName, const Utils::FileName &fileName);
+
+ // Returns id.
+ QVariant defaultDebugger(ProjectExplorer::ToolChain *tc);
+ static void restoreDebuggers();
+
+public slots:
+ void saveDebuggers();
+ void autoDetectDebuggers();
+ void readLegacyDebuggers();
+ void addDebugger();
+ void cloneDebugger();
+ void removeDebugger();
+ void markCurrentDirty();
+
+signals:
+ void debuggerAdded(const QVariant &id, const QString &display);
+ void debuggerUpdated(const QVariant &id, const QString &display);
+ void debuggerRemoved(const QVariant &id);
+
+private:
+ friend class Debugger::DebuggerKitInformation;
+ friend class DebuggerKitConfigWidget;
+ friend class DebuggerItemConfigWidget;
+ friend class DebuggerOptionsPage;
+
+ QVariant doAddDebugger(const DebuggerItem &item);
+ const DebuggerItem *findByCommand(const Utils::FileName &command);
+ const DebuggerItem *findById(const QVariant &id);
+ QStandardItem *currentStandardItem() const;
+ QVariant headerData(int section, Qt::Orientation orientation, int role) const;
+ QString uniqueDisplayName(const QString &base) const;
+ void autoDetectCdbDebugger();
+
+ Utils::PersistentSettingsWriter *m_writer;
+ QList<DebuggerItem> m_debuggers;
+ QVariant m_currentDebugger;
+
+ QStandardItem *m_autoRoot;
+ QStandardItem *m_manualRoot;
+ QStringList removed;
+};
+
+// -----------------------------------------------------------------------
+// DebuggerKitConfigWidget
// -----------------------------------------------------------------------
class DebuggerKitConfigWidget : public ProjectExplorer::KitConfigWidget
@@ -60,52 +126,69 @@ class DebuggerKitConfigWidget : public ProjectExplorer::KitConfigWidget
Q_OBJECT
public:
- DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCopy, bool sticky);
+ DebuggerKitConfigWidget(ProjectExplorer::Kit *workingCopy,
+ const ProjectExplorer::KitInformation *ki);
+ ~DebuggerKitConfigWidget();
QString displayName() const;
QString toolTip() const;
-
void makeReadOnly();
-
void refresh();
-
QWidget *buttonWidget() const;
QWidget *mainWidget() const;
private slots:
- void autoDetectDebugger();
- void showDialog();
+ void manageDebuggers();
+ void currentDebuggerChanged(int idx);
+ void onDebuggerAdded(const QVariant &id, const QString &displayName);
+ void onDebuggerUpdated(const QVariant &id, const QString &displayName);
+ void onDebuggerRemoved(const QVariant &id);
private:
- QWidget *m_main;
- QLabel *m_label;
- QPushButton *m_autoDetectButton;
- QPushButton *m_editButton;
+ int indexOf(const QVariant &id);
+ QVariant currentId() const;
+ void updateComboBox(const QVariant &id);
+
+ bool m_isReadOnly;
+ QComboBox *m_comboBox;
+ QPushButton *m_manageButton;
};
-class DebuggerKitConfigDialog : public QDialog
+// --------------------------------------------------------------------------
+// DebuggerOptionsPage
+// --------------------------------------------------------------------------
+
+class DebuggerOptionsPage : public Core::IOptionsPage
{
Q_OBJECT
+
public:
- explicit DebuggerKitConfigDialog(QWidget *parent = 0);
+ DebuggerOptionsPage();
- void setDebuggerItem(const DebuggerKitInformation::DebuggerItem &item);
- DebuggerKitInformation::DebuggerItem item() const
- { return DebuggerKitInformation::DebuggerItem(engineType(), fileName()); }
+ QWidget *createPage(QWidget *parent);
+ void apply();
+ void finish();
+ bool matches(const QString &) const;
private slots:
- void refreshLabel();
+ void debuggerSelectionChanged();
+ void debuggerModelChanged();
+ void updateState();
+ void cloneDebugger();
+ void addDebugger();
+ void removeDebugger();
private:
- DebuggerEngineType engineType() const;
- void setEngineType(DebuggerEngineType et);
-
- Utils::FileName fileName() const;
- void setFileName(const Utils::FileName &fn);
-
- QComboBox *m_comboBox;
- QLabel *m_label;
- Utils::PathChooser *m_chooser;
+ QWidget *m_configWidget;
+ QString m_searchKeywords;
+
+ DebuggerItemManager *m_manager;
+ DebuggerItemConfigWidget *m_itemConfigWidget;
+ QTreeView *m_debuggerView;
+ Utils::DetailsWidget *m_container;
+ QPushButton *m_addButton;
+ QPushButton *m_cloneButton;
+ QPushButton *m_delButton;
};
} // namespace Internal