From c87d175e62f71104ec6a5d7a5db76e4dc2476536 Mon Sep 17 00:00:00 2001 From: N0U Date: Tue, 8 Apr 2014 21:36:12 -0700 Subject: [PATCH] Fix troubles with line ending. Now I just replace a huge base64 string by a name of a reosurce. And after I replace names by base64 strings. --- src/bitmessageqt/__init__.py | 69 ++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/src/bitmessageqt/__init__.py b/src/bitmessageqt/__init__.py index 0b40cee7..cfe6e92a 100644 --- a/src/bitmessageqt/__init__.py +++ b/src/bitmessageqt/__init__.py @@ -1844,48 +1844,49 @@ class MyForm(QtGui.QMainWindow): else: image=image.scaledToWidth(300) - buf=QBuffer() - image.save(buf,"PNG") - encoded_data=buf.buffer().toBase64().data() - html_data="" - self.ui.textEditMessage.insertHtml("\n"+html_data) + #buf=QBuffer() + #image.save(buf,"PNG") + #encoded_data=buf.buffer().toBase64().data() + doc=self.ui.textEditMessage.document() + embeded_url="images://"+file_info.fileName()+"."+str(doc.revision()) + doc.addResource(QTextDocument.ImageResource, + QUrl(embeded_url), QVariant(image)); + + html_data="" + self.ui.textEditMessage.insertPlainText("\n"+html_data) else: QtGui.QMessageBox.information(self,"Error","Could not open an image") - - def getPlainMessageText(self): - text=QString() - text_block=self.ui.textEditMessage.document().begin() - while text_block.isValid(): - i=text_block.begin() - while not i.atEnd(): - frag=i.fragment() - if frag.isValid(): - frag_format=frag.charFormat() - if frag_format.isImageFormat(): - img_format=frag_format.toImageFormat() - image_data=self.ui.textEditMessage.document().resource( - QtGui.QTextDocument.ImageResource,QtCore.QUrl(img_format.name())) - img=QImage(image_data) - buf=QBuffer() - img.save(buf,"PNG") - encoded_data=buf.buffer().toBase64().data() - text+="\n" - else: - text+=frag.text() - i+=1 - text_block=text_block.next() - return str(text.toUtf8()) + def imageRecourceToBase64(self,doc,name): + buf=QBuffer() + image_data=doc.resource(QtGui.QTextDocument.ImageResource,QtCore.QUrl(name)) + if image_data.isNull() or not image_data.isValid(): + return "" + image=QImage(image_data) + image.save(buf,"PNG") + return buf.buffer().toBase64().data() + + def getMessageText(self): + doc=self.ui.textEditMessage.document() + content=self.ui.textEditMessage.document().toPlainText() + last_i=content.indexOf("images://") + while last_i>=0: + j=content.indexOf("\"",last_i) + if j>0: + l=j-last_i + url=content.mid(last_i,l) + base64=self.imageRecourceToBase64(doc,url) + content.replace(last_i,l,"data:image/png;base64"+base64) + last_i=content.indexOf("images://",last_i) + return content def click_pushButtonSend(self): self.statusBar().showMessage('') toAddresses = str(self.ui.lineEditTo.text()) fromAddress = str(self.ui.labelFrom.text()) subject = str(self.ui.lineEditSubject.text().toUtf8()) - message = self.getPlainMessageText() #str( - #self.ui.textEditMessage.document().toPlainText()) - # Remove style which may conatin some information about the user (ex. font='Ubuntu' on Ubuntu) - # message=re.sub("
------------------------------------------------------
' + unicode(messageAtCurrentInboxRow, 'utf-8)')) + self.ui.textEditMessage.setPlainText('\n\n------------------------------------------------------\n' + unicode(messageAtCurrentInboxRow, 'utf-8)')) if self.ui.tableWidgetInbox.item(currentInboxRow, 2).text()[0:3] in ['Re:', 'RE:']: self.ui.lineEditSubject.setText( self.ui.tableWidgetInbox.item(currentInboxRow, 2).text())