diff --git a/src/plugins/clangformat/clangformatplugin.cpp b/src/plugins/clangformat/clangformatplugin.cpp index e646bf07592..6140973ab60 100644 --- a/src/plugins/clangformat/clangformatplugin.cpp +++ b/src/plugins/clangformat/clangformatplugin.cpp @@ -75,25 +75,19 @@ namespace ClangFormat { class ClangFormatStyleFactory : public CppEditor::CppCodeStylePreferencesFactory { + Q_DECLARE_TR_FUNCTIONS(ClangFormatStyleFactory) public: - TextEditor::CodeStyleEditorWidget *createCodeStyleEditor( - TextEditor::ICodeStylePreferences *preferences, QWidget *parent) override - { - Q_UNUSED(preferences); - if (!parent) - return new ClangFormatConfigWidget; - return new ClangFormatConfigWidget(SessionManager::startupProject()); - } - - QWidget *createEditor(TextEditor::ICodeStylePreferences *, QWidget *) const override - { - return nullptr; - } - TextEditor::Indenter *createIndenter(QTextDocument *doc) const override { return new ClangFormatIndenter(doc); } + + std::pair additionalTab(QWidget *parent) const override + { + if (!parent) + return {new ClangFormatConfigWidget(), tr("ClangFormat")}; + return {new ClangFormatConfigWidget(SessionManager::startupProject()), tr("ClangFormat")}; + } }; static void replaceCppCodeStyle() diff --git a/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp b/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp index d647234a48e..7228e2be8e9 100644 --- a/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp +++ b/src/plugins/cppeditor/cppcodestylepreferencesfactory.cpp @@ -104,6 +104,12 @@ QWidget *CppCodeStylePreferencesFactory::createEditor(TextEditor::ICodeStylePref if (!cppPreferences) return nullptr; auto widget = new Internal::CppCodeStylePreferencesWidget(parent); + + const auto tab = additionalTab(parent); + if (tab.first) { + widget->addTab(tab.first, tab.second); + } + widget->layout()->setContentsMargins(0, 0, 0, 0); widget->setCodeStyle(cppPreferences); return widget; @@ -124,4 +130,10 @@ QString CppCodeStylePreferencesFactory::previewText() const return QLatin1String(defaultPreviewText); } +std::pair CppCodeStylePreferencesFactory::additionalTab(QWidget *parent) const +{ + Q_UNUSED(parent) + return {nullptr, ""}; +} + } // namespace CppEditor diff --git a/src/plugins/cppeditor/cppcodestylepreferencesfactory.h b/src/plugins/cppeditor/cppcodestylepreferencesfactory.h index 48c93cec681..f7ca14c4a7a 100644 --- a/src/plugins/cppeditor/cppcodestylepreferencesfactory.h +++ b/src/plugins/cppeditor/cppcodestylepreferencesfactory.h @@ -44,6 +44,7 @@ public: TextEditor::Indenter *createIndenter(QTextDocument *doc) const override; QString snippetProviderGroupId() const override; QString previewText() const override; + virtual std::pair additionalTab(QWidget *parent) const; }; } // namespace CppEditor diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.cpp b/src/plugins/cppeditor/cppcodestylesettingspage.cpp index 8cb9712d631..3cf8d08d52e 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.cpp +++ b/src/plugins/cppeditor/cppcodestylesettingspage.cpp @@ -337,6 +337,10 @@ void CppCodeStylePreferencesWidget::setVisualizeWhitespace(bool on) } } +void CppCodeStylePreferencesWidget::addTab(QWidget *page, QString tabName) +{ + m_ui->categoryTab->addTab(page, tabName); +} // ------------------ CppCodeStyleSettingsPage diff --git a/src/plugins/cppeditor/cppcodestylesettingspage.h b/src/plugins/cppeditor/cppcodestylesettingspage.h index 18fbe25f59b..17940c4c725 100644 --- a/src/plugins/cppeditor/cppcodestylesettingspage.h +++ b/src/plugins/cppeditor/cppcodestylesettingspage.h @@ -56,6 +56,7 @@ public: ~CppCodeStylePreferencesWidget() override; void setCodeStyle(CppCodeStylePreferences *codeStylePreferences); + void addTab(QWidget *page, QString tabName); private: void decorateEditors(const TextEditor::FontSettings &fontSettings);