Merge branch 'master' into sql_refactor

This commit is contained in:
Grant T. Olson 2013-08-28 10:44:39 -04:00
commit 8b750be136
26 changed files with 4668 additions and 1048 deletions

4
osx.sh Normal file → Executable file
View File

@ -12,12 +12,12 @@ if [[ -z "$1" ]]; then
exit
fi
echo "Creating OS X packages for Bitmessage. This script will ask for sudo to create the dmg volume"
echo "Creating OS X packages for Bitmessage."
cd src && python build_osx.py py2app
if [[ $? = "0" ]]; then
sudo hdiutil create -fs HFS+ -volname "Bitmessage" -srcfolder dist/Bitmessage.app dist/bitmessage-v$1.dmg
hdiutil create -fs HFS+ -volname "Bitmessage" -srcfolder dist/Bitmessage.app dist/bitmessage-v$1.dmg
else
echo "Problem creating Bitmessage.app, stopping."
exit

View File

@ -1943,20 +1943,30 @@ class MyForm(QtGui.QMainWindow):
self.settingsDialogInstance.ui.checkBoxStartInTray.isChecked()))
shared.config.set('bitmessagesettings', 'willinglysendtomobile', str(
self.settingsDialogInstance.ui.checkBoxWillinglySendToMobile.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(
"MainWindow", "You must restart Bitmessage for the port number change to take effect."))
shared.config.set('bitmessagesettings', 'port', str(
self.settingsDialogInstance.ui.lineEditTCPPort.text()))
if shared.config.get('bitmessagesettings', 'socksproxytype') == 'none' and str(self.settingsDialogInstance.ui.comboBoxProxyType.currentText())[0:5] == 'SOCKS':
#print 'self.settingsDialogInstance.ui.comboBoxProxyType.currentText()', self.settingsDialogInstance.ui.comboBoxProxyType.currentText()
#print 'self.settingsDialogInstance.ui.comboBoxProxyType.currentText())[0:5]', self.settingsDialogInstance.ui.comboBoxProxyType.currentText()[0:5]
if shared.config.get('bitmessagesettings', 'socksproxytype') == 'none' and self.settingsDialogInstance.ui.comboBoxProxyType.currentText()[0:5] == 'SOCKS':
if shared.statusIconColor != 'red':
QMessageBox.about(self, _translate("MainWindow", "Restart"), _translate(
"MainWindow", "Bitmessage will use your proxy from now on but you may want to manually restart Bitmessage now to close existing connections (if any)."))
if shared.config.get('bitmessagesettings', 'socksproxytype')[0:5] == 'SOCKS' and str(self.settingsDialogInstance.ui.comboBoxProxyType.currentText()) == 'none':
if shared.config.get('bitmessagesettings', 'socksproxytype')[0:5] == 'SOCKS' and self.settingsDialogInstance.ui.comboBoxProxyType.currentText()[0:5] != 'SOCKS':
self.statusBar().showMessage('')
shared.config.set('bitmessagesettings', 'socksproxytype', str(
self.settingsDialogInstance.ui.comboBoxProxyType.currentText()))
if self.settingsDialogInstance.ui.comboBoxProxyType.currentText()[0:5] == 'SOCKS':
shared.config.set('bitmessagesettings', 'socksproxytype', str(
self.settingsDialogInstance.ui.comboBoxProxyType.currentText()))
else:
shared.config.set('bitmessagesettings', 'socksproxytype', 'none')
shared.config.set('bitmessagesettings', 'socksauthentication', str(
self.settingsDialogInstance.ui.checkBoxAuthentication.isChecked()))
shared.config.set('bitmessagesettings', 'sockshostname', str(
@ -2827,6 +2837,16 @@ class settingsDialog(QtGui.QDialog):
shared.config.getboolean('bitmessagesettings', 'startintray'))
self.ui.checkBoxWillinglySendToMobile.setChecked(
shared.safeConfigGetBoolean('bitmessagesettings', 'willinglysendtomobile'))
global languages
languages = ['system','en','eo','fr','de','es','ru','en_pirate','other']
user_countrycode = str(shared.config.get('bitmessagesettings', 'userlocale'))
if user_countrycode in languages:
curr_index = languages.index(user_countrycode)
else:
curr_index = languages.index('other')
self.ui.languageComboBox.setCurrentIndex(curr_index)
if shared.appdata == '':
self.ui.checkBoxPortableMode.setChecked(True)
if 'darwin' in sys.platform:
@ -3167,25 +3187,50 @@ class UISignaler(QThread):
def run():
app = QtGui.QApplication(sys.argv)
translator = QtCore.QTranslator()
lang_countrycode = str(locale.getdefaultlocale()[0])
translation = "translations/bitmessage_" + lang_countrycode
if not os.path.isfile(translation + ".pro"):
# Don't have fully localized translation, try language only
lang = lang_countrycode[0:2]
translation = "translations/bitmessage_" + lang
if not os.path.isfile(translation + ".pro"):
# Don't have language either, default to 'Merica USA! USA!
translation = "translations/bitmessage_en_US"
try:
translator.load(translation)
#translator.load("translations/bitmessage_fr_BE") # test French
locale_countrycode = str(locale.getdefaultlocale()[0])
except:
# The above is not compatible with all versions of OSX.
translator.load("translations/bitmessage_en_US") # Default to english.
locale_countrycode = "en_US" # Default to english.
locale_lang = locale_countrycode[0:2]
user_countrycode = str(shared.config.get('bitmessagesettings', 'userlocale'))
user_lang = user_countrycode[0:2]
translation_path = "translations/bitmessage_"
if shared.config.get('bitmessagesettings', 'userlocale') == 'system':
# try to detect the users locale otherwise fallback to English
try:
# try the users full locale, e.g. 'en_US':
# since we usually only provide languages, not localozations
# this will usually fail
translator.load(translation_path + locale_countrycode)
except:
try:
# try the users locale language, e.g. 'en':
# since we usually only provide languages, not localozations
# this will usually succeed
translator.load(translation_path + locale_lang)
except:
# as English is already the default language, we don't
# need to do anything. No need to translate.
pass
else:
try:
# check if the user input is a valid translation file:
# since user_countrycode will be usually set by the combobox
# it will usually just be a language code
translator.load(translation_path + user_countrycode)
except:
try:
# check if the user lang is a valid translation file:
# this is only needed if the user manually set his 'userlocale'
# in the keys.dat to a countrycode (e.g. 'de_CH')
translator.load(translation_path + user_lang)
except:
# as English is already the default language, we don't
# need to do anything. No need to translate.
pass
QtGui.QApplication.installTranslator(translator)
app.setStyleSheet("QStatusBar::item { border: 0px solid black }")

View File

@ -2,8 +2,8 @@
# Form implementation generated from reading ui file 'bitmessageui.ui'
#
# Created: Mon Aug 12 00:08:20 2013
# by: PyQt4 UI code generator 4.10.2
# Created: Thu Aug 15 14:19:52 2013
# by: PyQt4 UI code generator 4.10
#
# WARNING! All changes made in this file will be lost!
@ -69,7 +69,11 @@ class Ui_MainWindow(object):
self.inboxSearchOptionCB.addItem(_fromUtf8(""))
self.horizontalLayoutSearch.addWidget(self.inboxSearchOptionCB)
self.verticalLayout_2.addLayout(self.horizontalLayoutSearch)
self.tableWidgetInbox = QtGui.QTableWidget(self.inbox)
self.splitter = QtGui.QSplitter(self.inbox)
self.splitter.setOrientation(QtCore.Qt.Vertical)
self.splitter.setObjectName(_fromUtf8("splitter"))
self.tableWidgetInbox = QtGui.QTableWidget(self.splitter)
self.tableWidgetInbox.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.tableWidgetInbox.setAlternatingRowColors(True)
self.tableWidgetInbox.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.tableWidgetInbox.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
@ -93,11 +97,11 @@ class Ui_MainWindow(object):
self.tableWidgetInbox.horizontalHeader().setStretchLastSection(True)
self.tableWidgetInbox.verticalHeader().setVisible(False)
self.tableWidgetInbox.verticalHeader().setDefaultSectionSize(26)
self.verticalLayout_2.addWidget(self.tableWidgetInbox)
self.textEditInboxMessage = QtGui.QTextEdit(self.inbox)
self.textEditInboxMessage = QtGui.QTextEdit(self.splitter)
self.textEditInboxMessage.setBaseSize(QtCore.QSize(0, 500))
self.textEditInboxMessage.setReadOnly(True)
self.textEditInboxMessage.setObjectName(_fromUtf8("textEditInboxMessage"))
self.verticalLayout_2.addWidget(self.textEditInboxMessage)
self.verticalLayout_2.addWidget(self.splitter)
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/inbox.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget.addTab(self.inbox, icon1, _fromUtf8(""))
@ -193,7 +197,11 @@ class Ui_MainWindow(object):
self.sentSearchOptionCB.addItem(_fromUtf8(""))
self.horizontalLayout.addWidget(self.sentSearchOptionCB)
self.verticalLayout.addLayout(self.horizontalLayout)
self.tableWidgetSent = QtGui.QTableWidget(self.sent)
self.splitter_2 = QtGui.QSplitter(self.sent)
self.splitter_2.setOrientation(QtCore.Qt.Vertical)
self.splitter_2.setObjectName(_fromUtf8("splitter_2"))
self.tableWidgetSent = QtGui.QTableWidget(self.splitter_2)
self.tableWidgetSent.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers)
self.tableWidgetSent.setDragDropMode(QtGui.QAbstractItemView.DragDrop)
self.tableWidgetSent.setAlternatingRowColors(True)
self.tableWidgetSent.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
@ -217,10 +225,10 @@ class Ui_MainWindow(object):
self.tableWidgetSent.horizontalHeader().setStretchLastSection(True)
self.tableWidgetSent.verticalHeader().setVisible(False)
self.tableWidgetSent.verticalHeader().setStretchLastSection(False)
self.verticalLayout.addWidget(self.tableWidgetSent)
self.textEditSentMessage = QtGui.QTextEdit(self.sent)
self.textEditSentMessage = QtGui.QTextEdit(self.splitter_2)
self.textEditSentMessage.setReadOnly(True)
self.textEditSentMessage.setObjectName(_fromUtf8("textEditSentMessage"))
self.verticalLayout.addWidget(self.textEditSentMessage)
self.verticalLayout.addWidget(self.splitter_2)
icon3 = QtGui.QIcon()
icon3.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/sent.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget.addTab(self.sent, icon3, _fromUtf8(""))
@ -428,7 +436,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, 795, 23))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName(_fromUtf8("menuFile"))
@ -546,8 +554,8 @@ 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:\'MS Shell Dlg 2\'; 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;\"><br /></p></body></html>", None))
"</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))
self.label.setText(_translate("MainWindow", "To:", None))
self.label_2.setText(_translate("MainWindow", "From:", None))
self.radioButtonBroadcast.setText(_translate("MainWindow", "Broadcast to everyone who is subscribed to your address", None))

