When clicking a link in a message viewed in HTML mode, if the link represents a data blob, launch a "Save File" dialog and write the file directly, rather than opening the link in an external browser.
This commit is contained in:
parent
186139654c
commit
03fbadd3c4
|
@ -5,6 +5,7 @@ src/bitmessageqt/messageview.py
|
|||
"""
|
||||
|
||||
from PyQt4 import QtCore, QtGui
|
||||
import re, base64
|
||||
|
||||
from safehtmlparser import SafeHTMLParser
|
||||
|
||||
|
@ -64,6 +65,9 @@ class MessageView(QtGui.QTextBrowser):
|
|||
|
||||
def confirmURL(self, link):
|
||||
"""Show a dialog requesting URL opening confirmation"""
|
||||
link_str = link.toString()
|
||||
datablob_re = r'^data:.*/.*;base64,.*'
|
||||
datablob_match = re.match(datablob_re, link_str)
|
||||
if link.scheme() == "mailto":
|
||||
window = QtGui.QApplication.activeWindow()
|
||||
window.ui.lineEditTo.setText(link.path())
|
||||
|
@ -80,6 +84,16 @@ class MessageView(QtGui.QTextBrowser):
|
|||
)
|
||||
window.ui.textEditMessage.setFocus()
|
||||
return
|
||||
if datablob_match:
|
||||
name = QtGui.QFileDialog.getSaveFileName(self, 'Save File')
|
||||
if name:
|
||||
f = open(name, 'wb')
|
||||
data_begin_pos = re.finditer(";base64,", link_str).next()
|
||||
data_b64 = link_str[data_begin_pos.span()[1]:]
|
||||
data = base64.b64decode(data_b64)
|
||||
f.write(data)
|
||||
f.close()
|
||||
else:
|
||||
reply = QtGui.QMessageBox.warning(
|
||||
self,
|
||||
QtGui.QApplication.translate(
|
||||
|
|
Reference in New Issue
Block a user