From abd538507ac943e478fec1e23549aa5e986dacb5 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 2 Feb 2024 11:16:21 +0100 Subject: ProjectExplorer: Make settings access more direct A step towards aspectification. Change-Id: Iabf5e56e993449dc482d1d2ab6eeb2885243ab3e Reviewed-by: Christian Kandeler --- .../projectexplorer/abstractprocessstep.cpp | 2 +- src/plugins/projectexplorer/appoutputpane.cpp | 6 +- src/plugins/projectexplorer/buildaspects.cpp | 2 +- src/plugins/projectexplorer/buildmanager.cpp | 20 +- src/plugins/projectexplorer/environmentaspect.cpp | 4 +- src/plugins/projectexplorer/msvctoolchain.cpp | 2 +- src/plugins/projectexplorer/projectexplorer.cpp | 170 +---------- src/plugins/projectexplorer/projectexplorer.h | 4 - .../projectexplorer/projectexplorersettings.cpp | 316 ++++++++++++++++++--- .../projectexplorer/projectexplorersettings.h | 34 +-- .../projectexplorer/runconfigurationaspects.cpp | 4 +- src/plugins/projectexplorer/target.cpp | 2 +- src/plugins/projectexplorer/userfileaccessor.cpp | 10 +- 13 files changed, 310 insertions(+), 266 deletions(-) (limited to 'src/plugins/projectexplorer') diff --git a/src/plugins/projectexplorer/abstractprocessstep.cpp b/src/plugins/projectexplorer/abstractprocessstep.cpp index 5cfb66e811..fcdfdc6b63 100644 --- a/src/plugins/projectexplorer/abstractprocessstep.cpp +++ b/src/plugins/projectexplorer/abstractprocessstep.cpp @@ -189,7 +189,7 @@ bool AbstractProcessStep::setupProcess(Process &process) process.setEnvironment(envWithPwd); process.setCommand({d->m_param.effectiveCommand(), d->m_param.effectiveArguments(), CommandLine::Raw}); - if (d->m_lowPriority && ProjectExplorerPlugin::projectExplorerSettings().lowBuildPriority) + if (d->m_lowPriority && projectExplorerSettings().lowBuildPriority) process.setLowPriority(); process.setStdOutCodec(buildEnvironment().hasKey("VSLANG") diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index 94e2694acc..742e6df5e4 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -661,10 +661,10 @@ void AppOutputPane::closeTab(int tabIndex, CloseTabMode closeTabMode) bool AppOutputPane::optionallyPromptToStop(RunControl *runControl) { - ProjectExplorerSettings settings = ProjectExplorerPlugin::projectExplorerSettings(); - if (!runControl->promptToStop(&settings.prompToStopRunControl)) + bool promptToStop = projectExplorerSettings().prompToStopRunControl; + if (!runControl->promptToStop(&promptToStop)) return false; - ProjectExplorerPlugin::setProjectExplorerSettings(settings); + setPromptToStopSettings(promptToStop); return true; } diff --git a/src/plugins/projectexplorer/buildaspects.cpp b/src/plugins/projectexplorer/buildaspects.cpp index 0f9c025fce..3872b7824a 100644 --- a/src/plugins/projectexplorer/buildaspects.cpp +++ b/src/plugins/projectexplorer/buildaspects.cpp @@ -190,7 +190,7 @@ QString BuildDirectoryAspect::updateProblemLabelsHelper(const QString &value) QString genericProblem; QString genericProblemLabelString; - if (ProjectExplorerPlugin::projectExplorerSettings().warnAgainstNonAsciiBuildDir) { + if (projectExplorerSettings().warnAgainstNonAsciiBuildDir) { const auto isInvalid = [](QChar c) { return c.isSpace() || !isascii(c.toLatin1()); }; if (const auto invalidChar = Utils::findOr(value, std::nullopt, isInvalid)) { genericProblem = Tr::tr( diff --git a/src/plugins/projectexplorer/buildmanager.cpp b/src/plugins/projectexplorer/buildmanager.cpp index 1a32d340f2..b65aa609f4 100644 --- a/src/plugins/projectexplorer/buildmanager.cpp +++ b/src/plugins/projectexplorer/buildmanager.cpp @@ -209,10 +209,10 @@ static int queue(const QList &projects, const QList &stepIds, if (!ProjectExplorerPlugin::saveModifiedFiles()) return -1; - const ProjectExplorerSettings &settings = ProjectExplorerPlugin::projectExplorerSettings(); - if (settings.stopBeforeBuild != StopBeforeBuild::None + const StopBeforeBuild stopBeforeBuild = projectExplorerSettings().stopBeforeBuild; + if (stopBeforeBuild != StopBeforeBuild::None && stepIds.contains(Constants::BUILDSTEPS_BUILD)) { - StopBeforeBuild stopCondition = settings.stopBeforeBuild; + StopBeforeBuild stopCondition = stopBeforeBuild; if (stopCondition == StopBeforeBuild::SameApp && !forRunConfig) stopCondition = StopBeforeBuild::SameBuildDir; const auto isStoppableRc = [&projects, stopCondition, configSelection, forRunConfig, @@ -258,7 +258,7 @@ static int queue(const QList &projects, const QList &stepIds, if (!toStop.isEmpty()) { bool stopThem = true; - if (settings.prompToStopRunControl) { + if (projectExplorerSettings().prompToStopRunControl) { QStringList names = Utils::transform(toStop, &RunControl::displayName); if (QMessageBox::question(ICore::dialogParent(), Tr::tr("Stop Applications"), @@ -516,7 +516,7 @@ void BuildManager::rebuildProjects(const QList &projects, void BuildManager::deployProjects(const QList &projects) { QList steps; - if (ProjectExplorerPlugin::projectExplorerSettings().buildBeforeDeploy != BuildBeforeRunMode::Off) + if (projectExplorerSettings().buildBeforeDeploy != BuildBeforeRunMode::Off) steps << Id(Constants::BUILDSTEPS_BUILD); steps << Id(Constants::BUILDSTEPS_DEPLOY); queue(projects, steps, ConfigSelection::Active); @@ -525,10 +525,9 @@ void BuildManager::deployProjects(const QList &projects) BuildForRunConfigStatus BuildManager::potentiallyBuildForRunConfig(RunConfiguration *rc) { QList stepIds; - const ProjectExplorerSettings &settings = ProjectExplorerPlugin::projectExplorerSettings(); - if (settings.deployBeforeRun) { + if (projectExplorerSettings().deployBeforeRun) { if (!isBuilding()) { - switch (settings.buildBeforeDeploy) { + switch (projectExplorerSettings().buildBeforeDeploy) { case BuildBeforeRunMode::AppOnly: if (rc->target()->activeBuildConfiguration()) rc->target()->activeBuildConfiguration()->restrictNextBuild(rc); @@ -721,8 +720,7 @@ void BuildManager::startBuildQueue() }; const GroupItem abortPolicy - = ProjectExplorerPlugin::projectExplorerSettings().abortBuildAllOnError - ? stopOnError : continueOnError; + = projectExplorerSettings().abortBuildAllOnError ? stopOnError : continueOnError; QList topLevel { abortPolicy, ParserAwaiterTask(onAwaiterSetup) }; Project *lastProject = nullptr; @@ -856,7 +854,7 @@ bool BuildManager::buildQueueAppend(const QList &items, const QString { if (!d->m_taskTreeRunner.isRunning()) { d->m_outputWindow->clearContents(); - if (ProjectExplorerPlugin::projectExplorerSettings().clearIssuesOnRebuild) { + if (projectExplorerSettings().clearIssuesOnRebuild) { TaskHub::clearTasks(Constants::TASK_CATEGORY_COMPILE); TaskHub::clearTasks(Constants::TASK_CATEGORY_BUILDSYSTEM); TaskHub::clearTasks(Constants::TASK_CATEGORY_DEPLOYMENT); diff --git a/src/plugins/projectexplorer/environmentaspect.cpp b/src/plugins/projectexplorer/environmentaspect.cpp index af4d8449d1..fb5aaa2c24 100644 --- a/src/plugins/projectexplorer/environmentaspect.cpp +++ b/src/plugins/projectexplorer/environmentaspect.cpp @@ -31,9 +31,7 @@ EnvironmentAspect::EnvironmentAspect(AspectContainer *container) setConfigWidgetCreator([this] { return new EnvironmentAspectWidget(this); }); addDataExtractor(this, &EnvironmentAspect::environment, &Data::environment); if (qobject_cast(container)) { - addModifier([](Environment &env) { - env.modify(ProjectExplorerPlugin::projectExplorerSettings().appEnvChanges); - }); + addModifier([](Environment &env) { env.modify(projectExplorerSettings().appEnvChanges); }); connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged, this, &EnvironmentAspect::environmentChanged); } diff --git a/src/plugins/projectexplorer/msvctoolchain.cpp b/src/plugins/projectexplorer/msvctoolchain.cpp index 5066d0969a..310e170e5a 100644 --- a/src/plugins/projectexplorer/msvctoolchain.cpp +++ b/src/plugins/projectexplorer/msvctoolchain.cpp @@ -1151,7 +1151,7 @@ static QString wrappedMakeCommand(const QString &command) FilePath MsvcToolchain::makeCommand(const Environment &environment) const { - bool useJom = ProjectExplorerPlugin::projectExplorerSettings().useJom; + const bool useJom = projectExplorerSettings().useJom; const QString jom("jom.exe"); const QString nmake("nmake.exe"); Utils::FilePath tmp; diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index cf82aa6e73..a409de59cb 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -262,27 +262,6 @@ const char PROJECT_OPEN_LOCATIONS_CONTEXT_MENU[] = "Project.P.OpenLocation.CtxM const char RECENTPROJECTS_FILE_NAMES_KEY[] = "ProjectExplorer/RecentProjects/FileNames"; const char RECENTPROJECTS_DISPLAY_NAMES_KEY[] = "ProjectExplorer/RecentProjects/DisplayNames"; -const char BUILD_BEFORE_DEPLOY_SETTINGS_KEY[] = "ProjectExplorer/Settings/BuildBeforeDeploy"; -const char DEPLOY_BEFORE_RUN_SETTINGS_KEY[] = "ProjectExplorer/Settings/DeployBeforeRun"; -const char SAVE_BEFORE_BUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/SaveBeforeBuild"; -const char USE_JOM_SETTINGS_KEY[] = "ProjectExplorer/Settings/UseJom"; -const char ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY[] = - "ProjectExplorer/Settings/AddLibraryPathsToRunEnv"; -const char PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY[] = - "ProjectExplorer/Settings/PromptToStopRunControl"; -const char AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY[] = - "ProjectExplorer/Settings/AutomaticallyCreateRunConfigurations"; -const char ENVIRONMENT_ID_SETTINGS_KEY[] = "ProjectExplorer/Settings/EnvironmentId"; -const char STOP_BEFORE_BUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/StopBeforeBuild"; -const char TERMINAL_MODE_SETTINGS_KEY[] = "ProjectExplorer/Settings/TerminalMode"; -const char CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY[] - = "ProjectExplorer/Settings/CloseFilesWithProject"; -const char CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/ClearIssuesOnRebuild"; -const char ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY[] - = "ProjectExplorer/Settings/AbortBuildAllOnError"; -const char LOW_BUILD_PRIORITY_SETTINGS_KEY[] = "ProjectExplorer/Settings/LowBuildPriority"; -const char WARN_AGAINST_NON_ASCII_BUILD_DIR_SETTINGS_KEY[] = "ProjectExplorer/Settings/LowBuildPriority"; -const char APP_ENV_CHANGES_SETTINGS_KEY[] = "ProjectExplorer/Settings/AppEnvChanges"; const char CUSTOM_PARSER_COUNT_KEY[] = "ProjectExplorer/Settings/CustomParserCount"; const char CUSTOM_PARSER_PREFIX_KEY[] = "ProjectExplorer/Settings/CustomParser"; @@ -640,7 +619,6 @@ public: QPointer m_defaultRunConfiguration; QPointer m_delayedRunConfiguration; MiniProjectTargetSelector * m_targetSelector; - ProjectExplorerSettings m_projectExplorerSettings; QList m_customParsers; bool m_shouldHaveRunConfiguration = false; Id m_runMode = Constants::NO_RUN_MODE; @@ -700,7 +678,6 @@ public: ProjectFileWizardExtension m_projectFileWizardExtension; // Settings pages - ProjectExplorerSettingsPage m_projectExplorerSettingsPage; AppOutputSettingsPage m_appOutputSettingsPage; DeviceSettingsPage m_deviceSettingsPage; SshSettingsPage m_sshSettingsPage; @@ -811,6 +788,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er setupProjectTreeWidgetFactory(); + setupProjectExplorerSettings(); + dd = new ProjectExplorerPluginPrivate; setupDesktopRunConfigurations(); @@ -1637,73 +1616,6 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er } } - const QVariant buildBeforeDeploy = s->value(Constants::BUILD_BEFORE_DEPLOY_SETTINGS_KEY); - const QString buildBeforeDeployString = buildBeforeDeploy.toString(); - if (buildBeforeDeployString == "true") { // backward compatibility with QtC < 4.12 - dd->m_projectExplorerSettings.buildBeforeDeploy = BuildBeforeRunMode::WholeProject; - } else if (buildBeforeDeployString == "false") { - dd->m_projectExplorerSettings.buildBeforeDeploy = BuildBeforeRunMode::Off; - } else if (buildBeforeDeploy.isValid()) { - dd->m_projectExplorerSettings.buildBeforeDeploy - = static_cast(buildBeforeDeploy.toInt()); - } - - static const ProjectExplorerSettings defaultSettings; - - dd->m_projectExplorerSettings.deployBeforeRun - = s->value(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, defaultSettings.deployBeforeRun) - .toBool(); - dd->m_projectExplorerSettings.saveBeforeBuild - = s->value(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, defaultSettings.saveBeforeBuild) - .toBool(); - dd->m_projectExplorerSettings.useJom - = s->value(Constants::USE_JOM_SETTINGS_KEY, defaultSettings.useJom).toBool(); - dd->m_projectExplorerSettings.addLibraryPathsToRunEnv - = s->value(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY, - defaultSettings.addLibraryPathsToRunEnv) - .toBool(); - dd->m_projectExplorerSettings.prompToStopRunControl - = s->value(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY, - defaultSettings.prompToStopRunControl) - .toBool(); - dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations - = s->value(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY, - defaultSettings.automaticallyCreateRunConfigurations) - .toBool(); - dd->m_projectExplorerSettings.environmentId = - QUuid(s->value(Constants::ENVIRONMENT_ID_SETTINGS_KEY).toByteArray()); - if (dd->m_projectExplorerSettings.environmentId.isNull()) - dd->m_projectExplorerSettings.environmentId = QUuid::createUuid(); - int tmp = s->value(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY, - int(defaultSettings.stopBeforeBuild)) - .toInt(); - if (tmp < 0 || tmp > int(StopBeforeBuild::SameApp)) - tmp = int(defaultSettings.stopBeforeBuild); - dd->m_projectExplorerSettings.stopBeforeBuild = StopBeforeBuild(tmp); - dd->m_projectExplorerSettings.terminalMode = static_cast( - s->value(Constants::TERMINAL_MODE_SETTINGS_KEY, int(defaultSettings.terminalMode)).toInt()); - dd->m_projectExplorerSettings.closeSourceFilesWithProject - = s->value(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY, - defaultSettings.closeSourceFilesWithProject) - .toBool(); - dd->m_projectExplorerSettings.clearIssuesOnRebuild - = s->value(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, - defaultSettings.clearIssuesOnRebuild) - .toBool(); - dd->m_projectExplorerSettings.abortBuildAllOnError - = s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, - defaultSettings.abortBuildAllOnError) - .toBool(); - dd->m_projectExplorerSettings.lowBuildPriority - = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, defaultSettings.lowBuildPriority) - .toBool(); - dd->m_projectExplorerSettings.warnAgainstNonAsciiBuildDir - = s->value(Constants::WARN_AGAINST_NON_ASCII_BUILD_DIR_SETTINGS_KEY, - defaultSettings.warnAgainstNonAsciiBuildDir) - .toBool(); - dd->m_projectExplorerSettings.appEnvChanges = EnvironmentItem::fromStringList( - s->value(Constants::APP_ENV_CHANGES_SETTINGS_KEY).toStringList()); - const int customParserCount = s->value(Constants::CUSTOM_PARSER_COUNT_KEY).toInt(); for (int i = 0; i < customParserCount; ++i) { CustomParserSettings settings; @@ -2145,7 +2057,7 @@ bool ProjectExplorerPlugin::delayedInitialize() void ProjectExplorerPluginPrivate::updateRunWithoutDeployMenu() { - m_runWithoutDeployAction->setVisible(m_projectExplorerSettings.deployBeforeRun); + m_runWithoutDeployAction->setVisible(projectExplorerSettings().deployBeforeRun); } IPlugin::ShutdownFlag ProjectExplorerPlugin::aboutToShutdown() @@ -2228,55 +2140,6 @@ void ProjectExplorerPluginPrivate::savePersistentSettings() s->setValueWithDefault(Constants::RECENTPROJECTS_FILE_NAMES_KEY, fileNames); s->setValueWithDefault(Constants::RECENTPROJECTS_DISPLAY_NAMES_KEY, displayNames); - static const ProjectExplorerSettings defaultSettings; - - s->setValueWithDefault(Constants::BUILD_BEFORE_DEPLOY_SETTINGS_KEY, - int(dd->m_projectExplorerSettings.buildBeforeDeploy), - int(defaultSettings.buildBeforeDeploy)); - s->setValueWithDefault(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, - dd->m_projectExplorerSettings.deployBeforeRun, - defaultSettings.deployBeforeRun); - s->setValueWithDefault(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, - dd->m_projectExplorerSettings.saveBeforeBuild, - defaultSettings.saveBeforeBuild); - s->setValueWithDefault(Constants::USE_JOM_SETTINGS_KEY, - dd->m_projectExplorerSettings.useJom, - defaultSettings.useJom); - s->setValueWithDefault(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY, - dd->m_projectExplorerSettings.addLibraryPathsToRunEnv, - defaultSettings.addLibraryPathsToRunEnv); - s->setValueWithDefault(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY, - dd->m_projectExplorerSettings.prompToStopRunControl, - defaultSettings.prompToStopRunControl); - s->setValueWithDefault(Constants::TERMINAL_MODE_SETTINGS_KEY, - int(dd->m_projectExplorerSettings.terminalMode), - int(defaultSettings.terminalMode)); - s->setValueWithDefault(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY, - dd->m_projectExplorerSettings.closeSourceFilesWithProject, - defaultSettings.closeSourceFilesWithProject); - s->setValueWithDefault(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, - dd->m_projectExplorerSettings.clearIssuesOnRebuild, - defaultSettings.clearIssuesOnRebuild); - s->setValueWithDefault(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, - dd->m_projectExplorerSettings.abortBuildAllOnError, - defaultSettings.abortBuildAllOnError); - s->setValueWithDefault(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, - dd->m_projectExplorerSettings.lowBuildPriority, - defaultSettings.lowBuildPriority); - s->setValueWithDefault(Constants::WARN_AGAINST_NON_ASCII_BUILD_DIR_SETTINGS_KEY, - dd->m_projectExplorerSettings.warnAgainstNonAsciiBuildDir, - defaultSettings.warnAgainstNonAsciiBuildDir); - s->setValueWithDefault(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY, - dd->m_projectExplorerSettings.automaticallyCreateRunConfigurations, - defaultSettings.automaticallyCreateRunConfigurations); - s->setValueWithDefault(Constants::ENVIRONMENT_ID_SETTINGS_KEY, - dd->m_projectExplorerSettings.environmentId.toByteArray()); - s->setValueWithDefault(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY, - int(dd->m_projectExplorerSettings.stopBeforeBuild), - int(defaultSettings.stopBeforeBuild)); - s->setValueWithDefault(Constants::APP_ENV_CHANGES_SETTINGS_KEY, - EnvironmentItem::toStringList(dd->m_projectExplorerSettings.appEnvChanges)); - buildPropertiesSettings().writeSettings(); // FIXME: Should not be needed. s->setValueWithDefault(Constants::CUSTOM_PARSER_COUNT_KEY, int(dd->m_customParsers.count()), 0); @@ -2723,7 +2586,7 @@ bool ProjectExplorerPlugin::saveModifiedFiles() { QList documentsToSave = DocumentManager::modifiedDocuments(); if (!documentsToSave.isEmpty()) { - if (dd->m_projectExplorerSettings.saveBeforeBuild) { + if (projectExplorerSettings().saveBeforeBuild) { bool cancelled = false; DocumentManager::saveModifiedDocumentsSilently(documentsToSave, &cancelled); if (cancelled) @@ -2738,7 +2601,7 @@ bool ProjectExplorerPlugin::saveModifiedFiles() } if (alwaysSave) - dd->m_projectExplorerSettings.saveBeforeBuild = true; + setSaveBeforeBuildSettings(true); } } return true; @@ -3054,7 +2917,7 @@ void ProjectExplorerPluginPrivate::updateDeployActions() && !BuildManager::isBuilding(currentProject) && hasDeploySettings(currentProject); - if (m_projectExplorerSettings.buildBeforeDeploy != BuildBeforeRunMode::Off) { + if (projectExplorerSettings().buildBeforeDeploy != BuildBeforeRunMode::Off) { if (hasBuildSettings(project) && !buildSettingsEnabled(project).first) enableDeployActions = false; @@ -3072,7 +2935,7 @@ void ProjectExplorerPluginPrivate::updateDeployActions() m_deployProjectOnlyAction->setEnabled(enableDeployActions); bool enableDeploySessionAction = true; - if (m_projectExplorerSettings.buildBeforeDeploy != BuildBeforeRunMode::Off) { + if (projectExplorerSettings().buildBeforeDeploy != BuildBeforeRunMode::Off) { auto hasDisabledBuildConfiguration = [](Project *project) { return project && project->activeTarget() && project->activeTarget()->activeBuildConfiguration() @@ -3116,8 +2979,8 @@ expected_str ProjectExplorerPlugin::canRunStartupProject(Utils::Id runMode if (!activeRC->isEnabled(runMode)) return make_unexpected(activeRC->disabledReason(runMode)); - if (dd->m_projectExplorerSettings.buildBeforeDeploy != BuildBeforeRunMode::Off - && dd->m_projectExplorerSettings.deployBeforeRun + if (projectExplorerSettings().buildBeforeDeploy != BuildBeforeRunMode::Off + && projectExplorerSettings().deployBeforeRun && !BuildManager::isBuilding(project) && hasBuildSettings(project)) { QPair buildState = dd->buildSettingsEnabled(project); @@ -3968,21 +3831,6 @@ void ProjectExplorerPluginPrivate::handleSetStartupProject() setStartupProject(ProjectTree::currentProject()); } -void ProjectExplorerPlugin::setProjectExplorerSettings(const ProjectExplorerSettings &pes) -{ - QTC_ASSERT(dd->m_projectExplorerSettings.environmentId == pes.environmentId, return); - - if (dd->m_projectExplorerSettings == pes) - return; - dd->m_projectExplorerSettings = pes; - emit m_instance->settingsChanged(); -} - -const ProjectExplorerSettings &ProjectExplorerPlugin::projectExplorerSettings() -{ - return dd->m_projectExplorerSettings; -} - void ProjectExplorerPlugin::setAppOutputSettings(const AppOutputSettings &settings) { dd->m_outputPane.setSettings(settings); diff --git a/src/plugins/projectexplorer/projectexplorer.h b/src/plugins/projectexplorer/projectexplorer.h index ffb5d1bcd3..291734901a 100644 --- a/src/plugins/projectexplorer/projectexplorer.h +++ b/src/plugins/projectexplorer/projectexplorer.h @@ -29,7 +29,6 @@ class CustomParserSettings; class FolderNode; class Node; class Project; -class ProjectExplorerSettings; class RunControl; class RunConfiguration; @@ -110,9 +109,6 @@ public: bool delayedInitialize() override; ShutdownFlag aboutToShutdown() override; - static void setProjectExplorerSettings(const ProjectExplorerSettings &pes); - static const ProjectExplorerSettings &projectExplorerSettings(); - static void setAppOutputSettings(const Internal::AppOutputSettings &settings); static const Internal::AppOutputSettings &appOutputSettings(); diff --git a/src/plugins/projectexplorer/projectexplorersettings.cpp b/src/plugins/projectexplorer/projectexplorersettings.cpp index b99a38d461..54cbc57a8c 100644 --- a/src/plugins/projectexplorer/projectexplorersettings.cpp +++ b/src/plugins/projectexplorer/projectexplorersettings.cpp @@ -9,7 +9,9 @@ #include "projectexplorertr.h" #include +#include #include +#include #include #include @@ -27,10 +29,203 @@ using namespace Core; using namespace Utils; -namespace ProjectExplorer::Internal { +namespace ProjectExplorer { +namespace Internal { + +namespace Constants { +const char BUILD_BEFORE_DEPLOY_SETTINGS_KEY[] = "ProjectExplorer/Settings/BuildBeforeDeploy"; +const char DEPLOY_BEFORE_RUN_SETTINGS_KEY[] = "ProjectExplorer/Settings/DeployBeforeRun"; +const char SAVE_BEFORE_BUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/SaveBeforeBuild"; +const char USE_JOM_SETTINGS_KEY[] = "ProjectExplorer/Settings/UseJom"; +const char ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY[] = + "ProjectExplorer/Settings/AddLibraryPathsToRunEnv"; +const char PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY[] = + "ProjectExplorer/Settings/PromptToStopRunControl"; +const char AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY[] = + "ProjectExplorer/Settings/AutomaticallyCreateRunConfigurations"; +const char ENVIRONMENT_ID_SETTINGS_KEY[] = "ProjectExplorer/Settings/EnvironmentId"; +const char STOP_BEFORE_BUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/StopBeforeBuild"; +const char TERMINAL_MODE_SETTINGS_KEY[] = "ProjectExplorer/Settings/TerminalMode"; +const char CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY[] + = "ProjectExplorer/Settings/CloseFilesWithProject"; +const char CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY[] = "ProjectExplorer/Settings/ClearIssuesOnRebuild"; +const char ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY[] + = "ProjectExplorer/Settings/AbortBuildAllOnError"; +const char LOW_BUILD_PRIORITY_SETTINGS_KEY[] = "ProjectExplorer/Settings/LowBuildPriority"; +const char APP_ENV_CHANGES_SETTINGS_KEY[] = "ProjectExplorer/Settings/AppEnvChanges"; +const char WARN_AGAINST_NON_ASCII_BUILD_DIR_SETTINGS_KEY[] = "ProjectExplorer/Settings/LowBuildPriority"; + +} // Constants enum { UseCurrentDirectory, UseProjectDirectory }; +void saveProjectExplorerSettings(); + +static bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerSettings &p2) +{ + return p1.buildBeforeDeploy == p2.buildBeforeDeploy + && p1.deployBeforeRun == p2.deployBeforeRun + && p1.saveBeforeBuild == p2.saveBeforeBuild + && p1.useJom == p2.useJom + && p1.prompToStopRunControl == p2.prompToStopRunControl + && p1.automaticallyCreateRunConfigurations == p2.automaticallyCreateRunConfigurations + && p1.addLibraryPathsToRunEnv == p2.addLibraryPathsToRunEnv + && p1.environmentId == p2.environmentId + && p1.stopBeforeBuild == p2.stopBeforeBuild + && p1.terminalMode == p2.terminalMode + && p1.closeSourceFilesWithProject == p2.closeSourceFilesWithProject + && p1.clearIssuesOnRebuild == p2.clearIssuesOnRebuild + && p1.abortBuildAllOnError == p2.abortBuildAllOnError + && p1.appEnvChanges == p2.appEnvChanges + && p1.lowBuildPriority == p2.lowBuildPriority; +} + +ProjectExplorerSettings &mutableProjectExplorerSettings() +{ + static ProjectExplorerSettings theProjectExplorerSettings; + return theProjectExplorerSettings; +} + +void setPromptToStopSettings(bool promptToStop) +{ + mutableProjectExplorerSettings().prompToStopRunControl = promptToStop; + saveProjectExplorerSettings(); + emit ProjectExplorerPlugin::instance()->settingsChanged(); +} + +void setSaveBeforeBuildSettings(bool saveBeforeBuild) +{ + mutableProjectExplorerSettings().saveBeforeBuild = saveBeforeBuild; + saveProjectExplorerSettings(); +} + +static void loadProjectExplorerSettings() +{ + QtcSettings *s = ICore::settings(); + + const QVariant buildBeforeDeploy = s->value(Constants::BUILD_BEFORE_DEPLOY_SETTINGS_KEY); + const QString buildBeforeDeployString = buildBeforeDeploy.toString(); + ProjectExplorerSettings &settings = mutableProjectExplorerSettings(); + if (buildBeforeDeployString == "true") { // backward compatibility with QtC < 4.12 + settings.buildBeforeDeploy = BuildBeforeRunMode::WholeProject; + } else if (buildBeforeDeployString == "false") { + settings.buildBeforeDeploy = BuildBeforeRunMode::Off; + } else if (buildBeforeDeploy.isValid()) { + settings.buildBeforeDeploy + = static_cast(buildBeforeDeploy.toInt()); + } + + static const ProjectExplorerSettings defaultSettings; + + settings.deployBeforeRun + = s->value(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, defaultSettings.deployBeforeRun) + .toBool(); + settings.saveBeforeBuild + = s->value(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, defaultSettings.saveBeforeBuild) + .toBool(); + settings.useJom + = s->value(Constants::USE_JOM_SETTINGS_KEY, defaultSettings.useJom).toBool(); + settings.addLibraryPathsToRunEnv + = s->value(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY, + defaultSettings.addLibraryPathsToRunEnv) + .toBool(); + settings.prompToStopRunControl + = s->value(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY, + defaultSettings.prompToStopRunControl) + .toBool(); + settings.automaticallyCreateRunConfigurations + = s->value(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY, + defaultSettings.automaticallyCreateRunConfigurations) + .toBool(); + settings.environmentId = + QUuid(s->value(Constants::ENVIRONMENT_ID_SETTINGS_KEY).toByteArray()); + if (settings.environmentId.isNull()) + settings.environmentId = QUuid::createUuid(); + int tmp = s->value(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY, + int(defaultSettings.stopBeforeBuild)) + .toInt(); + if (tmp < 0 || tmp > int(StopBeforeBuild::SameApp)) + tmp = int(defaultSettings.stopBeforeBuild); + settings.stopBeforeBuild = StopBeforeBuild(tmp); + settings.terminalMode = static_cast( + s->value(Constants::TERMINAL_MODE_SETTINGS_KEY, int(defaultSettings.terminalMode)).toInt()); + settings.closeSourceFilesWithProject + = s->value(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY, + defaultSettings.closeSourceFilesWithProject) + .toBool(); + settings.clearIssuesOnRebuild + = s->value(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, + defaultSettings.clearIssuesOnRebuild) + .toBool(); + settings.abortBuildAllOnError + = s->value(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, + defaultSettings.abortBuildAllOnError) + .toBool(); + settings.lowBuildPriority + = s->value(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, defaultSettings.lowBuildPriority) + .toBool(); + settings.warnAgainstNonAsciiBuildDir + = s->value(Constants::WARN_AGAINST_NON_ASCII_BUILD_DIR_SETTINGS_KEY, + defaultSettings.warnAgainstNonAsciiBuildDir) + .toBool(); + settings.appEnvChanges = EnvironmentItem::fromStringList( + s->value(Constants::APP_ENV_CHANGES_SETTINGS_KEY).toStringList()); +} + +void saveProjectExplorerSettings() +{ + QtcSettings *s = ICore::settings(); + static const ProjectExplorerSettings defaultSettings; + + const ProjectExplorerSettings &settings = projectExplorerSettings(); + s->setValueWithDefault(Constants::BUILD_BEFORE_DEPLOY_SETTINGS_KEY, + int(settings.buildBeforeDeploy), + int(defaultSettings.buildBeforeDeploy)); + s->setValueWithDefault(Constants::DEPLOY_BEFORE_RUN_SETTINGS_KEY, + settings.deployBeforeRun, + defaultSettings.deployBeforeRun); + s->setValueWithDefault(Constants::SAVE_BEFORE_BUILD_SETTINGS_KEY, + settings.saveBeforeBuild, + defaultSettings.saveBeforeBuild); + s->setValueWithDefault(Constants::USE_JOM_SETTINGS_KEY, + settings.useJom, + defaultSettings.useJom); + s->setValueWithDefault(Constants::ADD_LIBRARY_PATHS_TO_RUN_ENV_SETTINGS_KEY, + settings.addLibraryPathsToRunEnv, + defaultSettings.addLibraryPathsToRunEnv); + s->setValueWithDefault(Constants::PROMPT_TO_STOP_RUN_CONTROL_SETTINGS_KEY, + settings.prompToStopRunControl, + defaultSettings.prompToStopRunControl); + s->setValueWithDefault(Constants::TERMINAL_MODE_SETTINGS_KEY, + int(settings.terminalMode), + int(defaultSettings.terminalMode)); + s->setValueWithDefault(Constants::CLOSE_FILES_WITH_PROJECT_SETTINGS_KEY, + settings.closeSourceFilesWithProject, + defaultSettings.closeSourceFilesWithProject); + s->setValueWithDefault(Constants::CLEAR_ISSUES_ON_REBUILD_SETTINGS_KEY, + settings.clearIssuesOnRebuild, + defaultSettings.clearIssuesOnRebuild); + s->setValueWithDefault(Constants::ABORT_BUILD_ALL_ON_ERROR_SETTINGS_KEY, + settings.abortBuildAllOnError, + defaultSettings.abortBuildAllOnError); + s->setValueWithDefault(Constants::LOW_BUILD_PRIORITY_SETTINGS_KEY, + settings.lowBuildPriority, + defaultSettings.lowBuildPriority); + s->setValueWithDefault(Constants::WARN_AGAINST_NON_ASCII_BUILD_DIR_SETTINGS_KEY, + settings.warnAgainstNonAsciiBuildDir, + defaultSettings.warnAgainstNonAsciiBuildDir); + s->setValueWithDefault(Constants::AUTO_CREATE_RUN_CONFIGS_SETTINGS_KEY, + settings.automaticallyCreateRunConfigurations, + defaultSettings.automaticallyCreateRunConfigurations); + s->setValueWithDefault(Constants::ENVIRONMENT_ID_SETTINGS_KEY, + settings.environmentId.toByteArray()); + s->setValueWithDefault(Constants::STOP_BEFORE_BUILD_SETTINGS_KEY, + int(settings.stopBeforeBuild), + int(defaultSettings.stopBeforeBuild)); + s->setValueWithDefault(Constants::APP_ENV_CHANGES_SETTINGS_KEY, + EnvironmentItem::toStringList(settings.appEnvChanges)); +} + class ProjectExplorerSettingsWidget : public IOptionsPageWidget { public: @@ -47,7 +242,15 @@ public: void apply() final { - ProjectExplorerPlugin::setProjectExplorerSettings(settings()); + ProjectExplorerSettings newSettings = settings(); + QTC_CHECK(projectExplorerSettings().environmentId == newSettings.environmentId); + + if (!(projectExplorerSettings() == newSettings)) { + mutableProjectExplorerSettings() = newSettings; + saveProjectExplorerSettings(); + emit ProjectExplorerPlugin::instance()->settingsChanged(); + } + DocumentManager::setProjectsDirectory(projectsDirectory()); DocumentManager::setUseProjectsDirectory(useProjectsDirectory()); } @@ -56,7 +259,6 @@ private: void slotDirectoryButtonGroupChanged(); void updateAppEnvChangesLabel(); - mutable ProjectExplorerSettings m_settings; Utils::EnvironmentItems m_appEnvChanges; QRadioButton *m_currentDirectoryRadioButton; QRadioButton *m_directoryRadioButton; @@ -204,7 +406,7 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget() connect(m_directoryButtonGroup, &QButtonGroup::buttonClicked, this, &ProjectExplorerSettingsWidget::slotDirectoryButtonGroupChanged); - setSettings(ProjectExplorerPlugin::projectExplorerSettings()); + setSettings(projectExplorerSettings()); setProjectsDirectory(DocumentManager::projectsDirectory()); setUseProjectsDirectory(DocumentManager::useProjectsDirectory()); updateAppEnvChangesLabel(); @@ -212,46 +414,46 @@ ProjectExplorerSettingsWidget::ProjectExplorerSettingsWidget() ProjectExplorerSettings ProjectExplorerSettingsWidget::settings() const { - m_settings.buildBeforeDeploy = static_cast( - m_buildBeforeDeployComboBox->currentData().toInt()); - m_settings.deployBeforeRun = m_deployProjectBeforeRunCheckBox->isChecked(); - m_settings.saveBeforeBuild = m_saveAllFilesCheckBox->isChecked(); - m_settings.useJom = m_jomCheckbox->isChecked(); - m_settings.addLibraryPathsToRunEnv = m_addLibraryPathsToRunEnvCheckBox->isChecked(); - m_settings.prompToStopRunControl = m_promptToStopRunControlCheckBox->isChecked(); - m_settings.automaticallyCreateRunConfigurations = m_automaticallyCreateRunConfiguration->isChecked(); - m_settings.stopBeforeBuild = static_cast( - m_stopBeforeBuildComboBox->currentData().toInt()); - m_settings.terminalMode = static_cast(m_terminalModeComboBox->currentIndex()); - m_settings.closeSourceFilesWithProject = m_closeSourceFilesCheckBox->isChecked(); - m_settings.clearIssuesOnRebuild = m_clearIssuesCheckBox->isChecked(); - m_settings.abortBuildAllOnError = m_abortBuildAllOnErrorCheckBox->isChecked(); - m_settings.lowBuildPriority = m_lowBuildPriorityCheckBox->isChecked(); - m_settings.warnAgainstNonAsciiBuildDir = m_warnAgainstNonAsciiBuildDirCheckBox->isChecked(); - m_settings.appEnvChanges = m_appEnvChanges; - return m_settings; + ProjectExplorerSettings s; + s.buildBeforeDeploy = static_cast( + m_buildBeforeDeployComboBox->currentData().toInt()); + s.deployBeforeRun = m_deployProjectBeforeRunCheckBox->isChecked(); + s.saveBeforeBuild = m_saveAllFilesCheckBox->isChecked(); + s.useJom = m_jomCheckbox->isChecked(); + s.addLibraryPathsToRunEnv = m_addLibraryPathsToRunEnvCheckBox->isChecked(); + s.prompToStopRunControl = m_promptToStopRunControlCheckBox->isChecked(); + s.automaticallyCreateRunConfigurations = m_automaticallyCreateRunConfiguration->isChecked(); + s.stopBeforeBuild = static_cast( + m_stopBeforeBuildComboBox->currentData().toInt()); + s.terminalMode = static_cast(m_terminalModeComboBox->currentIndex()); + s.closeSourceFilesWithProject = m_closeSourceFilesCheckBox->isChecked(); + s.clearIssuesOnRebuild = m_clearIssuesCheckBox->isChecked(); + s.abortBuildAllOnError = m_abortBuildAllOnErrorCheckBox->isChecked(); + s.lowBuildPriority = m_lowBuildPriorityCheckBox->isChecked(); + s.warnAgainstNonAsciiBuildDir = m_warnAgainstNonAsciiBuildDirCheckBox->isChecked(); + s.appEnvChanges = m_appEnvChanges; + return s; } -void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings &pes) +void ProjectExplorerSettingsWidget::setSettings(const ProjectExplorerSettings &s) { - m_settings = pes; - m_appEnvChanges = pes.appEnvChanges; + m_appEnvChanges = s.appEnvChanges; m_buildBeforeDeployComboBox->setCurrentIndex( - m_buildBeforeDeployComboBox->findData(int(m_settings.buildBeforeDeploy))); - m_deployProjectBeforeRunCheckBox->setChecked(m_settings.deployBeforeRun); - m_saveAllFilesCheckBox->setChecked(m_settings.saveBeforeBuild); - m_jomCheckbox->setChecked(m_settings.useJom); - m_addLibraryPathsToRunEnvCheckBox->setChecked(m_settings.addLibraryPathsToRunEnv); - m_promptToStopRunControlCheckBox->setChecked(m_settings.prompToStopRunControl); - m_automaticallyCreateRunConfiguration->setChecked(m_settings.automaticallyCreateRunConfigurations); + m_buildBeforeDeployComboBox->findData(int(s.buildBeforeDeploy))); + m_deployProjectBeforeRunCheckBox->setChecked(s.deployBeforeRun); + m_saveAllFilesCheckBox->setChecked(s.saveBeforeBuild); + m_jomCheckbox->setChecked(s.useJom); + m_addLibraryPathsToRunEnvCheckBox->setChecked(s.addLibraryPathsToRunEnv); + m_promptToStopRunControlCheckBox->setChecked(s.prompToStopRunControl); + m_automaticallyCreateRunConfiguration->setChecked(s.automaticallyCreateRunConfigurations); m_stopBeforeBuildComboBox->setCurrentIndex( - m_stopBeforeBuildComboBox->findData(int(m_settings.stopBeforeBuild))); - m_terminalModeComboBox->setCurrentIndex(static_cast(m_settings.terminalMode)); - m_closeSourceFilesCheckBox->setChecked(m_settings.closeSourceFilesWithProject); - m_clearIssuesCheckBox->setChecked(m_settings.clearIssuesOnRebuild); - m_abortBuildAllOnErrorCheckBox->setChecked(m_settings.abortBuildAllOnError); - m_lowBuildPriorityCheckBox->setChecked(m_settings.lowBuildPriority); - m_warnAgainstNonAsciiBuildDirCheckBox->setChecked(m_settings.warnAgainstNonAsciiBuildDir); + m_stopBeforeBuildComboBox->findData(int(s.stopBeforeBuild))); + m_terminalModeComboBox->setCurrentIndex(static_cast(s.terminalMode)); + m_closeSourceFilesCheckBox->setChecked(s.closeSourceFilesWithProject); + m_clearIssuesCheckBox->setChecked(s.clearIssuesOnRebuild); + m_abortBuildAllOnErrorCheckBox->setChecked(s.abortBuildAllOnError); + m_lowBuildPriorityCheckBox->setChecked(s.lowBuildPriority); + m_warnAgainstNonAsciiBuildDirCheckBox->setChecked(s.warnAgainstNonAsciiBuildDir); } FilePath ProjectExplorerSettingsWidget::projectsDirectory() const @@ -292,14 +494,34 @@ void ProjectExplorerSettingsWidget::updateAppEnvChangesLabel() // ProjectExplorerSettingsPage -ProjectExplorerSettingsPage::ProjectExplorerSettingsPage() +class ProjectExplorerSettingsPage final : public IOptionsPage +{ +public: + ProjectExplorerSettingsPage() + { + setId(ProjectExplorer::Constants::BUILD_AND_RUN_SETTINGS_PAGE_ID); + setDisplayName(Tr::tr("General")); + setCategory(ProjectExplorer::Constants::BUILD_AND_RUN_SETTINGS_CATEGORY); + setDisplayCategory(Tr::tr("Build & Run")); + setCategoryIconPath(":/projectexplorer/images/settingscategory_buildrun.png"); + setWidgetCreator([] { return new ProjectExplorerSettingsWidget; }); + } +}; + +void setupProjectExplorerSettings() { - setId(Constants::BUILD_AND_RUN_SETTINGS_PAGE_ID); - setDisplayName(Tr::tr("General")); - setCategory(Constants::BUILD_AND_RUN_SETTINGS_CATEGORY); - setDisplayCategory(Tr::tr("Build & Run")); - setCategoryIconPath(":/projectexplorer/images/settingscategory_buildrun.png"); - setWidgetCreator([] { return new ProjectExplorerSettingsWidget; }); + static ProjectExplorerSettingsPage theProjectExplorerSettingsPage; + + loadProjectExplorerSettings(); } -} // ProjectExplorer::Internal + +} // Internal + +const ProjectExplorerSettings &projectExplorerSettings() +{ + return Internal::mutableProjectExplorerSettings(); +} + +} // ProjectExplorer + diff --git a/src/plugins/projectexplorer/projectexplorersettings.h b/src/plugins/projectexplorer/projectexplorersettings.h index dbec8ea2ae..51970eb290 100644 --- a/src/plugins/projectexplorer/projectexplorersettings.h +++ b/src/plugins/projectexplorer/projectexplorersettings.h @@ -3,8 +3,9 @@ #pragma once +#include "projectexplorer_export.h" + #include -#include #include #include @@ -20,26 +21,6 @@ enum class StopBeforeBuild { None, SameProject, All, SameBuildDir, SameApp }; class ProjectExplorerSettings { public: - friend bool operator==(const ProjectExplorerSettings &p1, const ProjectExplorerSettings &p2) - { - return p1.buildBeforeDeploy == p2.buildBeforeDeploy - && p1.deployBeforeRun == p2.deployBeforeRun - && p1.saveBeforeBuild == p2.saveBeforeBuild - && p1.useJom == p2.useJom - && p1.prompToStopRunControl == p2.prompToStopRunControl - && p1.automaticallyCreateRunConfigurations == p2.automaticallyCreateRunConfigurations - && p1.addLibraryPathsToRunEnv == p2.addLibraryPathsToRunEnv - && p1.environmentId == p2.environmentId - && p1.stopBeforeBuild == p2.stopBeforeBuild - && p1.terminalMode == p2.terminalMode - && p1.closeSourceFilesWithProject == p2.closeSourceFilesWithProject - && p1.clearIssuesOnRebuild == p2.clearIssuesOnRebuild - && p1.abortBuildAllOnError == p2.abortBuildAllOnError - && p1.appEnvChanges == p2.appEnvChanges - && p1.warnAgainstNonAsciiBuildDir == p2.warnAgainstNonAsciiBuildDir - && p1.lowBuildPriority == p2.lowBuildPriority; - } - BuildBeforeRunMode buildBeforeDeploy = BuildBeforeRunMode::WholeProject; bool deployBeforeRun = true; bool saveBeforeBuild = false; @@ -64,8 +45,13 @@ public: QUuid environmentId; }; +PROJECTEXPLORER_EXPORT const ProjectExplorerSettings &projectExplorerSettings(); + namespace Internal { +void setPromptToStopSettings(bool promptToStop); // FIXME: Remove. +void setSaveBeforeBuildSettings(bool saveBeforeBuild); // FIXME: Remove. + enum class AppOutputPaneMode { FlashOnOutput, PopupOnOutput, PopupOnFirstOutput }; class AppOutputSettings @@ -79,11 +65,7 @@ public: int maxCharCount = Core::Constants::DEFAULT_MAX_CHAR_COUNT; }; -class ProjectExplorerSettingsPage : public Core::IOptionsPage -{ -public: - ProjectExplorerSettingsPage(); -}; +void setupProjectExplorerSettings(); } // namespace Internal } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/runconfigurationaspects.cpp b/src/plugins/projectexplorer/runconfigurationaspects.cpp index 7b6c7f4f5d..c042f081f1 100644 --- a/src/plugins/projectexplorer/runconfigurationaspects.cpp +++ b/src/plugins/projectexplorer/runconfigurationaspects.cpp @@ -107,7 +107,7 @@ void TerminalAspect::calculateUseTerminal() if (m_userSet) return; bool useTerminal; - switch (ProjectExplorerPlugin::projectExplorerSettings().terminalMode) { + switch (projectExplorerSettings().terminalMode) { case TerminalMode::On: useTerminal = true; break; case TerminalMode::Off: useTerminal = false; break; default: useTerminal = m_useTerminalHint; @@ -737,7 +737,7 @@ UseLibraryPathsAspect::UseLibraryPathsAspect(AspectContainer *container) setLabel(Tr::tr("Add build library search path to LD_LIBRARY_PATH"), LabelPlacement::AtCheckBox); } - setValue(ProjectExplorerPlugin::projectExplorerSettings().addLibraryPathsToRunEnv); + setValue(projectExplorerSettings().addLibraryPathsToRunEnv); } diff --git a/src/plugins/projectexplorer/target.cpp b/src/plugins/projectexplorer/target.cpp index b4d8a776f8..cae9a01d02 100644 --- a/src/plugins/projectexplorer/target.cpp +++ b/src/plugins/projectexplorer/target.cpp @@ -722,7 +722,7 @@ void Target::updateDefaultRunConfigurations() configuredCount -= toRemove.count(); bool removeExistingUnconfigured = false; - if (ProjectExplorerPlugin::projectExplorerSettings().automaticallyCreateRunConfigurations) { + if (projectExplorerSettings().automaticallyCreateRunConfigurations) { // Create new "automatic" RCs and put them into newConfigured/newUnconfigured for (const RunConfigurationCreationInfo &item : creators) { if (item.creationMode == RunConfigurationCreationInfo::ManualCreationOnly) diff --git a/src/plugins/projectexplorer/userfileaccessor.cpp b/src/plugins/projectexplorer/userfileaccessor.cpp index a370d80ff6..82e4d0edfb 100644 --- a/src/plugins/projectexplorer/userfileaccessor.cpp +++ b/src/plugins/projectexplorer/userfileaccessor.cpp @@ -300,7 +300,7 @@ UserFileAccessor::UserFileAccessor(Project *project) secondary->setReadOnly(); setSecondaryAccessor(std::move(secondary)); - setSettingsId(ProjectExplorerPlugin::projectExplorerSettings().environmentId.toByteArray()); + setSettingsId(projectExplorerSettings().environmentId.toByteArray()); // Register Upgraders: addVersionUpgrader(std::make_unique()); @@ -990,7 +990,7 @@ void ProjectExplorerTest::testUserFileAccessor_prepareToWriteSettings() QCOMPARE(result.count(), data.count() + 3); QCOMPARE(result.value("EnvironmentId").toByteArray(), - ProjectExplorerPlugin::projectExplorerSettings().environmentId.toByteArray()); + projectExplorerSettings().environmentId.toByteArray()); QCOMPARE(result.value("UserStickyKeys"), QVariant(QStringList({"shared1"}))); QCOMPARE(result.value("Version").toInt(), accessor.currentVersion()); QCOMPARE(result.value("ProjectExplorer.Project.Updater.FileVersion").toInt(), accessor.currentVersion()); @@ -1013,7 +1013,7 @@ void ProjectExplorerTest::testUserFileAccessor_mergeSettings() Store data; data.insert("Version", accessor.currentVersion()); - data.insert("EnvironmentId", ProjectExplorerPlugin::projectExplorerSettings().environmentId.toByteArray()); + data.insert("EnvironmentId", projectExplorerSettings().environmentId.toByteArray()); data.insert("UserStickyKeys", QStringList({"shared1"})); data.insert("shared1", "bar1"); data.insert("unique1", 1234); @@ -1025,7 +1025,7 @@ void ProjectExplorerTest::testUserFileAccessor_mergeSettings() QCOMPARE(result.data.count(), data.count() + 1); // mergeSettings does not run updateSettings, so no OriginalVersion will be set QCOMPARE(result.data.value("EnvironmentId").toByteArray(), - ProjectExplorerPlugin::projectExplorerSettings().environmentId.toByteArray()); // unchanged + projectExplorerSettings().environmentId.toByteArray()); // unchanged QCOMPARE(result.data.value("UserStickyKeys"), QVariant(QStringList({"shared1"}))); // unchanged QCOMPARE(result.data.value("Version").toInt(), accessor.currentVersion()); // forced QCOMPARE(result.data.value("shared1"), data.value("shared1")); // from data @@ -1066,7 +1066,7 @@ void ProjectExplorerTest::testUserFileAccessor_mergeSettingsEmptyShared() Store data; data.insert("Version", accessor.currentVersion()); data.insert("OriginalVersion", accessor.currentVersion()); - data.insert("EnvironmentId", ProjectExplorerPlugin::projectExplorerSettings().environmentId.toByteArray()); + data.insert("EnvironmentId", projectExplorerSettings().environmentId.toByteArray()); data.insert("UserStickyKeys", QStringList({"shared1"})); data.insert("shared1", "bar1"); data.insert("unique1", 1234); -- cgit v1.2.3