forked from qt-creator/qt-creator
		
	Add markdown viewer plugin
Fixes: QTCREATORBUG-27883 Change-Id: Ie4099b8a322797d300bc15a80333bcb361ecafc3 Reviewed-by: André Hartmann <aha_1980@gmx.de>
This commit is contained in:
		
							
								
								
									
										58
									
								
								src/plugins/markdownviewer/markdownviewerwidget.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								src/plugins/markdownviewer/markdownviewerwidget.cpp
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
// 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
 | 
			
		||||
		Reference in New Issue
	
	Block a user