diff --git a/src/bitmessageqt/messageview.py b/src/bitmessageqt/messageview.py index 94e73ff1..049a2706 100644 --- a/src/bitmessageqt/messageview.py +++ b/src/bitmessageqt/messageview.py @@ -2,16 +2,21 @@ from PyQt4 import QtCore, QtGui from safehtmlparser import * -class MessageView(QtGui.QTextEdit): +class MessageView(QtGui.QTextBrowser): MODE_PLAIN = 0 MODE_HTML = 1 TEXT_PLAIN = "HTML detected, click here to display" TEXT_HTML = "Click here to disable HTML" + CONFIRM_TITLE = "Follow external link" + CONFIRM_TEXT = "The link \"%1\" will open in a browser. It may be a security risk, it could de-anonymise you or download malicious data. Are you sure?" def __init__(self, parent = 0): super(MessageView, self).__init__(parent) self.mode = MessageView.MODE_PLAIN self.html = None + self.setOpenExternalLinks(False) + self.setOpenLinks(False) + self.anchorClicked.connect(self.confirmURL) def mousePressEvent(self, event): #text = textCursor.block().text() @@ -22,18 +27,26 @@ class MessageView(QtGui.QTextEdit): self.showPlain() else: super(MessageView, self).mousePressEvent(event) + + def confirmURL(self, link): + reply = QtGui.QMessageBox.question(self, + QtGui.QApplication.translate(type(self).__name__, MessageView.CONFIRM_TITLE), + QtGui.QApplication.translate(type(self).__name__, MessageView.CONFIRM_TEXT).arg(str(link.toString())), + QtGui.QMessageBox.Yes, QtGui.QMessageBox.No) + if reply == QtGui.QMessageBox.Yes: + QtGui.QDesktopServices.openUrl(link) def showPlain(self): self.mode = MessageView.MODE_PLAIN out = self.html.raw if self.html.has_html: - out = "