Add AddImage button which allow to embed an image in base64 into a message

If an image is too big, a user will be asked if an image should be scaled
This commit is contained in:
N0U 2014-04-05 17:58:16 -07:00
parent 700e3d1f17
commit ee5b038830
3 changed files with 97 additions and 50 deletions

View File

@ -39,6 +39,7 @@ from debug import logger
import subprocess
import datetime
from helper_sql import *
import base64
try:
from PyQt4 import QtCore, QtGui
@ -177,7 +178,9 @@ class MyForm(QtGui.QMainWindow):
str_broadcast_subscribers = '[Broadcast subscribers]'
str_chan = '[chan]'
images_dir=os.path.expanduser("~")
def init_file_menu(self):
QtCore.QObject.connect(self.ui.actionExit, QtCore.SIGNAL(
"triggered()"), self.quit)
@ -204,6 +207,8 @@ class MyForm(QtGui.QMainWindow):
"clicked()"), self.click_pushButtonAddSubscription)
QtCore.QObject.connect(self.ui.pushButtonAddBlacklist, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonAddBlacklist)
QtCore.QObject.connect(self.ui.pushButtonAddImage, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonAddImage)
QtCore.QObject.connect(self.ui.pushButtonSend, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonSend)
QtCore.QObject.connect(self.ui.pushButtonLoadFromAddressBook,
@ -445,7 +450,7 @@ class MyForm(QtGui.QMainWindow):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Ask the user if we may delete their old version 1 addresses if they
# have any.
configSections = shared.config.sections()
@ -1810,6 +1815,37 @@ class MyForm(QtGui.QMainWindow):
newItem.setTextColor(QtGui.QColor(128, 128, 128))
self.ui.tableWidgetSubscriptions.setItem(0, 1, newItem)
def click_pushButtonAddImage(self):
file_name=QtGui.QFileDialog.getOpenFileName(
self,"Select an image",self.images_dir,"Image (*.png *.jpg *.jepg *.gif)")
if file_name.isNull(): # Operation was canceled
return
file_info=QFileInfo(file_name)
self.images_dir=file_info.dir().absolutePath() #coz os.path.dirname does not support unicode
file_ext=file_info.suffix() #get an extension
image=QImage()
if image.load(file_name):
if image.height()*image.width()>300*300:
#Do we need to resize it?
r=QtGui.QMessageBox.question(
self,"Image","This image is to big.\nShould it be scaled?",
QtGui.QMessageBox.Yes,QtGui.QMessageBox.No) # Why I cannot put Yes button before No button? That is sux
if r==QtGui.QMessageBox.Yes:
if image.height()>=image.width():
image=image.scaledToHeight(300)
else:
image=image.scaledToWidth(300)
buf=QBuffer()
image.save(buf,"PNG")
encoded_data=buf.buffer().toBase64().data()
html_data="<img src=\"data:image/png;base64,"+encoded_data+"\" />"
self.ui.textEditMessage.insertPlainText("\n"+html_data)
else:
QtGui.QMessageBox.information(self,"Error","Could not open an image")
def click_pushButtonSend(self):
self.statusBar().showMessage('')
toAddresses = str(self.ui.lineEditTo.text())

View File

@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'bitmessageui.ui'
#
# Created: Sat Nov 2 18:01:09 2013
# Created: Sat Apr 5 16:04:46 2014
# by: PyQt4 UI code generator 4.10
#
# WARNING! All changes made in this file will be lost!
@ -109,12 +109,6 @@ class Ui_MainWindow(object):
self.send.setObjectName(_fromUtf8("send"))
self.gridLayout_2 = QtGui.QGridLayout(self.send)
self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2"))
self.pushButtonLoadFromAddressBook = QtGui.QPushButton(self.send)
font = QtGui.QFont()
font.setPointSize(7)
self.pushButtonLoadFromAddressBook.setFont(font)
self.pushButtonLoadFromAddressBook.setObjectName(_fromUtf8("pushButtonLoadFromAddressBook"))
self.gridLayout_2.addWidget(self.pushButtonLoadFromAddressBook, 3, 2, 1, 1)
self.pushButtonFetchNamecoinID = QtGui.QPushButton(self.send)
font = QtGui.QFont()
font.setPointSize(7)
@ -145,14 +139,20 @@ class Ui_MainWindow(object):
self.textEditMessage = QtGui.QTextEdit(self.send)
self.textEditMessage.setObjectName(_fromUtf8("textEditMessage"))
self.gridLayout_2.addWidget(self.textEditMessage, 5, 1, 2, 5)
spacerItem = QtGui.QSpacerItem(20, 297, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.gridLayout_2.addItem(spacerItem, 6, 0, 1, 1)
self.label = QtGui.QLabel(self.send)
self.label.setObjectName(_fromUtf8("label"))
self.gridLayout_2.addWidget(self.label, 3, 0, 1, 1)
self.pushButtonLoadFromAddressBook = QtGui.QPushButton(self.send)
font = QtGui.QFont()
font.setPointSize(7)
self.pushButtonLoadFromAddressBook.setFont(font)
self.pushButtonLoadFromAddressBook.setObjectName(_fromUtf8("pushButtonLoadFromAddressBook"))
self.gridLayout_2.addWidget(self.pushButtonLoadFromAddressBook, 3, 2, 1, 1)
self.label_2 = QtGui.QLabel(self.send)
self.label_2.setObjectName(_fromUtf8("label_2"))
self.gridLayout_2.addWidget(self.label_2, 2, 0, 1, 1)
spacerItem = QtGui.QSpacerItem(20, 297, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.gridLayout_2.addItem(spacerItem, 6, 0, 1, 1)
self.radioButtonBroadcast = QtGui.QRadioButton(self.send)
self.radioButtonBroadcast.setObjectName(_fromUtf8("radioButtonBroadcast"))
self.gridLayout_2.addWidget(self.radioButtonBroadcast, 1, 1, 1, 3)
@ -164,7 +164,7 @@ class Ui_MainWindow(object):
self.gridLayout_2.addItem(spacerItem1, 3, 4, 1, 1)
self.pushButtonSend = QtGui.QPushButton(self.send)
self.pushButtonSend.setObjectName(_fromUtf8("pushButtonSend"))
self.gridLayout_2.addWidget(self.pushButtonSend, 7, 5, 1, 1)
self.gridLayout_2.addWidget(self.pushButtonSend, 8, 5, 1, 1)
self.labelSendBroadcastWarning = QtGui.QLabel(self.send)
self.labelSendBroadcastWarning.setEnabled(True)
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred)
@ -174,7 +174,10 @@ class Ui_MainWindow(object):
self.labelSendBroadcastWarning.setSizePolicy(sizePolicy)
self.labelSendBroadcastWarning.setIndent(-1)
self.labelSendBroadcastWarning.setObjectName(_fromUtf8("labelSendBroadcastWarning"))
self.gridLayout_2.addWidget(self.labelSendBroadcastWarning, 7, 1, 1, 4)
self.gridLayout_2.addWidget(self.labelSendBroadcastWarning, 8, 1, 1, 4)
self.pushButtonAddImage = QtGui.QPushButton(self.send)
self.pushButtonAddImage.setObjectName(_fromUtf8("pushButtonAddImage"))
self.gridLayout_2.addWidget(self.pushButtonAddImage, 7, 5, 1, 1)
icon2 = QtGui.QIcon()
icon2.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/send.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget.addTab(self.send, icon2, _fromUtf8(""))
@ -439,7 +442,7 @@ class Ui_MainWindow(object):
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 885, 27))
self.menubar.setGeometry(QtCore.QRect(0, 0, 885, 22))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName(_fromUtf8("menuFile"))
@ -501,7 +504,7 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuHelp.menuAction())
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(0)
self.tabWidget.setCurrentIndex(1)
QtCore.QObject.connect(self.radioButtonSpecific, QtCore.SIGNAL(_fromUtf8("toggled(bool)")), self.lineEditTo.setEnabled)
QtCore.QObject.connect(self.radioButtonSpecific, QtCore.SIGNAL(_fromUtf8("clicked(bool)")), self.labelSendBroadcastWarning.hide)
QtCore.QObject.connect(self.radioButtonBroadcast, QtCore.SIGNAL(_fromUtf8("clicked()")), self.labelSendBroadcastWarning.show)
@ -549,7 +552,6 @@ class Ui_MainWindow(object):
item = self.tableWidgetInbox.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Received", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.inbox), _translate("MainWindow", "Inbox", None))
self.pushButtonLoadFromAddressBook.setText(_translate("MainWindow", "Load from Address book", None))
self.pushButtonFetchNamecoinID.setText(_translate("MainWindow", "Fetch Namecoin ID", None))
self.label_4.setText(_translate("MainWindow", "Message:", None))
self.label_3.setText(_translate("MainWindow", "Subject:", None))
@ -557,13 +559,15 @@ class Ui_MainWindow(object):
self.textEditMessage.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'Sans\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'MS Shell Dlg 2\';\"><br /></p></body></html>", None))
"</style></head><body style=\" font-family:\'Ubuntu\'; font-size:9pt; font-weight:200; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'MS Shell Dlg 2\'; font-weight:400;\"><br /></p></body></html>", None))
self.label.setText(_translate("MainWindow", "To:", None))
self.pushButtonLoadFromAddressBook.setText(_translate("MainWindow", "Load from Address book", None))
self.label_2.setText(_translate("MainWindow", "From:", None))
self.radioButtonBroadcast.setText(_translate("MainWindow", "Broadcast to everyone who is subscribed to your address", None))
self.pushButtonSend.setText(_translate("MainWindow", "Send", None))
self.labelSendBroadcastWarning.setText(_translate("MainWindow", "Be aware that broadcasts are only encrypted with your address. Anyone who knows your address can read them.", None))
self.pushButtonAddImage.setText(_translate("MainWindow", "Add image", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.send), _translate("MainWindow", "Send", None))
self.sentSearchLineEdit.setPlaceholderText(_translate("MainWindow", "Search", None))
self.sentSearchOptionCB.setItemText(0, _translate("MainWindow", "All", None))

