Debugger: Paddle back on multiple inheritance for settings

This is fairly close to the new "standard" pattern for an
individual page but still allows flat access using the same
'settings().' stanza.

Change-Id: I1edbbd64a857a3d3936fb2c21fdc7e3c8ae7a44c
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
hjk
2023-07-17 17:20:59 +02:00
parent 2a31f17354
commit e157ac82a1
6 changed files with 77 additions and 14 deletions

View File

@@ -7,6 +7,7 @@
#include "debuggericons.h"
#include "debuggerinternalconstants.h"
#include "debuggertr.h"
#include "gdb/gdbsettings.h"
#ifdef Q_OS_WIN
#include "registerpostmortemaction.h"
@@ -39,7 +40,28 @@ DebuggerSettings &settings()
return settings;
}
DebuggerSettings::DebuggerSettings()
DebuggerSettings::DebuggerSettings() :
gdbWatchdogTimeout{gdbSettings().gdbWatchdogTimeout},
skipKnownFrames{gdbSettings().skipKnownFrames},
useMessageBoxForSignals{gdbSettings().useMessageBoxForSignals},
adjustBreakpointLocations{gdbSettings().adjustBreakpointLocations},
useDynamicType{gdbSettings().useDynamicType},
loadGdbInit{gdbSettings().loadGdbInit},
loadGdbDumpers{gdbSettings().loadGdbDumpers},
intelFlavor{gdbSettings().intelFlavor},
usePseudoTracepoints{gdbSettings().usePseudoTracepoints},
useIndexCache{gdbSettings().useIndexCache},
gdbStartupCommands{gdbSettings().gdbStartupCommands},
gdbPostAttachCommands{gdbSettings().gdbPostAttachCommands},
targetAsync{gdbSettings().targetAsync},
autoEnrichParameters{gdbSettings().autoEnrichParameters},
breakOnThrow{gdbSettings().breakOnThrow},
breakOnCatch{gdbSettings().breakOnCatch},
breakOnWarning{gdbSettings().breakOnWarning},
breakOnFatal{gdbSettings().breakOnFatal},
breakOnAbort{gdbSettings().breakOnAbort},
enableReverseDebugging{gdbSettings().enableReverseDebugging},
multiInferior{gdbSettings().multiInferior}
{
const QString debugModeGroup(debugModeSettingsGroupC);
const QString cdbSettingsGroup(cdbSettingsGroupC);
@@ -467,13 +489,11 @@ DebuggerSettings::~DebuggerSettings()
void DebuggerSettings::readSettings()
{
all.readSettings();
GdbSettings::readSettings();
}
void DebuggerSettings::writeSettings() const
{
all.writeSettings();
GdbSettings::writeSettings();
}
QString DebuggerSettings::dump()

View File

@@ -3,12 +3,11 @@
#pragma once
#include "gdb/gdbsettings.h"
#include <utils/aspects.h>
#include <QCoreApplication>
#include <QHash>
#include <QMap>
#include <QVector>
namespace Debugger::Internal {
@@ -48,7 +47,7 @@ class GeneralSettings
~GeneralSettings();
};
class DebuggerSettings : public GdbSettings
class DebuggerSettings
{
public:
explicit DebuggerSettings();
@@ -56,6 +55,29 @@ public:
static QString dump();
Utils::IntegerAspect &gdbWatchdogTimeout;
Utils::BoolAspect &skipKnownFrames;
Utils::BoolAspect &useMessageBoxForSignals;
Utils::BoolAspect &adjustBreakpointLocations;
Utils::BoolAspect &useDynamicType;
Utils::BoolAspect &loadGdbInit;
Utils::BoolAspect &loadGdbDumpers;
Utils::BoolAspect &intelFlavor;
Utils::BoolAspect &usePseudoTracepoints;
Utils::BoolAspect &useIndexCache;
Utils::StringAspect &gdbStartupCommands;
Utils::StringAspect &gdbPostAttachCommands;
Utils::BoolAspect &targetAsync;
Utils::BoolAspect &autoEnrichParameters;
Utils::BoolAspect &breakOnThrow;
Utils::BoolAspect &breakOnCatch;
Utils::BoolAspect &breakOnWarning;
Utils::BoolAspect &breakOnFatal;
Utils::BoolAspect &breakOnAbort;
Utils::BoolAspect &enableReverseDebugging;
Utils::BoolAspect &multiInferior;
// Page 1: General
Utils::BoolAspect useAlternatingRowColors;
Utils::BoolAspect useAnnotationsInMainEditor;

View File

@@ -20,12 +20,10 @@
#include <texteditor/textdocument.h>
#include <texteditor/texteditor.h>
#include <utils/aspects.h>
#include <utils/mimeutils.h>
#include <utils/qtcassert.h>
#include <QTextBlock>
#include <QDir>
using namespace Core;
using namespace TextEditor;

View File

@@ -3,6 +3,8 @@
#include "gdbsettings.h"
#include <coreplugin/dialogs/ioptionspage.h>
#include <debugger/commonoptionspage.h>
#include <debugger/debuggeractions.h>
#include <debugger/debuggerconstants.h>
@@ -18,11 +20,15 @@ using namespace Utils;
namespace Debugger::Internal {
GdbSettings &gdbSettings()
{
static GdbSettings settings;
return settings;
}
GdbSettings::GdbSettings()
{
setId("M.Gdb");
setDisplayName(Tr::tr("GDB"));
setCategory(Constants::DEBUGGER_SETTINGS_CATEGORY);
setAutoApply(false);
setSettingsGroup("DebugMode");
useMessageBoxForSignals.setSettingsKey("UseMessageBoxForSignals");
@@ -250,4 +256,20 @@ GdbSettings::GdbSettings()
readSettings();
}
// GdbSettingsPage
class GdbSettingsPage final : public Core::IOptionsPage
{
public:
GdbSettingsPage()
{
setId("M.Gdb");
setDisplayName(Tr::tr("GDB"));
setCategory(Constants::DEBUGGER_SETTINGS_CATEGORY);
setSettingsProvider([] { return &gdbSettings(); });
}
};
const GdbSettingsPage settingsPage;
} // Debugger::Internal

View File

@@ -3,11 +3,11 @@
#pragma once
#include <coreplugin/dialogs/ioptionspage.h>
#include <utils/aspects.h>
namespace Debugger::Internal {
class GdbSettings : public Core::PagedSettings
class GdbSettings : public Utils::AspectContainer
{
public:
GdbSettings();
@@ -36,4 +36,6 @@ public:
Utils::BoolAspect multiInferior{this};
};
GdbSettings &gdbSettings();
} // Debugger::Internal

View File

@@ -36,7 +36,6 @@
#include <QApplication>
#include <QDateTime>
#include <QDebug>
#include <QDir>
#include <QFileInfo>
#include <QTimer>
#include <QToolTip>