diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt index 4f224e73482..8c4f2e2bb68 100644 --- a/src/plugins/CMakeLists.txt +++ b/src/plugins/CMakeLists.txt @@ -6,7 +6,6 @@ add_subdirectory(texteditor) add_subdirectory(serialterminal) add_subdirectory(helloworld) add_subdirectory(imageviewer) -add_subdirectory(markdownviewer) add_subdirectory(marketplace) add_subdirectory(updateinfo) add_subdirectory(welcome) diff --git a/src/plugins/markdownviewer/CMakeLists.txt b/src/plugins/markdownviewer/CMakeLists.txt deleted file mode 100644 index c7f9d507857..00000000000 --- a/src/plugins/markdownviewer/CMakeLists.txt +++ /dev/null @@ -1,12 +0,0 @@ -add_qtc_plugin(MarkdownViewer - PLUGIN_DEPENDS Core TextEditor - SOURCES - markdownbrowser.cpp markdownbrowser.h - markdowndocument.cpp markdowndocument.h - markdowneditor.cpp markdowneditor.h - markdownviewer.cpp markdownviewer.h - markdownviewerconstants.h - markdownviewerfactory.cpp markdownviewerfactory.h - markdownviewerplugin.cpp markdownviewerplugin.h - markdownviewerwidget.cpp markdownviewerwidget.h -) diff --git a/src/plugins/markdownviewer/MarkdownViewer.json.in b/src/plugins/markdownviewer/MarkdownViewer.json.in deleted file mode 100644 index 4894a4bb8ba..00000000000 --- a/src/plugins/markdownviewer/MarkdownViewer.json.in +++ /dev/null @@ -1,18 +0,0 @@ -{ - \"Name\" : \"MarkdownViewer\", - \"Version\" : \"$$QTCREATOR_VERSION\", - \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\", - \"Vendor\" : \"Signal Slot Inc.\", - \"Copyright\" : \"(C) 2023 Tasuku Suzuki\", - \"License\" : [ \"Commercial Usage\", - \"\", - \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt Commercial License Agreement provided with the Software or, alternatively, in accordance with the terms contained in a written agreement between you and The Qt Company.\", - \"\", - \"GNU General Public License Usage\", - \"\", - \"Alternatively, this plugin may be used under the terms of the GNU General Public License version 3 as published by the Free Software Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT included in the packaging of this plugin. Please review the following information to ensure the GNU General Public License requirements will be met: https://www.gnu.org/licenses/gpl-3.0.html.\" - ], - \"Description\" : \"Markdown Viewer component.\", - \"Url\" : \"https://signal-slot.co.jp/\", - $$dependencyList -} diff --git a/src/plugins/markdownviewer/markdownbrowser.cpp b/src/plugins/markdownviewer/markdownbrowser.cpp deleted file mode 100644 index 43f10e27ada..00000000000 --- a/src/plugins/markdownviewer/markdownbrowser.cpp +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdownbrowser.h" - -#include - -namespace Markdown { -namespace Internal { - -MarkdownBrowser::MarkdownBrowser(QWidget *parent) - : QTextBrowser(parent) -{} - -void MarkdownBrowser::setMarkdown(const QString &markdown) -{ - QHash positions; - const auto scrollBars = findChildren(); - - // save scroll positions - for (const auto scrollBar : scrollBars) - positions.insert(scrollBar, scrollBar->value()); - - QTextBrowser::setMarkdown(markdown); - - // restore scroll positions - for (auto scrollBar : scrollBars) - scrollBar->setValue(positions.value(scrollBar)); -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownbrowser.h b/src/plugins/markdownviewer/markdownbrowser.h deleted file mode 100644 index 6b71dcc533f..00000000000 --- a/src/plugins/markdownviewer/markdownbrowser.h +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace Core { class IDocument; } - -namespace Markdown { -namespace Internal { - -class MarkdownBrowser : public QTextBrowser -{ - Q_OBJECT -public: - explicit MarkdownBrowser(QWidget *parent = nullptr); - -public slots: - void setMarkdown(const QString &markdown); -}; - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdowndocument.cpp b/src/plugins/markdownviewer/markdowndocument.cpp deleted file mode 100644 index 20e5334b1b7..00000000000 --- a/src/plugins/markdownviewer/markdowndocument.cpp +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdowndocument.h" -#include "markdownviewerconstants.h" - -namespace Markdown { -namespace Internal { - -MarkdownDocument::MarkdownDocument() -{ - setId(Constants::MARKDOWNVIEWER_ID); - setMimeType(QLatin1String(Constants::MARKDOWNVIEWER_MIME_TYPE)); - connect(this, &MarkdownDocument::mimeTypeChanged, this, &MarkdownDocument::changed); -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdowndocument.h b/src/plugins/markdownviewer/markdowndocument.h deleted file mode 100644 index 76a2bd8136b..00000000000 --- a/src/plugins/markdownviewer/markdowndocument.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace Markdown { -namespace Internal { - -class MarkdownDocument : public TextEditor::TextDocument -{ - Q_OBJECT -public: - MarkdownDocument(); -}; - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdowneditor.cpp b/src/plugins/markdownviewer/markdowneditor.cpp deleted file mode 100644 index f908add50e6..00000000000 --- a/src/plugins/markdownviewer/markdowneditor.cpp +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdowneditor.h" -#include "markdownviewerconstants.h" -#include "markdowndocument.h" - -#include -#include - -namespace Markdown { -namespace Internal { - -MarkdownEditor::MarkdownEditor(QWidget *parent) - : TextEditor::TextEditorWidget(parent) -{ - setTextDocument(TextEditor::TextDocumentPtr(new MarkdownDocument)); - setupGenericHighlighter(); - setMarksVisible(false); - - auto context = new Core::IContext(this); - context->setWidget(this); - context->setContext(Core::Context(Constants::MARKDOWNVIEWER_EDITOR_CONTEXT)); - Core::ICore::addContextObject(context); -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdowneditor.h b/src/plugins/markdownviewer/markdowneditor.h deleted file mode 100644 index f378309a6b7..00000000000 --- a/src/plugins/markdownviewer/markdowneditor.h +++ /dev/null @@ -1,19 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace Markdown { -namespace Internal { - -class MarkdownEditor : public TextEditor::TextEditorWidget -{ - Q_OBJECT -public: - MarkdownEditor(QWidget *parent = nullptr); -}; - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewer.cpp b/src/plugins/markdownviewer/markdownviewer.cpp deleted file mode 100644 index b3e21ce40fa..00000000000 --- a/src/plugins/markdownviewer/markdownviewer.cpp +++ /dev/null @@ -1,86 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdownviewer.h" -#include "markdownviewerconstants.h" -#include "markdownviewerwidget.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -namespace Markdown { -namespace Internal { - -struct MarkdownViewerPrivate -{ - MarkdownViewerWidget *widget; - QWidget *toolbar; - QToolButton *toggleEditorVisible; -}; - -MarkdownViewer::MarkdownViewer() - : d(new MarkdownViewerPrivate) -{ - ctor(); -} - -void MarkdownViewer::ctor() -{ - d->widget = new MarkdownViewerWidget; - - setContext(Core::Context(Constants::MARKDOWNVIEWER_ID)); - setWidget(d->widget); - - d->toolbar = new QWidget; - auto layout = new QHBoxLayout; - layout->setSpacing(0); - layout->setContentsMargins(0, 0, 0, 0); - layout->addStretch(); - - d->toggleEditorVisible = new QToolButton; - d->toggleEditorVisible->setText(tr("Hide Editor")); - d->toggleEditorVisible->setCheckable(true); - d->toggleEditorVisible->setChecked(true); - layout->addWidget(d->toggleEditorVisible); - - d->toolbar->setLayout(layout); - - // connections - connect(d->toggleEditorVisible, &QToolButton::toggled, d->widget, &MarkdownViewerWidget::setEditorVisible); - connect(d->widget, &MarkdownViewerWidget::editorVisibleChanged, this, [this](bool editorVisible) { - d->toggleEditorVisible->setText(editorVisible ? tr("Hide Editor") : tr("Show Editor")); - }); -} - -MarkdownViewer::~MarkdownViewer() -{ - delete d->widget; - delete d->toolbar; - delete d; -} - -Core::IDocument *MarkdownViewer::document() const -{ - return d->widget->document(); -} - -QWidget *MarkdownViewer::toolBar() -{ - return d->toolbar; -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewer.h b/src/plugins/markdownviewer/markdownviewer.h deleted file mode 100644 index a29089a1e3f..00000000000 --- a/src/plugins/markdownviewer/markdownviewer.h +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include -#include - -namespace Markdown { -namespace Internal { -class MarkdownDocument; - -class MarkdownViewer : public Core::IEditor -{ - Q_OBJECT -public: - explicit MarkdownViewer(); - ~MarkdownViewer() override; - - Core::IDocument *document() const override; - QWidget *toolBar() override; - -private: - void ctor(); - - struct MarkdownViewerPrivate *d; -}; - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewer.qbs b/src/plugins/markdownviewer/markdownviewer.qbs deleted file mode 100644 index 1a5bdbb7cd1..00000000000 --- a/src/plugins/markdownviewer/markdownviewer.qbs +++ /dev/null @@ -1,27 +0,0 @@ -import qbs 1.0 - -QtcPlugin { - name: "MarkdownViewer" - - Depends { name: "Qt.widgets" } - Depends { name: "Core" } - Depends { name: "TextEditor" } - - files: [ - "markdownbrowser.cpp", - "markdownbrowser.h", - "markdowndocument.cpp", - "markdowndocument.h", - "markdowneditor.cpp", - "markdowneditor.h", - "markdownviewer.cpp", - "markdownviewer.h", - "markdownviewerconstants.h", - "markdownviewerfactory.cpp", - "markdownviewerfactory.h", - "markdownviewerplugin.cpp", - "markdownviewerplugin.h", - "markdownviewerwidget.cpp", - "markdownviewerwidget.h", - ] -} diff --git a/src/plugins/markdownviewer/markdownviewerconstants.h b/src/plugins/markdownviewer/markdownviewerconstants.h deleted file mode 100644 index 45111743912..00000000000 --- a/src/plugins/markdownviewer/markdownviewerconstants.h +++ /dev/null @@ -1,17 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace Markdown { -namespace Constants { - -const char MARKDOWNVIEWER_ID[] = "Editors.MarkdownViewer"; -const char MARKDOWNVIEWER_DISPLAY_NAME[] = QT_TRANSLATE_NOOP("OpenWith::Editors", "Markdown Viewer"); -const char MARKDOWNVIEWER_MIME_TYPE[] = "text/markdown"; -const char MARKDOWNVIEWER_EDITOR_CONTEXT[] = "Editors.MarkdownViewer.Id"; - -} // namespace Constants -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewerfactory.cpp b/src/plugins/markdownviewer/markdownviewerfactory.cpp deleted file mode 100644 index 0e157b2ce6a..00000000000 --- a/src/plugins/markdownviewer/markdownviewerfactory.cpp +++ /dev/null @@ -1,22 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdownviewerfactory.h" -#include "markdownviewerconstants.h" -#include "markdownviewer.h" - -#include - -namespace Markdown { -namespace Internal { - -MarkdownViewerFactory::MarkdownViewerFactory() -{ - setId(Constants::MARKDOWNVIEWER_ID); - setDisplayName(QCoreApplication::translate("OpenWith::Editors", Constants::MARKDOWNVIEWER_DISPLAY_NAME)); - addMimeType(Constants::MARKDOWNVIEWER_MIME_TYPE); - setEditorCreator([] { return new MarkdownViewer(); }); -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewerplugin.cpp b/src/plugins/markdownviewer/markdownviewerplugin.cpp deleted file mode 100644 index db2c4965b31..00000000000 --- a/src/plugins/markdownviewer/markdownviewerplugin.cpp +++ /dev/null @@ -1,25 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdownviewerplugin.h" -#include "markdownviewerfactory.h" - -#include - -using namespace Core; - -namespace Markdown { -namespace Internal { - -bool MarkdownViewerPlugin::initialize(const QStringList &arguments, QString *errorMessage) -{ - Q_UNUSED(arguments) - Q_UNUSED(errorMessage) - - ExtensionSystem::PluginManager::addObject(new MarkdownViewerFactory); - - return true; -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewerplugin.h b/src/plugins/markdownviewer/markdownviewerplugin.h deleted file mode 100644 index f5d0305b0cd..00000000000 --- a/src/plugins/markdownviewer/markdownviewerplugin.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include - -namespace Markdown { -namespace Internal { - -class MarkdownViewerPlugin : public ExtensionSystem::IPlugin -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "MarkdownViewer.json") - -public: - MarkdownViewerPlugin() = default; - ~MarkdownViewerPlugin() = default; - -private: - bool initialize(const QStringList &arguments, QString *errorMessage) final; - void extensionsInitialized() final {} -}; - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewerwidget.cpp b/src/plugins/markdownviewer/markdownviewerwidget.cpp deleted file mode 100644 index 8148be75908..00000000000 --- a/src/plugins/markdownviewer/markdownviewerwidget.cpp +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#include "markdownviewerwidget.h" -#include "markdowneditor.h" -#include "markdownbrowser.h" - -#include - -namespace Markdown { -namespace Internal { - -struct MarkdownViewerWidgetPrivate -{ - MarkdownBrowser *browser; - MarkdownEditor *editor; -}; - -MarkdownViewerWidget::MarkdownViewerWidget() - : d(new MarkdownViewerWidgetPrivate) -{ - d->browser = new MarkdownBrowser(this); - d->browser->setOpenExternalLinks(true); - d->browser->setFrameShape(QFrame::NoFrame); - d->editor = new MarkdownEditor(this); - - connect(d->editor->document(), &QTextDocument::contentsChanged, - this, [this]() { - const auto plainText = d->editor->textDocument()->plainText(); - d->browser->setMarkdown(plainText); - }); -} - -MarkdownViewerWidget::~MarkdownViewerWidget() -{ - delete d; -} - -Core::IDocument *MarkdownViewerWidget::document() const -{ - return d->editor->textDocument(); -} - -bool MarkdownViewerWidget::isEditorVisible() const -{ - return d->editor->isVisible(); -} - -void MarkdownViewerWidget::setEditorVisible(bool editorVisible) -{ - if (d->editor->isVisible() == editorVisible) - return; - d->editor->setVisible(editorVisible); - emit editorVisibleChanged(editorVisible); -} - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/markdownviewer/markdownviewerwidget.h b/src/plugins/markdownviewer/markdownviewerwidget.h deleted file mode 100644 index 16581c6cb54..00000000000 --- a/src/plugins/markdownviewer/markdownviewerwidget.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2023 Tasuku Suzuki -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 - -#pragma once - -#include -#include - -namespace Core { class IDocument; } - -namespace Markdown { -namespace Internal { - -class MarkdownViewerWidget : public Core::MiniSplitter -{ - Q_OBJECT - Q_PROPERTY(bool editorVisible READ isEditorVisible WRITE setEditorVisible NOTIFY editorVisibleChanged) -public: - explicit MarkdownViewerWidget(); - ~MarkdownViewerWidget() override; - - Core::IDocument *document() const; - - bool isEditorVisible() const; - -public slots: - void setEditorVisible(bool editorVisible); - -signals: - void editorVisibleChanged(bool editorVisible); - -private: - struct MarkdownViewerWidgetPrivate *d; -}; - -} // namespace Internal -} // namespace Markdown diff --git a/src/plugins/plugins.qbs b/src/plugins/plugins.qbs index f4c6060aaeb..b878e76c3e3 100644 --- a/src/plugins/plugins.qbs +++ b/src/plugins/plugins.qbs @@ -50,7 +50,6 @@ Project { "ios/ios.qbs", "languageclient/languageclient.qbs", "macros/macros.qbs", - "markdownviewer/markdownviewer.qbs", "marketplace/marketplace.qbs", "mcusupport/mcusupport.qbs", "mercurial/mercurial.qbs", diff --git a/src/plugins/texteditor/CMakeLists.txt b/src/plugins/texteditor/CMakeLists.txt index 01636fe7544..eebe8bf0bed 100644 --- a/src/plugins/texteditor/CMakeLists.txt +++ b/src/plugins/texteditor/CMakeLists.txt @@ -70,6 +70,7 @@ add_qtc_plugin(TextEditor ioutlinewidget.h linenumberfilter.cpp linenumberfilter.h marginsettings.cpp marginsettings.h + markdowneditor.cpp markdowneditor.h outlinefactory.cpp outlinefactory.h plaintexteditorfactory.cpp plaintexteditorfactory.h quickfix.cpp quickfix.h diff --git a/src/plugins/texteditor/markdowneditor.cpp b/src/plugins/texteditor/markdowneditor.cpp new file mode 100644 index 00000000000..2778ecd3de8 --- /dev/null +++ b/src/plugins/texteditor/markdowneditor.cpp @@ -0,0 +1,109 @@ +// Copyright (C) 2023 Tasuku Suzuki +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include "markdowneditor.h" + +#include "textdocument.h" +#include "texteditor.h" +#include "texteditortr.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +namespace TextEditor::Internal { + +const char MARKDOWNVIEWER_ID[] = "Editors.MarkdownViewer"; +const char MARKDOWNVIEWER_MIME_TYPE[] = "text/markdown"; +const char MARKDOWNVIEWER_EDITOR_CONTEXT[] = "Editors.MarkdownViewer.Id"; + +class MarkdownEditor : public Core::IEditor +{ +public: + MarkdownEditor() + : m_document(new TextDocument(MARKDOWNVIEWER_ID)) + { + m_document->setMimeType(MARKDOWNVIEWER_MIME_TYPE); + + // Left side + auto browser = new QTextBrowser(&m_widget); + browser->setOpenExternalLinks(true); + browser->setFrameShape(QFrame::NoFrame); + + // Right side (hidable) + auto editor = new TextEditorWidget(&m_widget); + editor->setTextDocument(m_document); + editor->setupGenericHighlighter(); + editor->setMarksVisible(false); + + auto context = new Core::IContext(this); + context->setWidget(editor); + context->setContext(Core::Context(MARKDOWNVIEWER_EDITOR_CONTEXT)); + Core::ICore::addContextObject(context); + + setContext(Core::Context(MARKDOWNVIEWER_ID)); + setWidget(&m_widget); + + auto toggleEditorVisible = new QToolButton; + toggleEditorVisible->setText(Tr::tr("Hide Editor")); + toggleEditorVisible->setCheckable(true); + toggleEditorVisible->setChecked(true); + + auto layout = new QHBoxLayout(&m_toolbar); + layout->setSpacing(0); + layout->setContentsMargins(0, 0, 0, 0); + layout->addStretch(); + layout->addWidget(toggleEditorVisible); + + connect(m_document.data(), &TextDocument::mimeTypeChanged, + m_document.data(), &TextDocument::changed); + + connect(toggleEditorVisible, &QToolButton::toggled, + editor, [editor, toggleEditorVisible](bool editorVisible) { + if (editor->isVisible() == editorVisible) + return; + editor->setVisible(editorVisible); + toggleEditorVisible->setText(editorVisible ? Tr::tr("Hide Editor") : Tr::tr("Show Editor")); + }); + + connect(m_document->document(), &QTextDocument::contentsChanged, this, [this, browser] { + QHash positions; + const auto scrollBars = findChildren(); + + // save scroll positions + for (QScrollBar *scrollBar : scrollBars) + positions.insert(scrollBar, scrollBar->value()); + + browser->setMarkdown(m_document->plainText()); + + // restore scroll positions + for (QScrollBar *scrollBar : scrollBars) + scrollBar->setValue(positions.value(scrollBar)); + }); + } + + QWidget *toolBar() override { return &m_toolbar; } + + Core::IDocument *document() const override { return m_document.data(); } + +private: + Core::MiniSplitter m_widget; + TextDocumentPtr m_document; + QWidget m_toolbar; +}; + +MarkdownEditorFactory::MarkdownEditorFactory() +{ + setId(MARKDOWNVIEWER_ID); + setDisplayName(::Core::Tr::tr("Markdown Viewer")); + addMimeType(MARKDOWNVIEWER_MIME_TYPE); + setEditorCreator([] { return new MarkdownEditor; }); +} + +} // TextEditor::Internal diff --git a/src/plugins/markdownviewer/markdownviewerfactory.h b/src/plugins/texteditor/markdowneditor.h similarity index 54% rename from src/plugins/markdownviewer/markdownviewerfactory.h rename to src/plugins/texteditor/markdowneditor.h index 294014945e7..21944657bc4 100644 --- a/src/plugins/markdownviewer/markdownviewerfactory.h +++ b/src/plugins/texteditor/markdowneditor.h @@ -5,14 +5,12 @@ #include -namespace Markdown { -namespace Internal { +namespace TextEditor::Internal { -class MarkdownViewerFactory final : public Core::IEditorFactory +class MarkdownEditorFactory final : public Core::IEditorFactory { public: - MarkdownViewerFactory(); + MarkdownEditorFactory(); }; -} // namespace Internal -} // namespace Markdown +} // TextEditor::Internal diff --git a/src/plugins/texteditor/texteditor.qbs b/src/plugins/texteditor/texteditor.qbs index 971ef31faee..2aacf5d3736 100644 --- a/src/plugins/texteditor/texteditor.qbs +++ b/src/plugins/texteditor/texteditor.qbs @@ -94,6 +94,8 @@ Project { "linenumberfilter.h", "marginsettings.cpp", "marginsettings.h", + "markdowneditor.cpp", + "markdowneditor.h", "outlinefactory.cpp", "outlinefactory.h", "plaintexteditorfactory.cpp", diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index e97453addae..a66ddf23c32 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -10,6 +10,7 @@ #include "highlighter.h" #include "icodestylepreferences.h" #include "linenumberfilter.h" +#include "markdowneditor.h" #include "outlinefactory.h" #include "plaintexteditorfactory.h" #include "snippets/snippetprovider.h" @@ -66,6 +67,7 @@ public: FindInOpenFiles findInOpenFilesFilter; PlainTextEditorFactory plainTextEditorFactory; + MarkdownEditorFactory markdownEditorFactory; }; static TextEditorPlugin *m_instance = nullptr;