Files
qt-creator/src/plugins/markdownviewer/markdownviewerwidget.cpp
Tasuku Suzuki 8b70e59cdb Add markdown viewer plugin
Fixes: QTCREATORBUG-27883
Change-Id: Ie4099b8a322797d300bc15a80333bcb361ecafc3
Reviewed-by: André Hartmann <aha_1980@gmx.de>
2023-02-18 16:40:10 +00:00

59 lines
1.4 KiB
C++

// 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 <texteditor/textdocument.h>
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