View File

@ -22,7 +22,16 @@
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<property name="margin">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="0">
@ -112,76 +121,85 @@
</layout>
</item>
<item>
<widget class="QTableWidget" name="tableWidgetInbox">
<property name="alternatingRowColors">
<bool>true</bool>
<widget class="QSplitter" name="splitter">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>200</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>27</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>26</number>
</attribute>
<column>
<property name="text">
<string>To</string>
<widget class="QTableWidget" name="tableWidgetInbox">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</column>
<column>
<property name="text">
<string>From</string>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</column>
<column>
<property name="text">
<string>Subject</string>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</column>
<column>
<property name="text">
<string>Received</string>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
</column>
</widget>
</item>
<item>
<widget class="QTextEdit" name="textEditInboxMessage">
<property name="baseSize">
<size>
<width>0</width>
<height>500</height>
</size>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>200</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>27</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>26</number>
</attribute>
<column>
<property name="text">
<string>To</string>
</property>
</column>
<column>
<property name="text">
<string>From</string>
</property>
</column>
<column>
<property name="text">
<string>Subject</string>
</property>
</column>
<column>
<property name="text">
<string>Received</string>
</property>
</column>
</widget>
<widget class="QTextEdit" name="textEditInboxMessage">
<property name="baseSize">
<size>
<width>0</width>
<height>500</height>
</size>
</property>
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</widget>
</item>
</layout>
@ -269,8 +287,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:'MS Shell Dlg 2'; 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;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&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>
@ -409,71 +427,81 @@ p, li { white-space: pre-wrap; }
</layout>
</item>
<item>
<widget class="QTableWidget" name="tableWidgetSent">
<property name="dragDropMode">
<enum>QAbstractItemView::DragDrop</enum>
<widget class="QSplitter" name="splitter_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>130</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>To</string>
<widget class="QTableWidget" name="tableWidgetSent">
<property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set>
</property>
</column>
<column>
<property name="text">
<string>From</string>
<property name="dragDropMode">
<enum>QAbstractItemView::DragDrop</enum>
</property>
</column>
<column>
<property name="text">
<string>Subject</string>
<property name="alternatingRowColors">
<bool>true</bool>
</property>
</column>
<column>
<property name="text">
<string>Status</string>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
</column>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>130</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderStretchLastSection">
<bool>false</bool>
</attribute>
<column>
<property name="text">
<string>To</string>
</property>
</column>
<column>
<property name="text">
<string>From</string>
</property>
</column>
<column>
<property name="text">
<string>Subject</string>
</property>
</column>
<column>
<property name="text">
<string>Status</string>
</property>
</column>
</widget>
<widget class="QTextEdit" name="textEditSentMessage">
<property name="readOnly">
<bool>true</bool>
</property>
</widget>
</widget>
</item>
<item>
<widget class="QTextEdit" name="textEditSentMessage"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="youridentities">
@ -1023,7 +1051,7 @@ p, li { white-space: pre-wrap; }
<x>0</x>
<y>0</y>
<width>795</width>
<height>18</height>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">

