From d4635d438939a7195c81df2d387b553358504e84 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 26 Jan 2024 16:01:31 +0100 Subject: [PATCH] TextEditor: Use new setup pattern for markdown and json editor And remove the now-empty plugin pimpl. Change-Id: Ie00b747a4a41bc6efc84ea43db81a71e8364df3d Reviewed-by: Jarek Kobus --- src/plugins/texteditor/jsoneditor.cpp | 34 +++++++++++++-------- src/plugins/texteditor/jsoneditor.h | 8 +---- src/plugins/texteditor/markdowneditor.cpp | 26 ++++++++++++++++ src/plugins/texteditor/markdowneditor.h | 22 +------------ src/plugins/texteditor/texteditorplugin.cpp | 18 ++--------- 5 files changed, 52 insertions(+), 56 deletions(-) diff --git a/src/plugins/texteditor/jsoneditor.cpp b/src/plugins/texteditor/jsoneditor.cpp index eb0ed132786..d06f215c688 100644 --- a/src/plugins/texteditor/jsoneditor.cpp +++ b/src/plugins/texteditor/jsoneditor.cpp @@ -5,6 +5,7 @@ #include "autocompleter.h" #include "textdocument.h" +#include "texteditor.h" #include "texteditoractionhandler.h" #include "texteditortr.h" #include "textindenter.h" @@ -149,19 +150,28 @@ public: } }; -JsonEditorFactory::JsonEditorFactory() +class JsonEditorFactory final : public TextEditorFactory { - setId(JSON_EDITOR_ID); - setDisplayName(Tr::tr("JSON Editor")); - addMimeType(Utils::Constants::JSON_MIMETYPE); +public: + JsonEditorFactory() + { + setId(JSON_EDITOR_ID); + setDisplayName(Tr::tr("JSON Editor")); + addMimeType(Utils::Constants::JSON_MIMETYPE); - setEditorCreator([] { return new BaseTextEditor; }); - setEditorWidgetCreator([] { return new TextEditorWidget; }); - setDocumentCreator([] { return new TextDocument(JSON_EDITOR_ID); }); - setAutoCompleterCreator([] { return new JsonAutoCompleter; }); - setIndenterCreator([](QTextDocument *doc) { return new JsonIndenter(doc); }); - setEditorActionHandlers(TextEditorActionHandler::Format); - setUseGenericHighlighter(true); + setEditorCreator([] { return new BaseTextEditor; }); + setEditorWidgetCreator([] { return new TextEditorWidget; }); + setDocumentCreator([] { return new TextDocument(JSON_EDITOR_ID); }); + setAutoCompleterCreator([] { return new JsonAutoCompleter; }); + setIndenterCreator([](QTextDocument *doc) { return new JsonIndenter(doc); }); + setEditorActionHandlers(TextEditorActionHandler::Format); + setUseGenericHighlighter(true); + } +}; + +void setupJsonEditor() +{ + static JsonEditorFactory theJsonEditorFactory; } -} // namespace TextEditor::Internal +} // TextEditor::Internal diff --git a/src/plugins/texteditor/jsoneditor.h b/src/plugins/texteditor/jsoneditor.h index d1f783fed70..5c093e2d9bc 100644 --- a/src/plugins/texteditor/jsoneditor.h +++ b/src/plugins/texteditor/jsoneditor.h @@ -3,14 +3,8 @@ #pragma once -#include "texteditor.h" - namespace TextEditor::Internal { -class JsonEditorFactory final : public TextEditorFactory -{ -public: - JsonEditorFactory(); -}; +void setupJsonEditor(); } // TextEditor::Internal diff --git a/src/plugins/texteditor/markdowneditor.cpp b/src/plugins/texteditor/markdowneditor.cpp index 9612b9a001a..a535fab2bcf 100644 --- a/src/plugins/texteditor/markdowneditor.cpp +++ b/src/plugins/texteditor/markdowneditor.cpp @@ -8,13 +8,18 @@ #include "texteditortr.h" #include + #include #include #include +#include #include #include +#include + #include +#include #include #include #include @@ -491,6 +496,22 @@ private: std::optional m_previewRestoreScrollPosition; }; +class MarkdownEditorFactory final : public IEditorFactory +{ +public: + MarkdownEditorFactory(); + +private: + TextEditorActionHandler m_actionHandler; + Action m_emphasisAction; + Action m_strongAction; + Action m_inlineCodeAction; + Action m_linkAction; + Action m_toggleEditorAction; + Action m_togglePreviewAction; + Action m_swapAction; +}; + MarkdownEditorFactory::MarkdownEditorFactory() : m_actionHandler(MARKDOWNVIEWER_ID, MARKDOWNVIEWER_TEXT_CONTEXT, @@ -663,6 +684,11 @@ void MarkdownEditorWidget::findLinkAt(const QTextCursor &cursor, } } +void setupMarkdownEditor() +{ + static MarkdownEditorFactory theMarkdownEditorFactory; +} + } // namespace TextEditor::Internal #include "markdowneditor.moc" diff --git a/src/plugins/texteditor/markdowneditor.h b/src/plugins/texteditor/markdowneditor.h index fe37e7a6265..52f50a5936c 100644 --- a/src/plugins/texteditor/markdowneditor.h +++ b/src/plugins/texteditor/markdowneditor.h @@ -3,28 +3,8 @@ #pragma once -#include - -#include - -#include - namespace TextEditor::Internal { -class MarkdownEditorFactory final : public Core::IEditorFactory -{ -public: - MarkdownEditorFactory(); - -private: - TextEditor::TextEditorActionHandler m_actionHandler; - Utils::Action m_emphasisAction; - Utils::Action m_strongAction; - Utils::Action m_inlineCodeAction; - Utils::Action m_linkAction; - Utils::Action m_toggleEditorAction; - Utils::Action m_togglePreviewAction; - Utils::Action m_swapAction; -}; +void setupMarkdownEditor(); } // TextEditor::Internal diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index 1d5dafd53d3..3bbabc313ab 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -64,25 +64,12 @@ const char kCurrentDocumentColumnCount[] = "CurrentDocument:ColumnCount"; const char kCurrentDocumentFontSize[] = "CurrentDocument:FontSize"; const char kCurrentDocumentWordUnderCursor[] = "CurrentDocument:WordUnderCursor"; -class TextEditorPluginPrivate : public QObject -{ -public: - MarkdownEditorFactory markdownEditorFactory; - JsonEditorFactory jsonEditorFactory; -}; - class TextEditorPlugin final : public ExtensionSystem::IPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "TextEditor.json") public: - ~TextEditorPlugin() final - { - delete d; - d = nullptr; - } - ShutdownFlag aboutToShutdown() final; void initialize() final; @@ -93,8 +80,6 @@ public: void updateCurrentSelection(const QString &text); void createStandardContextMenu(); - - TextEditorPluginPrivate *d = nullptr; }; void TextEditorPlugin::initialize() @@ -122,7 +107,8 @@ void TextEditorPlugin::initialize() setupFindInCurrentFile(); setupFindInOpenFiles(); - d = new TextEditorPluginPrivate; + setupMarkdownEditor(); + setupJsonEditor(); Context context(TextEditor::Constants::C_TEXTEDITOR);