View File

@ -57,7 +57,7 @@
<enum>QTabWidget::Rounded</enum>
</property>
<property name="currentIndex">
<number>0</number>
<number>1</number>
</property>
<widget class="QWidget" name="inbox">
<attribute name="icon">
@ -204,18 +204,6 @@
<string>Send</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_2">
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonLoadFromAddressBook">
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Load from Address book</string>
</property>
</widget>
</item>
<item row="3" column="3">
<widget class="QPushButton" name="pushButtonFetchNamecoinID">
<property name="font">
@ -278,22 +266,8 @@
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2';&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>To:</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>From:</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Ubuntu'; font-size:9pt; font-weight:200; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-weight:400;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -310,6 +284,32 @@ p, li { white-space: pre-wrap; }
</property>
</spacer>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>To:</string>
</property>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="pushButtonLoadFromAddressBook">
<property name="font">
<font>
<pointsize>7</pointsize>
</font>
</property>
<property name="text">
<string>Load from Address book</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>From:</string>
</property>
</widget>
</item>
<item row="1" column="1" colspan="3">
<widget class="QRadioButton" name="radioButtonBroadcast">
<property name="text">
@ -337,14 +337,14 @@ p, li { white-space: pre-wrap; }
</property>
</spacer>
</item>
<item row="7" column="5">
<item row="8" column="5">
<widget class="QPushButton" name="pushButtonSend">
<property name="text">
<string>Send</string>
</property>
</widget>
</item>
<item row="7" column="1" colspan="4">
<item row="8" column="1" colspan="4">
<widget class="QLabel" name="labelSendBroadcastWarning">
<property name="enabled">
<bool>true</bool>
@ -363,6 +363,13 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
<item row="7" column="5">
<widget class="QPushButton" name="pushButtonAddImage">
<property name="text">
<string>Add image</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="sent">
@ -1055,7 +1062,7 @@ p, li { white-space: pre-wrap; }
<x>0</x>
<y>0</y>
<width>885</width>
<height>27</height>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">