// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "commonoptionspage.h"
#include "debuggeractions.h"
#include "debuggerinternalconstants.h"
#include "debuggertr.h"
#include
#include
using namespace Core;
using namespace Debugger::Constants;
using namespace Utils;
namespace Debugger::Internal {
///////////////////////////////////////////////////////////////////////
//
// CommonOptionsPage
//
///////////////////////////////////////////////////////////////////////
class CommonOptionsPageWidget : public Core::IOptionsPageWidget
{
public:
explicit CommonOptionsPageWidget()
{
DebuggerSettings &s = *debuggerSettings();
setOnApply([&s] {
const bool originalPostMortem = s.registerForPostMortem->value();
const bool currentPostMortem = s.registerForPostMortem->volatileValue().toBool();
// explicitly trigger setValue() to override the setValueSilently() and trigger the registration
if (originalPostMortem != currentPostMortem)
s.registerForPostMortem->setValue(currentPostMortem);
s.page1.apply();
s.page1.writeSettings(ICore::settings());
});
setOnFinish([&s] { s.page1.finish(); });
using namespace Layouting;
Column col1 {
s.useAlternatingRowColors,
s.useAnnotationsInMainEditor,
s.useToolTipsInMainEditor,
s.closeSourceBuffersOnExit,
s.closeMemoryBuffersOnExit,
s.raiseOnInterrupt,
s.breakpointsFullPathByDefault,
s.warnOnReleaseBuilds,
Row { s.maximalStackDepth, st }
};
Column col2 {
s.fontSizeFollowsEditor,
s.switchModeOnExit,
s.showQmlObjectTree,
s.stationaryEditorWhileStepping,
s.forceLoggingToConsole,
s.registerForPostMortem,
st
};
Column {
Group { title("Behavior"), Row { col1, col2, st } },
s.sourcePathMap,
st
}.attachTo(this);
}
};
CommonOptionsPage::CommonOptionsPage()
{
setId(DEBUGGER_COMMON_SETTINGS_ID);
setDisplayName(Tr::tr("General"));
setCategory(DEBUGGER_SETTINGS_CATEGORY);
setDisplayCategory(Tr::tr("Debugger"));
setCategoryIconPath(":/debugger/images/settingscategory_debugger.png");
setWidgetCreator([] { return new CommonOptionsPageWidget; });
}
QString CommonOptionsPage::msgSetBreakpointAtFunction(const char *function)
{
return Tr::tr("Stop when %1() is called").arg(QLatin1String(function));
}
QString CommonOptionsPage::msgSetBreakpointAtFunctionToolTip(const char *function,
const QString &hint)
{
QString result = "";
result += Tr::tr("Always adds a breakpoint on the %1() function.")
.arg(QLatin1String(function));
if (!hint.isEmpty()) {
result += "
";
result += hint;
}
result += "";
return result;
}
///////////////////////////////////////////////////////////////////////
//
// LocalsAndExpressionsOptionsPage
//
///////////////////////////////////////////////////////////////////////
class LocalsAndExpressionsOptionsPageWidget : public IOptionsPageWidget
{
public:
LocalsAndExpressionsOptionsPageWidget()
{
DebuggerSettings &s = *debuggerSettings();
setOnApply([&s] { s.page4.apply(); s.page4.writeSettings(ICore::settings()); });
setOnFinish([&s] { s.page4.finish(); });
auto label = new QLabel; //(useHelperGroup);
label->setTextFormat(Qt::AutoText);
label->setWordWrap(true);
label->setText("
\n"
+ Tr::tr("The debugging helpers are used to produce a nice "
"display of objects of certain types like QString or "
"std::map in the "Locals" and "Expressions" views.")
+ "
");
using namespace Layouting;
Column left {
label,
s.useCodeModel,
s.showThreadNames,
Group { title(Tr::tr("Extra Debugging Helper")), Column { s.extraDumperFile } }
};
Group useHelper {
Row {
left,
Group {
title(Tr::tr("Debugging Helper Customization")),
Column { s.extraDumperCommands }
}
}
};
Grid limits {
s.maximalStringLength, br,
s.displayStringLimit, br,
s.defaultArraySize
};
Column {
s.useDebuggingHelpers,
useHelper,
Space(10),
s.showStdNamespace,
s.showQtNamespace,
s.showQObjectNames,
Space(10),
Row { limits, st },
st
}.attachTo(this);
}
};
LocalsAndExpressionsOptionsPage::LocalsAndExpressionsOptionsPage()
{
setId("Z.Debugger.LocalsAndExpressions");
//: '&&' will appear as one (one is marking keyboard shortcut)
setDisplayName(Tr::tr("Locals && Expressions"));
setCategory(DEBUGGER_SETTINGS_CATEGORY);
setWidgetCreator([] { return new LocalsAndExpressionsOptionsPageWidget; });
}
} // Debugger::Internal