Added separate tab for broadcast messages

This commit is contained in:
Dag Robøle 2013-06-29 15:11:24 +02:00
parent bfdb04716a
commit e46bdae4b0
3 changed files with 337 additions and 96 deletions

View File

@ -57,6 +57,17 @@ class MyForm(QtGui.QMainWindow):
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
# Define tab indexes here to avoid ghost numbers laster on
self.TabIndex_Inbox = 0
self.TabIndex_Broadcasts = 1
self.TabIndex_Send = 2
self.TabIndex_Sent = 3
self.TabIndex_YourIdentities = 4
self.TabIndex_Subscriptions = 5
self.TabIndex_AddressBook = 6
self.TabIndex_Blacklist = 7
self.TabIndex_NetworkStatus = 8
# Ask the user if we may delete their old version 1 addresses if they
# have any.
configSections = shared.config.sections()
@ -92,7 +103,7 @@ class MyForm(QtGui.QMainWindow):
# startup for linux
pass
self.ui.labelSendBroadcastWarning.setVisible(False)
self.ui.labelSendBroadcastWarning.setVisible(False)
# FILE MENU and other buttons
QtCore.QObject.connect(self.ui.actionExit, QtCore.SIGNAL(
@ -156,6 +167,32 @@ class MyForm(QtGui.QMainWindow):
self.popMenuInbox.addAction( self.actionSaveMessageAs )
self.popMenuInbox.addAction( self.actionTrashInboxMessage )
# Popup menu for the Broadcasts tab
self.ui.broadcastsContextMenuToolbar = QtGui.QToolBar()
# Actions
self.actionReply = self.ui.broadcastsContextMenuToolbar.addAction(_translate(
"MainWindow", "Reply"), self.on_action_InboxReply)
self.actionAddSenderToAddressBook = self.ui.broadcastsContextMenuToolbar.addAction(_translate(
"MainWindow", "Add sender to your Address Book"), self.on_action_InboxAddSenderToAddressBook)
self.actionTrashInboxMessage = self.ui.broadcastsContextMenuToolbar.addAction(
_translate("MainWindow", "Move to Trash"), self.on_action_InboxTrash)
self.actionForceHtml = self.ui.broadcastsContextMenuToolbar.addAction(_translate(
"MainWindow", "View HTML code as formatted text"), self.on_action_InboxMessageForceHtml)
self.actionSaveMessageAs = self.ui.broadcastsContextMenuToolbar.addAction(_translate(
"MainWindow", "Save message as..."), self.on_action_InboxSaveMessageAs)
self.ui.tableWidgetBroadcasts.setContextMenuPolicy(
QtCore.Qt.CustomContextMenu)
self.connect(self.ui.tableWidgetBroadcasts, QtCore.SIGNAL(
'customContextMenuRequested(const QPoint&)'), self.on_context_menuBroadcasts)
self.popMenuBroadcasts = QtGui.QMenu(self)
self.popMenuBroadcasts.addAction(self.actionForceHtml)
self.popMenuBroadcasts.addSeparator()
self.popMenuBroadcasts.addAction(self.actionReply)
self.popMenuBroadcasts.addAction(self.actionAddSenderToAddressBook)
self.popMenuBroadcasts.addSeparator()
self.popMenuBroadcasts.addAction( self.actionSaveMessageAs )
self.popMenuBroadcasts.addAction( self.actionTrashInboxMessage )
# Popup menu for the Your Identities tab
self.ui.addressContextMenuToolbar = QtGui.QToolBar()
# Actions
@ -323,8 +360,10 @@ class MyForm(QtGui.QMainWindow):
try:
if toAddress == self.str_broadcast_subscribers:
toLabel = self.str_broadcast_subscribers
table = self.ui.tableWidgetBroadcasts
else:
toLabel = shared.config.get(toAddress, 'label')
table = self.ui.tableWidgetInbox
except:
toLabel = ''
if toLabel == '':
@ -356,7 +395,7 @@ class MyForm(QtGui.QMainWindow):
for row in queryreturn:
fromLabel, = row
self.ui.tableWidgetInbox.insertRow(0)
table.insertRow(0)
newItem = QtGui.QTableWidgetItem(unicode(toLabel, 'utf-8'))
newItem.setToolTip(unicode(toLabel, 'utf-8'))
newItem.setFlags(
@ -366,7 +405,7 @@ class MyForm(QtGui.QMainWindow):
newItem.setData(Qt.UserRole, str(toAddress))
if shared.safeConfigGetBoolean(toAddress, 'mailinglist'):
newItem.setTextColor(QtGui.QColor(137, 04, 177))
self.ui.tableWidgetInbox.setItem(0, 0, newItem)
table.setItem(0, 0, newItem)
if fromLabel == '':
newItem = QtGui.QTableWidgetItem(
unicode(fromAddress, 'utf-8'))
@ -380,7 +419,7 @@ class MyForm(QtGui.QMainWindow):
newItem.setFont(font)
newItem.setData(Qt.UserRole, str(fromAddress))
self.ui.tableWidgetInbox.setItem(0, 1, newItem)
table.setItem(0, 1, newItem)
newItem = QtGui.QTableWidgetItem(unicode(subject, 'utf-8'))
newItem.setToolTip(unicode(subject, 'utf-8'))
newItem.setData(Qt.UserRole, unicode(message, 'utf-8)'))
@ -388,7 +427,7 @@ class MyForm(QtGui.QMainWindow):
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
if not read:
newItem.setFont(font)
self.ui.tableWidgetInbox.setItem(0, 2, newItem)
table.setItem(0, 2, newItem)
newItem = myTableWidgetItem(unicode(strftime(shared.config.get(
'bitmessagesettings', 'timeformat'), localtime(int(received))), 'utf-8'))
newItem.setToolTip(unicode(strftime(shared.config.get(
@ -399,9 +438,11 @@ class MyForm(QtGui.QMainWindow):
QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled)
if not read:
newItem.setFont(font)
self.ui.tableWidgetInbox.setItem(0, 3, newItem)
table.setItem(0, 3, newItem)
self.ui.tableWidgetInbox.sortItems(3, Qt.DescendingOrder)
self.ui.tableWidgetBroadcasts.sortItems(3, Qt.DescendingOrder)
self.ui.tableWidgetInbox.keyPressEvent = self.tableWidgetInboxKeyPressEvent
self.ui.tableWidgetBroadcasts.keyPressEvent = self.tableWidgetBroadcastsKeyPressEvent
# Load Sent items from database
shared.sqlLock.acquire()
@ -543,6 +584,8 @@ class MyForm(QtGui.QMainWindow):
"itemChanged(QTableWidgetItem *)"), self.tableWidgetSubscriptionsItemChanged)
QtCore.QObject.connect(self.ui.tableWidgetInbox, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.tableWidgetInboxItemClicked)
QtCore.QObject.connect(self.ui.tableWidgetBroadcasts, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.tableWidgetInboxItemClicked)
QtCore.QObject.connect(self.ui.tableWidgetSent, QtCore.SIGNAL(
"itemSelectionChanged ()"), self.tableWidgetSentItemClicked)
@ -647,7 +690,7 @@ class MyForm(QtGui.QMainWindow):
def appIndicatorInbox(self, mm_app, source_id):
self.appIndicatorShow()
# select inbox
self.ui.tabWidget.setCurrentIndex(0)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Inbox)
selectedItem = None
if source_id == 'Subscriptions':
# select unread broadcast
@ -674,17 +717,17 @@ class MyForm(QtGui.QMainWindow):
# Show the program window and select send tab
def appIndicatorSend(self):
self.appIndicatorShow()
self.ui.tabWidget.setCurrentIndex(1)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Send)
# Show the program window and select subscriptions tab
def appIndicatorSubscribe(self):
self.appIndicatorShow()
self.ui.tabWidget.setCurrentIndex(4)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Subscriptions)
# Show the program window and select the address book tab
def appIndicatorAddressBook(self):
self.appIndicatorShow()
self.ui.tabWidget.setCurrentIndex(5)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_AddressBook)
# create application indicator
def appIndicatorInit(self, app):
@ -745,6 +788,12 @@ class MyForm(QtGui.QMainWindow):
self.tray.setContextMenu(m)
self.tray.show()
def getCurrentTableAndEdit(self):
if self.ui.tabWidget.currentIndex() == self.TabIndex_Inbox:
return self.ui.tableWidgetInbox, self.ui.textEditInboxMessage
else:
return self.ui.tableWidgetBroadcasts, self.ui.textEditBroadcastsMessage
# Ubuntu Messaging menu object
mmapp = None
@ -915,6 +964,11 @@ class MyForm(QtGui.QMainWindow):
if event.key() == QtCore.Qt.Key_Delete:
self.on_action_InboxTrash()
return QtGui.QTableWidget.keyPressEvent(self.ui.tableWidgetInbox, event)
def tableWidgetBroadcastsKeyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Delete:
self.on_action_BroadcastsTrash()
return QtGui.QTableWidget.keyPressEvent(self.ui.tableWidgetBroadcasts, event)
def tableWidgetSentKeyPressEvent(self, event):
if event.key() == QtCore.Qt.Key_Delete:
@ -970,7 +1024,7 @@ class MyForm(QtGui.QMainWindow):
# self.addressGenerator.start()
shared.addressGeneratorQueue.put(('createDeterministicAddresses', addressVersionNumber, streamNumberForAddress, "regenerated deterministic address", self.regenerateAddressesDialogInstance.ui.spinBoxNumberOfAddressesToMake.value(
), self.regenerateAddressesDialogInstance.ui.lineEditPassphrase.text().toUtf8(), self.regenerateAddressesDialogInstance.ui.checkBoxEighteenByteRipe.isChecked()))
self.ui.tabWidget.setCurrentIndex(3)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_YourIdentities)
def openKeysFile(self):
if 'linux' in sys.platform:
@ -1161,8 +1215,8 @@ class MyForm(QtGui.QMainWindow):
self.statusBar().showMessage(_translate(
"MainWindow", "Message trashed"))
self.ui.tableWidgetInbox.removeRow(i)
break
break
def rerenderInboxFromLabels(self):
for i in range(self.ui.tableWidgetInbox.rowCount()):
addressToLookup = str(self.ui.tableWidgetInbox.item(
@ -1217,6 +1271,68 @@ class MyForm(QtGui.QMainWindow):
self.ui.tableWidgetInbox.item(
i, 0).setTextColor(QtGui.QColor(0, 0, 0))
def removeBroadcastsRowByMsgid(self, msgid): # msgid and inventoryHash are the same thing
for i in range(self.ui.tableWidgetBroadcasts.rowCount()):
if msgid == str(self.ui.tableWidgetBroadcasts.item(i, 3).data(Qt.UserRole).toPyObject()):
self.statusBar().showMessage(_translate(
"MainWindow", "Message trashed"))
self.ui.tableWidgetBroadcasts.removeRow(i)
break
def rerenderBroadcastsFromLabels(self):
for i in range(self.ui.tableWidgetBroadcasts.rowCount()):
addressToLookup = str(self.ui.tableWidgetBroadcasts.item(
i, 1).data(Qt.UserRole).toPyObject())
fromLabel = ''
t = (addressToLookup,)
shared.sqlLock.acquire()
shared.sqlSubmitQueue.put(
'''select label from addressbook where address=?''')
shared.sqlSubmitQueue.put(t)
queryreturn = shared.sqlReturnQueue.get()
shared.sqlLock.release()
if queryreturn != []:
for row in queryreturn:
fromLabel, = row
self.ui.tableWidgetBroadcasts.item(
i, 1).setText(unicode(fromLabel, 'utf-8'))
else:
# It might be a broadcast message. We should check for that
# label.
shared.sqlLock.acquire()
shared.sqlSubmitQueue.put(
'''select label from subscriptions where address=?''')
shared.sqlSubmitQueue.put(t)
queryreturn = shared.sqlReturnQueue.get()
shared.sqlLock.release()
if queryreturn != []:
for row in queryreturn:
fromLabel, = row
self.ui.tableWidgetBroadcasts.item(
i, 1).setText(unicode(fromLabel, 'utf-8'))
def rerenderBroadcastsToLabels(self):
for i in range(self.ui.tableWidgetBroadcasts.rowCount()):
toAddress = str(self.ui.tableWidgetBroadcasts.item(
i, 0).data(Qt.UserRole).toPyObject())
try:
toLabel = shared.config.get(toAddress, 'label')
except:
toLabel = ''
if toLabel == '':
toLabel = toAddress
self.ui.tableWidgetBroadcasts.item(
i, 0).setText(unicode(toLabel, 'utf-8'))
# Set the color according to whether it is the address of a mailing
# list or not.
if shared.safeConfigGetBoolean(toAddress, 'mailinglist'):
self.ui.tableWidgetBroadcasts.item(i, 0).setTextColor(QtGui.QColor(137, 04, 177))
else:
self.ui.tableWidgetBroadcasts.item(
i, 0).setTextColor(QtGui.QColor(0, 0, 0))
def rerenderSentFromLabels(self):
for i in range(self.ui.tableWidgetSent.rowCount()):
fromAddress = str(self.ui.tableWidgetSent.item(
@ -1371,7 +1487,7 @@ class MyForm(QtGui.QMainWindow):
self.ui.lineEditTo.setText('')
self.ui.lineEditSubject.setText('')
self.ui.textEditMessage.setText('')
self.ui.tabWidget.setCurrentIndex(2)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Sent)
self.ui.tableWidgetSent.setCurrentCell(0, 0)
else:
self.statusBar().showMessage(_translate(
@ -1442,11 +1558,11 @@ class MyForm(QtGui.QMainWindow):
self.ui.lineEditTo.setText('')
self.ui.lineEditSubject.setText('')
self.ui.textEditMessage.setText('')
self.ui.tabWidget.setCurrentIndex(2)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Sent)
self.ui.tableWidgetSent.setCurrentCell(0, 0)
def click_pushButtonLoadFromAddressBook(self):
self.ui.tabWidget.setCurrentIndex(5)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_AddressBook)
for i in range(4):
time.sleep(0.1)
self.statusBar().showMessage('')
@ -1557,8 +1673,10 @@ class MyForm(QtGui.QMainWindow):
try:
if toAddress == self.str_broadcast_subscribers:
toLabel = self.str_broadcast_subscribers
table = self.ui.tableWidgetBroadcasts
else:
toLabel = shared.config.get(toAddress, 'label')
table = self.ui.tableWidgetInbox
except:
toLabel = ''
if toLabel == '':
@ -1566,15 +1684,15 @@ class MyForm(QtGui.QMainWindow):
font = QFont()
font.setBold(True)
self.ui.tableWidgetInbox.setSortingEnabled(False)
table.setSortingEnabled(False)
newItem = QtGui.QTableWidgetItem(unicode(toLabel, 'utf-8'))
newItem.setToolTip(unicode(toLabel, 'utf-8'))
newItem.setFont(font)
newItem.setData(Qt.UserRole, str(toAddress))
if shared.safeConfigGetBoolean(str(toAddress), 'mailinglist'):
newItem.setTextColor(QtGui.QColor(137, 04, 177))
self.ui.tableWidgetInbox.insertRow(0)
self.ui.tableWidgetInbox.setItem(0, 0, newItem)
table.insertRow(0)
table.setItem(0, 0, newItem)
if fromLabel == '':
newItem = QtGui.QTableWidgetItem(unicode(fromAddress, 'utf-8'))
@ -1588,12 +1706,12 @@ class MyForm(QtGui.QMainWindow):
self.notifierShow(unicode(_translate("MainWindow",'New Message').toUtf8(),'utf-8'), unicode(_translate("MainWindow",'From ').toUtf8(),'utf-8') + unicode(fromLabel, 'utf-8'))
newItem.setData(Qt.UserRole, str(fromAddress))
newItem.setFont(font)
self.ui.tableWidgetInbox.setItem(0, 1, newItem)
table.setItem(0, 1, newItem)
newItem = QtGui.QTableWidgetItem(unicode(subject, 'utf-8)'))
newItem.setToolTip(unicode(subject, 'utf-8)'))
newItem.setData(Qt.UserRole, unicode(message, 'utf-8)'))
newItem.setFont(font)
self.ui.tableWidgetInbox.setItem(0, 2, newItem)
table.setItem(0, 2, newItem)
newItem = myTableWidgetItem(unicode(strftime(shared.config.get(
'bitmessagesettings', 'timeformat'), localtime(int(time.time()))), 'utf-8'))
newItem.setToolTip(unicode(strftime(shared.config.get(
@ -1601,8 +1719,8 @@ class MyForm(QtGui.QMainWindow):
newItem.setData(Qt.UserRole, QByteArray(inventoryHash))
newItem.setData(33, int(time.time()))
newItem.setFont(font)
self.ui.tableWidgetInbox.setItem(0, 3, newItem)
self.ui.tableWidgetInbox.setSortingEnabled(True)
table.setItem(0, 3, newItem)
table.setSortingEnabled(True)
self.ubuntuMessagingMenuUpdate(True, newItem, toLabel)
def click_pushButtonAddAddressBook(self):
@ -2013,8 +2131,9 @@ class MyForm(QtGui.QMainWindow):
self.quit()
def on_action_InboxMessageForceHtml(self):
currentInboxRow = self.ui.tableWidgetInbox.currentRow()
lines = self.ui.tableWidgetInbox.item(
table, editbox = self.getCurrentTableAndEdit()
currentInboxRow = table.currentRow()
lines = table.item(
currentInboxRow, 2).data(Qt.UserRole).toPyObject().split('\n')
for i in xrange(len(lines)):
if lines[i].contains('Message ostensibly from '):
@ -2026,13 +2145,14 @@ class MyForm(QtGui.QMainWindow):
for i in xrange(len(lines)):
content += lines[i]
content = content.replace('\n\n', '<br><br>')
self.ui.textEditInboxMessage.setHtml(QtCore.QString(content))
editbox.setHtml(QtCore.QString(content))
def on_action_InboxReply(self):
currentInboxRow = self.ui.tableWidgetInbox.currentRow()
toAddressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(
table, editbox = self.getCurrentTableAndEdit()
currentInboxRow = table.currentRow()
toAddressAtCurrentInboxRow = str(table.item(
currentInboxRow, 0).data(Qt.UserRole).toPyObject())
fromAddressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(
fromAddressAtCurrentInboxRow = str(table.item(
currentInboxRow, 1).data(Qt.UserRole).toPyObject())
if toAddressAtCurrentInboxRow == self.str_broadcast_subscribers:
self.ui.labelFrom.setText('')
@ -2049,21 +2169,22 @@ class MyForm(QtGui.QMainWindow):
self.ui.lineEditTo.setText(str(fromAddressAtCurrentInboxRow))
self.ui.comboBoxSendFrom.setCurrentIndex(0)
# self.ui.comboBoxSendFrom.setEditText(str(self.ui.tableWidgetInbox.item(currentInboxRow,0).text))
self.ui.textEditMessage.setText('\n\n------------------------------------------------------\n' + self.ui.tableWidgetInbox.item(
self.ui.textEditMessage.setText('\n\n------------------------------------------------------\n' + table.item(
currentInboxRow, 2).data(Qt.UserRole).toPyObject())
if self.ui.tableWidgetInbox.item(currentInboxRow, 2).text()[0:3] == 'Re:':
if table.item(currentInboxRow, 2).text()[0:3] == 'Re:':
self.ui.lineEditSubject.setText(
self.ui.tableWidgetInbox.item(currentInboxRow, 2).text())
table.item(currentInboxRow, 2).text())
else:
self.ui.lineEditSubject.setText(
'Re: ' + self.ui.tableWidgetInbox.item(currentInboxRow, 2).text())
'Re: ' + table.item(currentInboxRow, 2).text())
self.ui.radioButtonSpecific.setChecked(True)
self.ui.tabWidget.setCurrentIndex(1)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Send)
def on_action_InboxAddSenderToAddressBook(self):
currentInboxRow = self.ui.tableWidgetInbox.currentRow()
table, editbox = self.getCurrentTableAndEdit()
currentInboxRow = table.currentRow()
# self.ui.tableWidgetInbox.item(currentRow,1).data(Qt.UserRole).toPyObject()
addressAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(
addressAtCurrentInboxRow = str(table.item(
currentInboxRow, 1).data(Qt.UserRole).toPyObject())
# Let's make sure that it isn't already in the address book
shared.sqlLock.acquire()
@ -2091,7 +2212,7 @@ class MyForm(QtGui.QMainWindow):
queryreturn = shared.sqlReturnQueue.get()
shared.sqlSubmitQueue.put('commit')
shared.sqlLock.release()
self.ui.tabWidget.setCurrentIndex(5)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_AddressBook)
self.ui.tableWidgetAddressBook.setCurrentCell(0, 0)
self.statusBar().showMessage(_translate(
"MainWindow", "Entry added to the Address Book. Edit the label to your liking."))
@ -2101,9 +2222,10 @@ class MyForm(QtGui.QMainWindow):
# Send item on the Inbox tab to trash
def on_action_InboxTrash(self):
while self.ui.tableWidgetInbox.selectedIndexes() != []:
currentRow = self.ui.tableWidgetInbox.selectedIndexes()[0].row()
inventoryHashToTrash = str(self.ui.tableWidgetInbox.item(
table, editbox = self.getCurrentTableAndEdit()
while table.selectedIndexes() != []:
currentRow = table.selectedIndexes()[0].row()
inventoryHashToTrash = str(table.item(
currentRow, 3).data(Qt.UserRole).toPyObject())
t = (inventoryHashToTrash,)
shared.sqlLock.acquire()
@ -2112,32 +2234,33 @@ class MyForm(QtGui.QMainWindow):
shared.sqlSubmitQueue.put(t)
shared.sqlReturnQueue.get()
shared.sqlLock.release()
self.ui.textEditInboxMessage.setText("")
self.ui.tableWidgetInbox.removeRow(currentRow)
editbox.setText("")
table.removeRow(currentRow)
self.statusBar().showMessage(_translate(
"MainWindow", "Moved items to trash. There is no user interface to view your trash, but it is still on disk if you are desperate to get it back."))
shared.sqlLock.acquire()
shared.sqlSubmitQueue.put('commit')
shared.sqlLock.release()
if currentRow == 0:
self.ui.tableWidgetInbox.selectRow(currentRow)
table.selectRow(currentRow)
else:
self.ui.tableWidgetInbox.selectRow(currentRow - 1)
table.selectRow(currentRow - 1)
def on_action_InboxSaveMessageAs(self):
currentInboxRow = self.ui.tableWidgetInbox.currentRow()
table, editbox = self.getCurrentTableAndEdit()
currentInboxRow = table.currentRow()
try:
subjectAtCurrentInboxRow = str(self.ui.tableWidgetInbox.item(currentInboxRow,2).text())
subjectAtCurrentInboxRow = str(table.item(currentInboxRow,2).text())
except:
subjectAtCurrentInboxRow = ''
defaultFilename = "".join(x for x in subjectAtCurrentInboxRow if x.isalnum()) + '.txt'
data = self.ui.tableWidgetInbox.item(currentInboxRow,2).data(Qt.UserRole).toPyObject()
data = table.item(currentInboxRow,2).data(Qt.UserRole).toPyObject()
filename = QFileDialog.getSaveFileName(self, _translate("MainWindow","Save As..."), defaultFilename, "Text files (*.txt);;All files (*.*)")
if filename == '':
return
try:
f = open(filename, 'w')
f.write( self.ui.tableWidgetInbox.item(currentInboxRow,2).data(Qt.UserRole).toPyObject() )
f.write( table.item(currentInboxRow,2).data(Qt.UserRole).toPyObject() )
f.close()
except Exception, e:
sys.stderr.write('Write error: '+ e)
@ -2256,7 +2379,7 @@ class MyForm(QtGui.QMainWindow):
"MainWindow", "No addresses selected."))
else:
self.statusBar().showMessage('')
self.ui.tabWidget.setCurrentIndex(1)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Send)
def on_action_AddressBookSubscribe(self):
listOfSelectedRows = {}
@ -2270,7 +2393,7 @@ class MyForm(QtGui.QMainWindow):
continue
labelAtCurrentRow = self.ui.tableWidgetAddressBook.item(currentRow,0).text().toUtf8()
self.addSubscription(labelAtCurrentRow, addressAtCurrentRow)
self.ui.tabWidget.setCurrentIndex(4)
self.ui.tabWidget.setCurrentIndex(self.TabIndex_Subscriptions)
def on_context_menuAddressBook(self, point):
self.popMenuAddressBook.exec_(
@ -2485,6 +2608,9 @@ class MyForm(QtGui.QMainWindow):
def on_context_menuInbox(self, point):
self.popMenuInbox.exec_(self.ui.tableWidgetInbox.mapToGlobal(point))
def on_context_menuBroadcasts(self, point):
self.popMenuBroadcasts.exec_(self.ui.tableWidgetBroadcasts.mapToGlobal(point))
def on_context_menuSent(self, point):
self.popMenuSent = QtGui.QMenu(self)
self.popMenuSent.addAction(self.actionSentClipboard)
@ -2507,37 +2633,38 @@ class MyForm(QtGui.QMainWindow):
self.popMenuSent.addAction(self.actionForceSend)
self.popMenuSent.exec_(self.ui.tableWidgetSent.mapToGlobal(point))
def tableWidgetInboxItemClicked(self):
currentRow = self.ui.tableWidgetInbox.currentRow()
def tableWidgetInboxItemClicked(self):
table, editbox = self.getCurrentTableAndEdit()
#QtGui.QMessageBox.information(self, 'tableWidgetInboxItemClicked', str(editbox.objectName))
currentRow = table.currentRow()
if currentRow >= 0:
fromAddress = str(self.ui.tableWidgetInbox.item(
fromAddress = str(table.item(
currentRow, 1).data(Qt.UserRole).toPyObject())
# If we have received this message from either a broadcast address
# or from someone in our address book, display as HTML
if decodeAddress(fromAddress)[3] in shared.broadcastSendersForWhichImWatching or shared.isAddressInMyAddressBook(fromAddress):
if len(self.ui.tableWidgetInbox.item(currentRow, 2).data(Qt.UserRole).toPyObject()) < 30000:
self.ui.textEditInboxMessage.setText(self.ui.tableWidgetInbox.item(
if len(table.item(currentRow, 2).data(Qt.UserRole).toPyObject()) < 30000:
editbox.setText(table.item(
currentRow, 2).data(Qt.UserRole).toPyObject()) # Only show the first 30K characters
else:
self.ui.textEditInboxMessage.setText(self.ui.tableWidgetInbox.item(currentRow, 2).data(Qt.UserRole).toPyObject()[
editbox.setText(table.item(currentRow, 2).data(Qt.UserRole).toPyObject()[
:30000] + '\n\nDisplay of the remainder of the message truncated because it is too long.') # Only show the first 30K characters
else:
if len(self.ui.tableWidgetInbox.item(currentRow, 2).data(Qt.UserRole).toPyObject()) < 30000:
self.ui.textEditInboxMessage.setPlainText(self.ui.tableWidgetInbox.item(
if len(table.item(currentRow, 2).data(Qt.UserRole).toPyObject()) < 30000:
editbox.setPlainText(table.item(
currentRow, 2).data(Qt.UserRole).toPyObject()) # Only show the first 30K characters
else:
self.ui.textEditInboxMessage.setPlainText(self.ui.tableWidgetInbox.item(currentRow, 2).data(Qt.UserRole).toPyObject()[
editbox.setPlainText(table.item(currentRow, 2).data(Qt.UserRole).toPyObject()[
:30000] + '\n\nDisplay of the remainder of the message truncated because it is too long.') # Only show the first 30K characters
font = QFont()
font.setBold(False)
self.ui.tableWidgetInbox.item(currentRow, 0).setFont(font)
self.ui.tableWidgetInbox.item(currentRow, 1).setFont(font)
self.ui.tableWidgetInbox.item(currentRow, 2).setFont(font)
self.ui.tableWidgetInbox.item(currentRow, 3).setFont(font)
table.item(currentRow, 0).setFont(font)
table.item(currentRow, 1).setFont(font)
table.item(currentRow, 2).setFont(font)
table.item(currentRow, 3).setFont(font)
inventoryHash = str(self.ui.tableWidgetInbox.item(
currentRow, 3).data(Qt.UserRole).toPyObject())
inventoryHash = str(table.item(currentRow, 3).data(Qt.UserRole).toPyObject())
t = (inventoryHash,)
self.ubuntuMessagingMenuClear(t)
shared.sqlLock.acquire()

View File

@ -2,8 +2,8 @@
# Form implementation generated from reading ui file 'bitmessageui.ui'
#
# Created: Thu Jun 13 01:02:50 2013
# by: PyQt4 UI code generator 4.10.1
# Created: Sat Jun 29 15:09:14 2013
# by: PyQt4 UI code generator 4.10.2
#
# WARNING! All changes made in this file will be lost!
@ -26,7 +26,7 @@ except AttributeError:
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
MainWindow.resize(795, 561)
MainWindow.resize(847, 561)
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/can-icon-24px.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
MainWindow.setWindowIcon(icon)
@ -86,6 +86,40 @@ class Ui_MainWindow(object):
icon1 = QtGui.QIcon()
icon1.addPixmap(QtGui.QPixmap(_fromUtf8(":/newPrefix/images/inbox.png")), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.tabWidget.addTab(self.inbox, icon1, _fromUtf8(""))
self.broadcasts = QtGui.QWidget()
self.broadcasts.setObjectName(_fromUtf8("broadcasts"))
self.verticalLayout_3 = QtGui.QVBoxLayout(self.broadcasts)
self.verticalLayout_3.setObjectName(_fromUtf8("verticalLayout_3"))
self.tableWidgetBroadcasts = QtGui.QTableWidget(self.broadcasts)
self.tableWidgetBroadcasts.setAlternatingRowColors(True)
self.tableWidgetBroadcasts.setSelectionMode(QtGui.QAbstractItemView.ExtendedSelection)
self.tableWidgetBroadcasts.setSelectionBehavior(QtGui.QAbstractItemView.SelectRows)
self.tableWidgetBroadcasts.setWordWrap(False)
self.tableWidgetBroadcasts.setObjectName(_fromUtf8("tableWidgetBroadcasts"))
self.tableWidgetBroadcasts.setColumnCount(4)
self.tableWidgetBroadcasts.setRowCount(0)
item = QtGui.QTableWidgetItem()
self.tableWidgetBroadcasts.setHorizontalHeaderItem(0, item)
item = QtGui.QTableWidgetItem()
self.tableWidgetBroadcasts.setHorizontalHeaderItem(1, item)
item = QtGui.QTableWidgetItem()
self.tableWidgetBroadcasts.setHorizontalHeaderItem(2, item)
item = QtGui.QTableWidgetItem()
self.tableWidgetBroadcasts.setHorizontalHeaderItem(3, item)
self.tableWidgetBroadcasts.horizontalHeader().setCascadingSectionResizes(True)
self.tableWidgetBroadcasts.horizontalHeader().setDefaultSectionSize(200)
self.tableWidgetBroadcasts.horizontalHeader().setHighlightSections(False)
self.tableWidgetBroadcasts.horizontalHeader().setMinimumSectionSize(27)
self.tableWidgetBroadcasts.horizontalHeader().setSortIndicatorShown(False)
self.tableWidgetBroadcasts.horizontalHeader().setStretchLastSection(True)
self.tableWidgetBroadcasts.verticalHeader().setVisible(False)
self.tableWidgetBroadcasts.verticalHeader().setDefaultSectionSize(26)
self.verticalLayout_3.addWidget(self.tableWidgetBroadcasts)
self.textEditBroadcastsMessage = QtGui.QTextEdit(self.broadcasts)
self.textEditBroadcastsMessage.setBaseSize(QtCore.QSize(0, 500))
self.textEditBroadcastsMessage.setObjectName(_fromUtf8("textEditBroadcastsMessage"))
self.verticalLayout_3.addWidget(self.textEditBroadcastsMessage)
self.tabWidget.addTab(self.broadcasts, _fromUtf8(""))
self.send = QtGui.QWidget()
self.send.setObjectName(_fromUtf8("send"))
self.gridLayout_2 = QtGui.QGridLayout(self.send)
@ -392,7 +426,7 @@ class Ui_MainWindow(object):
self.gridLayout.addWidget(self.tabWidget, 0, 0, 1, 1)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 795, 18))
self.menubar.setGeometry(QtCore.QRect(0, 0, 847, 24))
self.menubar.setObjectName(_fromUtf8("menubar"))
self.menuFile = QtGui.QMenu(self.menubar)
self.menuFile.setObjectName(_fromUtf8("menuFile"))
@ -477,6 +511,16 @@ class Ui_MainWindow(object):
item = self.tableWidgetInbox.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Received", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.inbox), _translate("MainWindow", "Inbox", None))
self.tableWidgetBroadcasts.setSortingEnabled(True)
item = self.tableWidgetBroadcasts.horizontalHeaderItem(0)
item.setText(_translate("MainWindow", "To", None))
item = self.tableWidgetBroadcasts.horizontalHeaderItem(1)
item.setText(_translate("MainWindow", "From", None))
item = self.tableWidgetBroadcasts.horizontalHeaderItem(2)
item.setText(_translate("MainWindow", "Subject", None))
item = self.tableWidgetBroadcasts.horizontalHeaderItem(3)
item.setText(_translate("MainWindow", "Received", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.broadcasts), _translate("MainWindow", "Broadcasts", None))
self.pushButtonLoadFromAddressBook.setText(_translate("MainWindow", "Load from Address book", None))
self.label_4.setText(_translate("MainWindow", "Message:", None))
self.label_3.setText(_translate("MainWindow", "Subject:", None))
@ -484,8 +528,8 @@ class Ui_MainWindow(object):
self.textEditMessage.setHtml(_translate("MainWindow", "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\" \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"
"<html><head><meta name=\"qrichtext\" content=\"1\" /><style type=\"text/css\">\n"
"p, li { white-space: pre-wrap; }\n"
"</style></head><body style=\" font-family:\'MS Shell Dlg 2\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;\"><br /></p></body></html>", None))
"</style></head><body style=\" font-family:\'Droid Sans [unknown]\'; font-size:9pt; font-weight:400; font-style:normal;\">\n"
"<p style=\"-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:\'MS Shell Dlg 2\';\"><br /></p></body></html>", None))
self.label.setText(_translate("MainWindow", "To:", None))
self.label_2.setText(_translate("MainWindow", "From:", None))
self.radioButtonBroadcast.setText(_translate("MainWindow", "Broadcast to everyone who is subscribed to your address", None))
@ -559,13 +603,3 @@ class Ui_MainWindow(object):
self.actionDeleteAllTrashedMessages.setText(_translate("MainWindow", "Delete all trashed messages", None))
import bitmessage_icons_rc
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())

View File

@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>795</width>
<width>847</width>
<height>561</height>
</rect>
</property>
@ -14,7 +14,7 @@
<string>Bitmessage</string>
</property>
<property name="windowIcon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/can-icon-24px.png</normaloff>:/newPrefix/images/can-icon-24px.png</iconset>
</property>
<property name="tabShape">
@ -61,7 +61,7 @@
</property>
<widget class="QWidget" name="inbox">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/inbox.png</normaloff>:/newPrefix/images/inbox.png</iconset>
</attribute>
<attribute name="title">
@ -143,9 +143,89 @@
</item>
</layout>
</widget>
<widget class="QWidget" name="broadcasts">
<attribute name="title">
<string>Broadcasts</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_3">
<item>
<widget class="QTableWidget" name="tableWidgetBroadcasts">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="selectionMode">
<enum>QAbstractItemView::ExtendedSelection</enum>
</property>
<property name="selectionBehavior">
<enum>QAbstractItemView::SelectRows</enum>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
<property name="wordWrap">
<bool>false</bool>
</property>
<attribute name="horizontalHeaderCascadingSectionResizes">
<bool>true</bool>
</attribute>
<attribute name="horizontalHeaderDefaultSectionSize">
<number>200</number>
</attribute>
<attribute name="horizontalHeaderHighlightSections">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderMinimumSectionSize">
<number>27</number>
</attribute>
<attribute name="horizontalHeaderShowSortIndicator" stdset="0">
<bool>false</bool>
</attribute>
<attribute name="horizontalHeaderStretchLastSection">
<bool>true</bool>
</attribute>
<attribute name="verticalHeaderVisible">
<bool>false</bool>
</attribute>
<attribute name="verticalHeaderDefaultSectionSize">
<number>26</number>
</attribute>
<column>
<property name="text">
<string>To</string>
</property>
</column>
<column>
<property name="text">
<string>From</string>
</property>
</column>
<column>
<property name="text">
<string>Subject</string>
</property>
</column>
<column>
<property name="text">
<string>Received</string>
</property>
</column>
</widget>
</item>
<item>
<widget class="QTextEdit" name="textEditBroadcastsMessage">
<property name="baseSize">
<size>
<width>0</width>
<height>500</height>
</size>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="send">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/send.png</normaloff>:/newPrefix/images/send.png</iconset>
</attribute>
<attribute name="title">
@ -214,8 +294,8 @@
<string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'MS Shell Dlg 2'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'Droid Sans [unknown]'; font-size:9pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot;-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2';&quot;&gt;&lt;br /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
</widget>
</item>
@ -303,7 +383,7 @@ p, li { white-space: pre-wrap; }
</widget>
<widget class="QWidget" name="sent">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/sent.png</normaloff>:/newPrefix/images/sent.png</iconset>
</attribute>
<attribute name="title">
@ -380,7 +460,7 @@ p, li { white-space: pre-wrap; }
</widget>
<widget class="QWidget" name="youridentities">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/identities.png</normaloff>:/newPrefix/images/identities.png</iconset>
</attribute>
<attribute name="title">
@ -480,7 +560,7 @@ p, li { white-space: pre-wrap; }
</widget>
<widget class="QWidget" name="subscriptions">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/subscriptions.png</normaloff>:/newPrefix/images/subscriptions.png</iconset>
</attribute>
<attribute name="title">
@ -565,7 +645,7 @@ p, li { white-space: pre-wrap; }
</widget>
<widget class="QWidget" name="addressbook">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/addressbook.png</normaloff>:/newPrefix/images/addressbook.png</iconset>
</attribute>
<attribute name="title">
@ -647,7 +727,7 @@ p, li { white-space: pre-wrap; }
</widget>
<widget class="QWidget" name="blackwhitelist">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/blacklist.png</normaloff>:/newPrefix/images/blacklist.png</iconset>
</attribute>
<attribute name="title">
@ -739,7 +819,7 @@ p, li { white-space: pre-wrap; }
</widget>
<widget class="QWidget" name="networkstatus">
<attribute name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/networkstatus.png</normaloff>:/newPrefix/images/networkstatus.png</iconset>
</attribute>
<attribute name="title">
@ -758,7 +838,7 @@ p, li { white-space: pre-wrap; }
<string/>
</property>
<property name="icon">
<iconset resource="bitmessage_icons.qrc">
<iconset>
<normaloff>:/newPrefix/images/redicon.png</normaloff>:/newPrefix/images/redicon.png</iconset>
</property>
<property name="flat">
@ -924,8 +1004,8 @@ p, li { white-space: pre-wrap; }
<rect>
<x>0</x>
<y>0</y>
<width>795</width>
<height>18</height>
<width>847</width>
<height>24</height>
</rect>
</property>
<widget class="QMenu" name="menuFile">