Basic code clean up

This commit is contained in:
Omkar Pakki 2019-06-26 23:36:36 +05:30
parent f7e1601185
commit 693891672b
11 changed files with 281 additions and 283 deletions

View File

@ -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:

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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):

View File

@ -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)

View File

@ -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

View File

@ -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])