diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp index cc5b3083a09..cba028342e7 100644 --- a/src/plugins/clangformat/clangformatconfigwidget.cpp +++ b/src/plugins/clangformat/clangformatconfigwidget.cpp @@ -49,7 +49,7 @@ using namespace Utils; namespace ClangFormat { -class ClangFormatConfigWidget final : public CppEditor::CppCodeStyleWidget +class ClangFormatConfigWidget final : public TextEditor::CodeStyleEditorWidget { public: ClangFormatConfigWidget(TextEditor::ICodeStylePreferences *codeStyle, @@ -57,9 +57,6 @@ public: QWidget *parent); void apply() final; void finish() final; - void setCodeStyleSettings(const CppEditor::CppCodeStyleSettings &settings) final; - void setTabSettings(const TextEditor::TabSettings &settings) final; - void synchronize() final; private: bool eventFilter(QObject *object, QEvent *event) final; @@ -103,7 +100,7 @@ bool ClangFormatConfigWidget::eventFilter(QObject *object, QEvent *event) ClangFormatConfigWidget::ClangFormatConfigWidget(TextEditor::ICodeStylePreferences *codeStyle, Project *project, QWidget *parent) - : CppCodeStyleWidget(parent) + : CodeStyleEditorWidget(parent) { m_project = project; m_config = std::make_unique(codeStyle->currentPreferences()); @@ -115,7 +112,7 @@ ClangFormatConfigWidget::ClangFormatConfigWidget(TextEditor::ICodeStylePreferenc m_checksScrollArea->setWidget(m_checksWidget); m_checksScrollArea->setWidgetResizable(true); m_checksWidget->setEnabled(!codeStyle->isReadOnly() && !codeStyle->isTemporarilyReadOnly() - && !codeStyle->isAdditionalTabDisabled()); + && codeStyle->isAdditionalTabVisible()); static const int expectedMajorVersion = 17; @@ -189,7 +186,7 @@ void ClangFormatConfigWidget::slotCodeStyleChanged( m_style = m_config->style(); m_checksWidget->setEnabled(!codeStyle->isReadOnly() && !codeStyle->isTemporarilyReadOnly() - && !codeStyle->isAdditionalTabDisabled()); + && codeStyle->isAdditionalTabVisible()); fillTable(); updatePreview(); @@ -479,29 +476,6 @@ void ClangFormatConfigWidget::saveChanges(QObject *sender) fillTable(); updatePreview(); - synchronize(); -} - -void ClangFormatConfigWidget::setCodeStyleSettings(const CppEditor::CppCodeStyleSettings &settings) -{ - m_config->fromCppCodeStyleSettings(settings); - - fillTable(); - updatePreview(); -} - -void ClangFormatConfigWidget::setTabSettings(const TextEditor::TabSettings &settings) -{ - m_config->fromTabSettings(settings); - - fillTable(); - updatePreview(); -} - -void ClangFormatConfigWidget::synchronize() -{ - emit codeStyleSettingsChanged(m_config->toCppCodeStyleSettings(m_project)); - emit tabSettingsChanged(m_config->toTabSettings(m_project)); } void ClangFormatConfigWidget::apply() @@ -520,7 +494,7 @@ void ClangFormatConfigWidget::finish() m_config->setStyle(m_style); } -CppEditor::CppCodeStyleWidget *createClangFormatConfigWidget( +TextEditor::CodeStyleEditorWidget *createClangFormatConfigWidget( TextEditor::ICodeStylePreferences *codeStyle, Project *project, QWidget *parent) diff --git a/src/plugins/clangformat/clangformatconfigwidget.h b/src/plugins/clangformat/clangformatconfigwidget.h index 3e8334dea91..5a7860caba7 100644 --- a/src/plugins/clangformat/clangformatconfigwidget.h +++ b/src/plugins/clangformat/clangformatconfigwidget.h @@ -9,13 +9,16 @@ QT_BEGIN_NAMESPACE class QWidget; QT_END_NAMESPACE -namespace CppEditor { class CppCodeStyleWidget; } -namespace TextEditor { class ICodeStylePreferences; } +namespace TextEditor { +class ICodeStylePreferences; +class CodeStyleEditorWidget; +} // namespace TextEditor + namespace ProjectExplorer { class Project; } namespace ClangFormat { -CppEditor::CppCodeStyleWidget *createClangFormatConfigWidget( +TextEditor::CodeStyleEditorWidget *createClangFormatConfigWidget( TextEditor::ICodeStylePreferences *codeStyle, ProjectExplorer::Project *project, QWidget *parent); diff --git a/src/plugins/clangformat/clangformatfile.cpp b/src/plugins/clangformat/clangformatfile.cpp index 395b7ba53b4..700d18f711f 100644 --- a/src/plugins/clangformat/clangformatfile.cpp +++ b/src/plugins/clangformat/clangformatfile.cpp @@ -129,93 +129,3 @@ void ClangFormatFile::saveStyleToFile(clang::format::FormatStyle style, Utils::F styleStr.append("\n"); filePath.writeFileContents(QByteArray::fromStdString(styleStr)); } - -CppEditor::CppCodeStyleSettings ClangFormatFile::toCppCodeStyleSettings( - ProjectExplorer::Project *project) const -{ - using namespace clang::format; - auto settings = CppEditor::CppCodeStyleSettings::getProjectCodeStyle(project); - - FormatStyle style; - bool success = parseConfigurationFile(m_filePath, style); - QTC_ASSERT(success, return settings); - - // Modifier offset should be opposite to indent width in order indentAccessSpecifiers - // to be false - settings.indentAccessSpecifiers = (style.AccessModifierOffset != -1 * int(style.IndentWidth)); - - if (style.NamespaceIndentation == FormatStyle::NamespaceIndentationKind::NI_All) { - settings.indentNamespaceBody = true; - settings.indentNamespaceBraces = settings.indentNamespaceBody; - } - - if (style.BreakBeforeBraces == FormatStyle::BS_Whitesmiths) { - settings.indentClassBraces = true; - settings.indentEnumBraces = settings.indentClassBraces; - settings.indentBlockBraces = settings.indentClassBraces; - settings.indentFunctionBraces = settings.indentClassBraces; - } - - settings.indentSwitchLabels = style.IndentCaseLabels; -#if LLVM_VERSION_MAJOR >= 11 - settings.indentBlocksRelativeToSwitchLabels = style.IndentCaseBlocks; -#endif - if (style.DerivePointerAlignment - && ClangFormatSettings::instance().mode() == ClangFormatSettings::Mode::Formatting) { - settings.bindStarToIdentifier = style.PointerAlignment == FormatStyle::PAS_Right; - settings.bindStarToTypeName = style.PointerAlignment == FormatStyle::PAS_Left; - settings.bindStarToLeftSpecifier = style.PointerAlignment == FormatStyle::PAS_Left; - settings.bindStarToRightSpecifier = style.PointerAlignment == FormatStyle::PAS_Right; - } - - settings.extraPaddingForConditionsIfConfusingAlign = style.BreakBeforeBinaryOperators - == FormatStyle::BOS_All; - settings.alignAssignments = style.BreakBeforeBinaryOperators == FormatStyle::BOS_All - || style.BreakBeforeBinaryOperators - == FormatStyle::BOS_NonAssignment; - - return settings; -} - -void ClangFormatFile::fromCppCodeStyleSettings(const CppEditor::CppCodeStyleSettings &settings) -{ - ::fromCppCodeStyleSettings(m_style, settings); - saveNewFormat(); -} - -TextEditor::TabSettings ClangFormatFile::toTabSettings(ProjectExplorer::Project *project) const -{ - using namespace clang::format; - auto settings = CppEditor::CppCodeStyleSettings::getProjectTabSettings(project); - - FormatStyle style; - bool success = parseConfigurationFile(m_filePath, style); - QTC_ASSERT(success, return settings); - - settings.m_indentSize = style.IndentWidth; - settings.m_tabSize = style.TabWidth; - - switch (style.UseTab) { -#if LLVM_VERSION_MAJOR >= 11 - case FormatStyle::UT_AlignWithSpaces: -#endif - case FormatStyle::UT_ForIndentation: - case FormatStyle::UT_ForContinuationAndIndentation: - settings.m_tabPolicy = TextEditor::TabSettings::TabPolicy::MixedTabPolicy; - break; - case FormatStyle::UT_Never: - settings.m_tabPolicy = TextEditor::TabSettings::TabPolicy::SpacesOnlyTabPolicy; - break; - case FormatStyle::UT_Always: - settings.m_tabPolicy = TextEditor::TabSettings::TabPolicy::TabsOnlyTabPolicy; - break; - } - - return settings; -} - -void ClangFormatFile::fromTabSettings(const TextEditor::TabSettings &settings) -{ - ::fromTabSettings(m_style, settings); - saveNewFormat(); -} diff --git a/src/plugins/clangformat/clangformatfile.h b/src/plugins/clangformat/clangformatfile.h index ad32952b0f0..547f1f6ab2d 100644 --- a/src/plugins/clangformat/clangformatfile.h +++ b/src/plugins/clangformat/clangformatfile.h @@ -32,10 +32,6 @@ public: using Field = std::pair; QString changeFields(QList fields); QString changeField(Field field); - CppEditor::CppCodeStyleSettings toCppCodeStyleSettings(ProjectExplorer::Project *project) const; - TextEditor::TabSettings toTabSettings(ProjectExplorer::Project *project) const; - void fromCppCodeStyleSettings(const CppEditor::CppCodeStyleSettings &settings); - void fromTabSettings(const TextEditor::TabSettings &settings); bool isReadOnly() const; void setIsReadOnly(bool isReadOnly); diff --git a/src/plugins/clangformat/clangformatglobalconfigwidget.cpp b/src/plugins/clangformat/clangformatglobalconfigwidget.cpp index 75fa1f91cd8..ac1cae84742 100644 --- a/src/plugins/clangformat/clangformatglobalconfigwidget.cpp +++ b/src/plugins/clangformat/clangformatglobalconfigwidget.cpp @@ -27,7 +27,7 @@ namespace ClangFormat { ClangFormatGlobalConfigWidget::ClangFormatGlobalConfigWidget( TextEditor::ICodeStylePreferences *codeStyle, ProjectExplorer::Project *project, QWidget *parent) - : CppCodeStyleWidget(parent) + : TextEditor::CodeStyleEditorWidget(parent) , m_project(project) , m_codeStyle(codeStyle) { @@ -122,7 +122,7 @@ void ClangFormatGlobalConfigWidget::initIndentationOrFormattingCombobox() m_indentingOrFormatting->insertItem(static_cast(ClangFormatSettings::Mode::Formatting), Tr::tr("Full formatting")); m_indentingOrFormatting->insertItem(static_cast(ClangFormatSettings::Mode::Disable), - Tr::tr("Disable")); + Tr::tr("Use built-in indenter")); m_indentingOrFormatting->setCurrentIndex( static_cast(getProjectIndentationOrFormattingSettings(m_project))); @@ -226,8 +226,10 @@ void ClangFormatGlobalConfigWidget::initCustomSettingsCheckBox() if (m_ignoreChanges.isLocked()) return; Utils::GuardLocker locker(m_ignoreChanges); - m_codeStyle->currentPreferences()->setTemporarilyReadOnly(!m_useCustomSettingsCheckBox->isChecked()); - m_codeStyle->currentPreferences()->setIsAdditionalTabDisabled(!m_useCustomSettingsCheckBox->isEnabled()); + m_codeStyle->currentPreferences()->setTemporarilyReadOnly( + !m_useCustomSettingsCheckBox->isChecked()); + m_codeStyle->currentPreferences()->setIsAdditionalTabVisible( + m_useCustomSettingsCheckBox->isEnabled()); ClangFormatSettings::instance().write(); emit m_codeStyle->currentPreferencesChanged(m_codeStyle->currentPreferences()); }; diff --git a/src/plugins/clangformat/clangformatglobalconfigwidget.h b/src/plugins/clangformat/clangformatglobalconfigwidget.h index f2d16113881..e4ba4653349 100644 --- a/src/plugins/clangformat/clangformatglobalconfigwidget.h +++ b/src/plugins/clangformat/clangformatglobalconfigwidget.h @@ -15,11 +15,14 @@ class QSpinBox; QT_END_NAMESPACE namespace ProjectExplorer { class Project; } -namespace TextEditor { class ICodeStylePreferences; } +namespace TextEditor { +class ICodeStylePreferences; +class CodeStyleEditorWidget; +} // namespace TextEditor namespace ClangFormat { -class ClangFormatGlobalConfigWidget : public CppEditor::CppCodeStyleWidget +class ClangFormatGlobalConfigWidget : public TextEditor::CodeStyleEditorWidget { Q_OBJECT diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp index c0eefa624a1..5d34be67200 100644 --- a/src/plugins/clangformat/clangformatplugin.cpp +++ b/src/plugins/clangformat/clangformatplugin.cpp @@ -44,7 +44,7 @@ public: return new ClangFormatForwardingIndenter(doc); } - std::pair additionalTab( + std::pair additionalTab( ICodeStylePreferences *codeStyle, Project *project, QWidget *parent) const override { return {createClangFormatConfigWidget(codeStyle, project, parent), Tr::tr("ClangFormat")}; diff --git a/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp b/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp index f712b9b48cb..a24c5c26c91 100644 --- a/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp +++ b/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp @@ -110,7 +110,7 @@ QString CppCodeStylePreferencesFactory::previewText() const return QLatin1String(defaultPreviewText); } -std::pair CppCodeStylePreferencesFactory::additionalTab( +std::pair CppCodeStylePreferencesFactory::additionalTab( TextEditor::ICodeStylePreferences *codeStyle, ProjectExplorer::Project *project, QWidget *parent) const diff --git a/src/plugins/cppeditor/cppcodestylepreferencesfactory.h b/src/plugins/cppeditor/cppcodestylepreferencesfactory.h index 4120bb8dad2..a54ac689b45 100644 --- a/src/plugins/cppeditor/cppcodestylepreferencesfactory.h +++ b/src/plugins/cppeditor/cppcodestylepreferencesfactory.h @@ -9,9 +9,8 @@ namespace CppEditor { -class CppCodeStyleWidget; - -class CPPEDITOR_EXPORT CppCodeStylePreferencesFactory : public TextEditor::ICodeStylePreferencesFactory +class CPPEDITOR_EXPORT CppCodeStylePreferencesFactory + : public TextEditor::ICodeStylePreferencesFactory { public: CppCodeStylePreferencesFactory(); @@ -25,7 +24,7 @@ public: TextEditor::Indenter *createIndenter(QTextDocument *doc) const override; QString snippetProviderGroupId() const override; QString previewText() const override; - virtual std::pair additionalTab( + virtual std::pair additionalTab( TextEditor::ICodeStylePreferences *codeStyle, ProjectExplorer::Project *project, QWidget *parent) const; diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.cpp b/src/plugins/cppeditor/cppcodestylesettingspage.cpp index cea4e5c0bc4..65abc1da5ea 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.cpp +++ b/src/plugins/cppeditor/cppcodestylesettingspage.cpp @@ -427,7 +427,12 @@ void CppCodeStylePreferencesWidget::setCodeStyleSettings(const CppCodeStyleSetti void CppCodeStylePreferencesWidget::slotCurrentPreferencesChanged(ICodeStylePreferences *preferences, bool preview) { const bool enable = !preferences->isReadOnly() && (!preferences->isTemporarilyReadOnly() - || preferences->isAdditionalTabDisabled()); + || !preferences->isAdditionalTabVisible()); + + d->m_categoryTab->setTabVisible(0, preferences->isAdditionalTabVisible()); + for (int i = 1; i < d->m_categoryTab->count(); ++i) + d->m_categoryTab->setTabVisible(i, !preferences->isAdditionalTabVisible()); + for (QWidget *widget : d->m_controllers) widget->setEnabled(enable); @@ -510,7 +515,7 @@ void CppCodeStylePreferencesWidget::setVisualizeWhitespace(bool on) } } -void CppCodeStylePreferencesWidget::addTab(CppCodeStyleWidget *page, QString tabName) +void CppCodeStylePreferencesWidget::addTab(TextEditor::CodeStyleEditorWidget *page, QString tabName) { if (!page) return; @@ -518,27 +523,13 @@ void CppCodeStylePreferencesWidget::addTab(CppCodeStyleWidget *page, QString tab d->m_categoryTab->insertTab(0, page, tabName); d->m_categoryTab->setCurrentIndex(0); - connect(page, &CppEditor::CppCodeStyleWidget::codeStyleSettingsChanged, - this, [this](const CppEditor::CppCodeStyleSettings &settings) { - setCodeStyleSettings(settings, true); - }); - - connect(page, &CppEditor::CppCodeStyleWidget::tabSettingsChanged, - this, &CppCodeStylePreferencesWidget::setTabSettings); - - connect(this, &CppCodeStylePreferencesWidget::codeStyleSettingsChanged, - page, &CppCodeStyleWidget::setCodeStyleSettings); - - connect(this, &CppCodeStylePreferencesWidget::tabSettingsChanged, - page, &CppCodeStyleWidget::setTabSettings); - connect(this, &CppCodeStylePreferencesWidget::applyEmitted, - page, &CppCodeStyleWidget::apply); + page, &TextEditor::CodeStyleEditorWidget::apply); connect(this, &CppCodeStylePreferencesWidget::finishEmitted, - page, &CppCodeStyleWidget::finish); + page, &TextEditor::CodeStyleEditorWidget::finish); - page->synchronize(); + slotCurrentPreferencesChanged(m_preferences->currentPreferences(), false); } void CppCodeStylePreferencesWidget::apply() diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.h b/src/plugins/cppeditor/cppcodestylesettingspage.h index 666b3ab4a29..be3fb4af48a 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.h +++ b/src/plugins/cppeditor/cppcodestylesettingspage.h @@ -22,23 +22,6 @@ namespace TextEditor { namespace CppEditor { class CppCodeStylePreferences; -class CPPEDITOR_EXPORT CppCodeStyleWidget : public TextEditor::CodeStyleEditorWidget -{ - Q_OBJECT -public: - CppCodeStyleWidget(QWidget *parent = nullptr) - : CodeStyleEditorWidget(parent) - {} - - virtual void setCodeStyleSettings(const CppEditor::CppCodeStyleSettings &) {} - virtual void setTabSettings(const TextEditor::TabSettings &) {} - virtual void synchronize() {} - -signals: - void codeStyleSettingsChanged(const CppEditor::CppCodeStyleSettings &); - void tabSettingsChanged(const TextEditor::TabSettings &); -}; - namespace Internal { class CppCodeStylePreferencesWidgetPrivate; @@ -51,7 +34,7 @@ public: ~CppCodeStylePreferencesWidget() override; void setCodeStyle(CppCodeStylePreferences *codeStylePreferences); - void addTab(CppCodeStyleWidget *page, QString tabName); + void addTab(TextEditor::CodeStyleEditorWidget *page, QString tabName); void apply() override; void finish() override; diff --git a/src/plugins/texteditor/icodestylepreferences.cpp b/src/plugins/texteditor/icodestylepreferences.cpp index 864c3a777ea..d7547d430ea 100644 --- a/src/plugins/texteditor/icodestylepreferences.cpp +++ b/src/plugins/texteditor/icodestylepreferences.cpp @@ -24,7 +24,7 @@ public: QString m_displayName; bool m_readOnly = false; bool m_temporarilyReadOnly = false; - bool m_isAdditionalTabDisabled = false; + bool m_isAdditionalTabVisible = false; Key m_settingsSuffix; }; @@ -82,14 +82,14 @@ bool ICodeStylePreferences::isTemporarilyReadOnly() const return d->m_temporarilyReadOnly; } -bool ICodeStylePreferences::isAdditionalTabDisabled() const +bool ICodeStylePreferences::isAdditionalTabVisible() const { - return d->m_isAdditionalTabDisabled; + return d->m_isAdditionalTabVisible; } -void ICodeStylePreferences::setIsAdditionalTabDisabled(bool on) +void ICodeStylePreferences::setIsAdditionalTabVisible(bool on) { - d->m_isAdditionalTabDisabled = on; + d->m_isAdditionalTabVisible = on; } void ICodeStylePreferences::setTabSettings(const TabSettings &settings) diff --git a/src/plugins/texteditor/icodestylepreferences.h b/src/plugins/texteditor/icodestylepreferences.h index 450941997f8..7239411b5c4 100644 --- a/src/plugins/texteditor/icodestylepreferences.h +++ b/src/plugins/texteditor/icodestylepreferences.h @@ -41,8 +41,8 @@ public: bool isTemporarilyReadOnly() const; void setTemporarilyReadOnly(bool on); - bool isAdditionalTabDisabled() const; - void setIsAdditionalTabDisabled(bool on); + bool isAdditionalTabVisible() const; + void setIsAdditionalTabVisible(bool on); void setTabSettings(const TabSettings &settings); TabSettings tabSettings() const;