Add View Source in RSTextBrowser

This commit is contained in:
Phenom 2020-11-09 15:26:08 +01:00
parent 026cadfe13
commit bfbee1bdec
2 changed files with 55 additions and 7 deletions

View File

@ -18,19 +18,24 @@
* * * *
*******************************************************************************/ *******************************************************************************/
#include <iostream>
#include <QDesktopServices>
#include <QDir>
#include <QPainter>
#include <QTextDocumentFragment>
#include "RSTextBrowser.h" #include "RSTextBrowser.h"
#include "RSImageBlockWidget.h" #include "RSImageBlockWidget.h"
#include "gui/common/FilesDefs.h" #include "gui/common/FilesDefs.h"
#include <retroshare/rsinit.h> //To get RsAccounts #include <retroshare/rsinit.h> //To get RsAccounts
#include <QDesktopServices>
#include <QDialog>
#include <QDir>
#include <QGridLayout>
#include <QMenu>
#include <QPainter>
#include <QPlainTextEdit>
#include <QTextDocumentFragment>
#include <iostream>
RSTextBrowser::RSTextBrowser(QWidget *parent) : RSTextBrowser::RSTextBrowser(QWidget *parent) :
QTextBrowser(parent) QTextBrowser(parent)
{ {
@ -291,3 +296,40 @@ QString RSTextBrowser::anchorForPosition(const QPoint &pos) const
} }
return anchor; return anchor;
} }
#ifndef QT_NO_CONTEXTMENU
QMenu *RSTextBrowser::createStandardContextMenu()
{
return createStandardContextMenu(QPoint());
}
QMenu *RSTextBrowser::createStandardContextMenu(const QPoint &position)
{
QMenu *menu = QTextBrowser::createStandardContextMenu(position);
menu->addSeparator();
QAction *a = menu->addAction(FilesDefs::getIconFromQtResourcePath("://icons/textedit/code.png"), tr("View &Source"), this, SLOT(viewSource()));
a->setEnabled(!this->document()->isEmpty());
return menu;
}
#endif // QT_NO_CONTEXTMENU
void RSTextBrowser::viewSource()
{
QString text = this->textCursor().selection().toHtml();
if (text.isEmpty())
text = this->document()->toHtml();
QDialog *dialog = new QDialog(this);
QPlainTextEdit *pte = new QPlainTextEdit(dialog);
pte->setPlainText(text);
QGridLayout *gl = new QGridLayout(dialog);
gl->addWidget(pte,0,0,1,1);
dialog->setWindowTitle(tr("Document source"));
dialog->resize(500, 400);
dialog->exec();
delete dialog;
}

View File

@ -56,6 +56,11 @@ public:
QVariant textColorQuotes() const { return highlighter->textColorQuotes();} QVariant textColorQuotes() const { return highlighter->textColorQuotes();}
bool getShowImages() const { return mShowImages; } bool getShowImages() const { return mShowImages; }
#ifndef QT_NO_CONTEXTMENU
QMenu *createStandardContextMenu();
QMenu *createStandardContextMenu(const QPoint &position);
#endif
public slots: public slots:
void showImages(); void showImages();
void setTextColorQuote(QColor textColorQuote) { highlighter->setTextColorQuote(textColorQuote);} void setTextColorQuote(QColor textColorQuote) { highlighter->setTextColorQuote(textColorQuote);}
@ -64,6 +69,7 @@ public slots:
private slots: private slots:
void linkClicked(const QUrl &url); void linkClicked(const QUrl &url);
void destroyImageBlockWidget(); void destroyImageBlockWidget();
void viewSource();
protected: protected:
void paintEvent(QPaintEvent *event); void paintEvent(QPaintEvent *event);