forked from qt-creator/qt-creator
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:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user