forked from qt-creator/qt-creator
Markdown: Use regular text editor's toolbar
This allows to have custom toolbar actions while preserving the regular text editor actions. Fixes: QTCREATORBUG-30166 Change-Id: I4a22f415d05d80355cfdbe4a2c61501af2292e85 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -15,6 +15,7 @@
|
|||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
#include <coreplugin/minisplitter.h>
|
#include <coreplugin/minisplitter.h>
|
||||||
|
|
||||||
|
#include <utils/ranges.h>
|
||||||
#include <utils/qtcsettings.h>
|
#include <utils/qtcsettings.h>
|
||||||
#include <utils/qtcsettings.h>
|
#include <utils/qtcsettings.h>
|
||||||
#include <utils/stringutils.h>
|
#include <utils/stringutils.h>
|
||||||
@@ -26,6 +27,7 @@
|
|||||||
#include <QScrollBar>
|
#include <QScrollBar>
|
||||||
#include <QTextBrowser>
|
#include <QTextBrowser>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
#include <QToolBar>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
|
||||||
#include <optional>
|
#include <optional>
|
||||||
@@ -98,7 +100,6 @@ public:
|
|||||||
context->setWidget(m_textEditorWidget);
|
context->setWidget(m_textEditorWidget);
|
||||||
context->setContext(Context(MARKDOWNVIEWER_TEXT_CONTEXT));
|
context->setContext(Context(MARKDOWNVIEWER_TEXT_CONTEXT));
|
||||||
ICore::addContextObject(context);
|
ICore::addContextObject(context);
|
||||||
m_lineColumnButton = new LineColumnButton(m_textEditorWidget);
|
|
||||||
|
|
||||||
m_splitter->addWidget(m_textEditorWidget); // sets splitter->focusWidget() on non-Windows
|
m_splitter->addWidget(m_textEditorWidget); // sets splitter->focusWidget() on non-Windows
|
||||||
m_splitter->addWidget(m_previewWidget);
|
m_splitter->addWidget(m_previewWidget);
|
||||||
@@ -131,7 +132,6 @@ public:
|
|||||||
m_toggleEditorVisible->setCheckable(true);
|
m_toggleEditorVisible->setCheckable(true);
|
||||||
m_toggleEditorVisible->setChecked(showEditor);
|
m_toggleEditorVisible->setChecked(showEditor);
|
||||||
m_textEditorWidget->setVisible(showEditor);
|
m_textEditorWidget->setVisible(showEditor);
|
||||||
m_lineColumnButton->setVisible(showEditor);
|
|
||||||
|
|
||||||
auto button = new CommandButton(EMPHASIS_ACTION);
|
auto button = new CommandButton(EMPHASIS_ACTION);
|
||||||
button->setText("i");
|
button->setText("i");
|
||||||
@@ -157,21 +157,16 @@ public:
|
|||||||
button->setVisible(false);
|
button->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (auto button : m_markDownButtons | Utils::views::reverse)
|
||||||
|
m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Left, button);
|
||||||
|
|
||||||
m_swapViews = new CommandButton(SWAPVIEWS_ACTION);
|
m_swapViews = new CommandButton(SWAPVIEWS_ACTION);
|
||||||
m_swapViews->setText(m_swapViews->toolTipBase());
|
m_swapViews->setText(m_swapViews->toolTipBase());
|
||||||
m_swapViews->setEnabled(showEditor && showPreview);
|
m_swapViews->setEnabled(showEditor && showPreview);
|
||||||
|
|
||||||
m_toolbarLayout = new QHBoxLayout(&m_toolbar);
|
m_swapViewsAction = m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Right, m_swapViews);
|
||||||
m_toolbarLayout->setSpacing(0);
|
m_toggleEditorVisibleAction = m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Right, m_toggleEditorVisible);
|
||||||
m_toolbarLayout->setContentsMargins(0, 0, 0, 0);
|
m_togglePreviewVisibleAction = m_textEditorWidget->insertExtraToolBarWidget(TextEditorWidget::Right, m_togglePreviewVisible);
|
||||||
for (auto button : m_markDownButtons)
|
|
||||||
m_toolbarLayout->addWidget(button);
|
|
||||||
m_toolbarLayout->addStretch();
|
|
||||||
m_toolbarLayout->addWidget(m_lineColumnButton);
|
|
||||||
m_toolbarLayout->addWidget(m_togglePreviewVisible);
|
|
||||||
m_toolbarLayout->addWidget(m_toggleEditorVisible);
|
|
||||||
m_toolbarLayout->addWidget(m_swapViews);
|
|
||||||
|
|
||||||
setWidgetOrder(textEditorRight);
|
setWidgetOrder(textEditorRight);
|
||||||
|
|
||||||
connect(m_document.data(),
|
connect(m_document.data(),
|
||||||
@@ -248,7 +243,6 @@ public:
|
|||||||
m_togglePreviewVisible);
|
m_togglePreviewVisible);
|
||||||
for (auto button : m_markDownButtons)
|
for (auto button : m_markDownButtons)
|
||||||
button->setVisible(visible);
|
button->setVisible(visible);
|
||||||
m_lineColumnButton->setVisible(visible);
|
|
||||||
saveViewSettings();
|
saveViewSettings();
|
||||||
});
|
});
|
||||||
connect(m_togglePreviewVisible,
|
connect(m_togglePreviewVisible,
|
||||||
@@ -351,14 +345,13 @@ public:
|
|||||||
m_splitter->insertWidget(0, left);
|
m_splitter->insertWidget(0, left);
|
||||||
m_splitter->insertWidget(1, right);
|
m_splitter->insertWidget(1, right);
|
||||||
// buttons
|
// buttons
|
||||||
QWidget *leftButton = textEditorRight ? m_togglePreviewVisible : m_toggleEditorVisible;
|
const auto leftAction = textEditorRight ? m_togglePreviewVisibleAction : m_toggleEditorVisibleAction;
|
||||||
QWidget *rightButton = textEditorRight ? m_toggleEditorVisible : m_togglePreviewVisible;
|
const auto rightAction = textEditorRight ? m_toggleEditorVisibleAction : m_togglePreviewVisibleAction;
|
||||||
const int rightIndex = m_toolbarLayout->count() - 2;
|
m_textEditorWidget->toolBar()->insertAction(m_swapViewsAction, leftAction);
|
||||||
m_toolbarLayout->insertWidget(rightIndex, leftButton);
|
m_textEditorWidget->toolBar()->insertAction(m_swapViewsAction, rightAction);
|
||||||
m_toolbarLayout->insertWidget(rightIndex, rightButton);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QWidget *toolBar() override { return &m_toolbar; }
|
QWidget *toolBar() override { return m_textEditorWidget->toolBarWidget(); }
|
||||||
|
|
||||||
IDocument *document() const override { return m_document.data(); }
|
IDocument *document() const override { return m_document.data(); }
|
||||||
TextEditorWidget *textEditorWidget() const { return m_textEditorWidget; }
|
TextEditorWidget *textEditorWidget() const { return m_textEditorWidget; }
|
||||||
@@ -479,13 +472,13 @@ private:
|
|||||||
QTextBrowser *m_previewWidget;
|
QTextBrowser *m_previewWidget;
|
||||||
TextEditorWidget *m_textEditorWidget;
|
TextEditorWidget *m_textEditorWidget;
|
||||||
TextDocumentPtr m_document;
|
TextDocumentPtr m_document;
|
||||||
QWidget m_toolbar;
|
|
||||||
QHBoxLayout *m_toolbarLayout;
|
|
||||||
QList<QToolButton *> m_markDownButtons;
|
QList<QToolButton *> m_markDownButtons;
|
||||||
LineColumnButton *m_lineColumnButton;
|
|
||||||
CommandButton *m_toggleEditorVisible;
|
CommandButton *m_toggleEditorVisible;
|
||||||
CommandButton *m_togglePreviewVisible;
|
CommandButton *m_togglePreviewVisible;
|
||||||
CommandButton *m_swapViews;
|
CommandButton *m_swapViews;
|
||||||
|
QAction *m_toggleEditorVisibleAction;
|
||||||
|
QAction *m_togglePreviewVisibleAction;
|
||||||
|
QAction *m_swapViewsAction;
|
||||||
std::optional<QPoint> m_previewRestoreScrollPosition;
|
std::optional<QPoint> m_previewRestoreScrollPosition;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user