blacklist.py.bak
1 from PyQt4 import QtCore, QtGui 2 3 import widgets 4 from addresses import addBMIfNotPresent 5 from bmconfigparser import config 6 from dialogs import AddAddressDialog 7 from helper_sql import sqlExecute, sqlQuery 8 from queues import UISignalQueue 9 from retranslateui import RetranslateMixin 10 from tr import _translate 11 from uisignaler import UISignaler 12 from utils import avatarize 13 14 15 class Blacklist(QtGui.QWidget, RetranslateMixin): 16 def __init__(self, parent=None): 17 super(Blacklist, self).__init__(parent) 18 widgets.load('blacklist.ui', self) 19 20 QtCore.QObject.connect(self.radioButtonBlacklist, QtCore.SIGNAL( 21 "clicked()"), self.click_radioButtonBlacklist) 22 QtCore.QObject.connect(self.radioButtonWhitelist, QtCore.SIGNAL( 23 "clicked()"), self.click_radioButtonWhitelist) 24 QtCore.QObject.connect(self.pushButtonAddBlacklist, QtCore.SIGNAL( 25 "clicked()"), self.click_pushButtonAddBlacklist) 26 27 self.init_blacklist_popup_menu() 28 29 # Initialize blacklist 30 QtCore.QObject.connect(self.tableWidgetBlacklist, QtCore.SIGNAL( 31 "itemChanged(QTableWidgetItem *)"), self.tableWidgetBlacklistItemChanged) 32 33 # Set the icon sizes for the identicons 34 identicon_size = 3*7 35 self.tableWidgetBlacklist.setIconSize(QtCore.QSize(identicon_size, identicon_size)) 36 37 self.UISignalThread = UISignaler.get() 38 QtCore.QObject.connect(self.UISignalThread, QtCore.SIGNAL( 39 "rerenderBlackWhiteList()"), self.rerenderBlackWhiteList) 40 41 def click_radioButtonBlacklist(self): 42 if config.get('bitmessagesettings', 'blackwhitelist') == 'white': 43 config.set('bitmessagesettings', 'blackwhitelist', 'black') 44 config.save() 45 # self.tableWidgetBlacklist.clearContents() 46 self.tableWidgetBlacklist.setRowCount(0) 47 self.rerenderBlackWhiteList() 48 49 def click_radioButtonWhitelist(self): 50 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 51 config.set('bitmessagesettings', 'blackwhitelist', 'white') 52 config.save() 53 # self.tableWidgetBlacklist.clearContents() 54 self.tableWidgetBlacklist.setRowCount(0) 55 self.rerenderBlackWhiteList() 56 57 def click_pushButtonAddBlacklist(self): 58 self.NewBlacklistDialogInstance = AddAddressDialog(self) 59 if self.NewBlacklistDialogInstance.exec_(): 60 if self.NewBlacklistDialogInstance.labelAddressCheck.text() == \ 61 _translate("MainWindow", "Address is valid."): 62 address = addBMIfNotPresent(str( 63 self.NewBlacklistDialogInstance.lineEditAddress.text())) 64 # First we must check to see if the address is already in the 65 # address book. The user cannot add it again or else it will 66 # cause problems when updating and deleting the entry. 67 t = (address,) 68 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 69 sql = '''select * from blacklist where address=?''' 70 else: 71 sql = '''select * from whitelist where address=?''' 72 queryreturn = sqlQuery(sql,*t) 73 if queryreturn == []: 74 self.tableWidgetBlacklist.setSortingEnabled(False) 75 self.tableWidgetBlacklist.insertRow(0) 76 newItem = QtGui.QTableWidgetItem(unicode( 77 self.NewBlacklistDialogInstance.lineEditLabel.text().toUtf8(), 'utf-8')) 78 newItem.setIcon(avatarize(address)) 79 self.tableWidgetBlacklist.setItem(0, 0, newItem) 80 newItem = QtGui.QTableWidgetItem(address) 81 newItem.setFlags( 82 QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) 83 self.tableWidgetBlacklist.setItem(0, 1, newItem) 84 self.tableWidgetBlacklist.setSortingEnabled(True) 85 t = (str(self.NewBlacklistDialogInstance.lineEditLabel.text().toUtf8()), address, True) 86 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 87 sql = '''INSERT INTO blacklist VALUES (?,?,?)''' 88 else: 89 sql = '''INSERT INTO whitelist VALUES (?,?,?)''' 90 sqlExecute(sql, *t) 91 else: 92 UISignalQueue.put(( 93 'updateStatusBar', 94 _translate( 95 "MainWindow", 96 "Error: You cannot add the same address to your" 97 " list twice. Perhaps rename the existing one" 98 " if you want.") 99 )) 100 else: 101 UISignalQueue.put(( 102 'updateStatusBar', 103 _translate( 104 "MainWindow", 105 "The address you entered was invalid. Ignoring it.") 106 )) 107 108 def tableWidgetBlacklistItemChanged(self, item): 109 if item.column() == 0: 110 addressitem = self.tableWidgetBlacklist.item(item.row(), 1) 111 if isinstance(addressitem, QtGui.QTableWidgetItem): 112 if self.radioButtonBlacklist.isChecked(): 113 sqlExecute('''UPDATE blacklist SET label=? WHERE address=?''', 114 str(item.text()), str(addressitem.text())) 115 else: 116 sqlExecute('''UPDATE whitelist SET label=? WHERE address=?''', 117 str(item.text()), str(addressitem.text())) 118 119 def init_blacklist_popup_menu(self, connectSignal=True): 120 # Popup menu for the Blacklist page 121 self.blacklistContextMenuToolbar = QtGui.QToolBar() 122 # Actions 123 self.actionBlacklistNew = self.blacklistContextMenuToolbar.addAction( 124 _translate( 125 "MainWindow", "Add new entry"), self.on_action_BlacklistNew) 126 self.actionBlacklistDelete = self.blacklistContextMenuToolbar.addAction( 127 _translate( 128 "MainWindow", "Delete"), self.on_action_BlacklistDelete) 129 self.actionBlacklistClipboard = self.blacklistContextMenuToolbar.addAction( 130 _translate( 131 "MainWindow", "Copy address to clipboard"), 132 self.on_action_BlacklistClipboard) 133 self.actionBlacklistEnable = self.blacklistContextMenuToolbar.addAction( 134 _translate( 135 "MainWindow", "Enable"), self.on_action_BlacklistEnable) 136 self.actionBlacklistDisable = self.blacklistContextMenuToolbar.addAction( 137 _translate( 138 "MainWindow", "Disable"), self.on_action_BlacklistDisable) 139 self.actionBlacklistSetAvatar = self.blacklistContextMenuToolbar.addAction( 140 _translate( 141 "MainWindow", "Set avatar..."), 142 self.on_action_BlacklistSetAvatar) 143 self.tableWidgetBlacklist.setContextMenuPolicy( 144 QtCore.Qt.CustomContextMenu) 145 if connectSignal: 146 self.connect(self.tableWidgetBlacklist, QtCore.SIGNAL( 147 'customContextMenuRequested(const QPoint&)'), 148 self.on_context_menuBlacklist) 149 self.popMenuBlacklist = QtGui.QMenu(self) 150 # self.popMenuBlacklist.addAction( self.actionBlacklistNew ) 151 self.popMenuBlacklist.addAction(self.actionBlacklistDelete) 152 self.popMenuBlacklist.addSeparator() 153 self.popMenuBlacklist.addAction(self.actionBlacklistClipboard) 154 self.popMenuBlacklist.addSeparator() 155 self.popMenuBlacklist.addAction(self.actionBlacklistEnable) 156 self.popMenuBlacklist.addAction(self.actionBlacklistDisable) 157 self.popMenuBlacklist.addAction(self.actionBlacklistSetAvatar) 158 159 def rerenderBlackWhiteList(self): 160 tabs = self.parent().parent() 161 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 162 tabs.setTabText(tabs.indexOf(self), _translate('blacklist', 'Blacklist')) 163 else: 164 tabs.setTabText(tabs.indexOf(self), _translate('blacklist', 'Whitelist')) 165 self.tableWidgetBlacklist.setRowCount(0) 166 listType = config.get('bitmessagesettings', 'blackwhitelist') 167 if listType == 'black': 168 queryreturn = sqlQuery('''SELECT label, address, enabled FROM blacklist''') 169 else: 170 queryreturn = sqlQuery('''SELECT label, address, enabled FROM whitelist''') 171 self.tableWidgetBlacklist.setSortingEnabled(False) 172 for row in queryreturn: 173 label, address, enabled = row 174 self.tableWidgetBlacklist.insertRow(0) 175 newItem = QtGui.QTableWidgetItem(unicode(label, 'utf-8')) 176 if not enabled: 177 newItem.setTextColor(QtGui.QColor(128, 128, 128)) 178 newItem.setIcon(avatarize(address)) 179 self.tableWidgetBlacklist.setItem(0, 0, newItem) 180 newItem = QtGui.QTableWidgetItem(address) 181 newItem.setFlags( 182 QtCore.Qt.ItemIsSelectable | QtCore.Qt.ItemIsEnabled) 183 if not enabled: 184 newItem.setTextColor(QtGui.QColor(128, 128, 128)) 185 self.tableWidgetBlacklist.setItem(0, 1, newItem) 186 self.tableWidgetBlacklist.setSortingEnabled(True) 187 188 # Group of functions for the Blacklist dialog box 189 def on_action_BlacklistNew(self): 190 self.click_pushButtonAddBlacklist() 191 192 def on_action_BlacklistDelete(self): 193 currentRow = self.tableWidgetBlacklist.currentRow() 194 labelAtCurrentRow = self.tableWidgetBlacklist.item( 195 currentRow, 0).text().toUtf8() 196 addressAtCurrentRow = self.tableWidgetBlacklist.item( 197 currentRow, 1).text() 198 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 199 sqlExecute( 200 '''DELETE FROM blacklist WHERE label=? AND address=?''', 201 str(labelAtCurrentRow), str(addressAtCurrentRow)) 202 else: 203 sqlExecute( 204 '''DELETE FROM whitelist WHERE label=? AND address=?''', 205 str(labelAtCurrentRow), str(addressAtCurrentRow)) 206 self.tableWidgetBlacklist.removeRow(currentRow) 207 208 def on_action_BlacklistClipboard(self): 209 currentRow = self.tableWidgetBlacklist.currentRow() 210 addressAtCurrentRow = self.tableWidgetBlacklist.item( 211 currentRow, 1).text() 212 clipboard = QtGui.QApplication.clipboard() 213 clipboard.setText(str(addressAtCurrentRow)) 214 215 def on_context_menuBlacklist(self, point): 216 self.popMenuBlacklist.exec_( 217 self.tableWidgetBlacklist.mapToGlobal(point)) 218 219 def on_action_BlacklistEnable(self): 220 currentRow = self.tableWidgetBlacklist.currentRow() 221 addressAtCurrentRow = self.tableWidgetBlacklist.item( 222 currentRow, 1).text() 223 self.tableWidgetBlacklist.item( 224 currentRow, 0).setTextColor(QtGui.QApplication.palette().text().color()) 225 self.tableWidgetBlacklist.item( 226 currentRow, 1).setTextColor(QtGui.QApplication.palette().text().color()) 227 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 228 sqlExecute( 229 '''UPDATE blacklist SET enabled=1 WHERE address=?''', 230 str(addressAtCurrentRow)) 231 else: 232 sqlExecute( 233 '''UPDATE whitelist SET enabled=1 WHERE address=?''', 234 str(addressAtCurrentRow)) 235 236 def on_action_BlacklistDisable(self): 237 currentRow = self.tableWidgetBlacklist.currentRow() 238 addressAtCurrentRow = self.tableWidgetBlacklist.item( 239 currentRow, 1).text() 240 self.tableWidgetBlacklist.item( 241 currentRow, 0).setTextColor(QtGui.QColor(128, 128, 128)) 242 self.tableWidgetBlacklist.item( 243 currentRow, 1).setTextColor(QtGui.QColor(128, 128, 128)) 244 if config.get('bitmessagesettings', 'blackwhitelist') == 'black': 245 sqlExecute( 246 '''UPDATE blacklist SET enabled=0 WHERE address=?''', str(addressAtCurrentRow)) 247 else: 248 sqlExecute( 249 '''UPDATE whitelist SET enabled=0 WHERE address=?''', str(addressAtCurrentRow)) 250 251 def on_action_BlacklistSetAvatar(self): 252 self.window().on_action_SetAvatar(self.tableWidgetBlacklist)