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()
|
bool MesonBuildSystem::parseProject()
|
||||||
{
|
{
|
||||||
QTC_ASSERT(buildConfiguration(), return false);
|
QTC_ASSERT(buildConfiguration(), return false);
|
||||||
if (!isSetup(buildConfiguration()->buildDirectory()) && Settings::instance()->autorunMeson.value())
|
if (!isSetup(buildConfiguration()->buildDirectory()) && settings().autorunMeson())
|
||||||
return configure();
|
return configure();
|
||||||
LEAVE_IF_BUSY();
|
LEAVE_IF_BUSY();
|
||||||
LOCK();
|
LOCK();
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ const char PARAMETERS_KEY[] = "MesonProjectManager.BuildConfig.Parameters";
|
|||||||
|
|
||||||
// Settings page
|
// Settings page
|
||||||
namespace SettingsPage {
|
namespace SettingsPage {
|
||||||
const char GENERAL_ID[] = "A.MesonProjectManager.SettingsPage.General";
|
|
||||||
const char TOOLS_ID[] = "Z.MesonProjectManager.SettingsPage.Tools";
|
const char TOOLS_ID[] = "Z.MesonProjectManager.SettingsPage.Tools";
|
||||||
const char CATEGORY[] = "Z.Meson";
|
const char CATEGORY[] = "Z.Meson";
|
||||||
} // namespace SettingsPage
|
} // namespace SettingsPage
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ public:
|
|||||||
~MesonProjectPluginPrivate() {}
|
~MesonProjectPluginPrivate() {}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GeneralSettingsPage m_generalSettingsPage;
|
Settings m_settings;
|
||||||
ToolsSettingsPage m_toolslSettingsPage;
|
ToolsSettingsPage m_toolslSettingsPage;
|
||||||
ToolsSettingsAccessor m_toolsSettings;
|
ToolsSettingsAccessor m_toolsSettings;
|
||||||
MesonToolKitAspect m_mesonKitAspect;
|
MesonToolKitAspect m_mesonKitAspect;
|
||||||
@@ -60,7 +60,6 @@ private:
|
|||||||
void saveAll()
|
void saveAll()
|
||||||
{
|
{
|
||||||
m_toolsSettings.saveMesonTools(MesonTools::tools(), ICore::dialogParent());
|
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);
|
ProjectManager::registerProjectType<MesonProject>(Constants::Project::MIMETYPE);
|
||||||
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build");
|
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson.build");
|
||||||
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt");
|
FileIconProvider::registerIconOverlayForFilename(Constants::Icons::MESON, "meson_options.txt");
|
||||||
Settings::instance()->readSettings(ICore::settings());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // MesonProjectManager::Internal
|
} // MesonProjectManager::Internal
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ NinjaBuildStep::NinjaBuildStep(BuildStepList *bsl, Id id)
|
|||||||
setUseEnglishOutput();
|
setUseEnglishOutput();
|
||||||
|
|
||||||
connect(target(), &ProjectExplorer::Target::parsingFinished, this, &NinjaBuildStep::update);
|
connect(target(), &ProjectExplorer::Target::parsingFinished, this, &NinjaBuildStep::update);
|
||||||
connect(&Settings::instance()->verboseNinja, &BaseAspect::changed,
|
connect(&settings().verboseNinja, &BaseAspect::changed,
|
||||||
this, &NinjaBuildStep::commandChanged);
|
this, &NinjaBuildStep::commandChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,17 +119,15 @@ QWidget *NinjaBuildStep::createConfigWidget()
|
|||||||
// --verbose is only supported since
|
// --verbose is only supported since
|
||||||
// https://github.com/ninja-build/ninja/commit/bf7517505ad1def03e13bec2b4131399331bc5c4
|
// https://github.com/ninja-build/ninja/commit/bf7517505ad1def03e13bec2b4131399331bc5c4
|
||||||
// TODO check when to switch back to --verbose
|
// TODO check when to switch back to --verbose
|
||||||
Utils::CommandLine NinjaBuildStep::command()
|
CommandLine NinjaBuildStep::command()
|
||||||
{
|
{
|
||||||
Utils::CommandLine cmd = [this] {
|
CommandLine cmd;
|
||||||
auto tool = NinjaToolKitAspect::ninjaTool(kit());
|
if (auto tool = NinjaToolKitAspect::ninjaTool(kit()))
|
||||||
if (tool)
|
cmd.setExecutable(tool->exe());
|
||||||
return Utils::CommandLine{tool->exe()};
|
|
||||||
return Utils::CommandLine{};
|
|
||||||
}();
|
|
||||||
if (!m_commandArgs.isEmpty())
|
if (!m_commandArgs.isEmpty())
|
||||||
cmd.addArgs(m_commandArgs, Utils::CommandLine::RawType::Raw);
|
cmd.addArgs(m_commandArgs, CommandLine::RawType::Raw);
|
||||||
if (Settings::instance()->verboseNinja.value())
|
if (settings().verboseNinja())
|
||||||
cmd.addArg("-v");
|
cmd.addArg("-v");
|
||||||
cmd.addArg(m_targetName);
|
cmd.addArg(m_targetName);
|
||||||
return cmd;
|
return cmd;
|
||||||
|
|||||||
@@ -8,13 +8,26 @@
|
|||||||
|
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
namespace MesonProjectManager {
|
namespace MesonProjectManager::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
static Settings *s_instance;
|
||||||
|
|
||||||
|
Settings &settings()
|
||||||
|
{
|
||||||
|
return *s_instance;
|
||||||
|
}
|
||||||
|
|
||||||
Settings::Settings()
|
Settings::Settings()
|
||||||
{
|
{
|
||||||
|
s_instance = this;
|
||||||
|
|
||||||
setSettingsGroup("MesonProjectManager");
|
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.setSettingsKey("meson.autorun");
|
||||||
autorunMeson.setLabelText(Tr::tr("Autorun Meson"));
|
autorunMeson.setLabelText(Tr::tr("Autorun Meson"));
|
||||||
@@ -24,36 +37,16 @@ Settings::Settings()
|
|||||||
verboseNinja.setLabelText(Tr::tr("Ninja verbose mode"));
|
verboseNinja.setLabelText(Tr::tr("Ninja verbose mode"));
|
||||||
verboseNinja.setToolTip(Tr::tr("Enables verbose mode by default when invoking Ninja."));
|
verboseNinja.setToolTip(Tr::tr("Enables verbose mode by default when invoking Ninja."));
|
||||||
|
|
||||||
registerAspect(&autorunMeson);
|
setLayouter([this] {
|
||||||
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();
|
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
|
return Column {
|
||||||
Column {
|
autorunMeson,
|
||||||
s.autorunMeson,
|
verboseNinja,
|
||||||
s.verboseNinja,
|
|
||||||
st,
|
st,
|
||||||
}.attachTo(widget);
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
readSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace Internal
|
} // MesonProjectManager::Internal
|
||||||
} // namespace MesonProjectManager
|
|
||||||
|
|||||||
@@ -7,25 +7,17 @@
|
|||||||
|
|
||||||
#include <utils/aspects.h>
|
#include <utils/aspects.h>
|
||||||
|
|
||||||
namespace MesonProjectManager {
|
namespace MesonProjectManager::Internal {
|
||||||
namespace Internal {
|
|
||||||
|
|
||||||
class Settings : public Utils::AspectContainer
|
class Settings : public Core::PagedSettings
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Settings();
|
Settings();
|
||||||
|
|
||||||
static Settings *instance();
|
Utils::BoolAspect autorunMeson{this};
|
||||||
|
Utils::BoolAspect verboseNinja{this};
|
||||||
Utils::BoolAspect autorunMeson;
|
|
||||||
Utils::BoolAspect verboseNinja;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class GeneralSettingsPage final : public Core::IOptionsPage
|
Settings &settings();
|
||||||
{
|
|
||||||
public:
|
|
||||||
GeneralSettingsPage();
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace Internal
|
} // MesonProjectManager::Internal
|
||||||
} // namespace MesonProjectManager
|
|
||||||
|
|||||||
Reference in New Issue
Block a user