From ac3710735b1c294bba19be5544a03b930c380369 Mon Sep 17 00:00:00 2001 From: Montel Laurent Date: Mon, 20 Feb 2017 15:29:23 +0100 Subject: [PATCH] Beautifier: Allow to define specific config file Change-Id: Ic6410d7eae27a008cbb46f506ca5907f80d6ea68 Reviewed-by: Lorenz Haas Reviewed-by: Tobias Hunger --- .../beautifier/uncrustify/uncrustify.cpp | 6 ++++ .../uncrustify/uncrustifyoptionspage.cpp | 8 +++++ .../uncrustify/uncrustifyoptionspage.ui | 16 +++++++++ .../uncrustify/uncrustifysettings.cpp | 34 ++++++++++++++++--- .../uncrustify/uncrustifysettings.h | 8 ++++- 5 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/plugins/beautifier/uncrustify/uncrustify.cpp b/src/plugins/beautifier/uncrustify/uncrustify.cpp index 3b61d3a9dc5..c10524dc99b 100644 --- a/src/plugins/beautifier/uncrustify/uncrustify.cpp +++ b/src/plugins/beautifier/uncrustify/uncrustify.cpp @@ -168,6 +168,12 @@ QString Uncrustify::configurationFile() const } } + if (m_settings->useSpecificConfigFile()) { + const Utils::FileName file = m_settings->specificConfigFile(); + if (file.exists()) + return file.toString(); + } + if (m_settings->useHomeFile()) { const QString file = QDir::home().filePath("uncrustify.cfg"); if (QFile::exists(file)) diff --git a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp index 72687b70f4a..96f040c9906 100644 --- a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp +++ b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.cpp @@ -50,6 +50,10 @@ UncrustifyOptionsPageWidget::UncrustifyOptionsPageWidget(UncrustifySettings *set ui->setupUi(this); ui->useHomeFile->setText(ui->useHomeFile->text().replace( "HOME", QDir::toNativeSeparators(QDir::home().absolutePath()))); + ui->uncrusifyFilePath->setExpectedKind(Utils::PathChooser::File); + ui->uncrusifyFilePath->setPromptDialogFilter(tr("Uncrustify file (*.cfg)")); + ui->uncrusifyFilePath->setFileName(Utils::FileName::fromString(QDir::toNativeSeparators(QDir::home().absoluteFilePath("uncrustify.cfg")))); + ui->command->setExpectedKind(Utils::PathChooser::ExistingCommand); ui->command->setPromptDialogTitle(BeautifierPlugin::msgCommandPromptDialogTitle( Uncrustify::tr(Constants::Uncrustify::DISPLAY_NAME))); @@ -68,6 +72,8 @@ void UncrustifyOptionsPageWidget::restore() ui->mime->setText(m_settings->supportedMimeTypesAsString()); ui->useOtherFiles->setChecked(m_settings->useOtherFiles()); ui->useHomeFile->setChecked(m_settings->useHomeFile()); + ui->useSpecificFile->setChecked(m_settings->useSpecificConfigFile()); + ui->uncrusifyFilePath->setFileName(m_settings->specificConfigFile()); ui->useCustomStyle->setChecked(m_settings->useCustomStyle()); ui->configurations->setCurrentConfiguration(m_settings->customStyle()); ui->formatEntireFileFallback->setChecked(m_settings->formatEntireFileFallback()); @@ -79,6 +85,8 @@ void UncrustifyOptionsPageWidget::apply() m_settings->setSupportedMimeTypes(ui->mime->text()); m_settings->setUseOtherFiles(ui->useOtherFiles->isChecked()); m_settings->setUseHomeFile(ui->useHomeFile->isChecked()); + m_settings->setUseSpecificConfigFile(ui->useSpecificFile->isChecked()); + m_settings->setSpecificConfigFile(ui->uncrusifyFilePath->fileName()); m_settings->setUseCustomStyle(ui->useCustomStyle->isChecked()); m_settings->setCustomStyle(ui->configurations->currentConfiguration()); m_settings->setFormatEntireFileFallback(ui->formatEntireFileFallback->isChecked()); diff --git a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui index d1819e8bcef..190f9dd8ecc 100644 --- a/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui +++ b/src/plugins/beautifier/uncrustify/uncrustifyoptionspage.ui @@ -56,6 +56,20 @@ + + + + + + Use file specific uncrustify.cfg + + + + + + + + @@ -122,6 +136,8 @@ mime useOtherFiles + useSpecificFile + uncrusifyFilePath useHomeFile useCustomStyle formatEntireFileFallback diff --git a/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp b/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp index 8073901498b..20b134d1223 100644 --- a/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp +++ b/src/plugins/beautifier/uncrustify/uncrustifysettings.cpp @@ -44,11 +44,13 @@ namespace Internal { namespace Uncrustify { namespace { -const char USE_OTHER_FILES[] = "useOtherFiles"; -const char USE_HOME_FILE[] = "useHomeFile"; -const char USE_CUSTOM_STYLE[] = "useCustomStyle"; -const char CUSTOM_STYLE[] = "customStyle"; -const char FORMAT_ENTIRE_FILE_FALLBACK[] = "formatEntireFileFallback"; +const char USE_OTHER_FILES[] = "useOtherFiles"; +const char USE_HOME_FILE[] = "useHomeFile"; +const char USE_SPECIFIC_CONFIG_FILE_PATH[] = "useSpecificConfigFile"; +const char SPECIFIC_CONFIG_FILE_PATH[] = "specificConfigFile"; +const char USE_CUSTOM_STYLE[] = "useCustomStyle"; +const char CUSTOM_STYLE[] = "customStyle"; +const char FORMAT_ENTIRE_FILE_FALLBACK[] = "formatEntireFileFallback"; } UncrustifySettings::UncrustifySettings() : @@ -62,8 +64,10 @@ UncrustifySettings::UncrustifySettings() : m_settings.insert(USE_OTHER_FILES, QVariant(true)); m_settings.insert(USE_HOME_FILE, QVariant(false)); m_settings.insert(USE_CUSTOM_STYLE, QVariant(false)); + m_settings.insert(USE_SPECIFIC_CONFIG_FILE_PATH, QVariant(false)); m_settings.insert(CUSTOM_STYLE, QVariant()); m_settings.insert(FORMAT_ENTIRE_FILE_FALLBACK, QVariant(true)); + m_settings.insert(SPECIFIC_CONFIG_FILE_PATH, QVariant()); read(); } @@ -87,6 +91,26 @@ void UncrustifySettings::setUseHomeFile(bool useHomeFile) m_settings.insert(USE_HOME_FILE, QVariant(useHomeFile)); } +Utils::FileName UncrustifySettings::specificConfigFile() const +{ + return Utils::FileName::fromString(m_settings.value(SPECIFIC_CONFIG_FILE_PATH).toString()); +} + +void UncrustifySettings::setSpecificConfigFile(const Utils::FileName &filePath) +{ + m_settings.insert(SPECIFIC_CONFIG_FILE_PATH, QVariant(filePath.toString())); +} + +bool UncrustifySettings::useSpecificConfigFile() const +{ + return m_settings.value(USE_SPECIFIC_CONFIG_FILE_PATH).toBool(); +} + +void UncrustifySettings::setUseSpecificConfigFile(bool useConfigFile) +{ + m_settings.insert(USE_SPECIFIC_CONFIG_FILE_PATH, QVariant(useConfigFile)); +} + bool UncrustifySettings::useCustomStyle() const { return m_settings.value(USE_CUSTOM_STYLE).toBool(); diff --git a/src/plugins/beautifier/uncrustify/uncrustifysettings.h b/src/plugins/beautifier/uncrustify/uncrustifysettings.h index ac811840b6b..8b21db84f93 100644 --- a/src/plugins/beautifier/uncrustify/uncrustifysettings.h +++ b/src/plugins/beautifier/uncrustify/uncrustifysettings.h @@ -26,7 +26,7 @@ #pragma once #include "../abstractsettings.h" - +#include #include namespace Beautifier { @@ -60,6 +60,12 @@ public: void updateVersion() override; + Utils::FileName specificConfigFile() const; + void setSpecificConfigFile(const Utils::FileName &filePath); + + bool useSpecificConfigFile() const; + void setUseSpecificConfigFile(bool useConfigFile); + private: QProcess m_versionProcess; void parseVersionProcessResult(int exitCode, QProcess::ExitStatus exitStatus);