diff options
author | Eike Ziller <eike.ziller@qt.io> | 2023-09-29 13:34:44 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2023-10-09 09:31:26 +0000 |
commit | c2ba2185833bceb50cc8af7a4c27bc18094faacf (patch) | |
tree | 7227f20206f596d682cbc904341f889b188592a7 /src/plugins/texteditor/markdowneditor.cpp | |
parent | cbeeec2dc638144d43a5d1197260d021a4984e97 (diff) |
Markdown: Add missing commands for show editor/preview and swap
Change-Id: I4ea63d2bd7a89a1fc8299e83a0050e4f639190c5
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Diffstat (limited to 'src/plugins/texteditor/markdowneditor.cpp')
-rw-r--r-- | src/plugins/texteditor/markdowneditor.cpp | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/src/plugins/texteditor/markdowneditor.cpp b/src/plugins/texteditor/markdowneditor.cpp index 41e9a0c5303..0ad3f0ac2f3 100644 --- a/src/plugins/texteditor/markdowneditor.cpp +++ b/src/plugins/texteditor/markdowneditor.cpp @@ -46,6 +46,9 @@ const char EMPHASIS_ACTION[] = "Markdown.Emphasis"; const char STRONG_ACTION[] = "Markdown.Strong"; const char INLINECODE_ACTION[] = "Markdown.InlineCode"; const char LINK_ACTION[] = "Markdown.Link"; +const char TOGGLEEDITOR_ACTION[] = "Markdown.ToggleEditor"; +const char TOGGLEPREVIEW_ACTION[] = "Markdown.TogglePreview"; +const char SWAPVIEWS_ACTION[] = "Markdown.SwapViews"; class MarkdownEditor : public IEditor { @@ -101,14 +104,14 @@ public: } agg->add(m_widget.get()); - m_togglePreviewVisible = new QToolButton; - m_togglePreviewVisible->setText(Tr::tr("Show Preview")); + m_togglePreviewVisible = new CommandButton(TOGGLEPREVIEW_ACTION); + m_togglePreviewVisible->setText(m_togglePreviewVisible->toolTipBase()); m_togglePreviewVisible->setCheckable(true); m_togglePreviewVisible->setChecked(showPreview); m_previewWidget->setVisible(showPreview); - m_toggleEditorVisible = new QToolButton; - m_toggleEditorVisible->setText(Tr::tr("Show Editor")); + m_toggleEditorVisible = new CommandButton(TOGGLEEDITOR_ACTION); + m_toggleEditorVisible->setText(m_toggleEditorVisible->toolTipBase()); m_toggleEditorVisible->setCheckable(true); m_toggleEditorVisible->setChecked(showEditor); m_textEditorWidget->setVisible(showEditor); @@ -137,9 +140,9 @@ public: button->setVisible(false); } - auto swapViews = new QToolButton; - swapViews->setText(Tr::tr("Swap Views")); - swapViews->setEnabled(showEditor && showPreview); + m_swapViews = new CommandButton(SWAPVIEWS_ACTION); + m_swapViews->setText(m_swapViews->toolTipBase()); + m_swapViews->setEnabled(showEditor && showPreview); m_toolbarLayout = new QHBoxLayout(&m_toolbar); m_toolbarLayout->setSpacing(0); @@ -149,7 +152,7 @@ public: m_toolbarLayout->addStretch(); m_toolbarLayout->addWidget(m_togglePreviewVisible); m_toolbarLayout->addWidget(m_toggleEditorVisible); - m_toolbarLayout->addWidget(swapViews); + m_toolbarLayout->addWidget(m_swapViews); setWidgetOrder(textEditorRight); @@ -173,7 +176,7 @@ public: }; const auto viewToggled = - [swapViews](QWidget *view, bool visible, QWidget *otherView, QToolButton *otherButton) { + [this](QWidget *view, bool visible, QWidget *otherView, QToolButton *otherButton) { if (view->isVisible() == visible) return; view->setVisible(visible); @@ -185,7 +188,7 @@ public: // make sure at least one view is visible otherButton->toggle(); } - swapViews->setEnabled(view->isVisible() && otherView->isVisible()); + m_swapViews->setEnabled(view->isVisible() && otherView->isVisible()); }; const auto saveViewSettings = [this] { Utils::QtcSettings *s = ICore::settings(); @@ -221,7 +224,7 @@ public: saveViewSettings(); }); - connect(swapViews, &QToolButton::clicked, m_textEditorWidget, [this] { + connect(m_swapViews, &QToolButton::clicked, m_textEditorWidget, [this] { const bool textEditorRight = isTextEditorRight(); setWidgetOrder(!textEditorRight); // save settings @@ -293,6 +296,10 @@ public: }); } + void toggleEditor() { m_toggleEditorVisible->toggle(); } + void togglePreview() { m_togglePreviewVisible->toggle(); } + void swapViews() { m_swapViews->click(); } + bool isTextEditorRight() const { return m_splitter->widget(0) == m_previewWidget; } void setWidgetOrder(bool textEditorRight) @@ -436,8 +443,9 @@ private: QWidget m_toolbar; QHBoxLayout *m_toolbarLayout; QList<QToolButton *> m_markDownButtons; - QToolButton *m_toggleEditorVisible; - QToolButton *m_togglePreviewVisible; + CommandButton *m_toggleEditorVisible; + CommandButton *m_togglePreviewVisible; + CommandButton *m_swapViews; std::optional<QPoint> m_previewRestoreScrollPosition; }; @@ -455,6 +463,7 @@ MarkdownEditorFactory::MarkdownEditorFactory() setEditorCreator([] { return new MarkdownEditor; }); const auto textContext = Context(MARKDOWNVIEWER_TEXT_CONTEXT); + const auto context = Context(MARKDOWNVIEWER_ID); Command *cmd = nullptr; cmd = ActionManager::registerAction(&m_emphasisAction, EMPHASIS_ACTION, textContext); cmd->setDescription(Tr::tr("Emphasis")); @@ -484,6 +493,28 @@ MarkdownEditorFactory::MarkdownEditorFactory() if (editor) editor->triggerLink(); }); + + cmd = ActionManager::registerAction(&m_toggleEditorAction, TOGGLEEDITOR_ACTION, context); + cmd->setDescription(Tr::tr("Show Editor")); + QObject::connect(&m_toggleEditorAction, &QAction::triggered, EditorManager::instance(), [] { + auto editor = qobject_cast<MarkdownEditor *>(EditorManager::currentEditor()); + if (editor) + editor->toggleEditor(); + }); + cmd = ActionManager::registerAction(&m_togglePreviewAction, TOGGLEPREVIEW_ACTION, context); + cmd->setDescription(Tr::tr("Show Preview")); + QObject::connect(&m_togglePreviewAction, &QAction::triggered, EditorManager::instance(), [] { + auto editor = qobject_cast<MarkdownEditor *>(EditorManager::currentEditor()); + if (editor) + editor->togglePreview(); + }); + cmd = ActionManager::registerAction(&m_swapAction, SWAPVIEWS_ACTION, context); + cmd->setDescription(Tr::tr("Swap Views")); + QObject::connect(&m_swapAction, &QAction::triggered, EditorManager::instance(), [] { + auto editor = qobject_cast<MarkdownEditor *>(EditorManager::currentEditor()); + if (editor) + editor->swapViews(); + }); } } // namespace TextEditor::Internal |