Meson: Simplify settings setup a bit

Also some surrounding code.

Change-Id: I9f537a4357ab76295b7cb4f6a69749a0a6b55392
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2023-05-26 11:19:53 +02:00
parent 78eb97fb54
commit c2fcd17e91
6 changed files with 40 additions and 60 deletions

View File

@@ -192,7 +192,7 @@ void MesonBuildSystem::init()
bool MesonBuildSystem::parseProject()
{
QTC_ASSERT(buildConfiguration(), return false);
if (!isSetup(buildConfiguration()->buildDirectory()) && Settings::instance()->autorunMeson.value())
if (!isSetup(buildConfiguration()->buildDirectory()) && settings().autorunMeson())
return configure();
LEAVE_IF_BUSY();
LOCK();

View File

@@ -18,7 +18,6 @@ const char PARAMETERS_KEY[] = "MesonProjectManager.BuildConfig.Parameters";
// Settings page
namespace SettingsPage {
const char GENERAL_ID[] = "A.MesonProjectManager.SettingsPage.General";
const char TOOLS_ID[] = "Z.MesonProjectManager.SettingsPage.Tools";
const char CATEGORY[] = "Z.Meson";
} // namespace SettingsPage

View File

@@ -45,7 +45,7 @@ public:
~MesonProjectPluginPrivate() {}
private:
GeneralSettingsPage m_generalSettingsPage;
Settings m_settings;
ToolsSettingsPage m_toolslSettingsPage;
ToolsSettingsAccessor m_toolsSettings;
MesonToolKitAspect m_mesonKitAspect;
@@ -60,7 +60,6 @@ private:
void saveAll()
{
m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent());
Settings::instance()->writeSettings(ICore::settings());
}
};
@@ -76,7 +75,6 @@ void MesonProjectPlugin::initialize()
ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE);
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build");
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt");
Settings::instance()->readSettings(ICore::settings());
}
} // MesonProjectManager::Internal

View File

@@ -44,7 +44,7 @@ NinjaBuildStep::NinjaBuildStep(BuildStepList *bsl, Id id)
setUseEnglishOutput();
connect(target(), &ProjectExplorer::Target::parsingFinished, this, &NinjaBuildStep::update);
connect(&Settings::instance()->verboseNinja, &BaseAspect::changed,
connect(&settings().verboseNinja, &BaseAspect::changed,
this, &NinjaBuildStep::commandChanged);
}
@@ -119,17 +119,15 @@ QWidget *NinjaBuildStep::createConfigWidget()
// --verbose is only supported since
// https://github.com/ninja-build/ninja/commit/bf7517505ad1def03e13bec2b4131399331bc5c4
// TODO check when to switch back to --verbose
Utils::CommandLine NinjaBuildStep::command()
CommandLine NinjaBuildStep::command()
{
Utils::CommandLine cmd = [this] {
auto tool = NinjaToolKitAspect::ninjaTool(kit());
if (tool)
return Utils::CommandLine{tool->exe()};
return Utils::CommandLine{};
}();
CommandLine cmd;
if (auto tool = NinjaToolKitAspect::ninjaTool(kit()))
cmd.setExecutable(tool->exe());
if (!m_commandArgs.isEmpty())
cmd.addArgs(m_commandArgs, Utils::CommandLine::RawType::Raw);
if (Settings::instance()->verboseNinja.value())
cmd.addArgs(m_commandArgs, CommandLine::RawType::Raw);
if (settings().verboseNinja())
cmd.addArg("-v");
cmd.addArg(m_targetName);
return cmd;

View File

@@ -8,13 +8,26 @@
#include <utils/layoutbuilder.h>
namespace MesonProjectManager {
namespace Internal {
namespace MesonProjectManager::Internal {
static Settings *s_instance;
Settings &settings()
{
return *s_instance;
}
Settings::Settings()
{
s_instance = this;
setSettingsGroup("MesonProjectManager");
setAutoApply(false);
setId("A.MesonProjectManager.SettingsPage.General");
setDisplayName(Tr::tr("General"));
setDisplayCategory("Meson");
setCategory(Constants::SettingsPage::CATEGORY);
setCategoryIconPath(Constants::Icons::MESON_BW);
autorunMeson.setSettingsKey("meson.autorun");
autorunMeson.setLabelText(Tr::tr("Autorun Meson"));
@@ -24,36 +37,16 @@ Settings::Settings()
verboseNinja.setLabelText(Tr::tr("Ninja verbose mode"));
verboseNinja.setToolTip(Tr::tr("Enables verbose mode by default when invoking Ninja."));
registerAspect(&autorunMeson);
registerAspect(&verboseNinja);
}
Settings *Settings::instance()
{
static Settings m_settings;
return &m_settings;
}
GeneralSettingsPage::GeneralSettingsPage()
{
setId(Constants::SettingsPage::GENERAL_ID);
setDisplayName(Tr::tr("General"));
setDisplayCategory("Meson");
setCategory(Constants::SettingsPage::CATEGORY);
setCategoryIconPath(Constants::Icons::MESON_BW);
setSettings(Settings::instance());
setLayouter([](QWidget *widget) {
Settings &s = *Settings::instance();
setLayouter([this] {
using namespace Layouting;
Column {
s.autorunMeson,
s.verboseNinja,
return Column {
autorunMeson,
verboseNinja,
st,
}.attachTo(widget);
};
});
readSettings();
}
} // namespace Internal
} // namespace MesonProjectManager
} // MesonProjectManager::Internal

View File

@@ -7,25 +7,17 @@
#include <utils/aspects.h>
namespace MesonProjectManager {
namespace Internal {
namespace MesonProjectManager::Internal {
class Settings : public Utils::AspectContainer
class Settings : public Core::PagedSettings
{
public:
Settings();
static Settings *instance();
Utils::BoolAspect autorunMeson;
Utils::BoolAspect verboseNinja;
Utils::BoolAspect autorunMeson{this};
Utils::BoolAspect verboseNinja{this};
};
class GeneralSettingsPage final : public Core::IOptionsPage
{
public:
GeneralSettingsPage();
};
Settings &settings();
} // namespace Internal
} // namespace MesonProjectManager
} // MesonProjectManager::Internal