This feature adds a checkbox in the "Send" tab which needs to be unchecked ("removed" like a saftey badge) in order to enable the "Send" button. This shall prevent accidentally sending a messages without having checked the content, the sender and the recipient.
In the settings you can set the behaviour of the checkbox. By default, there will be no badge not to annoy users who don't need this. In future versions the user should be able to set the behaviour separately for each Identity (e.g. no badge for the general chan, but badge for personal address)
This commit is contained in:
parent
a36c696f9d
commit
c400384be4
|
@ -116,6 +116,10 @@ class MyForm(QtGui.QMainWindow):
|
|||
pass
|
||||
|
||||
self.ui.labelSendBroadcastWarning.setVisible(False)
|
||||
self.ui.removeBeforeSend.setChecked(shared.config.getboolean('bitmessagesettings',
|
||||
'removebeforesend'))
|
||||
self.ui.pushButtonSend.setEnabled(not shared.config.getboolean('bitmessagesettings',
|
||||
'removebeforesend'))
|
||||
|
||||
# FILE MENU and other buttons
|
||||
QtCore.QObject.connect(self.ui.actionExit, QtCore.SIGNAL(
|
||||
|
@ -156,7 +160,9 @@ class MyForm(QtGui.QMainWindow):
|
|||
"triggered()"), self.click_actionAbout)
|
||||
QtCore.QObject.connect(self.ui.actionHelp, QtCore.SIGNAL(
|
||||
"triggered()"), self.click_actionHelp)
|
||||
|
||||
QtCore.QObject.connect(self.ui.removeBeforeSend, QtCore.SIGNAL(
|
||||
"toggled(bool)"), self.enableSendButton)
|
||||
|
||||
# Popup menu for the Inbox tab
|
||||
self.ui.inboxContextMenuToolbar = QtGui.QToolBar()
|
||||
# Actions
|
||||
|
@ -1163,7 +1169,7 @@ class MyForm(QtGui.QMainWindow):
|
|||
addressVersionNumber = int(
|
||||
self.regenerateAddressesDialogInstance.ui.lineEditAddressVersionNumber.text())
|
||||
# self.addressGenerator = addressGenerator()
|
||||
# self.addressGenerator.setup(addressVersionNumber,streamNumberForAddress,"unused address",self.regenerateAddressesDialogInstance.ui.spinBoxNumberOfAddressesToMake.value(),self.regenerateAddressesDialogInstance.ui.lineEditPassphrase.text().toUtf8(),self.regenerateAddressesDialogInstance.ui.checkBoxEighteenByteRipe.isChecked())
|
||||
# self.addressGenerator.setup(addressVersionNumber,streamNumberForAddress,"unused address",self.regenerateAddressesDialogInstance.ui.spinBoxNumberOfAddressesToMake.value(),self.regenerateAddressesDialogInstance.ui.lineEditPassphrase.text().toUtf8(),self.regenerateAddressesDialogInstance.ui.EighteenByteRipe.isChecked())
|
||||
# QtCore.QObject.connect(self.addressGenerator, SIGNAL("writeNewAddressToTable(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), self.writeNewAddressToTable)
|
||||
# QtCore.QObject.connect(self.addressGenerator, QtCore.SIGNAL("updateStatusBar(PyQt_PyObject)"), self.updateStatusBar)
|
||||
# self.addressGenerator.start()
|
||||
|
@ -1535,6 +1541,9 @@ class MyForm(QtGui.QMainWindow):
|
|||
newItem.setTextColor(QtGui.QColor(128, 128, 128))
|
||||
self.ui.tableWidgetSubscriptions.setItem(0, 1, newItem)
|
||||
|
||||
def enableSendButton(self):
|
||||
self.ui.pushButtonSend.setEnabled(not self.ui.removeBeforeSend.isChecked())
|
||||
|
||||
def click_pushButtonSend(self):
|
||||
self.statusBar().showMessage('')
|
||||
toAddresses = str(self.ui.lineEditTo.text())
|
||||
|
@ -1634,6 +1643,8 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.ui.lineEditTo.setText('')
|
||||
self.ui.lineEditSubject.setText('')
|
||||
self.ui.textEditMessage.setText('')
|
||||
self.ui.removeBeforeSend.setChecked(shared.config.getboolean('bitmessagesettings',
|
||||
'removebeforesend'))
|
||||
self.ui.tabWidget.setCurrentIndex(2)
|
||||
self.ui.tableWidgetSent.setCurrentCell(0, 0)
|
||||
else:
|
||||
|
@ -2031,11 +2042,11 @@ class MyForm(QtGui.QMainWindow):
|
|||
self.settingsDialogInstance.ui.checkBoxStartInTray.isChecked()))
|
||||
shared.config.set('bitmessagesettings', 'willinglysendtomobile', str(
|
||||
self.settingsDialogInstance.ui.checkBoxWillinglySendToMobile.isChecked()))
|
||||
|
||||
shared.config.set('bitmessagesettings', 'removebeforesend', str(
|
||||
self.settingsDialogInstance.ui.checkBoxRemoveBeforeSendSetting.isChecked()))
|
||||
lang_ind = int(self.settingsDialogInstance.ui.languageComboBox.currentIndex())
|
||||
if not languages[lang_ind] == 'other':
|
||||
shared.config.set('bitmessagesettings', 'userlocale', languages[lang_ind])
|
||||
|
||||
if int(shared.config.get('bitmessagesettings', 'port')) != int(self.settingsDialogInstance.ui.lineEditTCPPort.text()):
|
||||
if not shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
|
||||
QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate(
|
||||
|
@ -3046,7 +3057,9 @@ class settingsDialog(QtGui.QDialog):
|
|||
shared.config.getboolean('bitmessagesettings', 'startintray'))
|
||||
self.ui.checkBoxWillinglySendToMobile.setChecked(
|
||||
shared.safeConfigGetBoolean('bitmessagesettings', 'willinglysendtomobile'))
|
||||
|
||||
self.ui.checkBoxRemoveBeforeSendSetting.setChecked(
|
||||
shared.safeConfigGetBoolean('bitmessagesettings', 'removebeforesend'))
|
||||
|
||||
global languages
|
||||
languages = ['system','en','eo','fr','de','es','ru','en_pirate','other']
|
||||
user_countrycode = str(shared.config.get('bitmessagesettings', 'userlocale'))
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'bitmessageui.ui'
|
||||
#
|
||||
# Created: Mon Aug 12 00:08:20 2013
|
||||
# Created: Thu Aug 29 14:14:15 2013
|
||||
# by: PyQt4 UI code generator 4.10.2
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
@ -26,7 +26,7 @@ except AttributeError:
|
|||
class Ui_MainWindow(object):
|
||||
def setupUi(self, MainWindow):
|
||||
MainWindow.setObjectName(_fromUtf8("MainWindow"))
|
||||
MainWindow.resize(795, 580)
|
||||
MainWindow.resize(810, 580)
|
||||
icon = QtGui.QIcon()
|
||||
icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/can-icon-24px.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
|
||||
MainWindow.setWindowIcon(icon)
|
||||
|
@ -140,7 +140,7 @@ class Ui_MainWindow(object):
|
|||
self.gridLayout_2.addWidget(self.lineEditTo, 3, 1, 1, 1)
|
||||
self.textEditMessage = QtGui.QTextEdit(self.send)
|
||||
self.textEditMessage.setObjectName(_fromUtf8("textEditMessage"))
|
||||
self.gridLayout_2.addWidget(self.textEditMessage, 5, 1, 2, 5)
|
||||
self.gridLayout_2.addWidget(self.textEditMessage, 5, 1, 2, 6)
|
||||
self.label = QtGui.QLabel(self.send)
|
||||
self.label.setObjectName(_fromUtf8("label"))
|
||||
self.gridLayout_2.addWidget(self.label, 3, 0, 1, 1)
|
||||
|
@ -155,12 +155,13 @@ class Ui_MainWindow(object):
|
|||
self.lineEditSubject = QtGui.QLineEdit(self.send)
|
||||
self.lineEditSubject.setText(_fromUtf8(""))
|
||||
self.lineEditSubject.setObjectName(_fromUtf8("lineEditSubject"))
|
||||
self.gridLayout_2.addWidget(self.lineEditSubject, 4, 1, 1, 5)
|
||||
self.gridLayout_2.addWidget(self.lineEditSubject, 4, 1, 1, 6)
|
||||
spacerItem1 = QtGui.QSpacerItem(20, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
|
||||
self.gridLayout_2.addItem(spacerItem1, 3, 4, 1, 1)
|
||||
self.pushButtonSend = QtGui.QPushButton(self.send)
|
||||
self.pushButtonSend.setEnabled(False)
|
||||
self.pushButtonSend.setObjectName(_fromUtf8("pushButtonSend"))
|
||||
self.gridLayout_2.addWidget(self.pushButtonSend, 7, 5, 1, 1)
|
||||
self.gridLayout_2.addWidget(self.pushButtonSend, 7, 6, 1, 1)
|
||||
self.labelSendBroadcastWarning = QtGui.QLabel(self.send)
|
||||
self.labelSendBroadcastWarning.setEnabled(True)
|
||||
sizePolicy = QtGui.QSizePolicy(QtGui.QSizePolicy.Ignored, QtGui.QSizePolicy.Preferred)
|
||||
|
@ -171,6 +172,11 @@ class Ui_MainWindow(object):
|
|||
self.labelSendBroadcastWarning.setIndent(-1)
|
||||
self.labelSendBroadcastWarning.setObjectName(_fromUtf8("labelSendBroadcastWarning"))
|
||||
self.gridLayout_2.addWidget(self.labelSendBroadcastWarning, 7, 1, 1, 4)
|
||||
self.removeBeforeSend = QtGui.QCheckBox(self.send)
|
||||
self.removeBeforeSend.setEnabled(True)
|
||||
self.removeBeforeSend.setChecked(True)
|
||||
self.removeBeforeSend.setObjectName(_fromUtf8("removeBeforeSend"))
|
||||
self.gridLayout_2.addWidget(self.removeBeforeSend, 3, 6, 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(""))
|
||||
|
@ -428,7 +434,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, 795, 18))
|
||||
self.menubar.setGeometry(QtCore.QRect(0, 0, 810, 18))
|
||||
self.menubar.setObjectName(_fromUtf8("menubar"))
|
||||
self.menuFile = QtGui.QMenu(self.menubar)
|
||||
self.menuFile.setObjectName(_fromUtf8("menuFile"))
|
||||
|
@ -490,7 +496,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)
|
||||
|
@ -553,6 +559,7 @@ class Ui_MainWindow(object):
|
|||
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.removeBeforeSend.setText(_translate("MainWindow", "Remove before Sending", 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))
|
||||
|
@ -630,3 +637,13 @@ class Ui_MainWindow(object):
|
|||
self.actionJoinChan.setText(_translate("MainWindow", "Join / Create chan", None))
|
||||
|
||||
import bitmessage_icons_rc
|
||||
|
||||
if __name__ == "__main__":
|
||||
import sys
|
||||
app = QtGui.QApplication(sys.argv)
|
||||
MainWindow = QtGui.QMainWindow()
|
||||
ui = Ui_MainWindow()
|
||||
ui.setupUi(MainWindow)
|
||||
MainWindow.show()
|
||||
sys.exit(app.exec_())
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>795</width>
|
||||
<width>810</width>
|
||||
<height>580</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -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">
|
||||
|
@ -263,7 +263,7 @@
|
|||
<item row="3" column="1">
|
||||
<widget class="QLineEdit" name="lineEditTo"/>
|
||||
</item>
|
||||
<item row="5" column="1" rowspan="2" colspan="5">
|
||||
<item row="5" column="1" rowspan="2" colspan="6">
|
||||
<widget class="QTextEdit" name="textEditMessage">
|
||||
<property name="html">
|
||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||
|
@ -308,7 +308,7 @@ p, li { white-space: pre-wrap; }
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1" colspan="5">
|
||||
<item row="4" column="1" colspan="6">
|
||||
<widget class="QLineEdit" name="lineEditSubject">
|
||||
<property name="text">
|
||||
<string/>
|
||||
|
@ -328,8 +328,11 @@ p, li { white-space: pre-wrap; }
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="7" column="5">
|
||||
<item row="7" column="6">
|
||||
<widget class="QPushButton" name="pushButtonSend">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Send</string>
|
||||
</property>
|
||||
|
@ -354,6 +357,19 @@ p, li { white-space: pre-wrap; }
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="6">
|
||||
<widget class="QCheckBox" name="removeBeforeSend">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Remove before Sending</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="sent">
|
||||
|
@ -1022,7 +1038,7 @@ p, li { white-space: pre-wrap; }
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>795</width>
|
||||
<width>810</width>
|
||||
<height>18</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'settings.ui'
|
||||
#
|
||||
# Created: Sat Aug 24 09:19:58 2013
|
||||
# Created: Thu Aug 29 14:40:14 2013
|
||||
# by: PyQt4 UI code generator 4.10.2
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
@ -26,7 +26,7 @@ except AttributeError:
|
|||
class Ui_settingsDialog(object):
|
||||
def setupUi(self, settingsDialog):
|
||||
settingsDialog.setObjectName(_fromUtf8("settingsDialog"))
|
||||
settingsDialog.resize(567, 343)
|
||||
settingsDialog.resize(572, 343)
|
||||
self.gridLayout = QtGui.QGridLayout(settingsDialog)
|
||||
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
|
||||
self.buttonBox = QtGui.QDialogButtonBox(settingsDialog)
|
||||
|
@ -83,6 +83,9 @@ class Ui_settingsDialog(object):
|
|||
self.languageComboBox.addItem(_fromUtf8(""))
|
||||
self.horizontalLayout_2.addWidget(self.languageComboBox)
|
||||
self.gridLayout_5.addWidget(self.groupBox, 10, 1, 1, 1)
|
||||
self.checkBoxRemoveBeforeSendSetting = QtGui.QCheckBox(self.tabUserInterface)
|
||||
self.checkBoxRemoveBeforeSendSetting.setObjectName(_fromUtf8("checkBoxRemoveBeforeSendSetting"))
|
||||
self.gridLayout_5.addWidget(self.checkBoxRemoveBeforeSendSetting, 7, 0, 1, 1)
|
||||
self.tabWidgetSettings.addTab(self.tabUserInterface, _fromUtf8(""))
|
||||
self.tabNetworkSettings = QtGui.QWidget()
|
||||
self.tabNetworkSettings.setObjectName(_fromUtf8("tabNetworkSettings"))
|
||||
|
@ -353,6 +356,7 @@ class Ui_settingsDialog(object):
|
|||
self.languageComboBox.setItemText(6, _translate("settingsDialog", "Russian", "ru"))
|
||||
self.languageComboBox.setItemText(7, _translate("settingsDialog", "Pirate English", "en_pirate"))
|
||||
self.languageComboBox.setItemText(8, _translate("settingsDialog", "Other (set in keys.dat)", "other"))
|
||||
self.checkBoxRemoveBeforeSendSetting.setText(_translate("settingsDialog", "Add safety badge that needs to be removed before sending messages", None))
|
||||
self.tabWidgetSettings.setTabText(self.tabWidgetSettings.indexOf(self.tabUserInterface), _translate("settingsDialog", "User Interface", None))
|
||||
self.groupBox1.setTitle(_translate("settingsDialog", "Listening port", None))
|
||||
self.label.setText(_translate("settingsDialog", "Listen for connections on port:", None))
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>567</width>
|
||||
<width>572</width>
|
||||
<height>343</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -163,6 +163,13 @@
|
|||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<widget class="QCheckBox" name="checkBoxRemoveBeforeSendSetting">
|
||||
<property name="text">
|
||||
<string>Add safety badge that needs to be removed before sending messages</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<widget class="QWidget" name="tabNetworkSettings">
|
||||
|
|
|
@ -71,6 +71,7 @@ def loadConfig():
|
|||
'bitmessagesettings', 'maxacceptablepayloadlengthextrabytes', '0')
|
||||
shared.config.set('bitmessagesettings', 'dontconnect', 'true')
|
||||
shared.config.set('bitmessagesettings', 'userlocale', 'system')
|
||||
shared.config.set('bitmessagesettings', 'removebeforesend', 'false')
|
||||
ensureNamecoinOptions()
|
||||
|
||||
if storeConfigFilesInSameDirectoryAsProgramByDefault:
|
||||
|
|
Reference in New Issue
Block a user