Basic code clean up
This commit is contained in:
parent
f7e1601185
commit
693891672b
21
checkdeps.py
21
checkdeps.py
|
@ -1,4 +1,4 @@
|
||||||
#!/usr/bin/env python2
|
#! /usr/bin/env python2
|
||||||
"""
|
"""
|
||||||
Check dependendies and give recommendations about how to satisfy them
|
Check dependendies and give recommendations about how to satisfy them
|
||||||
|
|
||||||
|
@ -12,7 +12,9 @@ Limitations:
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from distutils.errors import CompileError
|
from distutils.errors import CompileError
|
||||||
|
|
||||||
try:
|
try:
|
||||||
from setuptools.dist import Distribution
|
from setuptools.dist import Distribution
|
||||||
from setuptools.extension import Extension
|
from setuptools.extension import Extension
|
||||||
|
@ -25,8 +27,7 @@ except ImportError:
|
||||||
EXTRAS_REQUIRE = {}
|
EXTRAS_REQUIRE = {}
|
||||||
|
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
from src.depends import detect_os, PACKAGES, PACKAGE_MANAGER
|
||||||
from src.depends import detectOS, PACKAGES, PACKAGE_MANAGER
|
|
||||||
|
|
||||||
|
|
||||||
COMPILING = {
|
COMPILING = {
|
||||||
|
@ -72,15 +73,15 @@ def prereqToPackages():
|
||||||
if not detectPrereqs():
|
if not detectPrereqs():
|
||||||
return
|
return
|
||||||
print("%s %s" % (
|
print("%s %s" % (
|
||||||
PACKAGE_MANAGER[detectOS()], " ".join(
|
PACKAGE_MANAGER[detect_os()], " ".join(
|
||||||
PACKAGES[x][detectOS()] for x in detectPrereqs())))
|
PACKAGES[x][detect_os()] for x in detectPrereqs())))
|
||||||
|
|
||||||
|
|
||||||
def compilerToPackages():
|
def compilerToPackages():
|
||||||
if not detectOS() in COMPILING:
|
if not detect_os() in COMPILING:
|
||||||
return
|
return
|
||||||
print("%s %s" % (
|
print("%s %s" % (
|
||||||
PACKAGE_MANAGER[detectOS.result], COMPILING[detectOS.result]))
|
PACKAGE_MANAGER[detect_os.result], COMPILING[detect_os.result]))
|
||||||
|
|
||||||
|
|
||||||
def testCompiler():
|
def testCompiler():
|
||||||
|
@ -112,11 +113,11 @@ def testCompiler():
|
||||||
prereqs = detectPrereqs()
|
prereqs = detectPrereqs()
|
||||||
compiler = testCompiler()
|
compiler = testCompiler()
|
||||||
|
|
||||||
if (not compiler or prereqs) and detectOS() in PACKAGE_MANAGER:
|
if (not compiler or prereqs) and detect_os() in PACKAGE_MANAGER:
|
||||||
print(
|
print(
|
||||||
"It looks like you're using %s. "
|
"It looks like you're using %s. "
|
||||||
"It is highly recommended to use the package manager\n"
|
"It is highly recommended to use the package manager\n"
|
||||||
"to install the missing dependencies." % detectOS.result)
|
"to install the missing dependencies." % detect_os.result)
|
||||||
|
|
||||||
if not compiler:
|
if not compiler:
|
||||||
print(
|
print(
|
||||||
|
@ -134,7 +135,7 @@ if prereqs:
|
||||||
print(PACKAGES[package].get('description'))
|
print(PACKAGES[package].get('description'))
|
||||||
|
|
||||||
# Install the system dependencies of optional extras_require components
|
# Install the system dependencies of optional extras_require components
|
||||||
OPSYS = detectOS()
|
OPSYS = detect_os()
|
||||||
CMD = PACKAGE_MANAGER[OPSYS] if OPSYS in PACKAGE_MANAGER else 'UNKNOWN_INSTALLER'
|
CMD = PACKAGE_MANAGER[OPSYS] if OPSYS in PACKAGE_MANAGER else 'UNKNOWN_INSTALLER'
|
||||||
for lhs, rhs in EXTRAS_REQUIRE.items():
|
for lhs, rhs in EXTRAS_REQUIRE.items():
|
||||||
if OPSYS is None:
|
if OPSYS is None:
|
||||||
|
|
6
setup.py
6
setup.py
|
@ -95,11 +95,11 @@ if __name__ == "__main__":
|
||||||
long_description=README,
|
long_description=README,
|
||||||
license='MIT',
|
license='MIT',
|
||||||
# TODO: add author info
|
# TODO: add author info
|
||||||
#author='',
|
# author='',
|
||||||
#author_email='',
|
# author_email='',
|
||||||
url='https://bitmessage.org',
|
url='https://bitmessage.org',
|
||||||
# TODO: add keywords
|
# TODO: add keywords
|
||||||
#keywords='',
|
# keywords='',
|
||||||
install_requires=installRequires,
|
install_requires=installRequires,
|
||||||
tests_require=requirements,
|
tests_require=requirements,
|
||||||
extras_require=EXTRAS_REQUIRE,
|
extras_require=EXTRAS_REQUIRE,
|
||||||
|
|
|
@ -8,38 +8,38 @@ def search_sql(xAddress="toaddress", account=None, folder="inbox", where=None, w
|
||||||
what = None
|
what = None
|
||||||
|
|
||||||
if folder == "sent":
|
if folder == "sent":
|
||||||
sqlStatementBase = '''
|
sql_statement_base = '''
|
||||||
SELECT toaddress, fromaddress, subject, status, ackdata, lastactiontime
|
SELECT toaddress, fromaddress, subject, status, ackdata, lastactiontime
|
||||||
FROM sent '''
|
FROM sent '''
|
||||||
else:
|
else:
|
||||||
sqlStatementBase = '''SELECT folder, msgid, toaddress, fromaddress, subject, received, read
|
sql_statement_base = '''SELECT folder, msgid, toaddress, fromaddress, subject, received, read
|
||||||
FROM inbox '''
|
FROM inbox '''
|
||||||
sqlStatementParts = []
|
sql_statement_parts = []
|
||||||
sqlArguments = []
|
sqlArguments = []
|
||||||
if account is not None:
|
if account is not None:
|
||||||
if xAddress == 'both':
|
if xAddress == 'both':
|
||||||
sqlStatementParts.append("(fromaddress = ? OR toaddress = ?)")
|
sql_statement_parts.append("(fromaddress = ? OR toaddress = ?)")
|
||||||
sqlArguments.append(account)
|
sqlArguments.append(account)
|
||||||
sqlArguments.append(account)
|
sqlArguments.append(account)
|
||||||
else:
|
else:
|
||||||
sqlStatementParts.append(xAddress + " = ? ")
|
sql_statement_parts.append(xAddress + " = ? ")
|
||||||
sqlArguments.append(account)
|
sqlArguments.append(account)
|
||||||
if folder is not None:
|
if folder is not None:
|
||||||
if folder == "new":
|
if folder == "new":
|
||||||
folder = "inbox"
|
folder = "inbox"
|
||||||
unreadOnly = True
|
unreadOnly = True
|
||||||
sqlStatementParts.append("folder = ? ")
|
sql_statement_parts.append("folder = ? ")
|
||||||
sqlArguments.append(folder)
|
sqlArguments.append(folder)
|
||||||
else:
|
else:
|
||||||
sqlStatementParts.append("folder != ?")
|
sql_statement_parts.append("folder != ?")
|
||||||
sqlArguments.append("trash")
|
sqlArguments.append("trash")
|
||||||
if what is not None:
|
if what is not None:
|
||||||
sqlStatementParts.append("%s LIKE ?" % (where))
|
sql_statement_parts.append("%s LIKE ?" % (where))
|
||||||
sqlArguments.append(what)
|
sqlArguments.append(what)
|
||||||
if unreadOnly:
|
if unreadOnly:
|
||||||
sqlStatementParts.append("read = 0")
|
sql_statement_parts.append("read = 0")
|
||||||
if len(sqlStatementParts) > 0:
|
if len(sql_statement_parts) > 0:
|
||||||
sqlStatementBase += "WHERE " + " AND ".join(sqlStatementParts)
|
sql_statement_base += "WHERE " + " AND ".join(sql_statement_parts)
|
||||||
if folder == "sent":
|
if folder == "sent":
|
||||||
sqlStatementBase += " ORDER BY lastactiontime"
|
sql_statement_base += " ORDER BY lastactiontime"
|
||||||
return sqlQuery(sqlStatementBase, sqlArguments)
|
return sqlQuery(sql_statement_base, sqlArguments)
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
import kivy_helper_search
|
|
||||||
import os
|
import os
|
||||||
import queues
|
import queues
|
||||||
import shutdown
|
import shutdown
|
||||||
import state
|
import state
|
||||||
import time
|
import time
|
||||||
|
import kivy_helper_search
|
||||||
|
|
||||||
from kivy.app import App
|
from kivy.app import App
|
||||||
from kivy.lang import Builder
|
from kivy.lang import Builder
|
||||||
|
@ -14,7 +14,6 @@ from kivy.properties import ObjectProperty, StringProperty, ListProperty
|
||||||
from kivy.uix.screenmanager import Screen
|
from kivy.uix.screenmanager import Screen
|
||||||
from kivy.uix.textinput import TextInput
|
from kivy.uix.textinput import TextInput
|
||||||
from kivymd.theming import ThemeManager
|
from kivymd.theming import ThemeManager
|
||||||
from kivymd.toolbar import Toolbar
|
|
||||||
from bmconfigparser import BMConfigParser
|
from bmconfigparser import BMConfigParser
|
||||||
from helper_ackPayload import genAckPayload
|
from helper_ackPayload import genAckPayload
|
||||||
from addresses import decodeAddress, addBMIfNotPresent
|
from addresses import decodeAddress, addBMIfNotPresent
|
||||||
|
|
|
@ -28,9 +28,9 @@ import namecoin
|
||||||
from messageview import MessageView
|
from messageview import MessageView
|
||||||
from migrationwizard import Ui_MigrationWizard
|
from migrationwizard import Ui_MigrationWizard
|
||||||
from foldertree import (
|
from foldertree import (
|
||||||
AccountMixin, Ui_FolderWidget, Ui_AddressWidget, Ui_SubscriptionWidget,
|
AccountMixin, UiFolderWidget, UiAddressWidget, UiSubscriptionWidget,
|
||||||
MessageList_AddressWidget, MessageList_SubjectWidget,
|
MessageListAddressWidget, MessageListSubjectWidget,
|
||||||
Ui_AddressBookWidgetItemLabel, Ui_AddressBookWidgetItemAddress)
|
UiAddressBookWidgetItemLabel, UiAddressBookWidgetItemAddress)
|
||||||
from settings import Ui_settingsDialog
|
from settings import Ui_settingsDialog
|
||||||
import settingsmixin
|
import settingsmixin
|
||||||
import support
|
import support
|
||||||
|
@ -404,7 +404,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
|
|
||||||
def rerenderTabTreeSubscriptions(self):
|
def rerenderTabTreeSubscriptions(self):
|
||||||
treeWidget = self.ui.treeWidgetSubscriptions
|
treeWidget = self.ui.treeWidgetSubscriptions
|
||||||
folders = Ui_FolderWidget.folderWeight.keys()
|
folders = UiFolderWidget.folderWeight.keys()
|
||||||
folders.remove("new")
|
folders.remove("new")
|
||||||
|
|
||||||
# sort ascending when creating
|
# sort ascending when creating
|
||||||
|
@ -440,7 +440,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
while j < widget.childCount():
|
while j < widget.childCount():
|
||||||
subwidget = widget.child(j)
|
subwidget = widget.child(j)
|
||||||
try:
|
try:
|
||||||
subwidget.setUnreadCount(db[toAddress][subwidget.folderName]['count'])
|
subwidget.set_unread_count(db[toAddress][subwidget.folderName]['count'])
|
||||||
unread += db[toAddress][subwidget.folderName]['count']
|
unread += db[toAddress][subwidget.folderName]['count']
|
||||||
db[toAddress].pop(subwidget.folderName, None)
|
db[toAddress].pop(subwidget.folderName, None)
|
||||||
except:
|
except:
|
||||||
|
@ -454,9 +454,9 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
j = 0
|
j = 0
|
||||||
for f, c in db[toAddress].iteritems():
|
for f, c in db[toAddress].iteritems():
|
||||||
try:
|
try:
|
||||||
subwidget = Ui_FolderWidget(widget, j, toAddress, f, c['count'])
|
subwidget = UiFolderWidget(widget, j, toAddress, f, c['count'])
|
||||||
except KeyError:
|
except KeyError:
|
||||||
subwidget = Ui_FolderWidget(widget, j, toAddress, f, 0)
|
subwidget = UiFolderWidget(widget, j, toAddress, f, 0)
|
||||||
j += 1
|
j += 1
|
||||||
widget.setUnreadCount(unread)
|
widget.setUnreadCount(unread)
|
||||||
db.pop(toAddress, None)
|
db.pop(toAddress, None)
|
||||||
|
@ -464,17 +464,17 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
for toAddress in db:
|
for toAddress in db:
|
||||||
widget = Ui_SubscriptionWidget(treeWidget, i, toAddress, db[toAddress]["inbox"]['count'], db[toAddress]["inbox"]['label'], db[toAddress]["inbox"]['enabled'])
|
widget = UiSubscriptionWidget(treeWidget, i, toAddress, db[toAddress]["inbox"]['count'], db[toAddress]["inbox"]['label'], db[toAddress]["inbox"]['enabled'])
|
||||||
j = 0
|
j = 0
|
||||||
unread = 0
|
unread = 0
|
||||||
for folder in folders:
|
for folder in folders:
|
||||||
try:
|
try:
|
||||||
subwidget = Ui_FolderWidget(widget, j, toAddress, folder, db[toAddress][folder]['count'])
|
subwidget = UiFolderWidget(widget, j, toAddress, folder, db[toAddress][folder]['count'])
|
||||||
unread += db[toAddress][folder]['count']
|
unread += db[toAddress][folder]['count']
|
||||||
except KeyError:
|
except KeyError:
|
||||||
subwidget = Ui_FolderWidget(widget, j, toAddress, folder, 0)
|
subwidget = UiFolderWidget(widget, j, toAddress, folder, 0)
|
||||||
j += 1
|
j += 1
|
||||||
widget.setUnreadCount(unread)
|
widget.set_unread_count(unread)
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
treeWidget.setSortingEnabled(True)
|
treeWidget.setSortingEnabled(True)
|
||||||
|
@ -491,7 +491,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
treeWidget = self.ui.treeWidgetYourIdentities
|
treeWidget = self.ui.treeWidgetYourIdentities
|
||||||
elif tab == 'chan':
|
elif tab == 'chan':
|
||||||
treeWidget = self.ui.treeWidgetChans
|
treeWidget = self.ui.treeWidgetChans
|
||||||
folders = Ui_FolderWidget.folderWeight.keys()
|
folders = UiFolderWidget.folderWeight.keys()
|
||||||
|
|
||||||
# sort ascending when creating
|
# sort ascending when creating
|
||||||
if treeWidget.topLevelItemCount() == 0:
|
if treeWidget.topLevelItemCount() == 0:
|
||||||
|
@ -559,7 +559,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
while j < widget.childCount():
|
while j < widget.childCount():
|
||||||
subwidget = widget.child(j)
|
subwidget = widget.child(j)
|
||||||
try:
|
try:
|
||||||
subwidget.setUnreadCount(db[toAddress][subwidget.folderName])
|
subwidget.set_unread_count(db[toAddress][subwidget.folderName])
|
||||||
if subwidget.folderName not in ["new", "trash", "sent"]:
|
if subwidget.folderName not in ["new", "trash", "sent"]:
|
||||||
unread += db[toAddress][subwidget.folderName]
|
unread += db[toAddress][subwidget.folderName]
|
||||||
db[toAddress].pop(subwidget.folderName, None)
|
db[toAddress].pop(subwidget.folderName, None)
|
||||||
|
@ -575,7 +575,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
for f, c in db[toAddress].iteritems():
|
for f, c in db[toAddress].iteritems():
|
||||||
if toAddress is not None and tab == 'messages' and folder == "new":
|
if toAddress is not None and tab == 'messages' and folder == "new":
|
||||||
continue
|
continue
|
||||||
subwidget = Ui_FolderWidget(widget, j, toAddress, f, c)
|
subwidget = UiFolderWidget(widget, j, toAddress, f, c)
|
||||||
if subwidget.folderName not in ["new", "trash", "sent"]:
|
if subwidget.folderName not in ["new", "trash", "sent"]:
|
||||||
unread += c
|
unread += c
|
||||||
j += 1
|
j += 1
|
||||||
|
@ -585,17 +585,17 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
for toAddress in db:
|
for toAddress in db:
|
||||||
widget = Ui_AddressWidget(treeWidget, i, toAddress, db[toAddress]["inbox"], enabled[toAddress])
|
widget = UiAddressWidget(treeWidget, i, toAddress, db[toAddress]["inbox"], enabled[toAddress])
|
||||||
j = 0
|
j = 0
|
||||||
unread = 0
|
unread = 0
|
||||||
for folder in folders:
|
for folder in folders:
|
||||||
if toAddress is not None and tab == 'messages' and folder == "new":
|
if toAddress is not None and tab == 'messages' and folder == "new":
|
||||||
continue
|
continue
|
||||||
subwidget = Ui_FolderWidget(widget, j, toAddress, folder, db[toAddress][folder])
|
subwidget = UiFolderWidget(widget, j, toAddress, folder, db[toAddress][folder])
|
||||||
if subwidget.folderName not in ["new", "trash", "sent"]:
|
if subwidget.folderName not in ["new", "trash", "sent"]:
|
||||||
unread += db[toAddress][folder]
|
unread += db[toAddress][folder]
|
||||||
j += 1
|
j += 1
|
||||||
widget.setUnreadCount(unread)
|
widget.set_unread_count(unread)
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
treeWidget.setSortingEnabled(True)
|
treeWidget.setSortingEnabled(True)
|
||||||
|
@ -693,7 +693,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
"itemChanged(QTableWidgetItem *)"), self.tableWidgetAddressBookItemChanged)
|
"itemChanged(QTableWidgetItem *)"), self.tableWidgetAddressBookItemChanged)
|
||||||
# This is necessary for the completer to work if multiple recipients
|
# This is necessary for the completer to work if multiple recipients
|
||||||
QtCore.QObject.connect(self.ui.lineEditTo, QtCore.SIGNAL(
|
QtCore.QObject.connect(self.ui.lineEditTo, QtCore.SIGNAL(
|
||||||
"cursorPositionChanged(int, int)"), self.ui.lineEditTo.completer().onCursorPositionChanged)
|
"cursorPositionChanged(int, int)"), self.ui.lineEditTo.completer().on_cursor_position_changed)
|
||||||
|
|
||||||
# show messages from message list
|
# show messages from message list
|
||||||
QtCore.QObject.connect(self.ui.tableWidgetInbox, QtCore.SIGNAL(
|
QtCore.QObject.connect(self.ui.tableWidgetInbox, QtCore.SIGNAL(
|
||||||
|
@ -957,7 +957,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
font.setBold(not status)
|
font.setBold(not status)
|
||||||
widget.item(row, 3).setFont(font)
|
widget.item(row, 3).setFont(font)
|
||||||
for col in (0, 1, 2):
|
for col in (0, 1, 2):
|
||||||
widget.item(row, col).setUnread(not status)
|
widget.item(row, col).set_unread(not status)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
related.item(rrow, 3).setFont(font)
|
related.item(rrow, 3).setFont(font)
|
||||||
|
@ -965,7 +965,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
for col in (0, 1, 2):
|
for col in (0, 1, 2):
|
||||||
related.item(rrow, col).setUnread(not status)
|
related.item(rrow, col).set_unread(not status)
|
||||||
|
|
||||||
# Here we need to update unread count for:
|
# Here we need to update unread count for:
|
||||||
# - all widgets if there is no args
|
# - all widgets if there is no args
|
||||||
|
@ -1023,7 +1023,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
newCount = 0
|
newCount = 0
|
||||||
if newCount != addressItem.unreadCount:
|
if newCount != addressItem.unreadCount:
|
||||||
addressItem.setUnreadCount(newCount)
|
addressItem.set_unread_count(newCount)
|
||||||
for j in range(addressItem.childCount()):
|
for j in range(addressItem.childCount()):
|
||||||
folderItem = addressItem.child(j)
|
folderItem = addressItem.child(j)
|
||||||
folderName = folderItem.folderName
|
folderName = folderItem.folderName
|
||||||
|
@ -1043,7 +1043,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
except KeyError:
|
except KeyError:
|
||||||
newCount = 0
|
newCount = 0
|
||||||
if newCount != folderItem.unreadCount:
|
if newCount != folderItem.unreadCount:
|
||||||
folderItem.setUnreadCount(newCount)
|
folderItem.set_unread_count(newCount)
|
||||||
|
|
||||||
def addMessageListItem(self, tableWidget, items):
|
def addMessageListItem(self, tableWidget, items):
|
||||||
sortingEnabled = tableWidget.isSortingEnabled()
|
sortingEnabled = tableWidget.isSortingEnabled()
|
||||||
|
@ -1062,9 +1062,9 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
acct.parseMessage(toAddress, fromAddress, subject, "")
|
acct.parseMessage(toAddress, fromAddress, subject, "")
|
||||||
|
|
||||||
items = []
|
items = []
|
||||||
MessageList_AddressWidget(items, str(toAddress), unicode(acct.toLabel, 'utf-8'))
|
MessageListAddressWidget(items, str(toAddress), unicode(acct.toLabel, 'utf-8'))
|
||||||
MessageList_AddressWidget(items, str(fromAddress), unicode(acct.fromLabel, 'utf-8'))
|
MessageListAddressWidget(items, str(fromAddress), unicode(acct.fromLabel, 'utf-8'))
|
||||||
MessageList_SubjectWidget(items, str(subject), unicode(acct.subject, 'utf-8', 'replace'))
|
MessageListSubjectWidget(items, str(subject), unicode(acct.subject, 'utf-8', 'replace'))
|
||||||
|
|
||||||
if status == 'awaitingpubkey':
|
if status == 'awaitingpubkey':
|
||||||
statusText = _translate(
|
statusText = _translate(
|
||||||
|
@ -1133,11 +1133,11 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
|
|
||||||
items = []
|
items = []
|
||||||
#to
|
#to
|
||||||
MessageList_AddressWidget(items, toAddress, unicode(acct.toLabel, 'utf-8'), not read)
|
MessageListAddressWidget(items, toAddress, unicode(acct.toLabel, 'utf-8'), not read)
|
||||||
# from
|
# from
|
||||||
MessageList_AddressWidget(items, fromAddress, unicode(acct.fromLabel, 'utf-8'), not read)
|
MessageListAddressWidget(items, fromAddress, unicode(acct.fromLabel, 'utf-8'), not read)
|
||||||
# subject
|
# subject
|
||||||
MessageList_SubjectWidget(items, str(subject), unicode(acct.subject, 'utf-8', 'replace'), not read)
|
MessageListSubjectWidget(items, str(subject), unicode(acct.subject, 'utf-8', 'replace'), not read)
|
||||||
# time received
|
# time received
|
||||||
time_item = myTableWidgetItem(l10n.formatTimestamp(received))
|
time_item = myTableWidgetItem(l10n.formatTimestamp(received))
|
||||||
time_item.setToolTip(l10n.formatTimestamp(received))
|
time_item.setToolTip(l10n.formatTimestamp(received))
|
||||||
|
@ -1835,19 +1835,19 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
def rerenderMessagelistFromLabels(self):
|
def rerenderMessagelistFromLabels(self):
|
||||||
for messagelist in (self.ui.tableWidgetInbox, self.ui.tableWidgetInboxChans, self.ui.tableWidgetInboxSubscriptions):
|
for messagelist in (self.ui.tableWidgetInbox, self.ui.tableWidgetInboxChans, self.ui.tableWidgetInboxSubscriptions):
|
||||||
for i in range(messagelist.rowCount()):
|
for i in range(messagelist.rowCount()):
|
||||||
messagelist.item(i, 1).setLabel()
|
messagelist.item(i, 1).set_label()
|
||||||
|
|
||||||
def rerenderMessagelistToLabels(self):
|
def rerenderMessagelistToLabels(self):
|
||||||
for messagelist in (self.ui.tableWidgetInbox, self.ui.tableWidgetInboxChans, self.ui.tableWidgetInboxSubscriptions):
|
for messagelist in (self.ui.tableWidgetInbox, self.ui.tableWidgetInboxChans, self.ui.tableWidgetInboxSubscriptions):
|
||||||
for i in range(messagelist.rowCount()):
|
for i in range(messagelist.rowCount()):
|
||||||
messagelist.item(i, 0).setLabel()
|
messagelist.item(i, 0).set_label()
|
||||||
|
|
||||||
def rerenderAddressBook(self):
|
def rerenderAddressBook(self):
|
||||||
def addRow (address, label, type):
|
def addRow (address, label, type):
|
||||||
self.ui.tableWidgetAddressBook.insertRow(0)
|
self.ui.tableWidgetAddressBook.insertRow(0)
|
||||||
newItem = Ui_AddressBookWidgetItemLabel(address, unicode(label, 'utf-8'), type)
|
newItem = UiAddressBookWidgetItemLabel(address, unicode(label, 'utf-8'), type)
|
||||||
self.ui.tableWidgetAddressBook.setItem(0, 0, newItem)
|
self.ui.tableWidgetAddressBook.setItem(0, 0, newItem)
|
||||||
newItem = Ui_AddressBookWidgetItemAddress(address, unicode(label, 'utf-8'), type)
|
newItem = UiAddressBookWidgetItemAddress(address, unicode(label, 'utf-8'), type)
|
||||||
self.ui.tableWidgetAddressBook.setItem(0, 1, newItem)
|
self.ui.tableWidgetAddressBook.setItem(0, 1, newItem)
|
||||||
|
|
||||||
oldRows = {}
|
oldRows = {}
|
||||||
|
@ -2233,7 +2233,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
address = str(self.ui.comboBoxSendFrom.itemData(
|
address = str(self.ui.comboBoxSendFrom.itemData(
|
||||||
i, QtCore.Qt.UserRole).toString())
|
i, QtCore.Qt.UserRole).toString())
|
||||||
self.ui.comboBoxSendFrom.setItemData(
|
self.ui.comboBoxSendFrom.setItemData(
|
||||||
i, AccountColor(address).accountColor(),
|
i, AccountColor(address).account_color(),
|
||||||
QtCore.Qt.ForegroundRole)
|
QtCore.Qt.ForegroundRole)
|
||||||
self.ui.comboBoxSendFrom.insertItem(0, '', '')
|
self.ui.comboBoxSendFrom.insertItem(0, '', '')
|
||||||
if(self.ui.comboBoxSendFrom.count() == 2):
|
if(self.ui.comboBoxSendFrom.count() == 2):
|
||||||
|
@ -2256,7 +2256,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
address = str(self.ui.comboBoxSendFromBroadcast.itemData(
|
address = str(self.ui.comboBoxSendFromBroadcast.itemData(
|
||||||
i, QtCore.Qt.UserRole).toString())
|
i, QtCore.Qt.UserRole).toString())
|
||||||
self.ui.comboBoxSendFromBroadcast.setItemData(
|
self.ui.comboBoxSendFromBroadcast.setItemData(
|
||||||
i, AccountColor(address).accountColor(),
|
i, AccountColor(address).account_color(),
|
||||||
QtCore.Qt.ForegroundRole)
|
QtCore.Qt.ForegroundRole)
|
||||||
self.ui.comboBoxSendFromBroadcast.insertItem(0, '', '')
|
self.ui.comboBoxSendFromBroadcast.insertItem(0, '', '')
|
||||||
if(self.ui.comboBoxSendFromBroadcast.count() == 2):
|
if(self.ui.comboBoxSendFromBroadcast.count() == 2):
|
||||||
|
@ -2649,7 +2649,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
account_item = self.getCurrentItem()
|
account_item = self.getCurrentItem()
|
||||||
if not account_item:
|
if not account_item:
|
||||||
return
|
return
|
||||||
self.ui.lineEditTo.setText(account_item.accountString())
|
self.ui.lineEditTo.setText(account_item.account_string())
|
||||||
self.ui.tabWidget.setCurrentIndex(
|
self.ui.tabWidget.setCurrentIndex(
|
||||||
self.ui.tabWidget.indexOf(self.ui.send)
|
self.ui.tabWidget.indexOf(self.ui.send)
|
||||||
)
|
)
|
||||||
|
@ -2710,9 +2710,9 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
for i in range(0, idCount):
|
for i in range(0, idCount):
|
||||||
msgids.append(str(tableWidget.item(
|
msgids.append(str(tableWidget.item(
|
||||||
i, 3).data(QtCore.Qt.UserRole).toPyObject()))
|
i, 3).data(QtCore.Qt.UserRole).toPyObject()))
|
||||||
tableWidget.item(i, 0).setUnread(False)
|
tableWidget.item(i, 0).set_unread(False)
|
||||||
tableWidget.item(i, 1).setUnread(False)
|
tableWidget.item(i, 1).set_unread(False)
|
||||||
tableWidget.item(i, 2).setUnread(False)
|
tableWidget.item(i, 2).set_unread(False)
|
||||||
tableWidget.item(i, 3).setFont(font)
|
tableWidget.item(i, 3).setFont(font)
|
||||||
|
|
||||||
markread = sqlExecuteChunked(
|
markread = sqlExecuteChunked(
|
||||||
|
@ -3140,7 +3140,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
self.ui.lineEditTo.setText(str(acct.fromAddress))
|
self.ui.lineEditTo.setText(str(acct.fromAddress))
|
||||||
else:
|
else:
|
||||||
self.ui.lineEditTo.setText(
|
self.ui.lineEditTo.setText(
|
||||||
tableWidget.item(currentInboxRow, column_from).accountString()
|
tableWidget.item(currentInboxRow, column_from).account_string()
|
||||||
)
|
)
|
||||||
|
|
||||||
# If the previous message was to a chan then we should send our
|
# If the previous message was to a chan then we should send our
|
||||||
|
@ -3155,7 +3155,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
self.ui.lineEditTo.setText(str(toAddressAtCurrentInboxRow))
|
self.ui.lineEditTo.setText(str(toAddressAtCurrentInboxRow))
|
||||||
else:
|
else:
|
||||||
self.ui.lineEditTo.setText(
|
self.ui.lineEditTo.setText(
|
||||||
tableWidget.item(currentInboxRow, column_to).accountString()
|
tableWidget.item(currentInboxRow, column_to).account_string()
|
||||||
)
|
)
|
||||||
|
|
||||||
self.setSendFromComboBox(toAddressAtCurrentInboxRow)
|
self.setSendFromComboBox(toAddressAtCurrentInboxRow)
|
||||||
|
@ -3408,7 +3408,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
addresses_string = unicode(
|
addresses_string = unicode(
|
||||||
self.ui.lineEditTo.text().toUtf8(), 'utf-8')
|
self.ui.lineEditTo.text().toUtf8(), 'utf-8')
|
||||||
for item in selected_items:
|
for item in selected_items:
|
||||||
address_string = item.accountString()
|
address_string = item.account_string()
|
||||||
if not addresses_string:
|
if not addresses_string:
|
||||||
addresses_string = address_string
|
addresses_string = address_string
|
||||||
else:
|
else:
|
||||||
|
@ -3496,7 +3496,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
'''update subscriptions set enabled=1 WHERE address=?''',
|
'''update subscriptions set enabled=1 WHERE address=?''',
|
||||||
address)
|
address)
|
||||||
account = self.getCurrentItem()
|
account = self.getCurrentItem()
|
||||||
account.setEnabled(True)
|
account.set_enabled(True)
|
||||||
self.rerenderAddressBook()
|
self.rerenderAddressBook()
|
||||||
shared.reloadBroadcastSendersForWhichImWatching()
|
shared.reloadBroadcastSendersForWhichImWatching()
|
||||||
|
|
||||||
|
@ -3506,14 +3506,14 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
'''update subscriptions set enabled=0 WHERE address=?''',
|
'''update subscriptions set enabled=0 WHERE address=?''',
|
||||||
address)
|
address)
|
||||||
account = self.getCurrentItem()
|
account = self.getCurrentItem()
|
||||||
account.setEnabled(False)
|
account.set_enabled(False)
|
||||||
self.rerenderAddressBook()
|
self.rerenderAddressBook()
|
||||||
shared.reloadBroadcastSendersForWhichImWatching()
|
shared.reloadBroadcastSendersForWhichImWatching()
|
||||||
|
|
||||||
def on_context_menuSubscriptions(self, point):
|
def on_context_menuSubscriptions(self, point):
|
||||||
currentItem = self.getCurrentItem()
|
currentItem = self.getCurrentItem()
|
||||||
self.popMenuSubscriptions = QtGui.QMenu(self)
|
self.popMenuSubscriptions = QtGui.QMenu(self)
|
||||||
if isinstance(currentItem, Ui_AddressWidget):
|
if isinstance(currentItem, UiAddressWidget):
|
||||||
self.popMenuSubscriptions.addAction(self.actionsubscriptionsNew)
|
self.popMenuSubscriptions.addAction(self.actionsubscriptionsNew)
|
||||||
self.popMenuSubscriptions.addAction(self.actionsubscriptionsDelete)
|
self.popMenuSubscriptions.addAction(self.actionsubscriptionsDelete)
|
||||||
self.popMenuSubscriptions.addSeparator()
|
self.popMenuSubscriptions.addSeparator()
|
||||||
|
@ -3740,7 +3740,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
addressAtCurrentRow = self.getCurrentAccount()
|
addressAtCurrentRow = self.getCurrentAccount()
|
||||||
self.enableIdentity(addressAtCurrentRow)
|
self.enableIdentity(addressAtCurrentRow)
|
||||||
account = self.getCurrentItem()
|
account = self.getCurrentItem()
|
||||||
account.setEnabled(True)
|
account.set_enabled(True)
|
||||||
|
|
||||||
def enableIdentity(self, address):
|
def enableIdentity(self, address):
|
||||||
BMConfigParser().set(address, 'enabled', 'true')
|
BMConfigParser().set(address, 'enabled', 'true')
|
||||||
|
@ -3752,7 +3752,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
address = self.getCurrentAccount()
|
address = self.getCurrentAccount()
|
||||||
self.disableIdentity(address)
|
self.disableIdentity(address)
|
||||||
account = self.getCurrentItem()
|
account = self.getCurrentItem()
|
||||||
account.setEnabled(False)
|
account.set_enabled(False)
|
||||||
|
|
||||||
def disableIdentity(self, address):
|
def disableIdentity(self, address):
|
||||||
BMConfigParser().set(str(address), 'enabled', 'false')
|
BMConfigParser().set(str(address), 'enabled', 'false')
|
||||||
|
@ -3925,7 +3925,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
def on_context_menuYourIdentities(self, point):
|
def on_context_menuYourIdentities(self, point):
|
||||||
currentItem = self.getCurrentItem()
|
currentItem = self.getCurrentItem()
|
||||||
self.popMenuYourIdentities = QtGui.QMenu(self)
|
self.popMenuYourIdentities = QtGui.QMenu(self)
|
||||||
if isinstance(currentItem, Ui_AddressWidget):
|
if isinstance(currentItem, UiAddressWidget):
|
||||||
self.popMenuYourIdentities.addAction(self.actionNewYourIdentities)
|
self.popMenuYourIdentities.addAction(self.actionNewYourIdentities)
|
||||||
self.popMenuYourIdentities.addSeparator()
|
self.popMenuYourIdentities.addSeparator()
|
||||||
self.popMenuYourIdentities.addAction(self.actionClipboardYourIdentities)
|
self.popMenuYourIdentities.addAction(self.actionClipboardYourIdentities)
|
||||||
|
@ -3954,7 +3954,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
def on_context_menuChan(self, point):
|
def on_context_menuChan(self, point):
|
||||||
currentItem = self.getCurrentItem()
|
currentItem = self.getCurrentItem()
|
||||||
self.popMenu = QtGui.QMenu(self)
|
self.popMenu = QtGui.QMenu(self)
|
||||||
if isinstance(currentItem, Ui_AddressWidget):
|
if isinstance(currentItem, UiAddressWidget):
|
||||||
self.popMenu.addAction(self.actionNew)
|
self.popMenu.addAction(self.actionNew)
|
||||||
self.popMenu.addAction(self.actionDelete)
|
self.popMenu.addAction(self.actionDelete)
|
||||||
self.popMenu.addSeparator()
|
self.popMenu.addSeparator()
|
||||||
|
@ -4077,10 +4077,10 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
if column != 0:
|
if column != 0:
|
||||||
return
|
return
|
||||||
# only account names of normal addresses (no chans/mailinglists)
|
# only account names of normal addresses (no chans/mailinglists)
|
||||||
if (not isinstance(item, Ui_AddressWidget)) or (not self.getCurrentTreeWidget()) or self.getCurrentTreeWidget().currentItem() is None:
|
if (not isinstance(item, UiAddressWidget)) or (not self.getCurrentTreeWidget()) or self.getCurrentTreeWidget().currentItem() is None:
|
||||||
return
|
return
|
||||||
# not visible
|
# not visible
|
||||||
if (not self.getCurrentItem()) or (not isinstance (self.getCurrentItem(), Ui_AddressWidget)):
|
if (not self.getCurrentItem()) or (not isinstance (self.getCurrentItem(), UiAddressWidget)):
|
||||||
return
|
return
|
||||||
# only currently selected item
|
# only currently selected item
|
||||||
if item.address != self.getCurrentAccount():
|
if item.address != self.getCurrentAccount():
|
||||||
|
@ -4090,7 +4090,7 @@ class MyForm(settingsmixin.SMainWindow):
|
||||||
return
|
return
|
||||||
|
|
||||||
newLabel = unicode(item.text(0), 'utf-8', 'ignore')
|
newLabel = unicode(item.text(0), 'utf-8', 'ignore')
|
||||||
oldLabel = item.defaultLabel()
|
oldLabel = item.default_label()
|
||||||
|
|
||||||
# unchanged, do not do anything either
|
# unchanged, do not do anything either
|
||||||
if newLabel == oldLabel:
|
if newLabel == oldLabel:
|
||||||
|
@ -4284,12 +4284,12 @@ class settingsDialog(QtGui.QDialog):
|
||||||
'bitmessagesettings', 'sockslisten'))
|
'bitmessagesettings', 'sockslisten'))
|
||||||
if str(BMConfigParser().get('bitmessagesettings', 'socksproxytype')) == 'none':
|
if str(BMConfigParser().get('bitmessagesettings', 'socksproxytype')) == 'none':
|
||||||
self.ui.comboBoxProxyType.setCurrentIndex(0)
|
self.ui.comboBoxProxyType.setCurrentIndex(0)
|
||||||
self.ui.lineEditSocksHostname.setEnabled(False)
|
self.ui.lineEditSocksHostname.set_enabled(False)
|
||||||
self.ui.lineEditSocksPort.setEnabled(False)
|
self.ui.lineEditSocksPort.set_enabled(False)
|
||||||
self.ui.lineEditSocksUsername.setEnabled(False)
|
self.ui.lineEditSocksUsername.set_enabled(False)
|
||||||
self.ui.lineEditSocksPassword.setEnabled(False)
|
self.ui.lineEditSocksPassword.set_enabled(False)
|
||||||
self.ui.checkBoxAuthentication.setEnabled(False)
|
self.ui.checkBoxAuthentication.set_enabled(False)
|
||||||
self.ui.checkBoxSocksListen.setEnabled(False)
|
self.ui.checkBoxSocksListen.set_enabled(False)
|
||||||
elif str(BMConfigParser().get('bitmessagesettings', 'socksproxytype')) == 'SOCKS4a':
|
elif str(BMConfigParser().get('bitmessagesettings', 'socksproxytype')) == 'SOCKS4a':
|
||||||
self.ui.comboBoxProxyType.setCurrentIndex(1)
|
self.ui.comboBoxProxyType.setCurrentIndex(1)
|
||||||
elif str(BMConfigParser().get('bitmessagesettings', 'socksproxytype')) == 'SOCKS5':
|
elif str(BMConfigParser().get('bitmessagesettings', 'socksproxytype')) == 'SOCKS5':
|
||||||
|
@ -4326,9 +4326,9 @@ class settingsDialog(QtGui.QDialog):
|
||||||
|
|
||||||
# OpenCL
|
# OpenCL
|
||||||
if openclpow.openclAvailable():
|
if openclpow.openclAvailable():
|
||||||
self.ui.comboBoxOpenCL.setEnabled(True)
|
self.ui.comboBoxOpenCL.set_enabled(True)
|
||||||
else:
|
else:
|
||||||
self.ui.comboBoxOpenCL.setEnabled(False)
|
self.ui.comboBoxOpenCL.set_enabled(False)
|
||||||
self.ui.comboBoxOpenCL.clear()
|
self.ui.comboBoxOpenCL.clear()
|
||||||
self.ui.comboBoxOpenCL.addItem("None")
|
self.ui.comboBoxOpenCL.addItem("None")
|
||||||
self.ui.comboBoxOpenCL.addItems(openclpow.vendors)
|
self.ui.comboBoxOpenCL.addItems(openclpow.vendors)
|
||||||
|
@ -4353,10 +4353,10 @@ class settingsDialog(QtGui.QDialog):
|
||||||
self.ui.radioButtonNamecoinNamecoind.setChecked(True)
|
self.ui.radioButtonNamecoinNamecoind.setChecked(True)
|
||||||
elif nmctype == "nmcontrol":
|
elif nmctype == "nmcontrol":
|
||||||
self.ui.radioButtonNamecoinNmcontrol.setChecked(True)
|
self.ui.radioButtonNamecoinNmcontrol.setChecked(True)
|
||||||
self.ui.lineEditNamecoinUser.setEnabled(False)
|
self.ui.lineEditNamecoinUser.set_enabled(False)
|
||||||
self.ui.labelNamecoinUser.setEnabled(False)
|
self.ui.labelNamecoinUser.set_enabled(False)
|
||||||
self.ui.lineEditNamecoinPassword.setEnabled(False)
|
self.ui.lineEditNamecoinPassword.set_enabled(False)
|
||||||
self.ui.labelNamecoinPassword.setEnabled(False)
|
self.ui.labelNamecoinPassword.set_enabled(False)
|
||||||
else:
|
else:
|
||||||
assert False
|
assert False
|
||||||
|
|
||||||
|
@ -4396,20 +4396,20 @@ class settingsDialog(QtGui.QDialog):
|
||||||
|
|
||||||
def comboBoxProxyTypeChanged(self, comboBoxIndex):
|
def comboBoxProxyTypeChanged(self, comboBoxIndex):
|
||||||
if comboBoxIndex == 0:
|
if comboBoxIndex == 0:
|
||||||
self.ui.lineEditSocksHostname.setEnabled(False)
|
self.ui.lineEditSocksHostname.set_enabled(False)
|
||||||
self.ui.lineEditSocksPort.setEnabled(False)
|
self.ui.lineEditSocksPort.set_enabled(False)
|
||||||
self.ui.lineEditSocksUsername.setEnabled(False)
|
self.ui.lineEditSocksUsername.set_enabled(False)
|
||||||
self.ui.lineEditSocksPassword.setEnabled(False)
|
self.ui.lineEditSocksPassword.set_enabled(False)
|
||||||
self.ui.checkBoxAuthentication.setEnabled(False)
|
self.ui.checkBoxAuthentication.set_enabled(False)
|
||||||
self.ui.checkBoxSocksListen.setEnabled(False)
|
self.ui.checkBoxSocksListen.set_enabled(False)
|
||||||
elif comboBoxIndex == 1 or comboBoxIndex == 2:
|
elif comboBoxIndex == 1 or comboBoxIndex == 2:
|
||||||
self.ui.lineEditSocksHostname.setEnabled(True)
|
self.ui.lineEditSocksHostname.set_enabled(True)
|
||||||
self.ui.lineEditSocksPort.setEnabled(True)
|
self.ui.lineEditSocksPort.set_enabled(True)
|
||||||
self.ui.checkBoxAuthentication.setEnabled(True)
|
self.ui.checkBoxAuthentication.set_enabled(True)
|
||||||
self.ui.checkBoxSocksListen.setEnabled(True)
|
self.ui.checkBoxSocksListen.set_enabled(True)
|
||||||
if self.ui.checkBoxAuthentication.isChecked():
|
if self.ui.checkBoxAuthentication.isChecked():
|
||||||
self.ui.lineEditSocksUsername.setEnabled(True)
|
self.ui.lineEditSocksUsername.set_enabled(True)
|
||||||
self.ui.lineEditSocksPassword.setEnabled(True)
|
self.ui.lineEditSocksPassword.set_enabled(True)
|
||||||
|
|
||||||
# Check status of namecoin integration radio buttons and translate
|
# Check status of namecoin integration radio buttons and translate
|
||||||
# it to a string as in the options.
|
# it to a string as in the options.
|
||||||
|
@ -4426,10 +4426,10 @@ class settingsDialog(QtGui.QDialog):
|
||||||
assert nmctype == "namecoind" or nmctype == "nmcontrol"
|
assert nmctype == "namecoind" or nmctype == "nmcontrol"
|
||||||
|
|
||||||
isNamecoind = (nmctype == "namecoind")
|
isNamecoind = (nmctype == "namecoind")
|
||||||
self.ui.lineEditNamecoinUser.setEnabled(isNamecoind)
|
self.ui.lineEditNamecoinUser.set_enabled(isNamecoind)
|
||||||
self.ui.labelNamecoinUser.setEnabled(isNamecoind)
|
self.ui.labelNamecoinUser.set_enabled(isNamecoind)
|
||||||
self.ui.lineEditNamecoinPassword.setEnabled(isNamecoind)
|
self.ui.lineEditNamecoinPassword.set_enabled(isNamecoind)
|
||||||
self.ui.labelNamecoinPassword.setEnabled(isNamecoind)
|
self.ui.labelNamecoinPassword.set_enabled(isNamecoind)
|
||||||
|
|
||||||
if isNamecoind:
|
if isNamecoind:
|
||||||
self.ui.lineEditNamecoinPort.setText(defaults.namecoinDefaultRpcPort)
|
self.ui.lineEditNamecoinPort.setText(defaults.namecoinDefaultRpcPort)
|
||||||
|
|
|
@ -13,14 +13,15 @@ import inspect
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
import queues
|
||||||
|
|
||||||
from PyQt4 import QtGui
|
from PyQt4 import QtGui
|
||||||
|
|
||||||
import queues
|
|
||||||
from addresses import decodeAddress
|
from addresses import decodeAddress
|
||||||
from bmconfigparser import BMConfigParser
|
from bmconfigparser import BMConfigParser
|
||||||
from helper_ackPayload import genAckPayload
|
from helper_ackPayload import genAckPayload
|
||||||
from helper_sql import sqlQuery, sqlExecute
|
from helper_sql import sqlQuery, sqlExecute
|
||||||
|
|
||||||
from .foldertree import AccountMixin
|
from .foldertree import AccountMixin
|
||||||
from .utils import str_broadcast_subscribers
|
from .utils import str_broadcast_subscribers
|
||||||
|
|
||||||
|
|
|
@ -6,11 +6,11 @@ src/bitmessageqt/address_dialogs.py
|
||||||
# pylint: disable=attribute-defined-outside-init
|
# pylint: disable=attribute-defined-outside-init
|
||||||
|
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import queues
|
||||||
|
import widgets
|
||||||
|
|
||||||
from PyQt4 import QtCore, QtGui
|
from PyQt4 import QtCore, QtGui
|
||||||
|
|
||||||
import queues
|
|
||||||
import widgets
|
|
||||||
from account import AccountMixin, GatewayAccount, MailchuckAccount, accountClass, getSortedAccounts
|
from account import AccountMixin, GatewayAccount, MailchuckAccount, accountClass, getSortedAccounts
|
||||||
from addresses import addBMIfNotPresent, decodeAddress, encodeVarint
|
from addresses import addBMIfNotPresent, decodeAddress, encodeVarint
|
||||||
from inventory import Inventory
|
from inventory import Inventory
|
||||||
|
@ -27,20 +27,20 @@ class AddressCheckMixin(object):
|
||||||
QtCore.QObject.connect( # pylint: disable=no-member
|
QtCore.QObject.connect( # pylint: disable=no-member
|
||||||
self.lineEditAddress,
|
self.lineEditAddress,
|
||||||
QtCore.SIGNAL("textChanged(QString)"),
|
QtCore.SIGNAL("textChanged(QString)"),
|
||||||
self.addressChanged)
|
self.address_changed)
|
||||||
|
|
||||||
def _onSuccess(self, addressVersion, streamNumber, ripe):
|
def _onSuccess(self, addressVersion, streamNumber, ripe):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def addressChanged(self, QString):
|
def address_changed(self, q_string):
|
||||||
"""Address validation callback, performs validation and gives feedback"""
|
"""Address validation callback, performs validation and gives feedback"""
|
||||||
status, addressVersion, streamNumber, ripe = decodeAddress(
|
status, address_version, stream_number, ripe = decodeAddress(
|
||||||
str(QString))
|
str(q_string))
|
||||||
self.valid = status == 'success'
|
self.valid = status == 'success'
|
||||||
if self.valid:
|
if self.valid:
|
||||||
self.labelAddressCheck.setText(
|
self.labelAddressCheck.setText(
|
||||||
_translate("MainWindow", "Address is valid."))
|
_translate("MainWindow", "Address is valid."))
|
||||||
self._onSuccess(addressVersion, streamNumber, ripe)
|
self._onSuccess(address_version, stream_number, ripe)
|
||||||
elif status == 'missingbm':
|
elif status == 'missingbm':
|
||||||
self.labelAddressCheck.setText(_translate(
|
self.labelAddressCheck.setText(_translate(
|
||||||
"MainWindow", # dialog name should be here
|
"MainWindow", # dialog name should be here
|
||||||
|
@ -135,14 +135,14 @@ class NewAddressDialog(QtGui.QDialog, RetranslateMixin):
|
||||||
# self.buttonBox.enabled = False
|
# self.buttonBox.enabled = False
|
||||||
if self.radioButtonRandomAddress.isChecked():
|
if self.radioButtonRandomAddress.isChecked():
|
||||||
if self.radioButtonMostAvailable.isChecked():
|
if self.radioButtonMostAvailable.isChecked():
|
||||||
streamNumberForAddress = 1
|
stream_number_for_address = 1
|
||||||
else:
|
else:
|
||||||
# User selected 'Use the same stream as an existing
|
# User selected 'Use the same stream as an existing
|
||||||
# address.'
|
# address.'
|
||||||
streamNumberForAddress = decodeAddress(
|
stream_number_for_address = decodeAddress(
|
||||||
self.comboBoxExisting.currentText())[2]
|
self.comboBoxExisting.currentText())[2]
|
||||||
queues.addressGeneratorQueue.put((
|
queues.addressGeneratorQueue.put((
|
||||||
'createRandomAddress', 4, streamNumberForAddress,
|
'createRandomAddress', 4, stream_number_for_address,
|
||||||
str(self.newaddresslabel.text().toUtf8()), 1, "",
|
str(self.newaddresslabel.text().toUtf8()), 1, "",
|
||||||
self.checkBoxEighteenByteRipe.isChecked()
|
self.checkBoxEighteenByteRipe.isChecked()
|
||||||
))
|
))
|
||||||
|
@ -165,9 +165,9 @@ class NewAddressDialog(QtGui.QDialog, RetranslateMixin):
|
||||||
else:
|
else:
|
||||||
# this will eventually have to be replaced by logic
|
# this will eventually have to be replaced by logic
|
||||||
# to determine the most available stream number.
|
# to determine the most available stream number.
|
||||||
streamNumberForAddress = 1
|
stream_number_for_address = 1
|
||||||
queues.addressGeneratorQueue.put((
|
queues.addressGeneratorQueue.put((
|
||||||
'createDeterministicAddresses', 4, streamNumberForAddress,
|
'createDeterministicAddresses', 4, stream_number_for_address,
|
||||||
"unused deterministic address",
|
"unused deterministic address",
|
||||||
self.spinBoxNumberOfAddressesToMake.value(),
|
self.spinBoxNumberOfAddressesToMake.value(),
|
||||||
self.lineEditPassphrase.text().toUtf8(),
|
self.lineEditPassphrase.text().toUtf8(),
|
||||||
|
@ -183,8 +183,8 @@ class NewSubscriptionDialog(AddressDataDialog, RetranslateMixin):
|
||||||
widgets.load('newsubscriptiondialog.ui', self)
|
widgets.load('newsubscriptiondialog.ui', self)
|
||||||
AddressCheckMixin.__init__(self)
|
AddressCheckMixin.__init__(self)
|
||||||
|
|
||||||
def _onSuccess(self, addressVersion, streamNumber, ripe):
|
def _onSuccess(self, address_version, stream_number, ripe):
|
||||||
if addressVersion <= 3:
|
if address_version <= 3:
|
||||||
self.checkBoxDisplayMessagesAlreadyInInventory.setText(_translate(
|
self.checkBoxDisplayMessagesAlreadyInInventory.setText(_translate(
|
||||||
"MainWindow",
|
"MainWindow",
|
||||||
"Address is an old type. We cannot display its past"
|
"Address is an old type. We cannot display its past"
|
||||||
|
@ -192,11 +192,11 @@ class NewSubscriptionDialog(AddressDataDialog, RetranslateMixin):
|
||||||
))
|
))
|
||||||
else:
|
else:
|
||||||
Inventory().flush()
|
Inventory().flush()
|
||||||
doubleHashOfAddressData = hashlib.sha512(hashlib.sha512(
|
double_hash_of_address_data = hashlib.sha512(hashlib.sha512(
|
||||||
encodeVarint(addressVersion) +
|
encodeVarint(address_version) +
|
||||||
encodeVarint(streamNumber) + ripe
|
encodeVarint(stream_number) + ripe
|
||||||
).digest()).digest()
|
).digest()).digest()
|
||||||
tag = doubleHashOfAddressData[32:]
|
tag = double_hash_of_address_data[32:]
|
||||||
self.recent = Inventory().by_type_and_tag(3, tag)
|
self.recent = Inventory().by_type_and_tag(3, tag)
|
||||||
count = len(self.recent)
|
count = len(self.recent)
|
||||||
if count == 0:
|
if count == 0:
|
||||||
|
@ -207,7 +207,7 @@ class NewSubscriptionDialog(AddressDataDialog, RetranslateMixin):
|
||||||
" to display."
|
" to display."
|
||||||
))
|
))
|
||||||
else:
|
else:
|
||||||
self.checkBoxDisplayMessagesAlreadyInInventory.setEnabled(True)
|
self.checkBoxDisplayMessagesAlreadyInInventory.set_enabled(True)
|
||||||
self.checkBoxDisplayMessagesAlreadyInInventory.setText(
|
self.checkBoxDisplayMessagesAlreadyInInventory.setText(
|
||||||
_translate(
|
_translate(
|
||||||
"MainWindow",
|
"MainWindow",
|
||||||
|
@ -257,12 +257,12 @@ class SpecialAddressBehaviorDialog(QtGui.QDialog, RetranslateMixin):
|
||||||
else:
|
else:
|
||||||
self.radioButtonBehaveNormalAddress.click()
|
self.radioButtonBehaveNormalAddress.click()
|
||||||
try:
|
try:
|
||||||
mailingListName = config.get(
|
mailing_list_name = config.get(
|
||||||
self.address, 'mailinglistname')
|
self.address, 'mailinglistname')
|
||||||
except:
|
except:
|
||||||
mailingListName = ''
|
mailing_list_name = ''
|
||||||
self.lineEditMailingListName.setText(
|
self.lineEditMailingListName.setText(
|
||||||
unicode(mailingListName, 'utf-8')
|
unicode(mailing_list_name, 'utf-8')
|
||||||
)
|
)
|
||||||
|
|
||||||
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
QtGui.QWidget.resize(self, QtGui.QWidget.sizeHint(self))
|
||||||
|
@ -325,11 +325,11 @@ class EmailGatewayDialog(QtGui.QDialog, RetranslateMixin):
|
||||||
if "@" in label:
|
if "@" in label:
|
||||||
self.lineEditEmail.setText(label)
|
self.lineEditEmail.setText(label)
|
||||||
if isinstance(self.acct, GatewayAccount):
|
if isinstance(self.acct, GatewayAccount):
|
||||||
self.radioButtonUnregister.setEnabled(True)
|
self.radioButtonUnregister.set_enabled(True)
|
||||||
self.radioButtonStatus.setEnabled(True)
|
self.radioButtonStatus.set_enabled(True)
|
||||||
self.radioButtonStatus.setChecked(True)
|
self.radioButtonStatus.setChecked(True)
|
||||||
self.radioButtonSettings.setEnabled(True)
|
self.radioButtonSettings.set_enabled(True)
|
||||||
self.lineEditEmail.setEnabled(False)
|
self.lineEditEmail.set_enabled(False)
|
||||||
else:
|
else:
|
||||||
self.acct = MailchuckAccount(address)
|
self.acct = MailchuckAccount(address)
|
||||||
self.lineEditEmail.setFocus()
|
self.lineEditEmail.setFocus()
|
||||||
|
|
|
@ -27,7 +27,7 @@ class AddressPassPhraseValidatorMixin():
|
||||||
self.feedBackObject.setText(string)
|
self.feedBackObject.setText(string)
|
||||||
self.isValid = False
|
self.isValid = False
|
||||||
if self.buttonBox:
|
if self.buttonBox:
|
||||||
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(False)
|
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).set_enabled(False)
|
||||||
if string is not None and self.feedBackObject is not None:
|
if string is not None and self.feedBackObject is not None:
|
||||||
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(_translate("AddressValidator", "Invalid"))
|
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(_translate("AddressValidator", "Invalid"))
|
||||||
else:
|
else:
|
||||||
|
@ -42,7 +42,7 @@ class AddressPassPhraseValidatorMixin():
|
||||||
self.feedBackObject.setText(string)
|
self.feedBackObject.setText(string)
|
||||||
self.isValid = True
|
self.isValid = True
|
||||||
if self.buttonBox:
|
if self.buttonBox:
|
||||||
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setEnabled(True)
|
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).set_enabled(True)
|
||||||
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(self.okButtonLabel)
|
self.buttonBox.button(QtGui.QDialogButtonBox.Ok).setText(self.okButtonLabel)
|
||||||
|
|
||||||
def checkQueue(self):
|
def checkQueue(self):
|
||||||
|
|
|
@ -86,7 +86,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_12.setStretchFactor(1, 0)
|
self.verticalSplitter_12.setStretchFactor(1, 0)
|
||||||
self.verticalSplitter_12.setCollapsible(0, False)
|
self.verticalSplitter_12.setCollapsible(0, False)
|
||||||
self.verticalSplitter_12.setCollapsible(1, False)
|
self.verticalSplitter_12.setCollapsible(1, False)
|
||||||
self.verticalSplitter_12.handle(1).setEnabled(False)
|
self.verticalSplitter_12.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_3.addWidget(self.verticalSplitter_12)
|
self.horizontalSplitter_3.addWidget(self.verticalSplitter_12)
|
||||||
self.verticalSplitter_7 = settingsmixin.SSplitter()
|
self.verticalSplitter_7 = settingsmixin.SSplitter()
|
||||||
self.verticalSplitter_7.setObjectName(_fromUtf8("verticalSplitter_7"))
|
self.verticalSplitter_7.setObjectName(_fromUtf8("verticalSplitter_7"))
|
||||||
|
@ -105,7 +105,7 @@ class Ui_MainWindow(object):
|
||||||
self.inboxSearchOption.addItem(_fromUtf8(""))
|
self.inboxSearchOption.addItem(_fromUtf8(""))
|
||||||
self.inboxSearchOption.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
|
self.inboxSearchOption.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
|
||||||
self.horizontalSplitterSearch.addWidget(self.inboxSearchOption)
|
self.horizontalSplitterSearch.addWidget(self.inboxSearchOption)
|
||||||
self.horizontalSplitterSearch.handle(1).setEnabled(False)
|
self.horizontalSplitterSearch.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitterSearch.setStretchFactor(0, 1)
|
self.horizontalSplitterSearch.setStretchFactor(0, 1)
|
||||||
self.horizontalSplitterSearch.setStretchFactor(1, 0)
|
self.horizontalSplitterSearch.setStretchFactor(1, 0)
|
||||||
self.verticalSplitter_7.addWidget(self.horizontalSplitterSearch)
|
self.verticalSplitter_7.addWidget(self.horizontalSplitterSearch)
|
||||||
|
@ -146,7 +146,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_7.setCollapsible(0, False)
|
self.verticalSplitter_7.setCollapsible(0, False)
|
||||||
self.verticalSplitter_7.setCollapsible(1, False)
|
self.verticalSplitter_7.setCollapsible(1, False)
|
||||||
self.verticalSplitter_7.setCollapsible(2, False)
|
self.verticalSplitter_7.setCollapsible(2, False)
|
||||||
self.verticalSplitter_7.handle(1).setEnabled(False)
|
self.verticalSplitter_7.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_3.addWidget(self.verticalSplitter_7)
|
self.horizontalSplitter_3.addWidget(self.verticalSplitter_7)
|
||||||
self.horizontalSplitter_3.setStretchFactor(0, 0)
|
self.horizontalSplitter_3.setStretchFactor(0, 0)
|
||||||
self.horizontalSplitter_3.setStretchFactor(1, 1)
|
self.horizontalSplitter_3.setStretchFactor(1, 1)
|
||||||
|
@ -205,8 +205,8 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_2.setCollapsible(0, False)
|
self.verticalSplitter_2.setCollapsible(0, False)
|
||||||
self.verticalSplitter_2.setCollapsible(1, False)
|
self.verticalSplitter_2.setCollapsible(1, False)
|
||||||
self.verticalSplitter_2.setCollapsible(2, False)
|
self.verticalSplitter_2.setCollapsible(2, False)
|
||||||
self.verticalSplitter_2.handle(1).setEnabled(False)
|
self.verticalSplitter_2.handle(1).set_enabled(False)
|
||||||
self.verticalSplitter_2.handle(2).setEnabled(False)
|
self.verticalSplitter_2.handle(2).set_enabled(False)
|
||||||
self.horizontalSplitter.addWidget(self.verticalSplitter_2)
|
self.horizontalSplitter.addWidget(self.verticalSplitter_2)
|
||||||
self.verticalSplitter = settingsmixin.SSplitter()
|
self.verticalSplitter = settingsmixin.SSplitter()
|
||||||
self.verticalSplitter.setObjectName(_fromUtf8("verticalSplitter"))
|
self.verticalSplitter.setObjectName(_fromUtf8("verticalSplitter"))
|
||||||
|
@ -253,7 +253,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_5.setStretchFactor(1, 1)
|
self.verticalSplitter_5.setStretchFactor(1, 1)
|
||||||
self.verticalSplitter_5.setCollapsible(0, False)
|
self.verticalSplitter_5.setCollapsible(0, False)
|
||||||
self.verticalSplitter_5.setCollapsible(1, False)
|
self.verticalSplitter_5.setCollapsible(1, False)
|
||||||
self.verticalSplitter_5.handle(1).setEnabled(False)
|
self.verticalSplitter_5.handle(1).set_enabled(False)
|
||||||
self.gridLayout_8.addWidget(self.verticalSplitter_5, 0, 0, 1, 1)
|
self.gridLayout_8.addWidget(self.verticalSplitter_5, 0, 0, 1, 1)
|
||||||
self.tabWidgetSend.addTab(self.sendDirect, _fromUtf8(""))
|
self.tabWidgetSend.addTab(self.sendDirect, _fromUtf8(""))
|
||||||
self.sendBroadcast = QtGui.QWidget()
|
self.sendBroadcast = QtGui.QWidget()
|
||||||
|
@ -289,7 +289,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_6.setStretchFactor(1, 1)
|
self.verticalSplitter_6.setStretchFactor(1, 1)
|
||||||
self.verticalSplitter_6.setCollapsible(0, False)
|
self.verticalSplitter_6.setCollapsible(0, False)
|
||||||
self.verticalSplitter_6.setCollapsible(1, False)
|
self.verticalSplitter_6.setCollapsible(1, False)
|
||||||
self.verticalSplitter_6.handle(1).setEnabled(False)
|
self.verticalSplitter_6.handle(1).set_enabled(False)
|
||||||
self.gridLayout_9.addWidget(self.verticalSplitter_6, 0, 0, 1, 1)
|
self.gridLayout_9.addWidget(self.verticalSplitter_6, 0, 0, 1, 1)
|
||||||
self.tabWidgetSend.addTab(self.sendBroadcast, _fromUtf8(""))
|
self.tabWidgetSend.addTab(self.sendBroadcast, _fromUtf8(""))
|
||||||
self.verticalSplitter.addWidget(self.tabWidgetSend)
|
self.verticalSplitter.addWidget(self.tabWidgetSend)
|
||||||
|
@ -350,7 +350,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter.setStretchFactor(0, 1)
|
self.verticalSplitter.setStretchFactor(0, 1)
|
||||||
self.verticalSplitter.setCollapsible(0, False)
|
self.verticalSplitter.setCollapsible(0, False)
|
||||||
self.verticalSplitter.setCollapsible(1, False)
|
self.verticalSplitter.setCollapsible(1, False)
|
||||||
self.verticalSplitter.handle(1).setEnabled(False)
|
self.verticalSplitter.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter.addWidget(self.verticalSplitter)
|
self.horizontalSplitter.addWidget(self.verticalSplitter)
|
||||||
self.horizontalSplitter.setStretchFactor(0, 0)
|
self.horizontalSplitter.setStretchFactor(0, 0)
|
||||||
self.horizontalSplitter.setStretchFactor(1, 1)
|
self.horizontalSplitter.setStretchFactor(1, 1)
|
||||||
|
@ -387,7 +387,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_3.setStretchFactor(1, 0)
|
self.verticalSplitter_3.setStretchFactor(1, 0)
|
||||||
self.verticalSplitter_3.setCollapsible(0, False)
|
self.verticalSplitter_3.setCollapsible(0, False)
|
||||||
self.verticalSplitter_3.setCollapsible(1, False)
|
self.verticalSplitter_3.setCollapsible(1, False)
|
||||||
self.verticalSplitter_3.handle(1).setEnabled(False)
|
self.verticalSplitter_3.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_4.addWidget(self.verticalSplitter_3)
|
self.horizontalSplitter_4.addWidget(self.verticalSplitter_3)
|
||||||
self.verticalSplitter_4 = settingsmixin.SSplitter()
|
self.verticalSplitter_4 = settingsmixin.SSplitter()
|
||||||
self.verticalSplitter_4.setObjectName(_fromUtf8("verticalSplitter_4"))
|
self.verticalSplitter_4.setObjectName(_fromUtf8("verticalSplitter_4"))
|
||||||
|
@ -406,7 +406,7 @@ class Ui_MainWindow(object):
|
||||||
self.inboxSearchOptionSubscriptions.addItem(_fromUtf8(""))
|
self.inboxSearchOptionSubscriptions.addItem(_fromUtf8(""))
|
||||||
self.inboxSearchOptionSubscriptions.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
|
self.inboxSearchOptionSubscriptions.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
|
||||||
self.horizontalSplitter_2.addWidget(self.inboxSearchOptionSubscriptions)
|
self.horizontalSplitter_2.addWidget(self.inboxSearchOptionSubscriptions)
|
||||||
self.horizontalSplitter_2.handle(1).setEnabled(False)
|
self.horizontalSplitter_2.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_2.setStretchFactor(0, 1)
|
self.horizontalSplitter_2.setStretchFactor(0, 1)
|
||||||
self.horizontalSplitter_2.setStretchFactor(1, 0)
|
self.horizontalSplitter_2.setStretchFactor(1, 0)
|
||||||
self.verticalSplitter_4.addWidget(self.horizontalSplitter_2)
|
self.verticalSplitter_4.addWidget(self.horizontalSplitter_2)
|
||||||
|
@ -447,7 +447,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_4.setCollapsible(0, False)
|
self.verticalSplitter_4.setCollapsible(0, False)
|
||||||
self.verticalSplitter_4.setCollapsible(1, False)
|
self.verticalSplitter_4.setCollapsible(1, False)
|
||||||
self.verticalSplitter_4.setCollapsible(2, False)
|
self.verticalSplitter_4.setCollapsible(2, False)
|
||||||
self.verticalSplitter_4.handle(1).setEnabled(False)
|
self.verticalSplitter_4.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_4.addWidget(self.verticalSplitter_4)
|
self.horizontalSplitter_4.addWidget(self.verticalSplitter_4)
|
||||||
self.horizontalSplitter_4.setStretchFactor(0, 0)
|
self.horizontalSplitter_4.setStretchFactor(0, 0)
|
||||||
self.horizontalSplitter_4.setStretchFactor(1, 1)
|
self.horizontalSplitter_4.setStretchFactor(1, 1)
|
||||||
|
@ -486,7 +486,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_17.setStretchFactor(1, 0)
|
self.verticalSplitter_17.setStretchFactor(1, 0)
|
||||||
self.verticalSplitter_17.setCollapsible(0, False)
|
self.verticalSplitter_17.setCollapsible(0, False)
|
||||||
self.verticalSplitter_17.setCollapsible(1, False)
|
self.verticalSplitter_17.setCollapsible(1, False)
|
||||||
self.verticalSplitter_17.handle(1).setEnabled(False)
|
self.verticalSplitter_17.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_7.addWidget(self.verticalSplitter_17)
|
self.horizontalSplitter_7.addWidget(self.verticalSplitter_17)
|
||||||
self.verticalSplitter_8 = settingsmixin.SSplitter()
|
self.verticalSplitter_8 = settingsmixin.SSplitter()
|
||||||
self.verticalSplitter_8.setObjectName(_fromUtf8("verticalSplitter_8"))
|
self.verticalSplitter_8.setObjectName(_fromUtf8("verticalSplitter_8"))
|
||||||
|
@ -505,7 +505,7 @@ class Ui_MainWindow(object):
|
||||||
self.inboxSearchOptionChans.addItem(_fromUtf8(""))
|
self.inboxSearchOptionChans.addItem(_fromUtf8(""))
|
||||||
self.inboxSearchOptionChans.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
|
self.inboxSearchOptionChans.setSizeAdjustPolicy(QtGui.QComboBox.AdjustToContents)
|
||||||
self.horizontalSplitter_6.addWidget(self.inboxSearchOptionChans)
|
self.horizontalSplitter_6.addWidget(self.inboxSearchOptionChans)
|
||||||
self.horizontalSplitter_6.handle(1).setEnabled(False)
|
self.horizontalSplitter_6.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_6.setStretchFactor(0, 1)
|
self.horizontalSplitter_6.setStretchFactor(0, 1)
|
||||||
self.horizontalSplitter_6.setStretchFactor(1, 0)
|
self.horizontalSplitter_6.setStretchFactor(1, 0)
|
||||||
self.verticalSplitter_8.addWidget(self.horizontalSplitter_6)
|
self.verticalSplitter_8.addWidget(self.horizontalSplitter_6)
|
||||||
|
@ -546,7 +546,7 @@ class Ui_MainWindow(object):
|
||||||
self.verticalSplitter_8.setCollapsible(0, False)
|
self.verticalSplitter_8.setCollapsible(0, False)
|
||||||
self.verticalSplitter_8.setCollapsible(1, False)
|
self.verticalSplitter_8.setCollapsible(1, False)
|
||||||
self.verticalSplitter_8.setCollapsible(2, False)
|
self.verticalSplitter_8.setCollapsible(2, False)
|
||||||
self.verticalSplitter_8.handle(1).setEnabled(False)
|
self.verticalSplitter_8.handle(1).set_enabled(False)
|
||||||
self.horizontalSplitter_7.addWidget(self.verticalSplitter_8)
|
self.horizontalSplitter_7.addWidget(self.verticalSplitter_8)
|
||||||
self.horizontalSplitter_7.setStretchFactor(0, 0)
|
self.horizontalSplitter_7.setStretchFactor(0, 0)
|
||||||
self.horizontalSplitter_7.setStretchFactor(1, 1)
|
self.horizontalSplitter_7.setStretchFactor(1, 1)
|
||||||
|
|
|
@ -30,7 +30,7 @@ class AccountMixin(object):
|
||||||
SUBSCRIPTION = 4
|
SUBSCRIPTION = 4
|
||||||
BROADCAST = 5
|
BROADCAST = 5
|
||||||
|
|
||||||
def accountColor(self):
|
def account_color(self):
|
||||||
"""QT UI color for an account"""
|
"""QT UI color for an account"""
|
||||||
if not self.isEnabled:
|
if not self.isEnabled:
|
||||||
return QtGui.QColor(128, 128, 128)
|
return QtGui.QColor(128, 128, 128)
|
||||||
|
@ -40,25 +40,25 @@ class AccountMixin(object):
|
||||||
return QtGui.QColor(137, 4, 177)
|
return QtGui.QColor(137, 4, 177)
|
||||||
return QtGui.QApplication.palette().text().color()
|
return QtGui.QApplication.palette().text().color()
|
||||||
|
|
||||||
def folderColor(self):
|
def folder_color(self):
|
||||||
"""QT UI color for a folder"""
|
"""QT UI color for a folder"""
|
||||||
if not self.parent().isEnabled:
|
if not self.parent().isEnabled:
|
||||||
return QtGui.QColor(128, 128, 128)
|
return QtGui.QColor(128, 128, 128)
|
||||||
return QtGui.QApplication.palette().text().color()
|
return QtGui.QApplication.palette().text().color()
|
||||||
|
|
||||||
def accountBrush(self):
|
def account_brush(self):
|
||||||
"""Account brush (for QT UI)"""
|
"""Account brush (for QT UI)"""
|
||||||
brush = QtGui.QBrush(self.accountColor())
|
brush = QtGui.QBrush(self.account_color())
|
||||||
brush.setStyle(QtCore.Qt.NoBrush)
|
brush.setStyle(QtCore.Qt.NoBrush)
|
||||||
return brush
|
return brush
|
||||||
|
|
||||||
def folderBrush(self):
|
def folder_brush(self):
|
||||||
"""Folder brush (for QT UI)"""
|
"""Folder brush (for QT UI)"""
|
||||||
brush = QtGui.QBrush(self.folderColor())
|
brush = QtGui.QBrush(self.folder_color())
|
||||||
brush.setStyle(QtCore.Qt.NoBrush)
|
brush.setStyle(QtCore.Qt.NoBrush)
|
||||||
return brush
|
return brush
|
||||||
|
|
||||||
def accountString(self):
|
def account_string(self):
|
||||||
"""Account string suitable for use in To: field: label <address>"""
|
"""Account string suitable for use in To: field: label <address>"""
|
||||||
label = self._getLabel()
|
label = self._getLabel()
|
||||||
return (
|
return (
|
||||||
|
@ -66,14 +66,11 @@ class AccountMixin(object):
|
||||||
else '%s <%s>' % (label, self.address)
|
else '%s <%s>' % (label, self.address)
|
||||||
)
|
)
|
||||||
|
|
||||||
def setAddress(self, address):
|
def set_address(self, address):
|
||||||
"""Set bitmessage address of the object"""
|
"""Set bitmessage address of the object"""
|
||||||
if address is None:
|
self.address = None if address is None else str(address)
|
||||||
self.address = None
|
|
||||||
else:
|
|
||||||
self.address = str(address)
|
|
||||||
|
|
||||||
def setUnreadCount(self, cnt):
|
def set_unread_count(self, cnt):
|
||||||
"""Set number of unread messages"""
|
"""Set number of unread messages"""
|
||||||
try:
|
try:
|
||||||
if self.unreadCount == int(cnt):
|
if self.unreadCount == int(cnt):
|
||||||
|
@ -84,17 +81,17 @@ class AccountMixin(object):
|
||||||
if isinstance(self, QtGui.QTreeWidgetItem):
|
if isinstance(self, QtGui.QTreeWidgetItem):
|
||||||
self.emitDataChanged()
|
self.emitDataChanged()
|
||||||
|
|
||||||
def setEnabled(self, enabled):
|
def set_enabled(self, enabled):
|
||||||
"""Set account enabled (QT UI)"""
|
"""Set account enabled (QT UI)"""
|
||||||
self.isEnabled = enabled
|
self.isEnabled = enabled
|
||||||
try:
|
try:
|
||||||
self.setExpanded(enabled)
|
self.setExpanded(enabled)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
if isinstance(self, Ui_AddressWidget):
|
if isinstance(self, UiAddressWidget):
|
||||||
for i in range(self.childCount()):
|
for i in range(self.childCount()):
|
||||||
if isinstance(self.child(i), Ui_FolderWidget):
|
if isinstance(self.child(i), UiFolderWidget):
|
||||||
self.child(i).setEnabled(enabled)
|
self.child(i).set_enabled(enabled)
|
||||||
if isinstance(self, QtGui.QTreeWidgetItem):
|
if isinstance(self, QtGui.QTreeWidgetItem):
|
||||||
self.emitDataChanged()
|
self.emitDataChanged()
|
||||||
|
|
||||||
|
@ -114,7 +111,7 @@ class AccountMixin(object):
|
||||||
else:
|
else:
|
||||||
self.type = self.NORMAL
|
self.type = self.NORMAL
|
||||||
|
|
||||||
def defaultLabel(self):
|
def default_label(self):
|
||||||
"""Default label (in case no label is set manually)"""
|
"""Default label (in case no label is set manually)"""
|
||||||
queryreturn = None
|
queryreturn = None
|
||||||
retval = None
|
retval = None
|
||||||
|
@ -131,7 +128,7 @@ class AccountMixin(object):
|
||||||
queryreturn = sqlQuery(
|
queryreturn = sqlQuery(
|
||||||
'''select label from subscriptions where address=?''', self.address)
|
'''select label from subscriptions where address=?''', self.address)
|
||||||
if queryreturn is not None:
|
if queryreturn is not None:
|
||||||
if queryreturn != []:
|
if queryreturn:
|
||||||
for row in queryreturn:
|
for row in queryreturn:
|
||||||
retval, = row
|
retval, = row
|
||||||
retval = unicode(retval, 'utf-8')
|
retval = unicode(retval, 'utf-8')
|
||||||
|
@ -145,25 +142,25 @@ class AccountMixin(object):
|
||||||
class BMTreeWidgetItem(QtGui.QTreeWidgetItem, AccountMixin):
|
class BMTreeWidgetItem(QtGui.QTreeWidgetItem, AccountMixin):
|
||||||
"""A common abstract class for Tree widget item"""
|
"""A common abstract class for Tree widget item"""
|
||||||
|
|
||||||
def __init__(self, parent, pos, address, unreadCount):
|
def __init__(self, parent, pos, address, unread_count):
|
||||||
super(QtGui.QTreeWidgetItem, self).__init__()
|
super(QtGui.QTreeWidgetItem, self).__init__()
|
||||||
self.setAddress(address)
|
self.set_address(address)
|
||||||
self.setUnreadCount(unreadCount)
|
self.set_unread_count(unread_count)
|
||||||
self._setup(parent, pos)
|
self._setup(parent, pos)
|
||||||
|
|
||||||
def _getAddressBracket(self, unreadCount=False):
|
def _get_address_bracket(self, unreadCount=False):
|
||||||
return " (" + str(self.unreadCount) + ")" if unreadCount else ""
|
return " (" + str(self.unreadCount) + ")" if unreadCount else ""
|
||||||
|
|
||||||
def data(self, column, role):
|
def data(self, column, role):
|
||||||
"""Override internal QT method for returning object data"""
|
"""Override internal QT method for returning object data"""
|
||||||
if column == 0:
|
if column == 0:
|
||||||
if role == QtCore.Qt.DisplayRole:
|
if role == QtCore.Qt.DisplayRole:
|
||||||
return self._getLabel() + self._getAddressBracket(
|
return self._getLabel() + self._get_address_bracket(
|
||||||
self.unreadCount > 0)
|
self.unreadCount > 0)
|
||||||
elif role == QtCore.Qt.EditRole:
|
elif role == QtCore.Qt.EditRole:
|
||||||
return self._getLabel()
|
return self._getLabel()
|
||||||
elif role == QtCore.Qt.ToolTipRole:
|
elif role == QtCore.Qt.ToolTipRole:
|
||||||
return self._getLabel() + self._getAddressBracket(False)
|
return self._getLabel() + self._get_address_bracket(False)
|
||||||
elif role == QtCore.Qt.FontRole:
|
elif role == QtCore.Qt.FontRole:
|
||||||
font = QtGui.QFont()
|
font = QtGui.QFont()
|
||||||
font.setBold(self.unreadCount > 0)
|
font.setBold(self.unreadCount > 0)
|
||||||
|
@ -171,35 +168,35 @@ class BMTreeWidgetItem(QtGui.QTreeWidgetItem, AccountMixin):
|
||||||
return super(BMTreeWidgetItem, self).data(column, role)
|
return super(BMTreeWidgetItem, self).data(column, role)
|
||||||
|
|
||||||
|
|
||||||
class Ui_FolderWidget(BMTreeWidgetItem):
|
class UiFolderWidget(BMTreeWidgetItem):
|
||||||
"""Item in the account/folder tree representing a folder"""
|
"""Item in the account/folder tree representing a folder"""
|
||||||
folderWeight = {"inbox": 1, "new": 2, "sent": 3, "trash": 4}
|
folderWeight = {"inbox": 1, "new": 2, "sent": 3, "trash": 4}
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self, parent, pos=0, address="", folderName="", unreadCount=0):
|
self, parent, pos=0, address="", folder_name="", unread_count=0):
|
||||||
self.setFolderName(folderName)
|
self.set_folder_name(folder_name)
|
||||||
super(Ui_FolderWidget, self).__init__(
|
super(UiFolderWidget, self).__init__(
|
||||||
parent, pos, address, unreadCount)
|
parent, pos, address, unread_count)
|
||||||
|
|
||||||
def _setup(self, parent, pos):
|
def _setup(self, parent, pos):
|
||||||
parent.insertChild(pos, self)
|
parent.insertChild(pos, self)
|
||||||
|
|
||||||
def _getLabel(self):
|
def _get_label(self):
|
||||||
return _translate("MainWindow", self.folderName)
|
return _translate("MainWindow", self.folderName)
|
||||||
|
|
||||||
def setFolderName(self, fname):
|
def set_folder_name(self, fname):
|
||||||
"""Set folder name (for QT UI)"""
|
"""Set folder name (for QT UI)"""
|
||||||
self.folderName = str(fname)
|
self.folderName = str(fname)
|
||||||
|
|
||||||
def data(self, column, role):
|
def data(self, column, role):
|
||||||
"""Override internal QT method for returning object data"""
|
"""Override internal QT method for returning object data"""
|
||||||
if column == 0 and role == QtCore.Qt.ForegroundRole:
|
if column == 0 and role == QtCore.Qt.ForegroundRole:
|
||||||
return self.folderBrush()
|
return self.folder_brush()
|
||||||
return super(Ui_FolderWidget, self).data(column, role)
|
return super(UiFolderWidget, self).data(column, role)
|
||||||
|
|
||||||
# inbox, sent, thrash first, rest alphabetically
|
# inbox, sent, thrash first, rest alphabetically
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
if isinstance(other, Ui_FolderWidget):
|
if isinstance(other, UiFolderWidget):
|
||||||
if self.folderName in self.folderWeight:
|
if self.folderName in self.folderWeight:
|
||||||
x = self.folderWeight[self.folderName]
|
x = self.folderWeight[self.folderName]
|
||||||
else:
|
else:
|
||||||
|
@ -217,18 +214,18 @@ class Ui_FolderWidget(BMTreeWidgetItem):
|
||||||
return super(QtGui.QTreeWidgetItem, self).__lt__(other)
|
return super(QtGui.QTreeWidgetItem, self).__lt__(other)
|
||||||
|
|
||||||
|
|
||||||
class Ui_AddressWidget(BMTreeWidgetItem, SettingsMixin):
|
class UiAddressWidget(BMTreeWidgetItem, SettingsMixin):
|
||||||
"""Item in the account/folder tree representing an account"""
|
"""Item in the account/folder tree representing an account"""
|
||||||
def __init__(self, parent, pos=0, address=None, unreadCount=0, enabled=True):
|
def __init__(self, parent, pos=0, address=None, unread_count=0, enabled=True):
|
||||||
super(Ui_AddressWidget, self).__init__(
|
super(UiAddressWidget, self).__init__(
|
||||||
parent, pos, address, unreadCount)
|
parent, pos, address, unread_count)
|
||||||
self.setEnabled(enabled)
|
self.set_enabled(enabled)
|
||||||
|
|
||||||
def _setup(self, parent, pos):
|
def _setup(self, parent, pos):
|
||||||
self.setType()
|
self.setType()
|
||||||
parent.insertTopLevelItem(pos, self)
|
parent.insertTopLevelItem(pos, self)
|
||||||
|
|
||||||
def _getLabel(self):
|
def _get_label(self):
|
||||||
if self.address is None:
|
if self.address is None:
|
||||||
return unicode(_translate(
|
return unicode(_translate(
|
||||||
"MainWindow", "All accounts").toUtf8(), 'utf-8', 'ignore')
|
"MainWindow", "All accounts").toUtf8(), 'utf-8', 'ignore')
|
||||||
|
@ -240,11 +237,11 @@ class Ui_AddressWidget(BMTreeWidgetItem, SettingsMixin):
|
||||||
except:
|
except:
|
||||||
return unicode(self.address, 'utf-8')
|
return unicode(self.address, 'utf-8')
|
||||||
|
|
||||||
def _getAddressBracket(self, unreadCount=False):
|
def _get_address_bracket(self, unread_count=False):
|
||||||
ret = "" if self.isExpanded() \
|
ret = "" if self.isExpanded() \
|
||||||
else super(Ui_AddressWidget, self)._getAddressBracket(unreadCount)
|
else super(UiAddressWidget, self)._get_address_bracket(unread_count)
|
||||||
if self.address is not None:
|
if self.address is not None:
|
||||||
ret += " (" + self.address + ")"
|
ret += " (%s)" % self.address
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def data(self, column, role):
|
def data(self, column, role):
|
||||||
|
@ -252,10 +249,10 @@ class Ui_AddressWidget(BMTreeWidgetItem, SettingsMixin):
|
||||||
if column == 0:
|
if column == 0:
|
||||||
if role == QtCore.Qt.DecorationRole:
|
if role == QtCore.Qt.DecorationRole:
|
||||||
return avatarize(
|
return avatarize(
|
||||||
self.address or self._getLabel().encode('utf8'))
|
self.address or self._get_label().encode('utf8'))
|
||||||
elif role == QtCore.Qt.ForegroundRole:
|
elif role == QtCore.Qt.ForegroundRole:
|
||||||
return self.accountBrush()
|
return self.account_brush()
|
||||||
return super(Ui_AddressWidget, self).data(column, role)
|
return super(UiAddressWidget, self).data(column, role)
|
||||||
|
|
||||||
def setData(self, column, role, value):
|
def setData(self, column, role, value):
|
||||||
"""Save account label (if you edit in the the UI, this will be triggered and will save it to keys.dat)"""
|
"""Save account label (if you edit in the the UI, this will be triggered and will save it to keys.dat)"""
|
||||||
|
@ -268,42 +265,42 @@ class Ui_AddressWidget(BMTreeWidgetItem, SettingsMixin):
|
||||||
else value.encode('utf-8')
|
else value.encode('utf-8')
|
||||||
)
|
)
|
||||||
BMConfigParser().save()
|
BMConfigParser().save()
|
||||||
return super(Ui_AddressWidget, self).setData(column, role, value)
|
return super(UiAddressWidget, self).setData(column, role, value)
|
||||||
|
|
||||||
def setAddress(self, address):
|
def set_address(self, address):
|
||||||
"""Set address to object (for QT UI)"""
|
"""Set address to object (for QT UI)"""
|
||||||
super(Ui_AddressWidget, self).setAddress(address)
|
super(UiAddressWidget, self).set_address(address)
|
||||||
self.setData(0, QtCore.Qt.UserRole, self.address)
|
self.setData(0, QtCore.Qt.UserRole, self.address)
|
||||||
|
|
||||||
def _getSortRank(self):
|
def _get_sort_rank(self):
|
||||||
return self.type if self.isEnabled else (self.type + 100)
|
return self.type if self.isEnabled else (self.type + 100)
|
||||||
|
|
||||||
# label (or address) alphabetically, disabled at the end
|
# label (or address) alphabetically, disabled at the end
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
# pylint: disable=protected-access
|
# pylint: disable=protected-access
|
||||||
if isinstance(other, Ui_AddressWidget):
|
if isinstance(other, UiAddressWidget):
|
||||||
reverse = QtCore.Qt.DescendingOrder == \
|
reverse = QtCore.Qt.DescendingOrder == \
|
||||||
self.treeWidget().header().sortIndicatorOrder()
|
self.treeWidget().header().sortIndicatorOrder()
|
||||||
if self._getSortRank() == other._getSortRank():
|
if self._get_sort_rank() == other._get_sort_rank():
|
||||||
x = self._getLabel().lower()
|
x = self._get_label().lower()
|
||||||
y = other._getLabel().lower()
|
y = other._get_label().lower()
|
||||||
return x < y
|
return x < y
|
||||||
return (
|
return (
|
||||||
not reverse
|
not reverse
|
||||||
if self._getSortRank() < other._getSortRank() else reverse
|
if self._get_sort_rank() < other._get_sort_rank() else reverse
|
||||||
)
|
)
|
||||||
|
|
||||||
return super(QtGui.QTreeWidgetItem, self).__lt__(other)
|
return super(QtGui.QTreeWidgetItem, self).__lt__(other)
|
||||||
|
|
||||||
|
|
||||||
class Ui_SubscriptionWidget(Ui_AddressWidget):
|
class UiSubscriptionWidget(UiAddressWidget):
|
||||||
"""Special treating of subscription addresses"""
|
"""Special treating of subscription addresses"""
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
def __init__(self, parent, pos=0, address="", unreadCount=0, label="", enabled=True):
|
def __init__(self, parent, pos=0, address="", unread_count=0, label="", enabled=True):
|
||||||
super(Ui_SubscriptionWidget, self).__init__(
|
super(UiSubscriptionWidget, self).__init__(
|
||||||
parent, pos, address, unreadCount, enabled)
|
parent, pos, address, unread_count, enabled)
|
||||||
|
|
||||||
def _getLabel(self):
|
def _get_label(self):
|
||||||
queryreturn = sqlQuery(
|
queryreturn = sqlQuery(
|
||||||
'''select label from subscriptions where address=?''', self.address)
|
'''select label from subscriptions where address=?''', self.address)
|
||||||
if queryreturn != []:
|
if queryreturn != []:
|
||||||
|
@ -314,7 +311,7 @@ class Ui_SubscriptionWidget(Ui_AddressWidget):
|
||||||
|
|
||||||
def setType(self):
|
def setType(self):
|
||||||
"""Set account type"""
|
"""Set account type"""
|
||||||
super(Ui_SubscriptionWidget, self).setType() # sets it editable
|
super(UiSubscriptionWidget, self).setType() # sets it editable
|
||||||
self.type = AccountMixin.SUBSCRIPTION # overrides type
|
self.type = AccountMixin.SUBSCRIPTION # overrides type
|
||||||
|
|
||||||
def setData(self, column, role, value):
|
def setData(self, column, role, value):
|
||||||
|
@ -328,7 +325,7 @@ class Ui_SubscriptionWidget(Ui_AddressWidget):
|
||||||
sqlExecute(
|
sqlExecute(
|
||||||
'''UPDATE subscriptions SET label=? WHERE address=?''',
|
'''UPDATE subscriptions SET label=? WHERE address=?''',
|
||||||
label, self.address)
|
label, self.address)
|
||||||
return super(Ui_SubscriptionWidget, self).setData(column, role, value)
|
return super(UiSubscriptionWidget, self).setData(column, role, value)
|
||||||
|
|
||||||
|
|
||||||
class BMTableWidgetItem(QtGui.QTableWidgetItem, SettingsMixin):
|
class BMTableWidgetItem(QtGui.QTableWidgetItem, SettingsMixin):
|
||||||
|
@ -336,17 +333,17 @@ class BMTableWidgetItem(QtGui.QTableWidgetItem, SettingsMixin):
|
||||||
|
|
||||||
def __init__(self, parent=None, label=None, unread=False):
|
def __init__(self, parent=None, label=None, unread=False):
|
||||||
super(QtGui.QTableWidgetItem, self).__init__()
|
super(QtGui.QTableWidgetItem, self).__init__()
|
||||||
self.setLabel(label)
|
self.set_label(label)
|
||||||
self.setUnread(unread)
|
self.set_unread(unread)
|
||||||
self._setup()
|
self._setup()
|
||||||
if parent is not None:
|
if parent is not None:
|
||||||
parent.append(self)
|
parent.append(self)
|
||||||
|
|
||||||
def setLabel(self, label):
|
def set_label(self, label):
|
||||||
"""Set object label"""
|
"""Set object label"""
|
||||||
self.label = label
|
self.label = label
|
||||||
|
|
||||||
def setUnread(self, unread):
|
def set_unread(self, unread):
|
||||||
"""Set/unset read state of an item"""
|
"""Set/unset read state of an item"""
|
||||||
self.unread = unread
|
self.unread = unread
|
||||||
|
|
||||||
|
@ -367,9 +364,9 @@ class BMAddressWidget(BMTableWidgetItem, AccountMixin):
|
||||||
"""A common class for Table widget item with account"""
|
"""A common class for Table widget item with account"""
|
||||||
|
|
||||||
def _setup(self):
|
def _setup(self):
|
||||||
self.setEnabled(True)
|
self.set_enabled(True)
|
||||||
|
|
||||||
def _getLabel(self):
|
def _get_label(self):
|
||||||
return self.label
|
return self.label
|
||||||
|
|
||||||
def data(self, role):
|
def data(self, role):
|
||||||
|
@ -381,33 +378,33 @@ class BMAddressWidget(BMTableWidgetItem, AccountMixin):
|
||||||
'bitmessagesettings', 'useidenticons'):
|
'bitmessagesettings', 'useidenticons'):
|
||||||
return avatarize(self.address or self.label)
|
return avatarize(self.address or self.label)
|
||||||
elif role == QtCore.Qt.ForegroundRole:
|
elif role == QtCore.Qt.ForegroundRole:
|
||||||
return self.accountBrush()
|
return self.account_brush()
|
||||||
return super(BMAddressWidget, self).data(role)
|
return super(BMAddressWidget, self).data(role)
|
||||||
|
|
||||||
|
|
||||||
class MessageList_AddressWidget(BMAddressWidget):
|
class MessageListAddressWidget(BMAddressWidget):
|
||||||
"""Address item in a messagelist"""
|
"""Address item in a messagelist"""
|
||||||
def __init__(self, parent, address=None, label=None, unread=False):
|
def __init__(self, parent, address=None, label=None, unread=False):
|
||||||
self.setAddress(address)
|
self.set_address(address)
|
||||||
super(MessageList_AddressWidget, self).__init__(parent, label, unread)
|
super(MessageListAddressWidget, self).__init__(parent, label, unread)
|
||||||
|
|
||||||
def _setup(self):
|
def _setup(self):
|
||||||
self.isEnabled = True
|
self.isEnabled = True
|
||||||
self.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
self.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||||
self.setType()
|
self.setType()
|
||||||
|
|
||||||
def setLabel(self, label=None):
|
def set_label(self, label=None):
|
||||||
"""Set label"""
|
"""Set label"""
|
||||||
super(MessageList_AddressWidget, self).setLabel(label)
|
super(MessageListAddressWidget, self).set_label(label)
|
||||||
if label is not None:
|
if label is not None:
|
||||||
return
|
return
|
||||||
newLabel = self.address
|
new_label = self.address
|
||||||
queryreturn = None
|
queryreturn = None
|
||||||
if self.type in (
|
if self.type in (
|
||||||
AccountMixin.NORMAL,
|
AccountMixin.NORMAL,
|
||||||
AccountMixin.CHAN, AccountMixin.MAILINGLIST):
|
AccountMixin.CHAN, AccountMixin.MAILINGLIST):
|
||||||
try:
|
try:
|
||||||
newLabel = unicode(
|
new_label = unicode(
|
||||||
BMConfigParser().get(self.address, 'label'),
|
BMConfigParser().get(self.address, 'label'),
|
||||||
'utf-8', 'ignore')
|
'utf-8', 'ignore')
|
||||||
except:
|
except:
|
||||||
|
@ -418,39 +415,39 @@ class MessageList_AddressWidget(BMAddressWidget):
|
||||||
'''select label from subscriptions where address=?''', self.address)
|
'''select label from subscriptions where address=?''', self.address)
|
||||||
if queryreturn:
|
if queryreturn:
|
||||||
for row in queryreturn:
|
for row in queryreturn:
|
||||||
newLabel = unicode(row[0], 'utf-8', 'ignore')
|
new_label = unicode(row[0], 'utf-8', 'ignore')
|
||||||
|
|
||||||
self.label = newLabel
|
self.label = new_label
|
||||||
|
|
||||||
def data(self, role):
|
def data(self, role):
|
||||||
"""Return object data (QT UI)"""
|
"""Return object data (QT UI)"""
|
||||||
if role == QtCore.Qt.UserRole:
|
if role == QtCore.Qt.UserRole:
|
||||||
return self.address
|
return self.address
|
||||||
return super(MessageList_AddressWidget, self).data(role)
|
return super(MessageListAddressWidget, self).data(role)
|
||||||
|
|
||||||
def setData(self, role, value):
|
def setData(self, role, value):
|
||||||
"""Set object data"""
|
"""Set object data"""
|
||||||
if role == QtCore.Qt.EditRole:
|
if role == QtCore.Qt.EditRole:
|
||||||
self.setLabel()
|
self.set_label()
|
||||||
return super(MessageList_AddressWidget, self).setData(role, value)
|
return super(MessageListAddressWidget, self).setData(role, value)
|
||||||
|
|
||||||
# label (or address) alphabetically, disabled at the end
|
# label (or address) alphabetically, disabled at the end
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
if isinstance(other, MessageList_AddressWidget):
|
if isinstance(other, MessageListAddressWidget):
|
||||||
return self.label.lower() < other.label.lower()
|
return self.label.lower() < other.label.lower()
|
||||||
return super(QtGui.QTableWidgetItem, self).__lt__(other)
|
return super(QtGui.QTableWidgetItem, self).__lt__(other)
|
||||||
|
|
||||||
|
|
||||||
class MessageList_SubjectWidget(BMTableWidgetItem):
|
class MessageListSubjectWidget(BMTableWidgetItem):
|
||||||
"""Message list subject item"""
|
"""Message list subject item"""
|
||||||
def __init__(self, parent, subject=None, label=None, unread=False):
|
def __init__(self, parent, subject=None, label=None, unread=False):
|
||||||
self.setSubject(subject)
|
self.set_subject(subject)
|
||||||
super(MessageList_SubjectWidget, self).__init__(parent, label, unread)
|
super(MessageListSubjectWidget, self).__init__(parent, label, unread)
|
||||||
|
|
||||||
def _setup(self):
|
def _setup(self):
|
||||||
self.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
self.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||||
|
|
||||||
def setSubject(self, subject):
|
def set_subject(self, subject):
|
||||||
"""Set subject"""
|
"""Set subject"""
|
||||||
self.subject = subject
|
self.subject = subject
|
||||||
|
|
||||||
|
@ -460,27 +457,27 @@ class MessageList_SubjectWidget(BMTableWidgetItem):
|
||||||
return self.subject
|
return self.subject
|
||||||
if role == QtCore.Qt.ToolTipRole:
|
if role == QtCore.Qt.ToolTipRole:
|
||||||
return escape(unicode(self.subject, 'utf-8'))
|
return escape(unicode(self.subject, 'utf-8'))
|
||||||
return super(MessageList_SubjectWidget, self).data(role)
|
return super(MessageListSubjectWidget, self).data(role)
|
||||||
|
|
||||||
# label (or address) alphabetically, disabled at the end
|
# label (or address) alphabetically, disabled at the end
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
if isinstance(other, MessageList_SubjectWidget):
|
if isinstance(other, MessageListSubjectWidget):
|
||||||
return self.label.lower() < other.label.lower()
|
return self.label.lower() < other.label.lower()
|
||||||
return super(QtGui.QTableWidgetItem, self).__lt__(other)
|
return super(QtGui.QTableWidgetItem, self).__lt__(other)
|
||||||
|
|
||||||
|
|
||||||
class Ui_AddressBookWidgetItem(BMAddressWidget):
|
class UiAddressBookWidgetItem(BMAddressWidget):
|
||||||
"""Addressbook item"""
|
"""Addressbook item"""
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
def __init__(self, label=None, acc_type=AccountMixin.NORMAL):
|
def __init__(self, label=None, acc_type=AccountMixin.NORMAL):
|
||||||
self.type = acc_type
|
self.type = acc_type
|
||||||
super(Ui_AddressBookWidgetItem, self).__init__(label=label)
|
super(UiAddressBookWidgetItem, self).__init__(label=label)
|
||||||
|
|
||||||
def data(self, role):
|
def data(self, role):
|
||||||
"""Return object data"""
|
"""Return object data"""
|
||||||
if role == QtCore.Qt.UserRole:
|
if role == QtCore.Qt.UserRole:
|
||||||
return self.type
|
return self.type
|
||||||
return super(Ui_AddressBookWidgetItem, self).data(role)
|
return super(UiAddressBookWidgetItem, self).data(role)
|
||||||
|
|
||||||
def setData(self, role, value):
|
def setData(self, role, value):
|
||||||
"""Set data"""
|
"""Set data"""
|
||||||
|
@ -502,10 +499,10 @@ class Ui_AddressBookWidgetItem(BMAddressWidget):
|
||||||
sqlExecute('''UPDATE subscriptions set label=? WHERE address=?''', self.label, self.address)
|
sqlExecute('''UPDATE subscriptions set label=? WHERE address=?''', self.label, self.address)
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
return super(Ui_AddressBookWidgetItem, self).setData(role, value)
|
return super(UiAddressBookWidgetItem, self).setData(role, value)
|
||||||
|
|
||||||
def __lt__(self, other):
|
def __lt__(self, other):
|
||||||
if isinstance(other, Ui_AddressBookWidgetItem):
|
if isinstance(other, UiAddressBookWidgetItem):
|
||||||
reverse = QtCore.Qt.DescendingOrder == \
|
reverse = QtCore.Qt.DescendingOrder == \
|
||||||
self.tableWidget().horizontalHeader().sortIndicatorOrder()
|
self.tableWidget().horizontalHeader().sortIndicatorOrder()
|
||||||
|
|
||||||
|
@ -515,22 +512,22 @@ class Ui_AddressBookWidgetItem(BMAddressWidget):
|
||||||
return super(QtGui.QTableWidgetItem, self).__lt__(other)
|
return super(QtGui.QTableWidgetItem, self).__lt__(other)
|
||||||
|
|
||||||
|
|
||||||
class Ui_AddressBookWidgetItemLabel(Ui_AddressBookWidgetItem):
|
class UiAddressBookWidgetItemLabel(UiAddressBookWidgetItem):
|
||||||
"""Addressbook label item"""
|
"""Addressbook label item"""
|
||||||
def __init__(self, address, label, acc_type):
|
def __init__(self, address, label, acc_type):
|
||||||
super(Ui_AddressBookWidgetItemLabel, self).__init__(label, acc_type)
|
super(UiAddressBookWidgetItemLabel, self).__init__(label, acc_type)
|
||||||
self.address = address
|
self.address = address
|
||||||
|
|
||||||
def data(self, role):
|
def data(self, role):
|
||||||
"""Return object data"""
|
"""Return object data"""
|
||||||
self.label = self.defaultLabel()
|
self.label = self.default_label()
|
||||||
return super(Ui_AddressBookWidgetItemLabel, self).data(role)
|
return super(UiAddressBookWidgetItemLabel, self).data(role)
|
||||||
|
|
||||||
|
|
||||||
class Ui_AddressBookWidgetItemAddress(Ui_AddressBookWidgetItem):
|
class UiAddressBookWidgetItemAddress(UiAddressBookWidgetItem):
|
||||||
"""Addressbook address item"""
|
"""Addressbook address item"""
|
||||||
def __init__(self, address, label, acc_type):
|
def __init__(self, address, label, acc_type):
|
||||||
super(Ui_AddressBookWidgetItemAddress, self).__init__(address, acc_type)
|
super(UiAddressBookWidgetItemAddress, self).__init__(address, acc_type)
|
||||||
self.address = address
|
self.address = address
|
||||||
self.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
self.setFlags(QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
|
||||||
|
|
||||||
|
@ -540,7 +537,7 @@ class Ui_AddressBookWidgetItemAddress(Ui_AddressBookWidgetItem):
|
||||||
return self.address
|
return self.address
|
||||||
if role == QtCore.Qt.DecorationRole:
|
if role == QtCore.Qt.DecorationRole:
|
||||||
return None
|
return None
|
||||||
return super(Ui_AddressBookWidgetItemAddress, self).data(role)
|
return super(UiAddressBookWidgetItemAddress, self).data(role)
|
||||||
|
|
||||||
|
|
||||||
class AddressBookCompleter(QtGui.QCompleter):
|
class AddressBookCompleter(QtGui.QCompleter):
|
||||||
|
@ -550,7 +547,7 @@ class AddressBookCompleter(QtGui.QCompleter):
|
||||||
super(AddressBookCompleter, self).__init__()
|
super(AddressBookCompleter, self).__init__()
|
||||||
self.cursorPos = -1
|
self.cursorPos = -1
|
||||||
|
|
||||||
def onCursorPositionChanged(self, oldPos, newPos): # pylint: disable=unused-argument
|
def on_cursor_position_changed(self, oldPos, newPos): # pylint: disable=unused-argument
|
||||||
"""Callback for cursor position change"""
|
"""Callback for cursor position change"""
|
||||||
if oldPos != self.cursorPos:
|
if oldPos != self.cursorPos:
|
||||||
self.cursorPos = -1
|
self.cursorPos = -1
|
||||||
|
@ -562,7 +559,7 @@ class AddressBookCompleter(QtGui.QCompleter):
|
||||||
|
|
||||||
def pathFromIndex(self, index):
|
def pathFromIndex(self, index):
|
||||||
"""Perform autocompletion (reimplemented QCompleter method)"""
|
"""Perform autocompletion (reimplemented QCompleter method)"""
|
||||||
autoString = unicode(
|
auto_string = unicode(
|
||||||
index.data(QtCore.Qt.EditRole).toString().toUtf8(), 'utf-8')
|
index.data(QtCore.Qt.EditRole).toString().toUtf8(), 'utf-8')
|
||||||
text = unicode(self.widget().text().toUtf8(), 'utf-8')
|
text = unicode(self.widget().text().toUtf8(), 'utf-8')
|
||||||
|
|
||||||
|
@ -573,28 +570,28 @@ class AddressBookCompleter(QtGui.QCompleter):
|
||||||
self.cursorPos = self.widget().cursorPosition()
|
self.cursorPos = self.widget().cursorPosition()
|
||||||
|
|
||||||
# Get current prosition
|
# Get current prosition
|
||||||
curIndex = self.widget().cursorPosition()
|
cur_index = self.widget().cursorPosition()
|
||||||
|
|
||||||
# prev_delimiter_index should actually point at final white space
|
# prev_delimiter_index should actually point at final white space
|
||||||
# AFTER the delimiter
|
# AFTER the delimiter
|
||||||
# Get index of last delimiter before current position
|
# Get index of last delimiter before current position
|
||||||
prevDelimiterIndex = text[0:curIndex].rfind(";")
|
prev_delimiter_index = text[0:cur_index].rfind(";")
|
||||||
while text[prevDelimiterIndex + 1] == " ":
|
while text[prev_delimiter_index + 1] == " ":
|
||||||
prevDelimiterIndex += 1
|
prev_delimiter_index += 1
|
||||||
|
|
||||||
# Get index of first delimiter after current position
|
# Get index of first delimiter after current position
|
||||||
# (or EOL if no delimiter after cursor)
|
# (or EOL if no delimiter after cursor)
|
||||||
nextDelimiterIndex = text.find(";", curIndex)
|
next_delimiter_index = text.find(";", cur_index)
|
||||||
if nextDelimiterIndex == -1:
|
if next_delimiter_index == -1:
|
||||||
nextDelimiterIndex = len(text)
|
next_delimiter_index = len(text)
|
||||||
|
|
||||||
# Get part of string that occurs before cursor
|
# Get part of string that occurs before cursor
|
||||||
part1 = text[0:prevDelimiterIndex + 1]
|
part1 = text[0:prev_delimiter_index + 1]
|
||||||
|
|
||||||
# Get string value from before auto finished string is selected
|
# Get string value from before auto finished string is selected
|
||||||
# pre = text[prevDelimiterIndex + 1:curIndex - 1]
|
# pre = text[prev_delimiter_index + 1:cur_index - 1]
|
||||||
|
|
||||||
# Get part of string that occurs AFTER cursor
|
# Get part of string that occurs AFTER cursor
|
||||||
part2 = text[nextDelimiterIndex:]
|
part2 = text[next_delimiter_index:]
|
||||||
|
|
||||||
return part1 + autoString + part2
|
return part1 + auto_string + part2
|
||||||
|
|
|
@ -4,6 +4,10 @@ and suggest how it may be installed
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
|
import logging
|
||||||
|
import os
|
||||||
|
|
||||||
|
from importlib import import_module
|
||||||
|
|
||||||
# Only really old versions of Python don't have sys.hexversion. We don't
|
# Only really old versions of Python don't have sys.hexversion. We don't
|
||||||
# support them. The logging module was introduced in Python 2.3
|
# support them. The logging module was introduced in Python 2.3
|
||||||
|
@ -14,10 +18,6 @@ if not hasattr(sys, 'hexversion') or sys.hexversion < 0x20300F0:
|
||||||
% sys.version
|
% sys.version
|
||||||
)
|
)
|
||||||
|
|
||||||
import logging
|
|
||||||
import os
|
|
||||||
from importlib import import_module
|
|
||||||
|
|
||||||
# We can now use logging so set up a simple configuration
|
# We can now use logging so set up a simple configuration
|
||||||
formatter = logging.Formatter('%(levelname)s: %(message)s')
|
formatter = logging.Formatter('%(levelname)s: %(message)s')
|
||||||
handler = logging.StreamHandler(sys.stdout)
|
handler = logging.StreamHandler(sys.stdout)
|
||||||
|
@ -112,39 +112,39 @@ PACKAGES = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def detectOS():
|
def detect_os():
|
||||||
if detectOS.result is not None:
|
if detect_os.result is not None:
|
||||||
return detectOS.result
|
return detect_os.result
|
||||||
if sys.platform.startswith('openbsd'):
|
if sys.platform.startswith('openbsd'):
|
||||||
detectOS.result = "OpenBSD"
|
detect_os.result = "OpenBSD"
|
||||||
elif sys.platform.startswith('freebsd'):
|
elif sys.platform.startswith('freebsd'):
|
||||||
detectOS.result = "FreeBSD"
|
detect_os.result = "FreeBSD"
|
||||||
elif sys.platform.startswith('win'):
|
elif sys.platform.startswith('win'):
|
||||||
detectOS.result = "Windows"
|
detect_os.result = "Windows"
|
||||||
elif os.path.isfile("/etc/os-release"):
|
elif os.path.isfile("/etc/os-release"):
|
||||||
detectOSRelease()
|
detect_os_release()
|
||||||
elif os.path.isfile("/etc/config.scm"):
|
elif os.path.isfile("/etc/config.scm"):
|
||||||
detectOS.result = "Guix"
|
detect_os.result = "Guix"
|
||||||
return detectOS.result
|
return detect_os.result
|
||||||
|
|
||||||
|
|
||||||
detectOS.result = None
|
detect_os.result = None
|
||||||
|
|
||||||
|
|
||||||
def detectOSRelease():
|
def detect_os_release():
|
||||||
with open("/etc/os-release", 'r') as osRelease:
|
with open("/etc/os-release", 'r') as osRelease:
|
||||||
version = None
|
version = None
|
||||||
for line in osRelease:
|
for line in osRelease:
|
||||||
if line.startswith("NAME="):
|
if line.startswith("NAME="):
|
||||||
detectOS.result = OS_RELEASE.get(
|
detect_os.result = OS_RELEASE.get(
|
||||||
line.replace('"', '').split("=")[-1].strip().lower())
|
line.replace('"', '').split("=")[-1].strip().lower())
|
||||||
elif line.startswith("VERSION_ID="):
|
elif line.startswith("VERSION_ID="):
|
||||||
try:
|
try:
|
||||||
version = float(line.split("=")[1].replace("\"", ""))
|
version = float(line.split("=")[1].replace("\"", ""))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass
|
pass
|
||||||
if detectOS.result == "Ubuntu" and version < 14:
|
if detect_os.result == "Ubuntu" and version < 14:
|
||||||
detectOS.result = "Ubuntu 12"
|
detect_os.result = "Ubuntu 12"
|
||||||
|
|
||||||
|
|
||||||
def try_import(module, log_extra=False):
|
def try_import(module, log_extra=False):
|
||||||
|
@ -155,7 +155,7 @@ def try_import(module, log_extra=False):
|
||||||
logger.error('The %s module is not available.', module)
|
logger.error('The %s module is not available.', module)
|
||||||
if log_extra:
|
if log_extra:
|
||||||
logger.error(log_extra)
|
logger.error(log_extra)
|
||||||
dist = detectOS()
|
dist = detect_os()
|
||||||
logger.error(
|
logger.error(
|
||||||
'On %s, try running "%s %s" as root.',
|
'On %s, try running "%s %s" as root.',
|
||||||
dist, PACKAGE_MANAGER[dist], PACKAGES[module][dist])
|
dist, PACKAGE_MANAGER[dist], PACKAGES[module][dist])
|
||||||
|
|
Loading…
Reference in New Issue
Block a user