diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index 9bc17e89c24..4bb79366fa0 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -803,11 +803,20 @@ void CMakeBuildStep::updateDeploymentData() // CMakeBuildStepFactory -CMakeBuildStepFactory::CMakeBuildStepFactory() +class CMakeBuildStepFactory final : public BuildStepFactory { - registerStep(Constants::CMAKE_BUILD_STEP_ID); - setDisplayName(Tr::tr("CMake Build", "Display name for CMakeProjectManager::CMakeBuildStep id.")); - setSupportedProjectType(Constants::CMAKE_PROJECT_ID); +public: + CMakeBuildStepFactory() + { + registerStep(Constants::CMAKE_BUILD_STEP_ID); + setDisplayName(Tr::tr("CMake Build", "Display name for CMakeProjectManager::CMakeBuildStep id.")); + setSupportedProjectType(Constants::CMAKE_PROJECT_ID); + } +}; + +void setupCMakeBuildStep() +{ + static CMakeBuildStepFactory theCMakeBuildStepFactory; } } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.h b/src/plugins/cmakeprojectmanager/cmakebuildstep.h index b1606fa8552..0f4abec3595 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.h +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.h @@ -118,10 +118,6 @@ private: std::optional m_configuration; }; -class CMakeBuildStepFactory : public ProjectExplorer::BuildStepFactory -{ -public: - CMakeBuildStepFactory(); -}; +void setupCMakeBuildStep(); } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp index bedc4262c2d..dd4c2b95659 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.cpp @@ -25,14 +25,13 @@ #include #include +#include #include #include #include #include -#include - #include using namespace Core; @@ -501,38 +500,45 @@ void CMakeHoverHandler::operateTooltip(TextEditorWidget *editorWidget, const QPo setToolTip(m_helpToolTip); } -// // CMakeEditorFactory -// -CMakeEditorFactory::CMakeEditorFactory() +class CMakeEditorFactory final : public TextEditorFactory { - setId(Constants::CMAKE_EDITOR_ID); - setDisplayName(::Core::Tr::tr("CMake Editor")); - addMimeType(Utils::Constants::CMAKE_MIMETYPE); - addMimeType(Utils::Constants::CMAKE_PROJECT_MIMETYPE); +public: + CMakeEditorFactory() + { + setId(Constants::CMAKE_EDITOR_ID); + setDisplayName(::Core::Tr::tr("CMake Editor")); + addMimeType(Utils::Constants::CMAKE_MIMETYPE); + addMimeType(Utils::Constants::CMAKE_PROJECT_MIMETYPE); - setEditorCreator([] { return new CMakeEditor; }); - setEditorWidgetCreator([] { return new CMakeEditorWidget; }); - setDocumentCreator(createCMakeDocument); - setIndenterCreator(createCMakeIndenter); - setUseGenericHighlighter(true); - setCommentDefinition(Utils::CommentDefinition::HashStyle); - setCodeFoldingSupported(true); + setEditorCreator([] { return new CMakeEditor; }); + setEditorWidgetCreator([] { return new CMakeEditorWidget; }); + setDocumentCreator(createCMakeDocument); + setIndenterCreator(createCMakeIndenter); + setUseGenericHighlighter(true); + setCommentDefinition(Utils::CommentDefinition::HashStyle); + setCodeFoldingSupported(true); - setCompletionAssistProvider(new CMakeFileCompletionAssistProvider); - setAutoCompleterCreator([] { return new CMakeAutoCompleter; }); + setCompletionAssistProvider(new CMakeFileCompletionAssistProvider); + setAutoCompleterCreator([] { return new CMakeAutoCompleter; }); - setEditorActionHandlers(TextEditorActionHandler::UnCommentSelection - | TextEditorActionHandler::FollowSymbolUnderCursor - | TextEditorActionHandler::Format); + setEditorActionHandlers(TextEditorActionHandler::UnCommentSelection + | TextEditorActionHandler::FollowSymbolUnderCursor + | TextEditorActionHandler::Format); - addHoverHandler(new CMakeHoverHandler); + addHoverHandler(new CMakeHoverHandler); - ActionContainer *contextMenu = ActionManager::createMenu(Constants::M_CONTEXT); - contextMenu->addAction(ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR)); - contextMenu->addSeparator(Context(Constants::CMAKE_EDITOR_ID)); - contextMenu->addAction(ActionManager::command(TextEditor::Constants::UN_COMMENT_SELECTION)); + ActionContainer *contextMenu = ActionManager::createMenu(Constants::M_CONTEXT); + contextMenu->addAction(ActionManager::command(TextEditor::Constants::FOLLOW_SYMBOL_UNDER_CURSOR)); + contextMenu->addSeparator(Context(Constants::CMAKE_EDITOR_ID)); + contextMenu->addAction(ActionManager::command(TextEditor::Constants::UN_COMMENT_SELECTION)); + } +}; + +void setupCMakeEditor() +{ + static CMakeEditorFactory theCMakeEditorFactory; } } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeeditor.h b/src/plugins/cmakeprojectmanager/cmakeeditor.h index 5bf64dff6a1..07e73418cfe 100644 --- a/src/plugins/cmakeprojectmanager/cmakeeditor.h +++ b/src/plugins/cmakeprojectmanager/cmakeeditor.h @@ -3,14 +3,8 @@ #pragma once -#include - namespace CMakeProjectManager::Internal { -class CMakeEditorFactory : public TextEditor::TextEditorFactory -{ -public: - CMakeEditorFactory(); -}; +void setupCMakeEditor(); } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp index e497279fc54..ead1913cabf 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectplugin.cpp @@ -52,11 +52,7 @@ public: Action::AlwaysEnabled/*handled manually*/ }; - CMakeSettingsPage settingsPage; - - CMakeBuildStepFactory buildStepFactory; CMakeBuildConfigurationFactory buildConfigFactory; - CMakeEditorFactory editorFactor; CMakeInstallStepFactory installStepFactory; CMakeBuildTargetFilter cMakeBuildTargetFilter; CMakeOpenTargetFilter cMakeOpenTargetFilter; @@ -78,6 +74,11 @@ class CMakeProjectPlugin final : public ExtensionSystem::IPlugin { setupCMakeToolManager(this); + setupCMakeSettingsPage(); + setupCMakeBuildStep(); + + setupCMakeEditor(); + d = new CMakeProjectPluginPrivate; setupCMakeManager(); diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp index 34f12da7448..010f62836d4 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.cpp @@ -10,6 +10,7 @@ #include #include + #include #include @@ -652,17 +653,24 @@ void CMakeToolConfigWidget::currentCMakeToolChanged(const QModelIndex &newCurren m_makeDefButton->setEnabled(m_currentItem && (!m_model.defaultItemId().isValid() || m_currentItem->m_id != m_model.defaultItemId())); } -// // CMakeSettingsPage -// -CMakeSettingsPage::CMakeSettingsPage() +class CMakeSettingsPage final : public Core::IOptionsPage { - setId(Constants::Settings::TOOLS_ID); - setDisplayName(Tr::tr("Tools")); - setDisplayCategory("CMake"); - setCategory(Constants::Settings::CATEGORY); - setWidgetCreator([] { return new CMakeToolConfigWidget; }); +public: + CMakeSettingsPage() + { + setId(Constants::Settings::TOOLS_ID); + setDisplayName(Tr::tr("Tools")); + setDisplayCategory("CMake"); + setCategory(Constants::Settings::CATEGORY); + setWidgetCreator([] { return new CMakeToolConfigWidget; }); + } +}; + +void setupCMakeSettingsPage() +{ + static CMakeSettingsPage theCMakeSettingsPage; } } // CMakeProjectManager::Internal diff --git a/src/plugins/cmakeprojectmanager/cmakesettingspage.h b/src/plugins/cmakeprojectmanager/cmakesettingspage.h index eec8db16fd0..343bbe0438d 100644 --- a/src/plugins/cmakeprojectmanager/cmakesettingspage.h +++ b/src/plugins/cmakeprojectmanager/cmakesettingspage.h @@ -3,14 +3,8 @@ #pragma once -#include - namespace CMakeProjectManager::Internal { -class CMakeSettingsPage final : public Core::IOptionsPage -{ -public: - CMakeSettingsPage(); -}; +void setupCMakeSettingsPage(); } // CMakeProjectManager::Internal