forked from qt-creator/qt-creator
Debugger: Use AspectContainer directly for L&E settings page layout
Change-Id: I538362541e67499ee1a93fbd5452bdd76694f87b Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -11,6 +11,8 @@
|
|||||||
#include "registerpostmortemaction.h"
|
#include "registerpostmortemaction.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
@@ -205,21 +207,110 @@ public:
|
|||||||
|
|
||||||
const CommonSettingsPage commonSettingsPage;
|
const CommonSettingsPage commonSettingsPage;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// LocalsAndExpressionsOptionsPage
|
|
||||||
//
|
|
||||||
///////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
class LocalsAndExpressionsOptionsPageWidget : public IOptionsPageWidget
|
// LocalsAndExpressions
|
||||||
{
|
|
||||||
public:
|
|
||||||
LocalsAndExpressionsOptionsPageWidget()
|
|
||||||
{
|
|
||||||
DebuggerSettings &s = settings();
|
|
||||||
setOnApply([&s] { s.page4.apply(); s.page4.writeSettings(); });
|
|
||||||
setOnFinish([&s] { s.page4.finish(); });
|
|
||||||
|
|
||||||
|
LocalsAndExpressionsSettings &localsAndExpressionSettings()
|
||||||
|
{
|
||||||
|
static LocalsAndExpressionsSettings settings;
|
||||||
|
return settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
LocalsAndExpressionsSettings::LocalsAndExpressionsSettings()
|
||||||
|
{
|
||||||
|
setAutoApply(false);
|
||||||
|
|
||||||
|
const QString debugModeGroup("DebugMode");
|
||||||
|
|
||||||
|
useDebuggingHelpers.setSettingsKey(debugModeGroup, "UseDebuggingHelper");
|
||||||
|
useDebuggingHelpers.setDefaultValue(true);
|
||||||
|
useDebuggingHelpers.setLabelText(Tr::tr("Use Debugging Helpers"));
|
||||||
|
|
||||||
|
useCodeModel.setSettingsKey(debugModeGroup, "UseCodeModel");
|
||||||
|
useCodeModel.setDefaultValue(true);
|
||||||
|
useCodeModel.setLabelText(Tr::tr("Use code model"));
|
||||||
|
useCodeModel.setToolTip(
|
||||||
|
"<p>"
|
||||||
|
+ Tr::tr("Selecting this causes the C++ Code Model being asked "
|
||||||
|
"for variable scope information. This might result in slightly faster "
|
||||||
|
"debugger operation but may fail for optimized code."));
|
||||||
|
|
||||||
|
showThreadNames.setSettingsKey(debugModeGroup, "ShowThreadNames");
|
||||||
|
showThreadNames.setLabelText(Tr::tr("Display thread names"));
|
||||||
|
showThreadNames.setToolTip("<p>" + Tr::tr("Displays names of QThread based threads."));
|
||||||
|
|
||||||
|
showStdNamespace.setSettingsKey(debugModeGroup, "ShowStandardNamespace");
|
||||||
|
showStdNamespace.setDefaultValue(true);
|
||||||
|
showStdNamespace.setDisplayName(Tr::tr("Show \"std::\" Namespace in Types"));
|
||||||
|
showStdNamespace.setLabelText(Tr::tr("Show \"std::\" namespace in types"));
|
||||||
|
showStdNamespace.setToolTip(
|
||||||
|
"<p>" + Tr::tr("Shows \"std::\" prefix for types from the standard library."));
|
||||||
|
|
||||||
|
showQtNamespace.setSettingsKey(debugModeGroup, "ShowQtNamespace");
|
||||||
|
showQtNamespace.setDefaultValue(true);
|
||||||
|
showQtNamespace.setDisplayName(Tr::tr("Show Qt's Namespace in Types"));
|
||||||
|
showQtNamespace.setLabelText(Tr::tr("Show Qt's namespace in types"));
|
||||||
|
showQtNamespace.setToolTip("<p>"
|
||||||
|
+ Tr::tr("Shows Qt namespace prefix for Qt types. This is only "
|
||||||
|
"relevant if Qt was configured with \"-qtnamespace\"."));
|
||||||
|
|
||||||
|
showQObjectNames.setSettingsKey(debugModeGroup, "ShowQObjectNames2");
|
||||||
|
showQObjectNames.setDefaultValue(true);
|
||||||
|
showQObjectNames.setDisplayName(Tr::tr("Show QObject names if available"));
|
||||||
|
showQObjectNames.setLabelText(Tr::tr("Show QObject names if available"));
|
||||||
|
showQObjectNames.setToolTip(
|
||||||
|
"<p>"
|
||||||
|
+ Tr::tr("Displays the objectName property of QObject based items. "
|
||||||
|
"Note that this can negatively impact debugger performance "
|
||||||
|
"even if no QObjects are present."));
|
||||||
|
|
||||||
|
extraDumperCommands.setSettingsKey(debugModeGroup, "GdbCustomDumperCommands");
|
||||||
|
extraDumperCommands.setDisplayStyle(StringAspect::TextEditDisplay);
|
||||||
|
extraDumperCommands.setUseGlobalMacroExpander();
|
||||||
|
extraDumperCommands.setToolTip("<html><head/><body><p>"
|
||||||
|
+ Tr::tr("Python commands entered here will be executed after built-in "
|
||||||
|
"debugging helpers have been loaded and fully initialized. You can "
|
||||||
|
"load additional debugging helpers or modify existing ones here.")
|
||||||
|
+ "</p></body></html>");
|
||||||
|
|
||||||
|
extraDumperFile.setSettingsKey(debugModeGroup, "ExtraDumperFile");
|
||||||
|
extraDumperFile.setDisplayName(Tr::tr("Extra Debugging Helpers"));
|
||||||
|
// Label text is intentional empty in the GUI.
|
||||||
|
extraDumperFile.setToolTip(Tr::tr("Path to a Python file containing additional data dumpers."));
|
||||||
|
|
||||||
|
displayStringLimit.setSettingsKey(debugModeGroup, "DisplayStringLimit");
|
||||||
|
displayStringLimit.setDefaultValue(300);
|
||||||
|
displayStringLimit.setSpecialValueText(Tr::tr("<unlimited>"));
|
||||||
|
displayStringLimit.setRange(20, 10000);
|
||||||
|
displayStringLimit.setSingleStep(10);
|
||||||
|
displayStringLimit.setLabelText(Tr::tr("Display string length:"));
|
||||||
|
displayStringLimit.setToolTip(
|
||||||
|
"<p>"
|
||||||
|
+ Tr::tr("The maximum length of string entries in the "
|
||||||
|
"Locals and Expressions views. Longer than that are cut off "
|
||||||
|
"and displayed with an ellipsis attached."));
|
||||||
|
|
||||||
|
maximalStringLength.setSettingsKey(debugModeGroup, "MaximalStringLength");
|
||||||
|
maximalStringLength.setDefaultValue(10000);
|
||||||
|
maximalStringLength.setSpecialValueText(Tr::tr("<unlimited>"));
|
||||||
|
maximalStringLength.setRange(20, 10000000);
|
||||||
|
maximalStringLength.setSingleStep(20);
|
||||||
|
maximalStringLength.setLabelText(Tr::tr("Maximum string length:"));
|
||||||
|
maximalStringLength.setToolTip(
|
||||||
|
"<p>"
|
||||||
|
+ Tr::tr("The maximum length for strings in separated windows. "
|
||||||
|
"Longer strings are cut off and displayed with an ellipsis attached."));
|
||||||
|
|
||||||
|
defaultArraySize.setSettingsKey(debugModeGroup, "DefaultArraySize");
|
||||||
|
defaultArraySize.setDefaultValue(100);
|
||||||
|
defaultArraySize.setRange(10, 1000000000);
|
||||||
|
defaultArraySize.setSingleStep(100);
|
||||||
|
defaultArraySize.setLabelText(Tr::tr("Default array size:"));
|
||||||
|
defaultArraySize.setToolTip("<p>"
|
||||||
|
+ Tr::tr("The number of array elements requested when expanding "
|
||||||
|
"entries in the Locals and Expressions views."));
|
||||||
|
|
||||||
|
setLayouter([this] {
|
||||||
auto label = new QLabel; //(useHelperGroup);
|
auto label = new QLabel; //(useHelperGroup);
|
||||||
label->setTextFormat(Qt::AutoText);
|
label->setTextFormat(Qt::AutoText);
|
||||||
label->setWordWrap(true);
|
label->setWordWrap(true);
|
||||||
@@ -232,9 +323,9 @@ public:
|
|||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
Column left {
|
Column left {
|
||||||
label,
|
label,
|
||||||
s.useCodeModel,
|
useCodeModel,
|
||||||
s.showThreadNames,
|
showThreadNames,
|
||||||
Group { title(Tr::tr("Extra Debugging Helper")), Column { s.extraDumperFile } }
|
Group { title(Tr::tr("Extra Debugging Helper")), Column { extraDumperFile } }
|
||||||
};
|
};
|
||||||
|
|
||||||
Group useHelper {
|
Group useHelper {
|
||||||
@@ -242,38 +333,46 @@ public:
|
|||||||
left,
|
left,
|
||||||
Group {
|
Group {
|
||||||
title(Tr::tr("Debugging Helper Customization")),
|
title(Tr::tr("Debugging Helper Customization")),
|
||||||
Column { s.extraDumperCommands }
|
Column { extraDumperCommands }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Grid limits {
|
Grid limits {
|
||||||
s.maximalStringLength, br,
|
maximalStringLength, br,
|
||||||
s.displayStringLimit, br,
|
displayStringLimit, br,
|
||||||
s.defaultArraySize
|
defaultArraySize
|
||||||
};
|
};
|
||||||
|
|
||||||
Column {
|
return Column {
|
||||||
s.useDebuggingHelpers,
|
useDebuggingHelpers,
|
||||||
useHelper,
|
useHelper,
|
||||||
Space(10),
|
Space(10),
|
||||||
s.showStdNamespace,
|
showStdNamespace,
|
||||||
s.showQtNamespace,
|
showQtNamespace,
|
||||||
s.showQObjectNames,
|
showQObjectNames,
|
||||||
Space(10),
|
Space(10),
|
||||||
Row { limits, st },
|
Row { limits, st },
|
||||||
st
|
st
|
||||||
}.attachTo(this);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
});
|
||||||
|
|
||||||
LocalsAndExpressionsOptionsPage::LocalsAndExpressionsOptionsPage()
|
readSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
class LocalsAndExpressionsSettingsPage final : public Core::IOptionsPage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
LocalsAndExpressionsSettingsPage()
|
||||||
{
|
{
|
||||||
setId("Z.Debugger.LocalsAndExpressions");
|
setId("Z.Debugger.LocalsAndExpressions");
|
||||||
//: '&&' will appear as one (one is marking keyboard shortcut)
|
//: '&&' will appear as one (one is marking keyboard shortcut)
|
||||||
setDisplayName(Tr::tr("Locals && Expressions"));
|
setDisplayName(Tr::tr("Locals && Expressions"));
|
||||||
setCategory(DEBUGGER_SETTINGS_CATEGORY);
|
setCategory(DEBUGGER_SETTINGS_CATEGORY);
|
||||||
setWidgetCreator([] { return new LocalsAndExpressionsOptionsPageWidget; });
|
setSettingsProvider([] { return &localsAndExpressionSettings(); });
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const LocalsAndExpressionsSettingsPage localsAndExpressionSettingsPage;
|
||||||
|
|
||||||
} // Debugger::Internal
|
} // Debugger::Internal
|
||||||
|
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <utils/aspects.h>
|
||||||
|
|
||||||
namespace Debugger::Internal {
|
namespace Debugger::Internal {
|
||||||
|
|
||||||
@@ -66,12 +66,30 @@ public:
|
|||||||
|
|
||||||
CommonSettings &commonSettings();
|
CommonSettings &commonSettings();
|
||||||
|
|
||||||
class LocalsAndExpressionsOptionsPage final : public Core::IOptionsPage
|
|
||||||
|
class LocalsAndExpressionsSettings final : public Utils::AspectContainer
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
LocalsAndExpressionsOptionsPage();
|
LocalsAndExpressionsSettings();
|
||||||
|
|
||||||
|
Utils::BoolAspect useDebuggingHelpers{this};
|
||||||
|
Utils::BoolAspect useCodeModel{this};
|
||||||
|
Utils::BoolAspect showThreadNames{this};
|
||||||
|
Utils::FilePathAspect extraDumperFile{this}; // For loading a file. Recommended.
|
||||||
|
Utils::StringAspect extraDumperCommands{this}; // To modify an existing setup.
|
||||||
|
|
||||||
|
Utils::BoolAspect showStdNamespace{this};
|
||||||
|
Utils::BoolAspect showQtNamespace{this};
|
||||||
|
Utils::BoolAspect showQObjectNames{this};
|
||||||
|
|
||||||
|
Utils::IntegerAspect maximalStringLength{this};
|
||||||
|
Utils::IntegerAspect displayStringLimit{this};
|
||||||
|
Utils::IntegerAspect defaultArraySize{this};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
LocalsAndExpressionsSettings &localsAndExpressionSettings();
|
||||||
|
|
||||||
|
|
||||||
} // Debugger::Internal
|
} // Debugger::Internal
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(Debugger::Internal::SourcePathMap)
|
Q_DECLARE_METATYPE(Debugger::Internal::SourcePathMap)
|
||||||
|
@@ -70,7 +70,21 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
breakOnFatal{gdbSettings().breakOnFatal},
|
breakOnFatal{gdbSettings().breakOnFatal},
|
||||||
breakOnAbort{gdbSettings().breakOnAbort},
|
breakOnAbort{gdbSettings().breakOnAbort},
|
||||||
enableReverseDebugging{gdbSettings().enableReverseDebugging},
|
enableReverseDebugging{gdbSettings().enableReverseDebugging},
|
||||||
multiInferior{gdbSettings().multiInferior}
|
multiInferior{gdbSettings().multiInferior},
|
||||||
|
|
||||||
|
// Page 4
|
||||||
|
useDebuggingHelpers{localsAndExpressionSettings().useDebuggingHelpers},
|
||||||
|
useCodeModel{localsAndExpressionSettings().useCodeModel},
|
||||||
|
showThreadNames{localsAndExpressionSettings().showThreadNames},
|
||||||
|
extraDumperFile{localsAndExpressionSettings().extraDumperFile}, // For loading a file. Recommended.
|
||||||
|
extraDumperCommands{localsAndExpressionSettings().extraDumperCommands}, // To modify an existing setup.
|
||||||
|
|
||||||
|
showStdNamespace{localsAndExpressionSettings().showStdNamespace},
|
||||||
|
showQtNamespace{localsAndExpressionSettings().showQtNamespace},
|
||||||
|
showQObjectNames{localsAndExpressionSettings().showQObjectNames},
|
||||||
|
maximalStringLength{localsAndExpressionSettings().maximalStringLength},
|
||||||
|
displayStringLimit{localsAndExpressionSettings().displayStringLimit},
|
||||||
|
defaultArraySize{localsAndExpressionSettings().defaultArraySize}
|
||||||
{
|
{
|
||||||
const QString debugModeGroup("DebugMode");
|
const QString debugModeGroup("DebugMode");
|
||||||
const QString cdbSettingsGroup("CDB2");
|
const QString cdbSettingsGroup("CDB2");
|
||||||
@@ -175,76 +189,16 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Locals & Watchers
|
// Locals & Watchers
|
||||||
//
|
|
||||||
showStdNamespace.setSettingsKey(debugModeGroup, "ShowStandardNamespace");
|
|
||||||
showStdNamespace.setDefaultValue(true);
|
|
||||||
showStdNamespace.setDisplayName(Tr::tr("Show \"std::\" Namespace in Types"));
|
|
||||||
showStdNamespace.setLabelText(Tr::tr("Show \"std::\" namespace in types"));
|
|
||||||
showStdNamespace.setToolTip(
|
|
||||||
"<p>" + Tr::tr("Shows \"std::\" prefix for types from the standard library."));
|
|
||||||
|
|
||||||
showQtNamespace.setSettingsKey(debugModeGroup, "ShowQtNamespace");
|
|
||||||
showQtNamespace.setDefaultValue(true);
|
|
||||||
showQtNamespace.setDisplayName(Tr::tr("Show Qt's Namespace in Types"));
|
|
||||||
showQtNamespace.setLabelText(Tr::tr("Show Qt's namespace in types"));
|
|
||||||
showQtNamespace.setToolTip("<p>"
|
|
||||||
+ Tr::tr("Shows Qt namespace prefix for Qt types. This is only "
|
|
||||||
"relevant if Qt was configured with \"-qtnamespace\"."));
|
|
||||||
|
|
||||||
showQObjectNames.setSettingsKey(debugModeGroup, "ShowQObjectNames2");
|
|
||||||
showQObjectNames.setDefaultValue(true);
|
|
||||||
showQObjectNames.setDisplayName(Tr::tr("Show QObject names if available"));
|
|
||||||
showQObjectNames.setLabelText(Tr::tr("Show QObject names if available"));
|
|
||||||
showQObjectNames.setToolTip(
|
|
||||||
"<p>"
|
|
||||||
+ Tr::tr("Displays the objectName property of QObject based items. "
|
|
||||||
"Note that this can negatively impact debugger performance "
|
|
||||||
"even if no QObjects are present."));
|
|
||||||
|
|
||||||
sortStructMembers.setSettingsKey(debugModeGroup, "SortStructMembers");
|
sortStructMembers.setSettingsKey(debugModeGroup, "SortStructMembers");
|
||||||
sortStructMembers.setDisplayName(Tr::tr("Sort Members of Classes and Structs Alphabetically"));
|
sortStructMembers.setDisplayName(Tr::tr("Sort Members of Classes and Structs Alphabetically"));
|
||||||
sortStructMembers.setLabelText(Tr::tr("Sort members of classes and structs alphabetically"));
|
sortStructMembers.setLabelText(Tr::tr("Sort members of classes and structs alphabetically"));
|
||||||
sortStructMembers.setDefaultValue(true);
|
sortStructMembers.setDefaultValue(true);
|
||||||
|
|
||||||
//
|
|
||||||
// DebuggingHelper
|
|
||||||
//
|
|
||||||
useDebuggingHelpers.setSettingsKey(debugModeGroup, "UseDebuggingHelper");
|
|
||||||
useDebuggingHelpers.setDefaultValue(true);
|
|
||||||
useDebuggingHelpers.setLabelText(Tr::tr("Use Debugging Helpers"));
|
|
||||||
|
|
||||||
useCodeModel.setSettingsKey(debugModeGroup, "UseCodeModel");
|
|
||||||
useCodeModel.setDefaultValue(true);
|
|
||||||
useCodeModel.setLabelText(Tr::tr("Use code model"));
|
|
||||||
useCodeModel.setToolTip(
|
|
||||||
"<p>"
|
|
||||||
+ Tr::tr("Selecting this causes the C++ Code Model being asked "
|
|
||||||
"for variable scope information. This might result in slightly faster "
|
|
||||||
"debugger operation but may fail for optimized code."));
|
|
||||||
|
|
||||||
showThreadNames.setSettingsKey(debugModeGroup, "ShowThreadNames");
|
|
||||||
showThreadNames.setLabelText(Tr::tr("Display thread names"));
|
|
||||||
showThreadNames.setToolTip("<p>" + Tr::tr("Displays names of QThread based threads."));
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Breakpoints
|
// Breakpoints
|
||||||
//
|
//
|
||||||
synchronizeBreakpoints.setLabelText(Tr::tr("Synchronize Breakpoints"));
|
synchronizeBreakpoints.setLabelText(Tr::tr("Synchronize Breakpoints"));
|
||||||
|
|
||||||
extraDumperCommands.setSettingsKey(debugModeGroup, "GdbCustomDumperCommands");
|
|
||||||
extraDumperCommands.setDisplayStyle(StringAspect::TextEditDisplay);
|
|
||||||
extraDumperCommands.setUseGlobalMacroExpander();
|
|
||||||
extraDumperCommands.setToolTip("<html><head/><body><p>"
|
|
||||||
+ Tr::tr("Python commands entered here will be executed after built-in "
|
|
||||||
"debugging helpers have been loaded and fully initialized. You can "
|
|
||||||
"load additional debugging helpers or modify existing ones here.")
|
|
||||||
+ "</p></body></html>");
|
|
||||||
|
|
||||||
extraDumperFile.setSettingsKey(debugModeGroup, "ExtraDumperFile");
|
|
||||||
extraDumperFile.setDisplayName(Tr::tr("Extra Debugging Helpers"));
|
|
||||||
// Label text is intentional empty in the GUI.
|
|
||||||
extraDumperFile.setToolTip(Tr::tr("Path to a Python file containing additional data dumpers."));
|
|
||||||
|
|
||||||
autoQuit.setSettingsKey(debugModeGroup, "AutoQuit");
|
autoQuit.setSettingsKey(debugModeGroup, "AutoQuit");
|
||||||
autoQuit.setLabelText(Tr::tr("Automatically Quit Debugger"));
|
autoQuit.setLabelText(Tr::tr("Automatically Quit Debugger"));
|
||||||
|
|
||||||
@@ -277,38 +231,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
selectedPluginBreakpointsPattern.setSettingsKey(debugModeGroup, "SelectedPluginBreakpointsPattern");
|
selectedPluginBreakpointsPattern.setSettingsKey(debugModeGroup, "SelectedPluginBreakpointsPattern");
|
||||||
selectedPluginBreakpointsPattern.setDefaultValue(QString(".*"));
|
selectedPluginBreakpointsPattern.setDefaultValue(QString(".*"));
|
||||||
|
|
||||||
displayStringLimit.setSettingsKey(debugModeGroup, "DisplayStringLimit");
|
|
||||||
displayStringLimit.setDefaultValue(300);
|
|
||||||
displayStringLimit.setSpecialValueText(Tr::tr("<unlimited>"));
|
|
||||||
displayStringLimit.setRange(20, 10000);
|
|
||||||
displayStringLimit.setSingleStep(10);
|
|
||||||
displayStringLimit.setLabelText(Tr::tr("Display string length:"));
|
|
||||||
displayStringLimit.setToolTip(
|
|
||||||
"<p>"
|
|
||||||
+ Tr::tr("The maximum length of string entries in the "
|
|
||||||
"Locals and Expressions views. Longer than that are cut off "
|
|
||||||
"and displayed with an ellipsis attached."));
|
|
||||||
|
|
||||||
maximalStringLength.setSettingsKey(debugModeGroup, "MaximalStringLength");
|
|
||||||
maximalStringLength.setDefaultValue(10000);
|
|
||||||
maximalStringLength.setSpecialValueText(Tr::tr("<unlimited>"));
|
|
||||||
maximalStringLength.setRange(20, 10000000);
|
|
||||||
maximalStringLength.setSingleStep(20);
|
|
||||||
maximalStringLength.setLabelText(Tr::tr("Maximum string length:"));
|
|
||||||
maximalStringLength.setToolTip(
|
|
||||||
"<p>"
|
|
||||||
+ Tr::tr("The maximum length for strings in separated windows. "
|
|
||||||
"Longer strings are cut off and displayed with an ellipsis attached."));
|
|
||||||
|
|
||||||
defaultArraySize.setSettingsKey(debugModeGroup, "DefaultArraySize");
|
|
||||||
defaultArraySize.setDefaultValue(100);
|
|
||||||
defaultArraySize.setRange(10, 1000000000);
|
|
||||||
defaultArraySize.setSingleStep(100);
|
|
||||||
defaultArraySize.setLabelText(Tr::tr("Default array size:"));
|
|
||||||
defaultArraySize.setToolTip("<p>"
|
|
||||||
+ Tr::tr("The number of array elements requested when expanding "
|
|
||||||
"entries in the Locals and Expressions views."));
|
|
||||||
|
|
||||||
expandStack.setLabelText(Tr::tr("Reload Full Stack"));
|
expandStack.setLabelText(Tr::tr("Reload Full Stack"));
|
||||||
|
|
||||||
createFullBacktrace.setLabelText(Tr::tr("Create Full Backtrace"));
|
createFullBacktrace.setLabelText(Tr::tr("Create Full Backtrace"));
|
||||||
@@ -319,18 +241,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
const QString qmlInspectorGroup = "QML.Inspector";
|
const QString qmlInspectorGroup = "QML.Inspector";
|
||||||
showAppOnTop.setSettingsKey(qmlInspectorGroup, "QmlInspector.ShowAppOnTop");
|
showAppOnTop.setSettingsKey(qmlInspectorGroup, "QmlInspector.ShowAppOnTop");
|
||||||
|
|
||||||
// Page 4
|
|
||||||
page4.registerAspect(&useDebuggingHelpers);
|
|
||||||
page4.registerAspect(&useCodeModel);
|
|
||||||
page4.registerAspect(&showThreadNames);
|
|
||||||
page4.registerAspect(&showStdNamespace);
|
|
||||||
page4.registerAspect(&showQtNamespace);
|
|
||||||
page4.registerAspect(&extraDumperFile);
|
|
||||||
page4.registerAspect(&extraDumperCommands);
|
|
||||||
page4.registerAspect(&showQObjectNames);
|
|
||||||
page4.registerAspect(&displayStringLimit);
|
|
||||||
page4.registerAspect(&maximalStringLength);
|
|
||||||
page4.registerAspect(&defaultArraySize);
|
|
||||||
|
|
||||||
// Page 5
|
// Page 5
|
||||||
page5.registerAspect(&cdbAdditionalArguments);
|
page5.registerAspect(&cdbAdditionalArguments);
|
||||||
@@ -357,7 +267,6 @@ DebuggerSettings::DebuggerSettings() :
|
|||||||
all.registerAspect(&sortStructMembers);
|
all.registerAspect(&sortStructMembers);
|
||||||
|
|
||||||
// Collect all
|
// Collect all
|
||||||
all.registerAspects(page4);
|
|
||||||
all.registerAspects(page5);
|
all.registerAspects(page5);
|
||||||
all.registerAspects(page6);
|
all.registerAspects(page6);
|
||||||
|
|
||||||
|
@@ -62,15 +62,19 @@ public:
|
|||||||
Utils::BoolAspect &multiInferior;
|
Utils::BoolAspect &multiInferior;
|
||||||
|
|
||||||
// Page 4: Locals and expressions
|
// Page 4: Locals and expressions
|
||||||
Utils::BoolAspect useDebuggingHelpers;
|
Utils::BoolAspect &useDebuggingHelpers;
|
||||||
Utils::BoolAspect useCodeModel;
|
Utils::BoolAspect &useCodeModel;
|
||||||
Utils::BoolAspect showThreadNames;
|
Utils::BoolAspect &showThreadNames;
|
||||||
Utils::FilePathAspect extraDumperFile; // For loading a file. Recommended.
|
Utils::FilePathAspect &extraDumperFile; // For loading a file. Recommended.
|
||||||
Utils::StringAspect extraDumperCommands; // To modify an existing setup.
|
Utils::StringAspect &extraDumperCommands; // To modify an existing setup.
|
||||||
|
|
||||||
Utils::BoolAspect showStdNamespace;
|
Utils::BoolAspect &showStdNamespace;
|
||||||
Utils::BoolAspect showQtNamespace;
|
Utils::BoolAspect &showQtNamespace;
|
||||||
Utils::BoolAspect showQObjectNames;
|
Utils::BoolAspect &showQObjectNames;
|
||||||
|
|
||||||
|
Utils::IntegerAspect &maximalStringLength;
|
||||||
|
Utils::IntegerAspect &displayStringLimit;
|
||||||
|
Utils::IntegerAspect &defaultArraySize;
|
||||||
|
|
||||||
// Page 5: CDB
|
// Page 5: CDB
|
||||||
Utils::StringAspect cdbAdditionalArguments;
|
Utils::StringAspect cdbAdditionalArguments;
|
||||||
@@ -101,9 +105,6 @@ public:
|
|||||||
|
|
||||||
// Watchers & Locals
|
// Watchers & Locals
|
||||||
Utils::BoolAspect autoDerefPointers;
|
Utils::BoolAspect autoDerefPointers;
|
||||||
Utils::IntegerAspect maximalStringLength;
|
|
||||||
Utils::IntegerAspect displayStringLimit;
|
|
||||||
Utils::IntegerAspect defaultArraySize;
|
|
||||||
Utils::BoolAspect sortStructMembers;
|
Utils::BoolAspect sortStructMembers;
|
||||||
Utils::BoolAspect useToolTipsInLocalsView;
|
Utils::BoolAspect useToolTipsInLocalsView;
|
||||||
|
|
||||||
@@ -119,7 +120,6 @@ public:
|
|||||||
Utils::BoolAspect showAppOnTop;
|
Utils::BoolAspect showAppOnTop;
|
||||||
|
|
||||||
Utils::AspectContainer all; // All
|
Utils::AspectContainer all; // All
|
||||||
Utils::AspectContainer page4; // Locals & Expressions
|
|
||||||
Utils::AspectContainer page5; // CDB
|
Utils::AspectContainer page5; // CDB
|
||||||
Utils::AspectContainer page6; // CDB Paths
|
Utils::AspectContainer page6; // CDB Paths
|
||||||
|
|
||||||
|
@@ -1122,7 +1122,6 @@ DebuggerPluginPrivate::DebuggerPluginPrivate(const QStringList &arguments)
|
|||||||
// QTC_CHECK(false);
|
// QTC_CHECK(false);
|
||||||
// });
|
// });
|
||||||
|
|
||||||
m_optionPages.append(new LocalsAndExpressionsOptionsPage);
|
|
||||||
addCdbOptionPages(&m_optionPages);
|
addCdbOptionPages(&m_optionPages);
|
||||||
|
|
||||||
connect(ModeManager::instance(), &ModeManager::currentModeAboutToChange, this, [] {
|
connect(ModeManager::instance(), &ModeManager::currentModeAboutToChange, this, [] {
|
||||||
|
Reference in New Issue
Block a user