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:
parent
700e3d1f17
commit
ee5b038830
|
@ -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())
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||
p, li { white-space: pre-wrap; }
|
||||
</style></head><body style=" font-family:'Sans'; font-size:9pt; font-weight:400; font-style:normal;">
|
||||
<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></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>
|
||||
</style></head><body style=" font-family:'Ubuntu'; font-size:9pt; font-weight:200; font-style:normal;">
|
||||
<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></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">
|
||||
|
|
Reference in New Issue
Block a user