Moved all connections where receiver is MainWindow and sender

is defined in ui-file from class definition to ui-file.
This commit is contained in:
Dmitri Bogomolov 2018-11-09 17:54:56 +02:00
parent d72dbbfd70
commit fbbd95109f
Signed by untrusted user: g1itch
GPG Key ID: 720A756F18DEED13
3 changed files with 2342 additions and 999 deletions

View File

@ -3,7 +3,6 @@ PyQt based UI for bitmessage, the main module
""" """
import hashlib import hashlib
import locale
import os import os
import random import random
import string import string
@ -46,11 +45,9 @@ from account import (
import dialogs import dialogs
from network.stats import pendingDownload, pendingUpload from network.stats import pendingDownload, pendingUpload
from uisignaler import UISignaler from uisignaler import UISignaler
import paths
from proofofwork import getPowType from proofofwork import getPowType
import queues import queues
import shutdown import shutdown
from statusbar import BMStatusBar
import sound import sound
# This is needed for tray icon # This is needed for tray icon
import bitmessage_icons_rc # noqa:F401 pylint: disable=unused-import import bitmessage_icons_rc # noqa:F401 pylint: disable=unused-import
@ -93,192 +90,8 @@ class MainWindow(Window):
REPLY_TYPE_CHAN = 1 REPLY_TYPE_CHAN = 1
REPLY_TYPE_UPD = 2 REPLY_TYPE_UPD = 2
def change_translation(self, newlocale=None): def init_identities_popup_menu(self):
"""Change translation language for the application"""
if newlocale is None:
newlocale = l10n.getTranslationLanguage()
try:
if not self.qmytranslator.isEmpty():
QtGui.QApplication.removeTranslator(self.qmytranslator)
except:
pass
try:
if not self.qsystranslator.isEmpty():
QtGui.QApplication.removeTranslator(self.qsystranslator)
except:
pass
self.qmytranslator = QtCore.QTranslator()
translationpath = os.path.join(
paths.codePath(), 'translations', 'bitmessage_' + newlocale)
self.qmytranslator.load(translationpath)
QtGui.QApplication.installTranslator(self.qmytranslator)
self.qsystranslator = QtCore.QTranslator()
if paths.frozen:
translationpath = os.path.join(
paths.codePath(), 'translations', 'qt_' + newlocale)
else:
translationpath = os.path.join(
str(QtCore.QLibraryInfo.location(
QtCore.QLibraryInfo.TranslationsPath)), 'qt_' + newlocale)
self.qsystranslator.load(translationpath)
QtGui.QApplication.installTranslator(self.qsystranslator)
lang = locale.normalize(l10n.getTranslationLanguage())
langs = [
lang.split(".")[0] + "." + l10n.encoding,
lang.split(".")[0] + "." + 'UTF-8',
lang
]
if 'win32' in sys.platform or 'win64' in sys.platform:
langs = [l10n.getWindowsLocale(lang)]
for lang in langs:
try:
l10n.setlocale(locale.LC_ALL, lang)
if 'win32' not in sys.platform and 'win64' not in sys.platform:
l10n.encoding = locale.nl_langinfo(locale.CODESET)
else:
l10n.encoding = locale.getlocale()[1]
logger.info("Successfully set locale to %s", lang)
break
except:
logger.error("Failed to set locale to %s", lang, exc_info=True)
def init_file_menu(self):
QtCore.QObject.connect(self.actionExit, QtCore.SIGNAL(
"triggered()"), self.quit)
QtCore.QObject.connect(self.actionNetworkSwitch, QtCore.SIGNAL(
"triggered()"), self.network_switch)
QtCore.QObject.connect(self.actionManageKeys, QtCore.SIGNAL(
"triggered()"), self.click_actionManageKeys)
QtCore.QObject.connect(self.actionDeleteAllTrashedMessages,
QtCore.SIGNAL(
"triggered()"),
self.click_actionDeleteAllTrashedMessages)
QtCore.QObject.connect(self.actionRegenerateDeterministicAddresses,
QtCore.SIGNAL(
"triggered()"),
self.click_actionRegenerateDeterministicAddresses)
QtCore.QObject.connect(self.pushButtonAddChan, QtCore.SIGNAL(
"clicked()"),
self.click_actionJoinChan) # also used for creating chans.
QtCore.QObject.connect(self.pushButtonNewAddress, QtCore.SIGNAL(
"clicked()"), self.click_NewAddressDialog)
QtCore.QObject.connect(self.pushButtonAddAddressBook, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonAddAddressBook)
QtCore.QObject.connect(self.pushButtonAddSubscription, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonAddSubscription)
QtCore.QObject.connect(self.pushButtonTTL, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonTTL)
QtCore.QObject.connect(self.pushButtonClear, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonClear)
QtCore.QObject.connect(self.pushButtonSend, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonSend)
QtCore.QObject.connect(self.pushButtonFetchNamecoinID, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonFetchNamecoinID)
QtCore.QObject.connect(self.actionSettings, QtCore.SIGNAL(
"triggered()"), self.click_actionSettings)
QtCore.QObject.connect(self.actionAbout, QtCore.SIGNAL(
"triggered()"), self.click_actionAbout)
QtCore.QObject.connect(self.actionSupport, QtCore.SIGNAL(
"triggered()"), self.click_actionSupport)
QtCore.QObject.connect(self.actionHelp, QtCore.SIGNAL(
"triggered()"), self.click_actionHelp)
def init_inbox_popup_menu(self, connectSignal=True):
# Popup menu for the Inbox tab
self.inboxContextMenuToolbar = QtGui.QToolBar()
# Actions
self.actionReply = self.inboxContextMenuToolbar.addAction(_translate(
"MainWindow", "Reply to sender"), self.on_action_InboxReply)
self.actionReplyChan = self.inboxContextMenuToolbar.addAction(_translate(
"MainWindow", "Reply to channel"), self.on_action_InboxReplyChan)
self.actionAddSenderToAddressBook = self.inboxContextMenuToolbar.addAction(
_translate(
"MainWindow", "Add sender to your Address Book"),
self.on_action_InboxAddSenderToAddressBook)
self.actionAddSenderToBlackList = self.inboxContextMenuToolbar.addAction(
_translate(
"MainWindow", "Add sender to your Blacklist"),
self.on_action_InboxAddSenderToBlackList)
self.actionTrashInboxMessage = self.inboxContextMenuToolbar.addAction(
_translate("MainWindow", "Move to Trash"),
self.on_action_InboxTrash)
self.actionUndeleteTrashedMessage = self.inboxContextMenuToolbar.addAction(
_translate("MainWindow", "Undelete"),
self.on_action_TrashUndelete)
self.actionForceHtml = self.inboxContextMenuToolbar.addAction(
_translate(
"MainWindow", "View HTML code as formatted text"),
self.on_action_InboxMessageForceHtml)
self.actionSaveMessageAs = self.inboxContextMenuToolbar.addAction(
_translate(
"MainWindow", "Save message as..."),
self.on_action_InboxSaveMessageAs)
self.actionMarkUnread = self.inboxContextMenuToolbar.addAction(
_translate(
"MainWindow", "Mark Unread"), self.on_action_InboxMarkUnread)
# contextmenu messagelists
self.tableWidgetInbox.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.tableWidgetInbox, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuInbox)
self.tableWidgetInboxSubscriptions.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.tableWidgetInboxSubscriptions, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuInbox)
self.tableWidgetInboxChans.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.tableWidgetInboxChans, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuInbox)
def init_identities_popup_menu(self, connectSignal=True):
# Popup menu for the Your Identities tab # Popup menu for the Your Identities tab
self.addressContextMenuToolbarYourIdentities = QtGui.QToolBar()
# Actions
self.actionNewYourIdentities = self.addressContextMenuToolbarYourIdentities.addAction(_translate(
"MainWindow", "New"), self.on_action_YourIdentitiesNew)
self.actionEnableYourIdentities = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Enable"), self.on_action_Enable)
self.actionDisableYourIdentities = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Disable"), self.on_action_Disable)
self.actionSetAvatarYourIdentities = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Set avatar..."),
self.on_action_TreeWidgetSetAvatar)
self.actionClipboardYourIdentities = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Copy address to clipboard"),
self.on_action_Clipboard)
self.actionSpecialAddressBehaviorYourIdentities = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Special address behavior..."),
self.on_action_SpecialAddressBehaviorDialog)
self.actionEmailGateway = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Email gateway"),
self.on_action_EmailGatewayDialog)
self.actionMarkAllRead = self.addressContextMenuToolbarYourIdentities.addAction(
_translate(
"MainWindow", "Mark all messages as read"),
self.on_action_MarkAllRead)
self.treeWidgetYourIdentities.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.treeWidgetYourIdentities, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuYourIdentities)
# load all gui.menu plugins with prefix 'address' # load all gui.menu plugins with prefix 'address'
self.menu_plugins = {'address': []} self.menu_plugins = {'address': []}
@ -294,127 +107,6 @@ class MainWindow(Window):
title, handler title, handler
)) ))
def init_chan_popup_menu(self, connectSignal=True):
# Actions
self.actionNew = self.addressContextMenuToolbar.addAction(_translate(
"MainWindow", "New"), self.on_action_YourIdentitiesNew)
self.actionDelete = self.addressContextMenuToolbar.addAction(
_translate("MainWindow", "Delete"),
self.on_action_YourIdentitiesDelete)
self.actionEnable = self.addressContextMenuToolbar.addAction(
_translate(
"MainWindow", "Enable"), self.on_action_Enable)
self.actionDisable = self.addressContextMenuToolbar.addAction(
_translate(
"MainWindow", "Disable"), self.on_action_Disable)
self.actionSetAvatar = self.addressContextMenuToolbar.addAction(
_translate(
"MainWindow", "Set avatar..."),
self.on_action_TreeWidgetSetAvatar)
self.actionClipboard = self.addressContextMenuToolbar.addAction(
_translate(
"MainWindow", "Copy address to clipboard"),
self.on_action_Clipboard)
self.actionSend = self.addressContextMenuToolbar.addAction(
_translate("MainWindow", "Send message to this chan"),
self.on_action_Send)
self.actionSpecialAddressBehavior = self.addressContextMenuToolbar.addAction(
_translate(
"MainWindow", "Special address behavior..."),
self.on_action_SpecialAddressBehaviorDialog)
self.treeWidgetChans.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.treeWidgetChans, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuChan)
def init_addressbook_popup_menu(self, connectSignal=True):
# Popup menu for the Address Book page
self.addressBookContextMenuToolbar = QtGui.QToolBar()
# Actions
self.actionAddressBookSend = self.addressBookContextMenuToolbar.addAction(
_translate(
"MainWindow", "Send message to this address"),
self.on_action_AddressBookSend)
self.actionAddressBookClipboard = self.addressBookContextMenuToolbar.addAction(
_translate(
"MainWindow", "Copy address to clipboard"),
self.on_action_AddressBookClipboard)
self.actionAddressBookSubscribe = self.addressBookContextMenuToolbar.addAction(
_translate(
"MainWindow", "Subscribe to this address"),
self.on_action_AddressBookSubscribe)
self.actionAddressBookSetAvatar = self.addressBookContextMenuToolbar.addAction(
_translate(
"MainWindow", "Set avatar..."),
self.on_action_AddressBookSetAvatar)
self.actionAddressBookSetSound = \
self.addressBookContextMenuToolbar.addAction(
_translate("MainWindow", "Set notification sound..."),
self.on_action_AddressBookSetSound)
self.actionAddressBookNew = self.addressBookContextMenuToolbar.addAction(
_translate(
"MainWindow", "Add New Address"), self.on_action_AddressBookNew)
self.actionAddressBookDelete = self.addressBookContextMenuToolbar.addAction(
_translate(
"MainWindow", "Delete"), self.on_action_AddressBookDelete)
self.tableWidgetAddressBook.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.tableWidgetAddressBook, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuAddressBook)
def init_subscriptions_popup_menu(self, connectSignal=True):
# Actions
self.actionsubscriptionsNew = self.subscriptionsContextMenuToolbar.addAction(
_translate("MainWindow", "New"), self.on_action_SubscriptionsNew)
self.actionsubscriptionsDelete = self.subscriptionsContextMenuToolbar.addAction(
_translate("MainWindow", "Delete"),
self.on_action_SubscriptionsDelete)
self.actionsubscriptionsClipboard = self.subscriptionsContextMenuToolbar.addAction(
_translate("MainWindow", "Copy address to clipboard"),
self.on_action_SubscriptionsClipboard)
self.actionsubscriptionsEnable = self.subscriptionsContextMenuToolbar.addAction(
_translate("MainWindow", "Enable"),
self.on_action_SubscriptionsEnable)
self.actionsubscriptionsDisable = self.subscriptionsContextMenuToolbar.addAction(
_translate("MainWindow", "Disable"),
self.on_action_SubscriptionsDisable)
self.actionsubscriptionsSetAvatar = self.subscriptionsContextMenuToolbar.addAction(
_translate("MainWindow", "Set avatar..."),
self.on_action_TreeWidgetSetAvatar)
self.actionsubscriptionsSend = self.addressContextMenuToolbar.addAction(
_translate("MainWindow", "Send message to this address"),
self.on_action_Send)
self.treeWidgetSubscriptions.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
if connectSignal:
self.connect(self.treeWidgetSubscriptions, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'),
self.on_context_menuSubscriptions)
def init_sent_popup_menu(self, connectSignal=True):
# Actions
self.actionTrashSentMessage = self.sentContextMenuToolbar.addAction(
_translate(
"MainWindow", "Move to Trash"), self.on_action_SentTrash)
self.actionSentClipboard = self.sentContextMenuToolbar.addAction(
_translate(
"MainWindow", "Copy destination address to clipboard"),
self.on_action_SentClipboard)
self.actionForceSend = self.sentContextMenuToolbar.addAction(
_translate(
"MainWindow", "Force send"), self.on_action_ForceSend)
self.actionSentReply = self.sentContextMenuToolbar.addAction(
_translate("MainWindow", "Send update"),
self.on_action_SentReply)
# self.popMenuSent = QtGui.QMenu( self )
# self.popMenuSent.addAction( self.actionSentClipboard )
# self.popMenuSent.addAction( self.actionTrashSentMessage )
def rerenderTabTreeSubscriptions(self): def rerenderTabTreeSubscriptions(self):
treeWidget = self.treeWidgetSubscriptions treeWidget = self.treeWidgetSubscriptions
folders = Ui_FolderWidget.folderWeight.keys() folders = Ui_FolderWidget.folderWeight.keys()
@ -649,13 +341,7 @@ class MainWindow(Window):
# so that quit won't loop # so that quit won't loop
self.wait = self.quitAccepted = False self.wait = self.quitAccepted = False
self.init_file_menu()
self.init_inbox_popup_menu()
self.init_identities_popup_menu() self.init_identities_popup_menu()
self.init_addressbook_popup_menu()
self.init_subscriptions_popup_menu()
self.init_chan_popup_menu()
self.init_sent_popup_menu()
# Initialize the user's list of addresses on the 'Chan' tab. # Initialize the user's list of addresses on the 'Chan' tab.
self.rerenderTabTreeChans() self.rerenderTabTreeChans()
@ -677,77 +363,11 @@ class MainWindow(Window):
# Initialize the Subscriptions # Initialize the Subscriptions
self.rerenderSubscriptions() self.rerenderSubscriptions()
# Initialize the inbox search
QtCore.QObject.connect(self.inboxSearchLineEdit, QtCore.SIGNAL(
"returnPressed()"), self.inboxSearchLineEditReturnPressed)
QtCore.QObject.connect(self.inboxSearchLineEditSubscriptions, QtCore.SIGNAL(
"returnPressed()"), self.inboxSearchLineEditReturnPressed)
QtCore.QObject.connect(self.inboxSearchLineEditChans, QtCore.SIGNAL(
"returnPressed()"), self.inboxSearchLineEditReturnPressed)
QtCore.QObject.connect(self.inboxSearchLineEdit, QtCore.SIGNAL(
"textChanged(QString)"), self.inboxSearchLineEditUpdated)
QtCore.QObject.connect(self.inboxSearchLineEditSubscriptions, QtCore.SIGNAL(
"textChanged(QString)"), self.inboxSearchLineEditUpdated)
QtCore.QObject.connect(self.inboxSearchLineEditChans, QtCore.SIGNAL(
"textChanged(QString)"), self.inboxSearchLineEditUpdated)
# Initialize addressbook
QtCore.QObject.connect(self.tableWidgetAddressBook, QtCore.SIGNAL(
"itemChanged(QTableWidgetItem *)"), self.tableWidgetAddressBookItemChanged)
# This is necessary for the completer to work if multiple recipients
QtCore.QObject.connect(self.lineEditTo, QtCore.SIGNAL(
"cursorPositionChanged(int, int)"), self.lineEditTo.completer().onCursorPositionChanged)
# show messages from message list
QtCore.QObject.connect(self.tableWidgetInbox, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.tableWidgetInboxItemClicked)
QtCore.QObject.connect(self.tableWidgetInboxSubscriptions, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.tableWidgetInboxItemClicked)
QtCore.QObject.connect(self.tableWidgetInboxChans, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.tableWidgetInboxItemClicked)
# tree address lists
QtCore.QObject.connect(self.treeWidgetYourIdentities, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.treeWidgetItemClicked)
QtCore.QObject.connect(self.treeWidgetYourIdentities, QtCore.SIGNAL(
"itemChanged (QTreeWidgetItem *, int)"), self.treeWidgetItemChanged)
QtCore.QObject.connect(self.treeWidgetSubscriptions, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.treeWidgetItemClicked)
QtCore.QObject.connect(self.treeWidgetSubscriptions, QtCore.SIGNAL(
"itemChanged (QTreeWidgetItem *, int)"), self.treeWidgetItemChanged)
QtCore.QObject.connect(self.treeWidgetChans, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.treeWidgetItemClicked)
QtCore.QObject.connect(self.treeWidgetChans, QtCore.SIGNAL(
"itemChanged (QTreeWidgetItem *, int)"), self.treeWidgetItemChanged)
QtCore.QObject.connect(
self.tabWidget, QtCore.SIGNAL("currentChanged(int)"),
self.tabWidgetCurrentChanged
)
# Put the colored icon on the status bar # Put the colored icon on the status bar
# self.pushButtonStatusIcon.setIcon(QIcon(":/newPrefix/images/yellowicon.png"))
self.setStatusBar(BMStatusBar())
self.statusbar = self.statusBar()
self.pushButtonStatusIcon = QtGui.QPushButton(self)
self.pushButtonStatusIcon.setText('')
self.pushButtonStatusIcon.setIcon(
QtGui.QIcon(':/newPrefix/images/redicon.png'))
self.pushButtonStatusIcon.setFlat(True)
self.statusbar.insertPermanentWidget(0, self.pushButtonStatusIcon) self.statusbar.insertPermanentWidget(0, self.pushButtonStatusIcon)
QtCore.QObject.connect(self.pushButtonStatusIcon, QtCore.SIGNAL(
"clicked()"), self.click_pushButtonStatusIcon)
self.unreadCount = 0 self.unreadCount = 0
# Set the icon sizes for the identicons
identicon_size = 3*7
self.tableWidgetInbox.setIconSize(QtCore.QSize(identicon_size, identicon_size))
self.treeWidgetChans.setIconSize(QtCore.QSize(identicon_size, identicon_size))
self.treeWidgetYourIdentities.setIconSize(QtCore.QSize(identicon_size, identicon_size))
self.treeWidgetSubscriptions.setIconSize(QtCore.QSize(identicon_size, identicon_size))
self.tableWidgetAddressBook.setIconSize(QtCore.QSize(identicon_size, identicon_size))
self.UISignalThread = UISignaler.get() self.UISignalThread = UISignaler.get()
QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL( QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL(
"writeNewAddressToTable(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), self.writeNewAddressToTable) "writeNewAddressToTable(PyQt_PyObject,PyQt_PyObject,PyQt_PyObject)"), self.writeNewAddressToTable)
@ -814,9 +434,6 @@ class MainWindow(Window):
self.horizontalSliderTTL.setSliderPosition((TTL - 3600) ** (1/3.199)) self.horizontalSliderTTL.setSliderPosition((TTL - 3600) ** (1/3.199))
self.updateHumanFriendlyTTLDescription(TTL) self.updateHumanFriendlyTTLDescription(TTL)
QtCore.QObject.connect(self.horizontalSliderTTL, QtCore.SIGNAL(
"valueChanged(int)"), self.updateTTL)
self.initSettings() self.initSettings()
self.resetNamecoinConnection() self.resetNamecoinConnection()
self.sqlInit() self.sqlInit()

View File

@ -74,6 +74,15 @@
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<item> <item>
<widget class="STreeWidget" name="treeWidgetYourIdentities"> <widget class="STreeWidget" name="treeWidgetYourIdentities">
<property name="baseSize">
<size>
<width>200</width>
<height>0</height>
</size>
</property>
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<column> <column>
<property name="text"> <property name="text">
<string>Identities</string> <string>Identities</string>
@ -146,6 +155,9 @@
</layout> </layout>
</widget> </widget>
<widget class="STableWidget" name="tableWidgetInbox"> <widget class="STableWidget" name="tableWidgetInbox">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers"> <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
</property> </property>
@ -243,6 +255,9 @@
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<item> <item>
<widget class="STableWidget" name="tableWidgetAddressBook"> <widget class="STableWidget" name="tableWidgetAddressBook">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="alternatingRowColors"> <property name="alternatingRowColors">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -453,7 +468,6 @@ p, li { white-space: pre-wrap; }
</layout> </layout>
</widget> </widget>
</widget> </widget>
<widget class="QWidget" name="sendControlsContainer"> <widget class="QWidget" name="sendControlsContainer">
<layout class="QHBoxLayout" name="sendControlsLayout"> <layout class="QHBoxLayout" name="sendControlsLayout">
<item> <item>
@ -615,6 +629,9 @@ p, li { white-space: pre-wrap; }
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<item> <item>
<widget class="STreeWidget" name="treeWidgetSubscriptions"> <widget class="STreeWidget" name="treeWidgetSubscriptions">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="alternatingRowColors"> <property name="alternatingRowColors">
<bool>true</bool> <bool>true</bool>
</property> </property>
@ -696,6 +713,9 @@ p, li { white-space: pre-wrap; }
</layout> </layout>
</widget> </widget>
<widget class="STableWidget" name="tableWidgetInboxSubscriptions"> <widget class="STableWidget" name="tableWidgetInboxSubscriptions">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers"> <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
</property> </property>
@ -793,6 +813,9 @@ p, li { white-space: pre-wrap; }
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<item> <item>
<widget class="QTreeWidget" name="treeWidgetChans"> <widget class="QTreeWidget" name="treeWidgetChans">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="frameShadow"> <property name="frameShadow">
<enum>QFrame::Sunken</enum> <enum>QFrame::Sunken</enum>
</property> </property>
@ -880,6 +903,9 @@ p, li { white-space: pre-wrap; }
</layout> </layout>
</widget> </widget>
<widget class="STableWidget" name="tableWidgetInboxChans"> <widget class="STableWidget" name="tableWidgetInboxChans">
<property name="contextMenuPolicy">
<enum>Qt::CustomContextMenu</enum>
</property>
<property name="editTriggers"> <property name="editTriggers">
<set>QAbstractItemView::NoEditTriggers</set> <set>QAbstractItemView::NoEditTriggers</set>
</property> </property>
@ -979,6 +1005,47 @@ p, li { white-space: pre-wrap; }
</widget> </widget>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="pushButtonStatusIcon">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="cursor">
<cursorShape>ArrowCursor</cursorShape>
</property>
<property name="focusPolicy">
<enum>Qt::NoFocus</enum>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="text">
<string notr="true"/>
</property>
<property name="icon">
<iconset resource="bitmessage_icons.qrc">
<normaloff>:/newPrefix/images/redicon.png</normaloff>:/newPrefix/images/redicon.png</iconset>
</property>
<property name="iconSize">
<size>
<width>21</width>
<height>23</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<widget class="QMenuBar" name="menubar"> <widget class="QMenuBar" name="menubar">
@ -1018,14 +1085,320 @@ p, li { white-space: pre-wrap; }
<addaction name="menuSettings"/> <addaction name="menuSettings"/>
<addaction name="menuHelp"/> <addaction name="menuHelp"/>
</widget> </widget>
<widget class="QStatusBar" name="statusbar"> <widget class="BMStatusBar" name="statusbar">
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>16777215</width> <width>16777215</width>
<height>22</height> <height>25</height>
</size> </size>
</property> </property>
</widget> </widget>
<widget class="QToolBar" name="inboxContextMenuToolbar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<action name="actionReply">
<property name="text">
<string>Reply to sender</string>
</property>
</action>
<action name="actionReplyChan">
<property name="text">
<string>Reply to channel</string>
</property>
</action>
<action name="actionAddSenderToAddressBook">
<property name="text">
<string>Add sender to your Address Book</string>
</property>
</action>
<action name="actionAddSenderToBlackList">
<property name="text">
<string>Add sender to your Blacklist</string>
</property>
</action>
<action name="actionTrashInboxMessage">
<property name="text">
<string>Move to Trash</string>
</property>
</action>
<action name="actionUndeleteTrashedMessage">
<property name="text">
<string>Undelete</string>
</property>
</action>
<action name="actionForceHtml">
<property name="text">
<string>View HTML code as formatted text</string>
</property>
</action>
<action name="actionSaveMessageAs">
<property name="text">
<string>Save message as...</string>
</property>
</action>
<action name="actionMarkUnread">
<property name="text">
<string>Mark Unread</string>
</property>
</action>
<addaction name="actionReply"/>
<addaction name="actionReplyChan"/>
<addaction name="actionAddSenderToAddressBook"/>
<addaction name="actionAddSenderToBlackList"/>
<addaction name="actionTrashInboxMessage"/>
<addaction name="actionUndeleteTrashedMessage"/>
<addaction name="actionForceHtml"/>
<addaction name="actionSaveMessageAs"/>
<addaction name="actionMarkUnread"/>
</widget>
<widget class="QToolBar" name="addressContextMenuToolbarYourIdentities">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<action name="actionNewYourIdentities">
<property name="text">
<string>New</string>
</property>
</action>
<action name="actionEnableYourIdentities">
<property name="text">
<string>Enable</string>
</property>
</action>
<action name="actionDisableYourIdentities">
<property name="text">
<string>Disable</string>
</property>
</action>
<action name="actionSetAvatarYourIdentities">
<property name="text">
<string>Set avatar...</string>
</property>
</action>
<action name="actionClipboardYourIdentities">
<property name="text">
<string>Copy address to clipboard</string>
</property>
</action>
<action name="actionSpecialAddressBehaviorYourIdentities">
<property name="text">
<string>Special address behavior...</string>
</property>
</action>
<action name="actionEmailGateway">
<property name="text">
<string>Email gateway</string>
</property>
</action>
<action name="actionMarkAllRead">
<property name="text">
<string>Mark all messages as read</string>
</property>
</action>
<addaction name="actionNewYourIdentities"/>
<addaction name="actionEnableYourIdentities"/>
<addaction name="actionDisableYourIdentities"/>
<addaction name="actionSetAvatarYourIdentities"/>
<addaction name="actionClipboardYourIdentities"/>
<addaction name="actionSpecialAddressBehaviorYourIdentities"/>
<addaction name="actionEmailGateway"/>
<addaction name="actionMarkAllRead"/>
</widget>
<widget class="QToolBar" name="addressContextMenuToolbar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<action name="actionNew">
<property name="text">
<string>New</string>
</property>
</action>
<action name="actionDelete">
<property name="text">
<string>Delete</string>
</property>
</action>
<action name="actionEnable">
<property name="text">
<string>Enable</string>
</property>
</action>
<action name="actionDisable">
<property name="text">
<string>Disable</string>
</property>
</action>
<action name="actionSetAvatar">
<property name="text">
<string>Set avatar...</string>
</property>
</action>
<action name="actionClipboard">
<property name="text">
<string>Copy address to clipboard</string>
</property>
</action>
<action name="actionSend">
<property name="text">
<string>Send message to this chan</string>
</property>
</action>
<action name="actionSpecialAddressBehavior">
<property name="text">
<string>Special address behavior...</string>
</property>
</action>
<addaction name="actionNew"/>
<addaction name="actionDelete"/>
<addaction name="actionEnable"/>
<addaction name="actionDisable"/>
<addaction name="actionSetAvatar"/>
<addaction name="actionClipboard"/>
<addaction name="actionSend"/>
<addaction name="actionSpecialAddressBehavior"/>
</widget>
<widget class="QToolBar" name="addressBookContextMenuToolbar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<action name="actionAddressBookSend">
<property name="text">
<string>Send message to this address</string>
</property>
</action>
<action name="actionAddressBookClipboard">
<property name="text">
<string>Copy address to clipboard</string>
</property>
</action>
<action name="actionAddressBookSubscribe">
<property name="text">
<string>Subscribe to this address</string>
</property>
</action>
<action name="actionAddressBookSetAvatar">
<property name="text">
<string>Set avatar...</string>
</property>
</action>
<action name="actionAddressBookSetSound">
<property name="text">
<string>Set notification sound...</string>
</property>
</action>
<action name="actionAddressBookNew">
<property name="text">
<string>Add New Address</string>
</property>
</action>
<action name="actionAddressBookDelete">
<property name="text">
<string>Delete</string>
</property>
</action>
<addaction name="actionAddressBookSend"/>
<addaction name="actionAddressBookClipboard"/>
<addaction name="actionAddressBookSubscribe"/>
<addaction name="actionAddressBookSetAvatar"/>
<addaction name="actionAddressBookSetSound"/>
<addaction name="actionAddressBookNew"/>
<addaction name="actionAddressBookDelete"/>
</widget>
<widget class="QToolBar" name="subscriptionsContextMenuToolbar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<action name="actionsubscriptionsNew">
<property name="text">
<string>New</string>
</property>
</action>
<action name="actionsubscriptionsDelete">
<property name="text">
<string>Delete</string>
</property>
</action>
<action name="actionsubscriptionsClipboard">
<property name="text">
<string>Copy address to clipboard</string>
</property>
</action>
<action name="actionsubscriptionsEnable">
<property name="text">
<string>Enable</string>
</property>
</action>
<action name="actionsubscriptionsDisable">
<property name="text">
<string>Disable</string>
</property>
</action>
<action name="actionsubscriptionsSetAvatar">
<property name="text">
<string>Set avatar...</string>
</property>
</action>
<action name="actionsubscriptionsSend">
<property name="text">
<string>Send message to this address</string>
</property>
</action>
<addaction name="actionsubscriptionsNew"/>
<addaction name="actionsubscriptionsDelete"/>
<addaction name="actionsubscriptionsClipboard"/>
<addaction name="actionsubscriptionsEnable"/>
<addaction name="actionsubscriptionsDisable"/>
<addaction name="actionsubscriptionsSetAvatar"/>
<addaction name="actionsubscriptionsSend"/>
</widget>
<widget class="QToolBar" name="sentContextMenuToolbar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
<action name="actionTrashSentMessage">
<property name="text">
<string>Move to Trash</string>
</property>
</action>
<action name="actionSentClipboard">
<property name="text">
<string>Copy destination address to clipboard</string>
</property>
</action>
<action name="actionForceSend">
<property name="text">
<string>Force send</string>
</property>
</action>
<action name="actionSentReply">
<property name="text">
<string>Send update</string>
</property>
</action>
<addaction name="actionTrashSentMessage"/>
<addaction name="actionSentClipboard"/>
<addaction name="actionForceSend"/>
<addaction name="actionSentReply"/>
</widget>
<action name="actionImport_keys"> <action name="actionImport_keys">
<property name="text"> <property name="text">
<string>Import keys</string> <string>Import keys</string>
@ -1127,6 +1500,11 @@ p, li { white-space: pre-wrap; }
</action> </action>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>BMStatusBar</class>
<extends>QStatusBar</extends>
<header>bitmessageqt.statusbar</header>
</customwidget>
<customwidget> <customwidget>
<class>Blacklist</class> <class>Blacklist</class>
<extends>QWidget</extends> <extends>QWidget</extends>
@ -1163,11 +1541,6 @@ p, li { white-space: pre-wrap; }
<extends>QTextEdit</extends> <extends>QTextEdit</extends>
<header>bitmessageqt.messagecompose</header> <header>bitmessageqt.messagecompose</header>
</customwidget> </customwidget>
<customwidget>
<class>MessagelistControl</class>
<extends>SSplitter</extends>
<header>bitmessageqt.messagelist</header>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>tableWidgetInbox</tabstop> <tabstop>tableWidgetInbox</tabstop>
@ -1182,5 +1555,1342 @@ p, li { white-space: pre-wrap; }
<resources> <resources>
<include location="bitmessage_icons.qrc"/> <include location="bitmessage_icons.qrc"/>
</resources> </resources>
<connections/> <connections>
<connection>
<sender>actionExit</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>quit()</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionNetworkSwitch</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>network_switch</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionRegenerateDeterministicAddresses</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionRegenerateDeterministicAddresses</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionDeleteAllTrashedMessages</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionDeleteAllTrashedMessages</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionManageKeys</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionManageKeys</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSettings</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionSettings</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAbout</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionAbout</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSupport</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionSupport</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionHelp</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionHelp</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonNewAddress</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_NewAddressDialog</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonAddAddressBook</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonAddAddressBook</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonFetchNamecoinID</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonFetchNamecoinID</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonAddSubscription</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonAddSubscription</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonAddChan</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_actionJoinChan</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonTTL</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonTTL</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonClear</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonClear</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonSend</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonSend</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>pushButtonStatusIcon</sender>
<signal>clicked()</signal>
<receiver>MainWindow</receiver>
<slot>click_pushButtonStatusIcon</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetInbox</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuInbox()</slot>
<hints>
<hint type="sourcelabel">
<x>656</x>
<y>366</y>
</hint>
<hint type="destinationlabel">
<x>442</x>
<y>289</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetInboxSubscriptions</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuInbox()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetInboxChans</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuInbox()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetYourIdentities</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuYourIdentities()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetAddressBook</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuAddressBook()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetSubscriptions</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuSubscriptions()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetChans</sender>
<signal>customContextMenuRequested(QPoint)</signal>
<receiver>MainWindow</receiver>
<slot>on_context_menuChan()</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionReply</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxReply</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionReplyChan</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxReplyChan</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddSenderToAddressBook</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxAddSenderToAddressBook</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddSenderToBlackList</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxAddSenderToBlackList</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionTrashInboxMessage</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxTrash</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionUndeleteTrashedMessage</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_TrashUndelete</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionForceHtml</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxMessageForceHtml</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSaveMessageAs</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxSaveMessageAs</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionMarkUnread</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_InboxMarkUnread</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionNew</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_YourIdentitiesNew</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionDelete</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_YourIdentitiesDelete</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionEnable</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Enable</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionDisable</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Disable</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSetAvatar</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_TreeWidgetSetAvatar</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionClipboard</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Clipboard</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSend</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Send</slot>
</connection>
<connection>
<sender>actionSpecialAddressBehavior</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SpecialAddressBehaviorDialog</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionNewYourIdentities</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_YourIdentitiesNew</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionEnableYourIdentities</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Enable</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionDisableYourIdentities</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Disable</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSetAvatarYourIdentities</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_TreeWidgetSetAvatar</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionClipboardYourIdentities</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Clipboard</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSpecialAddressBehaviorYourIdentities</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SpecialAddressBehaviorDialog</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionEmailGateway</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_EmailGatewayDialog</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionMarkAllRead</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_MarkAllRead</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookSend</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookSend</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookClipboard</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookClipboard</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookSubscribe</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookSubscribe</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookSetAvatar</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookSetAvatar</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookSetSound</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookSetSound</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookNew</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookNew</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionAddressBookDelete</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_AddressBookDelete</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsNew</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SubscriptionsNew</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsDelete</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SubscriptionsDelete</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsClipboard</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SubscriptionsClipboard</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsEnable</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SubscriptionsEnable</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsDisable</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SubscriptionsDisable</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsSetAvatar</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_TreeWidgetSetAvatar</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionsubscriptionsSend</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_Send</slot>
</connection>
<connection>
<sender>actionTrashSentMessage</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SentTrash</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSentClipboard</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SentClipboard</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionForceSend</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_ForceSend</slot>
<hints>
<hint type="sourcelabel">
<x>-1</x>
<y>-1</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>actionSentReply</sender>
<signal>triggered()</signal>
<receiver>MainWindow</receiver>
<slot>on_action_SentReply</slot>
</connection>
<connection>
<sender>inboxSearchLineEdit</sender>
<signal>returnPressed()</signal>
<receiver>MainWindow</receiver>
<slot>inboxSearchLineEditReturnPressed</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>inboxSearchLineEditSubscriptions</sender>
<signal>returnPressed()</signal>
<receiver>MainWindow</receiver>
<slot>inboxSearchLineEditReturnPressed</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>inboxSearchLineEditChans</sender>
<signal>returnPressed()</signal>
<receiver>MainWindow</receiver>
<slot>inboxSearchLineEditReturnPressed</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>inboxSearchLineEdit</sender>
<signal>textChanged(QString)</signal>
<receiver>MainWindow</receiver>
<slot>inboxSearchLineEditUpdated</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>inboxSearchLineEditSubscriptions</sender>
<signal>textChanged(QString)</signal>
<receiver>MainWindow</receiver>
<slot>inboxSearchLineEditUpdated</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>inboxSearchLineEditChans</sender>
<signal>textChanged(QString)</signal>
<receiver>MainWindow</receiver>
<slot>inboxSearchLineEditUpdated</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetAddressBook</sender>
<signal>itemChanged(QTableWidgetItem*)</signal>
<receiver>MainWindow</receiver>
<slot>tableWidgetAddressBookItemChanged</slot>
<hints>
<hint type="sourcelabel">
<x>67</x>
<y>107</y>
</hint>
<hint type="destinationlabel">
<x>442</x>
<y>289</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetInbox</sender>
<signal>itemSelectionChanged()</signal>
<receiver>MainWindow</receiver>
<slot>tableWidgetInboxItemClicked</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetInboxSubscriptions</sender>
<signal>itemSelectionChanged()</signal>
<receiver>MainWindow</receiver>
<slot>tableWidgetInboxItemClicked</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tableWidgetInboxChans</sender>
<signal>itemSelectionChanged()</signal>
<receiver>MainWindow</receiver>
<slot>tableWidgetInboxItemClicked</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetYourIdentities</sender>
<signal>itemSelectionChanged()</signal>
<receiver>MainWindow</receiver>
<slot>treeWidgetItemClicked</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetSubscriptions</sender>
<signal>itemSelectionChanged()</signal>
<receiver>MainWindow</receiver>
<slot>treeWidgetItemClicked</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetChans</sender>
<signal>itemSelectionChanged()</signal>
<receiver>MainWindow</receiver>
<slot>treeWidgetItemClicked</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetYourIdentities</sender>
<signal>itemChanged(QTreeWidgetItem*,int)</signal>
<receiver>MainWindow</receiver>
<slot>treeWidgetItemChanged</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetSubscriptions</sender>
<signal>itemChanged(QTreeWidgetItem*,int)</signal>
<receiver>MainWindow</receiver>
<slot>treeWidgetItemChanged</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>treeWidgetChans</sender>
<signal>itemChanged(QTreeWidgetItem*,int)</signal>
<receiver>MainWindow</receiver>
<slot>treeWidgetItemChanged</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>tabWidget</sender>
<signal>currentChanged(int)</signal>
<receiver>MainWindow</receiver>
<slot>tabWidgetCurrentChanged</slot>
<hints>
<hint type="sourcelabel">
<x>20</x>
<y>20</y>
</hint>
<hint type="destinationlabel">
<x>20</x>
<y>20</y>
</hint>
</hints>
</connection>
<connection>
<sender>horizontalSliderTTL</sender>
<signal>valueChanged(int)</signal>
<receiver>MainWindow</receiver>
<slot>updateTTL</slot>
</connection>
</connections>
</ui> </ui>

View File

@ -15,13 +15,29 @@ class Window(settingsmixin.SMainWindow, RetranslateMixin):
super(Window, self).__init__(parent) super(Window, self).__init__(parent)
widgets.load('bitmessageui.ui', self) widgets.load('bitmessageui.ui', self)
self.addressBookCompleter = AddressBookCompleter() self.blackwhitelist.rerenderBlackWhiteList()
self.addressBookCompleter.setCompletionMode(
addressBookCompleter = AddressBookCompleter()
addressBookCompleter.setCompletionMode(
QtGui.QCompleter.PopupCompletion) QtGui.QCompleter.PopupCompletion)
self.addressBookCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive) addressBookCompleter.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
self.addressBookCompleterModel = QtGui.QStringListModel() addressBookCompleterModel = QtGui.QStringListModel()
self.addressBookCompleter.setModel(self.addressBookCompleterModel) addressBookCompleter.setModel(addressBookCompleterModel)
self.lineEditTo.setCompleter(self.addressBookCompleter) self.lineEditTo.setCompleter(addressBookCompleter)
self.lineEditTo.cursorPositionChanged.connect(
addressBookCompleter.onCursorPositionChanged)
# Hide all menu action containers
for toolbar in (
self.inboxContextMenuToolbar,
self.addressContextMenuToolbarYourIdentities,
self.addressContextMenuToolbar,
self.addressBookContextMenuToolbar,
self.subscriptionsContextMenuToolbar,
self.sentContextMenuToolbar
):
toolbar.setVisible(False)
# splitters # splitters
for splitter in ( for splitter in (