View File

@ -2,8 +2,8 @@
# Form implementation generated from reading ui file 'settings.ui'
#
# Created: Wed Aug 14 18:31:34 2013
# by: PyQt4 UI code generator 4.10
# Created: Tue Aug 27 22:23:38 2013
# by: PyQt4 UI code generator 4.10.2
#
# WARNING! All changes made in this file will be lost!
@ -41,55 +41,68 @@ class Ui_settingsDialog(object):
self.tabUserInterface.setObjectName(_fromUtf8("tabUserInterface"))
self.gridLayout_5 = QtGui.QGridLayout(self.tabUserInterface)
self.gridLayout_5.setObjectName(_fromUtf8("gridLayout_5"))
self.labelSettingsNote = QtGui.QLabel(self.tabUserInterface)
self.labelSettingsNote.setText(_fromUtf8(""))
self.labelSettingsNote.setWordWrap(True)
self.labelSettingsNote.setObjectName(_fromUtf8("labelSettingsNote"))
self.gridLayout_5.addWidget(self.labelSettingsNote, 7, 0, 1, 1)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.gridLayout_5.addItem(spacerItem, 8, 0, 1, 1)
self.checkBoxStartInTray = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxStartInTray.setObjectName(_fromUtf8("checkBoxStartInTray"))
self.gridLayout_5.addWidget(self.checkBoxStartInTray, 1, 0, 1, 1)
self.checkBoxShowTrayNotifications = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxShowTrayNotifications.setObjectName(_fromUtf8("checkBoxShowTrayNotifications"))
self.gridLayout_5.addWidget(self.checkBoxShowTrayNotifications, 3, 0, 1, 1)
self.checkBoxMinimizeToTray = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxMinimizeToTray.setChecked(True)
self.checkBoxMinimizeToTray.setObjectName(_fromUtf8("checkBoxMinimizeToTray"))
self.gridLayout_5.addWidget(self.checkBoxMinimizeToTray, 2, 0, 1, 1)
self.label_7 = QtGui.QLabel(self.tabUserInterface)
self.label_7.setWordWrap(True)
self.label_7.setObjectName(_fromUtf8("label_7"))
self.gridLayout_5.addWidget(self.label_7, 5, 0, 1, 1)
spacerItem = QtGui.QSpacerItem(20, 40, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
self.gridLayout_5.addItem(spacerItem, 10, 0, 1, 1)
self.checkBoxStartOnLogon = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxStartOnLogon.setObjectName(_fromUtf8("checkBoxStartOnLogon"))
self.gridLayout_5.addWidget(self.checkBoxStartOnLogon, 0, 0, 1, 1)
self.checkBoxShowTrayNotifications = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxShowTrayNotifications.setObjectName(_fromUtf8("checkBoxShowTrayNotifications"))
self.gridLayout_5.addWidget(self.checkBoxShowTrayNotifications, 3, 0, 1, 1)
self.checkBoxPortableMode = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxPortableMode.setObjectName(_fromUtf8("checkBoxPortableMode"))
self.gridLayout_5.addWidget(self.checkBoxPortableMode, 4, 0, 1, 1)
self.checkBoxStartInTray = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxStartInTray.setObjectName(_fromUtf8("checkBoxStartInTray"))
self.gridLayout_5.addWidget(self.checkBoxStartInTray, 1, 0, 1, 1)
self.PortableModeDescription = QtGui.QLabel(self.tabUserInterface)
self.PortableModeDescription.setWordWrap(True)
self.PortableModeDescription.setObjectName(_fromUtf8("PortableModeDescription"))
self.gridLayout_5.addWidget(self.PortableModeDescription, 5, 0, 1, 2)
self.checkBoxWillinglySendToMobile = QtGui.QCheckBox(self.tabUserInterface)
self.checkBoxWillinglySendToMobile.setObjectName(_fromUtf8("checkBoxWillinglySendToMobile"))
self.gridLayout_5.addWidget(self.checkBoxWillinglySendToMobile, 6, 0, 1, 1)
self.gridLayout_5.addWidget(self.checkBoxWillinglySendToMobile, 6, 0, 1, 2)
self.groupBox = QtGui.QGroupBox(self.tabUserInterface)
self.groupBox.setObjectName(_fromUtf8("groupBox"))
self.horizontalLayout_2 = QtGui.QHBoxLayout(self.groupBox)
self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
self.languageComboBox = QtGui.QComboBox(self.groupBox)
self.languageComboBox.setMinimumSize(QtCore.QSize(100, 0))
self.languageComboBox.setObjectName(_fromUtf8("languageComboBox"))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.languageComboBox.addItem(_fromUtf8(""))
self.horizontalLayout_2.addWidget(self.languageComboBox)
self.gridLayout_5.addWidget(self.groupBox, 10, 1, 1, 1)
self.tabWidgetSettings.addTab(self.tabUserInterface, _fromUtf8(""))
self.tabNetworkSettings = QtGui.QWidget()
self.tabNetworkSettings.setObjectName(_fromUtf8("tabNetworkSettings"))
self.gridLayout_4 = QtGui.QGridLayout(self.tabNetworkSettings)
self.gridLayout_4.setObjectName(_fromUtf8("gridLayout_4"))
self.groupBox = QtGui.QGroupBox(self.tabNetworkSettings)
self.groupBox.setObjectName(_fromUtf8("groupBox"))
self.gridLayout_3 = QtGui.QGridLayout(self.groupBox)
self.groupBox1 = QtGui.QGroupBox(self.tabNetworkSettings)
self.groupBox1.setObjectName(_fromUtf8("groupBox1"))
self.gridLayout_3 = QtGui.QGridLayout(self.groupBox1)
self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3"))
spacerItem1 = QtGui.QSpacerItem(125, 20, QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Minimum)
self.gridLayout_3.addItem(spacerItem1, 0, 0, 1, 1)
self.label = QtGui.QLabel(self.groupBox)
self.label = QtGui.QLabel(self.groupBox1)
self.label.setObjectName(_fromUtf8("label"))
self.gridLayout_3.addWidget(self.label, 0, 1, 1, 1)
self.lineEditTCPPort = QtGui.QLineEdit(self.groupBox)
self.lineEditTCPPort = QtGui.QLineEdit(self.groupBox1)
self.lineEditTCPPort.setMaximumSize(QtCore.QSize(70, 16777215))
self.lineEditTCPPort.setObjectName(_fromUtf8("lineEditTCPPort"))
self.gridLayout_3.addWidget(self.lineEditTCPPort, 0, 2, 1, 1)
self.gridLayout_4.addWidget(self.groupBox, 0, 0, 1, 1)
self.gridLayout_4.addWidget(self.groupBox1, 0, 0, 1, 1)
self.groupBox_2 = QtGui.QGroupBox(self.tabNetworkSettings)
self.groupBox_2.setObjectName(_fromUtf8("groupBox_2"))
self.gridLayout_2 = QtGui.QGridLayout(self.groupBox_2)
@ -324,15 +337,25 @@ class Ui_settingsDialog(object):
def retranslateUi(self, settingsDialog):
settingsDialog.setWindowTitle(_translate("settingsDialog", "Settings", None))
self.checkBoxStartInTray.setText(_translate("settingsDialog", "Start Bitmessage in the tray (don\'t show main window)", None))
self.checkBoxShowTrayNotifications.setText(_translate("settingsDialog", "Show notification when message received", None))
self.checkBoxMinimizeToTray.setText(_translate("settingsDialog", "Minimize to tray", None))
self.label_7.setText(_translate("settingsDialog", "In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.", None))
self.checkBoxStartOnLogon.setText(_translate("settingsDialog", "Start Bitmessage on user login", None))
self.checkBoxShowTrayNotifications.setText(_translate("settingsDialog", "Show notification when message received", None))
self.checkBoxPortableMode.setText(_translate("settingsDialog", "Run in Portable Mode", None))
self.checkBoxStartInTray.setText(_translate("settingsDialog", "Start Bitmessage in the tray (don\'t show main window)", None))
self.PortableModeDescription.setText(_translate("settingsDialog", "In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.", None))
self.checkBoxWillinglySendToMobile.setText(_translate("settingsDialog", "Willingly include unencrypted destination address when sending to a mobile device", None))
self.groupBox.setTitle(_translate("settingsDialog", "Interface Language", None))
self.languageComboBox.setItemText(0, _translate("settingsDialog", "System Settings", "system"))
self.languageComboBox.setItemText(1, _translate("settingsDialog", "English", "en"))
self.languageComboBox.setItemText(2, _translate("settingsDialog", "Esperanto", "eo"))
self.languageComboBox.setItemText(3, _translate("settingsDialog", "Français", "fr"))
self.languageComboBox.setItemText(4, _translate("settingsDialog", "Deutsch", "de"))
self.languageComboBox.setItemText(5, _translate("settingsDialog", "Español", "es"))
self.languageComboBox.setItemText(6, _translate("settingsDialog", "Русский", "ru"))
self.languageComboBox.setItemText(7, _translate("settingsDialog", "Pirate English", "en_pirate"))
self.languageComboBox.setItemText(8, _translate("settingsDialog", "Other (set in keys.dat)", "other"))
self.tabWidgetSettings.setTabText(self.tabWidgetSettings.indexOf(self.tabUserInterface), _translate("settingsDialog", "User Interface", None))
self.groupBox.setTitle(_translate("settingsDialog", "Listening port", None))
self.groupBox1.setTitle(_translate("settingsDialog", "Listening port", None))
self.label.setText(_translate("settingsDialog", "Listen for connections on port:", None))
self.groupBox_2.setTitle(_translate("settingsDialog", "Proxy server / Tor", None))
self.label_2.setText(_translate("settingsDialog", "Type:", None))

View File

@ -37,17 +37,17 @@
<string>User Interface</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_5">
<item row="7" column="0">
<widget class="QLabel" name="labelSettingsNote">
<item row="2" column="0">
<widget class="QCheckBox" name="checkBoxMinimizeToTray">
<property name="text">
<string/>
<string>Minimize to tray</string>
</property>
<property name="wordWrap">
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="8" column="0">
<item row="10" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
@ -60,10 +60,10 @@
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBoxStartInTray">
<item row="0" column="0">
<widget class="QCheckBox" name="checkBoxStartOnLogon">
<property name="text">
<string>Start Bitmessage in the tray (don't show main window)</string>
<string>Start Bitmessage on user login</string>
</property>
</widget>
</item>
@ -74,18 +74,22 @@
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="checkBoxMinimizeToTray">
<item row="4" column="0">
<widget class="QCheckBox" name="checkBoxPortableMode">
<property name="text">
<string>Minimize to tray</string>
</property>
<property name="checked">
<bool>true</bool>
<string>Run in Portable Mode</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<item row="1" column="0">
<widget class="QCheckBox" name="checkBoxStartInTray">
<property name="text">
<string>Start Bitmessage in the tray (don't show main window)</string>
</property>
</widget>
</item>
<item row="5" column="0" colspan="2">
<widget class="QLabel" name="PortableModeDescription">
<property name="text">
<string>In Portable Mode, messages and config files are stored in the same directory as the program rather than the normal application-data folder. This makes it convenient to run Bitmessage from a USB thumb drive.</string>
</property>
@ -94,27 +98,77 @@
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBoxStartOnLogon">
<property name="text">
<string>Start Bitmessage on user login</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QCheckBox" name="checkBoxPortableMode">
<property name="text">
<string>Run in Portable Mode</string>
</property>
</widget>
</item>
<item row="6" column="0">
<item row="6" column="0" colspan="2">
<widget class="QCheckBox" name="checkBoxWillinglySendToMobile">
<property name="text">
<string>Willingly include unencrypted destination address when sending to a mobile device</string>
</property>
</widget>
</item>
<item row="10" column="1">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Interface Language</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QComboBox" name="languageComboBox">
<property name="minimumSize">
<size>
<width>100</width>
<height>0</height>
</size>
</property>
<item>
<property name="text">
<string comment="system">System Settings</string>
</property>
</item>
<item>
<property name="text">
<string comment="en">English</string>
</property>
</item>
<item>
<property name="text">
<string comment="eo">Esperanto</string>
</property>
</item>
<item>
<property name="text">
<string comment="fr">Français</string>
</property>
</item>
<item>
<property name="text">
<string comment="de">Deutsch</string>
</property>
</item>
<item>
<property name="text">
<string comment="es">Español</string>
</property>
</item>
<item>
<property name="text">
<string comment="ru">Русский</string>
</property>
</item>
<item>
<property name="text">
<string comment="en_pirate">Pirate English</string>
</property>
</item>
<item>
<property name="text">
<string comment="other">Other (set in keys.dat)</string>
</property>
</item>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="tabNetworkSettings">

View File

@ -5,12 +5,15 @@ version = "0.3.4"
mainscript = ["bitmessagemain.py"]
setup(
name = name,
name = name,
version = version,
app = mainscript,
setup_requires = ["py2app"],
options = dict(py2app=dict(
resources = ["images"],
iconfile = "images/bitmessage.icns"
))
options = dict(
py2app = dict(
resources = ["images"],
includes = ['sip', 'PyQt4._qt'],
iconfile = "images/bitmessage.icns"
)
)
)

View File

@ -25,7 +25,7 @@ class outgoingSynSender(threading.Thread):
def run(self):
while shared.safeConfigGetBoolean('bitmessagesettings', 'dontconnect'):
time.sleep(2)
while True:
while shared.safeConfigGetBoolean('bitmessagesettings', 'sendoutgoingconnections'):
while len(self.selfInitiatedConnections[self.streamNumber]) >= 8: # maximum number of outgoing connections = 8
time.sleep(10)
if shared.shutdown:

View File

@ -204,6 +204,14 @@ class sqlThread(threading.Thread):
item = '''update settings set value=? WHERE key='version';'''
parameters = (2,)
self.cur.execute(item, parameters)
if not shared.config.has_option('bitmessagesettings', 'userlocale'):
shared.config.set('bitmessagesettings', 'userlocale', 'system')
if not shared.config.has_option('bitmessagesettings', 'sendoutgoingconnections'):
shared.config.set('bitmessagesettings', 'sendoutgoingconnections', 'True')
# Are you hoping to add a new option to the keys.dat file of existing
# Bitmessage users? Add it right above this line!
try:
testpayload = '\x00\x00'

View File

@ -2,6 +2,7 @@ import shared
import ConfigParser
import sys
import os
import locale
from namecoin import ensureNamecoinOptions
@ -82,6 +83,14 @@ def loadConfig():
shared.config.set(
'bitmessagesettings', 'maxacceptablepayloadlengthextrabytes', '0')
shared.config.set('bitmessagesettings', 'dontconnect', 'true')
shared.config.set('bitmessagesettings', 'userlocale', 'system')
# Are you hoping to add a new option to the keys.dat file? You're in
# the right place for adding it to users who install the software for
# the first time. But you must also add it to the keys.dat file of
# existing users. To do that, search the class_sqlThread.py file for the
# text: "right above this line!"
ensureNamecoinOptions()
if storeConfigFilesInSameDirectoryAsProgramByDefault:

View File

@ -24,7 +24,7 @@ def _set_idle():
def _pool_worker(nonce, initialHash, target, pool_size):
_set_idle()
trialValue = 99999999999999999999
trialValue = float('inf')
while trialValue > target:
nonce += pool_size
trialValue, = unpack('>Q',hashlib.sha512(hashlib.sha512(pack('>Q',nonce) + initialHash).digest()).digest()[0:8])
@ -32,7 +32,7 @@ def _pool_worker(nonce, initialHash, target, pool_size):
def _doSafePoW(target, initialHash):
nonce = 0
trialValue = 99999999999999999999
trialValue = float('inf')
while trialValue > target:
nonce += 1
trialValue, = unpack('>Q',hashlib.sha512(hashlib.sha512(pack('>Q',nonce) + initialHash).digest()).digest()[0:8])

View File

@ -1,33 +1,33 @@
SOURCES = ../addresses.py\
../bitmessagemain.py\
../class_addressGenerator.py\
../class_outgoingSynSender.py\
../class_receiveDataThread.py\
../class_sendDataThread.py\
../class_singleCleaner.py\
../class_singleListener.py\
../class_singleWorker.py\
../class_sqlThread.py\
../helper_bitcoin.py\
../helper_bootstrap.py\
../helper_generic.py\
../helper_inbox.py\
../helper_sent.py\
../helper_startup.py\
../shared.py
../bitmessageqt/__init__.py\
../bitmessageqt/about.py\
../bitmessageqt/bitmessageui.py\
../bitmessageqt/connect.py\
../bitmessageqt/help.py\
../bitmessageqt/iconglossary.py\
../bitmessageqt/newaddressdialog.py\
../bitmessageqt/newchandialog.py\
../bitmessageqt/newsubscriptiondialog.py\
../bitmessageqt/regenerateaddresses.py\
../bitmessageqt/settings.py\
../bitmessageqt/specialaddressbehavior.py
TRANSLATIONS = bitmessage_de_DE.ts
CODECFORTR = UTF-8
SOURCES = ../addresses.py\
../bitmessagemain.py\
../class_addressGenerator.py\
../class_outgoingSynSender.py\
../class_receiveDataThread.py\
../class_sendDataThread.py\
../class_singleCleaner.py\
../class_singleListener.py\
../class_singleWorker.py\
../class_sqlThread.py\
../helper_bitcoin.py\
../helper_bootstrap.py\
../helper_generic.py\
../helper_inbox.py\
../helper_sent.py\
../helper_startup.py\
../shared.py\
../bitmessageqt/__init__.py\
../bitmessageqt/about.py\
../bitmessageqt/bitmessageui.py\
../bitmessageqt/connect.py\
../bitmessageqt/help.py\
../bitmessageqt/iconglossary.py\
../bitmessageqt/newaddressdialog.py\
../bitmessageqt/newchandialog.py\
../bitmessageqt/newsubscriptiondialog.py\
../bitmessageqt/regenerateaddresses.py\
../bitmessageqt/settings.py\
../bitmessageqt/specialaddressbehavior.py
TRANSLATIONS = bitmessage_de.ts
CODECFORTR = UTF-8

Binary file not shown.

View File

@ -1,200 +1,201 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="de_DE" sourcelanguage="en">
<TS version="2.0" language="de" sourcelanguage="en">
<context>
<name>MainWindow</name>
<message>
<location filename="__init__.py" line="91"/>
<location filename="../bitmessageqt/__init__.py" line="91"/>
<source>One of your addresses, %1, is an old version 1 address. Version 1 addresses are no longer supported. May we delete it now?</source>
<translation>Eine Ihrer Adressen, %1, ist eine alte Version 1 Adresse. Version 1 Adressen werden nicht mehr unterstützt. Soll sie jetzt gelöscht werden?</translation>
</message>
<message>
<location filename="__init__.py" line="163"/>
<location filename="../bitmessageqt/__init__.py" line="163"/>
<source>Reply</source>
<translatorcomment>.</translatorcomment>
<translation>Antworten</translation>
</message>
<message>
<location filename="__init__.py" line="165"/>
<location filename="../bitmessageqt/__init__.py" line="165"/>
<source>Add sender to your Address Book</source>
<translation>Absender zum Adressbuch hinzufügen</translation>
<translation>Absender zum Adressbuch hinzufügen.</translation>
</message>
<message>
<location filename="__init__.py" line="269"/>
<location filename="../bitmessageqt/__init__.py" line="269"/>
<source>Move to Trash</source>
<translation>In den Papierkorb verschieben</translation>
</message>
<message>
<location filename="__init__.py" line="169"/>
<location filename="../bitmessageqt/__init__.py" line="169"/>
<source>View HTML code as formatted text</source>
<translation>HTML als formatierten Text anzeigen</translation>
</message>
<message>
<location filename="__init__.py" line="171"/>
<location filename="../bitmessageqt/__init__.py" line="171"/>
<source>Save message as...</source>
<translation>Nachricht speichern unter...</translation>
</message>
<message>
<location filename="bitmessageui.py" line="573"/>
<location filename="../bitmessageqt/bitmessageui.py" line="573"/>
<source>New</source>
<translation>Neu</translation>
</message>
<message>
<location filename="__init__.py" line="292"/>
<location filename="../bitmessageqt/__init__.py" line="292"/>
<source>Enable</source>
<translation>Aktivieren</translation>
</message>
<message>
<location filename="__init__.py" line="294"/>
<location filename="../bitmessageqt/__init__.py" line="294"/>
<source>Disable</source>
<translation>Deaktivieren</translation>
</message>
<message>
<location filename="__init__.py" line="290"/>
<location filename="../bitmessageqt/__init__.py" line="290"/>
<source>Copy address to clipboard</source>
<translation>Adresse in die Zwischenablage kopieren</translation>
</message>
<message>
<location filename="__init__.py" line="200"/>
<location filename="../bitmessageqt/__init__.py" line="200"/>
<source>Special address behavior...</source>
<translation>Spezielles Verhalten der Adresse...</translation>
</message>
<message>
<location filename="__init__.py" line="218"/>
<location filename="../bitmessageqt/__init__.py" line="218"/>
<source>Send message to this address</source>
<translation>Nachricht an diese Adresse senden</translation>
</message>
<message>
<location filename="__init__.py" line="222"/>
<location filename="../bitmessageqt/__init__.py" line="222"/>
<source>Subscribe to this address</source>
<translation>Diese Adresse abonnieren</translation>
</message>
<message>
<location filename="__init__.py" line="224"/>
<location filename="../bitmessageqt/__init__.py" line="224"/>
<source>Add New Address</source>
<translation>Neue Adresse hinzufügen</translation>
</message>
<message>
<location filename="__init__.py" line="288"/>
<location filename="../bitmessageqt/__init__.py" line="288"/>
<source>Delete</source>
<translation>Löschen</translation>
</message>
<message>
<location filename="__init__.py" line="271"/>
<location filename="../bitmessageqt/__init__.py" line="271"/>
<source>Copy destination address to clipboard</source>
<translation>Zieladresse in die Zwischenablage kopieren</translation>
</message>
<message>
<location filename="__init__.py" line="273"/>
<location filename="../bitmessageqt/__init__.py" line="273"/>
<source>Force send</source>
<translation>Senden erzwingen</translation>
</message>
<message>
<location filename="bitmessageui.py" line="600"/>
<location filename="../bitmessageqt/bitmessageui.py" line="600"/>
<source>Add new entry</source>
<translation>Neuen Eintrag erstellen</translation>
</message>
<message>
<location filename="__init__.py" line="632"/>
<location filename="../bitmessageqt/__init__.py" line="632"/>
<source>Waiting on their encryption key. Will request it again soon.</source>
<translation>Warte auf den Verschlüsselungscode. Wird bald erneut angefordert.</translation>
</message>
<message>
<location filename="__init__.py" line="635"/>
<location filename="../bitmessageqt/__init__.py" line="635"/>
<source>Encryption key request queued.</source>
<translation>Verschlüsselungscode Anforderung steht aus.</translation>
</message>
<message>
<location filename="__init__.py" line="638"/>
<location filename="../bitmessageqt/__init__.py" line="638"/>
<source>Queued.</source>
<translation>In Warteschlange.</translation>
</message>
<message>
<location filename="__init__.py" line="641"/>
<location filename="../bitmessageqt/__init__.py" line="641"/>
<source>Message sent. Waiting on acknowledgement. Sent at %1</source>
<translation>Nachricht gesendet. Warten auf Bestätigung. Gesendet %1</translation>
</message>
<message>
<location filename="__init__.py" line="647"/>
<location filename="../bitmessageqt/__init__.py" line="647"/>
<source>Need to do work to send message. Work is queued.</source>
<translation>Es muss Arbeit verrichtet werden um die Nachricht zu versenden. Arbeit ist in Warteschlange.</translation>
</message>
<message>
<location filename="__init__.py" line="650"/>
<location filename="../bitmessageqt/__init__.py" line="650"/>
<source>Acknowledgement of the message received %1</source>
<translation>Bestätigung der Nachricht erhalten %1</translation>
</message>
<message>
<location filename="__init__.py" line="653"/>
<location filename="../bitmessageqt/__init__.py" line="653"/>
<source>Broadcast queued.</source>
<translation>Rundruf in Warteschlange.</translation>
</message>
<message>
<location filename="__init__.py" line="656"/>
<location filename="../bitmessageqt/__init__.py" line="656"/>
<source>Broadcast on %1</source>
<translation>Rundruf um %1</translation>
</message>
<message>
<location filename="__init__.py" line="659"/>
<location filename="../bitmessageqt/__init__.py" line="659"/>
<source>Problem: The work demanded by the recipient is more difficult than you are willing to do. %1</source>
<translation>Problem: Die vom Empfänger geforderte Arbeit ist schwerer als Sie bereit sind zu berechnen. %1</translation>
</message>
<message>
<location filename="__init__.py" line="662"/>
<location filename="../bitmessageqt/__init__.py" line="662"/>
<source>Problem: The recipient&apos;s encryption key is no good. Could not encrypt message. %1</source>
<translation>Problem: Der Verschlüsselungscode des Empfängers ist nicht in Ordnung. Nachricht konnte nicht verschlüsselt werden. %1</translation>
</message>
<message>
<location filename="__init__.py" line="665"/>
<location filename="../bitmessageqt/__init__.py" line="665"/>
<source>Forced difficulty override. Send should start soon.</source>
<translation>Schwierigkeitslimit überschrieben. Senden sollte bald beginnen.</translation>
</message>
<message>
<location filename="__init__.py" line="668"/>
<location filename="../bitmessageqt/__init__.py" line="668"/>
<source>Unknown status: %1 %2</source>
<translation>Unbekannter Status: %1 %2</translation>
</message>
<message>
<location filename="__init__.py" line="398"/>
<location filename="../bitmessageqt/__init__.py" line="398"/>
<source>Since startup on %1</source>
<translation>Seit Start der Anwendung am %1</translation>
</message>
<message>
<location filename="__init__.py" line="1344"/>
<location filename="../bitmessageqt/__init__.py" line="1344"/>
<source>Not Connected</source>
<translation>Nicht verbunden</translation>
</message>
<message>
<location filename="__init__.py" line="821"/>
<location filename="../bitmessageqt/__init__.py" line="821"/>
<source>Show Bitmessage</source>
<translation>Bitmessage anzeigen</translation>
</message>
<message>
<location filename="bitmessageui.py" line="556"/>
<location filename="../bitmessageqt/bitmessageui.py" line="556"/>
<source>Send</source>
<translation>Senden</translation>
</message>
<message>
<location filename="__init__.py" line="836"/>
<location filename="../bitmessageqt/__init__.py" line="836"/>
<source>Subscribe</source>
<translation>Abonnieren</translation>
</message>
<message>
<location filename="bitmessageui.py" line="597"/>
<location filename="../bitmessageqt/bitmessageui.py" line="597"/>
<source>Address Book</source>
<translation>Adressbuch</translation>
</message>
<message>
<location filename="bitmessageui.py" line="622"/>
<location filename="../bitmessageqt/bitmessageui.py" line="622"/>
<source>Quit</source>
<translation>Schließen</translation>
</message>
<message>
<location filename="__init__.py" line="1130"/>
<location filename="../bitmessageqt/__init__.py" line="1130"/>
<source>You may manage your keys by editing the keys.dat file stored in the same directory as this program. It is important that you back up this file.</source>
<translation>Sie können Ihre Schlüssel verwalten, indem Sie die keys.dat Datei bearbeiten, die im gleichen Ordner wie das Programm liegt. Es ist wichtig, dass Sie diese Datei sichern.</translation>
</message>
<message>
<location filename="__init__.py" line="1134"/>
<location filename="../bitmessageqt/__init__.py" line="1134"/>
<source>You may manage your keys by editing the keys.dat file stored in
%1
It is important that you back up this file.</source>
@ -203,17 +204,17 @@ It is important that you back up this file.</source>
Es ist wichtig, dass Sie diese Datei sichern.</translation>
</message>
<message>
<location filename="__init__.py" line="1141"/>
<location filename="../bitmessageqt/__init__.py" line="1141"/>
<source>Open keys.dat?</source>
<translation>Datei keys.dat öffnen?</translation>
</message>
<message>
<location filename="__init__.py" line="1138"/>
<location filename="../bitmessageqt/__init__.py" line="1138"/>
<source>You may manage your keys by editing the keys.dat file stored in the same directory as this program. It is important that you back up this file. Would you like to open the file now? (Be sure to close Bitmessage before making any changes.)</source>
<translation>Sie können Ihre Schlüssel verwalten, indem Sie die keys.dat Datei bearbeiten, die im gleichen Ordner wie das Programm liegt. Es ist wichtig, dass Sie diese Datei sichern. Möchten Sie die Datei jetzt öffnen? (Stellen Sie sicher, dass Bitmessage geschlossen ist, bevor Sie etwas ändern.)</translation>
</message>
<message>
<location filename="__init__.py" line="1141"/>
<location filename="../bitmessageqt/__init__.py" line="1141"/>
<source>You may manage your keys by editing the keys.dat file stored in
%1
It is important that you back up this file. Would you like to open the file now? (Be sure to close Bitmessage before making any changes.)</source>
@ -223,192 +224,192 @@ Es ist wichtig, dass Sie diese Datei sichern. Möchten Sie die datei jetzt öffn
(Stellen Sie sicher, dass Bitmessage geschlossen ist, bevor Sie etwas ändern.)</translation>
</message>
<message>
<location filename="__init__.py" line="1147"/>
<location filename="../bitmessageqt/__init__.py" line="1147"/>
<source>Delete trash?</source>
<translation>Papierkorb leeren?</translation>
</message>
<message>
<location filename="__init__.py" line="1147"/>
<location filename="../bitmessageqt/__init__.py" line="1147"/>
<