delete contact and edit label from menu
authorThomasV <thomasv@gitorious>
Sat, 9 Jun 2012 15:18:53 +0000 (17:18 +0200)
committerThomasV <thomasv@gitorious>
Sat, 9 Jun 2012 15:18:53 +0000 (17:18 +0200)
lib/gui_qt.py

index e871fe3..d7653af 100644 (file)
@@ -237,6 +237,7 @@ class ElectrumWindow(QMainWindow):
             self.update_history_tab()
             self.update_receive_tab()
             self.update_contacts_tab()
+            self.update_completions()
 
 
     def create_history_tab(self):
@@ -310,14 +311,20 @@ class ElectrumWindow(QMainWindow):
             item.setForeground(2, QBrush(QColor('gray')))
         self.is_edit=False
 
+    def edit_label(self, is_recv):
+        l = self.receive_list if is_recv else self.contacts_list
+        c = 2 if is_recv else 1
+        item = l.currentItem()
+        item.setFlags(Qt.ItemIsEditable|Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
+        l.editItem( item, c )
+        item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
+
     def address_label_clicked(self, item, column, l, column_addr, column_label):
         if column==column_label and item.isSelected():
             addr = unicode( item.text(column_addr) )
             label = unicode( item.text(column_label) )
             if label in self.wallet.aliases.keys():
                 return
-            #if addr in map(lambda x:x[1], self.wallet.aliases.values()):
-            #    return
             item.setFlags(Qt.ItemIsEditable|Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
             l.editItem( item, column )
             item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
@@ -643,6 +650,7 @@ class ElectrumWindow(QMainWindow):
         menu = QMenu()
         menu.addAction(_("Copy to Clipboard"), lambda: self.app.clipboard().setText(addr))
         menu.addAction(_("View QR code"),lambda: self.show_address_qrcode(addr))
+        menu.addAction(_("Edit label"), lambda: self.edit_label(True))
         if self.wallet.expert_mode:
             t = _("Unfreeze") if addr in self.wallet.frozen_addresses else _("Freeze")
             menu.addAction(t, lambda: self.toggle_freeze(addr))
@@ -657,17 +665,30 @@ class ElectrumWindow(QMainWindow):
         self.payto_e.setText(addr)
         self.amount_e.setFocus()
 
+    def delete_contact(self, addr):
+        if self.question("Do you want to remove %s from your list of contacts?"%addr):
+            self.wallet.addressbook.remove(addr)
+            if addr in self.wallet.labels.keys():
+                self.wallet.labels.pop(addr)
+            self.update_history_tab()
+            self.update_contacts_tab()
+            self.update_completions()
 
     def create_contact_menu(self, position):
         # fixme: this function apparently has a side effect.
         # if it is not called the menu pops up several times
-        self.receive_list.selectedIndexes() 
+        self.contacts_list.selectedIndexes() 
         addr = self.get_current_addr(False)
         menu = QMenu()
+        menu.addAction(_("Pay to"), lambda: self.payto(addr))
         menu.addAction(_("Copy to Clipboard"), lambda: self.app.clipboard().setText(addr))
         menu.addAction(_("View QR code"),lambda: self.show_address_qrcode(addr))
-        menu.addAction(_("Pay to"), lambda: self.payto(addr))
-        menu.exec_(self.receive_list.viewport().mapToGlobal(position))
+        item = self.contacts_list.currentItem()
+        label = unicode( item.text(1) )
+        if label not in self.wallet.aliases.keys():
+            menu.addAction(_("Edit label"), lambda: self.edit_label(False))
+        menu.addAction(_("Delete"), lambda: self.delete_contact(addr))
+        menu.exec_(self.contacts_list.viewport().mapToGlobal(position))
 
 
     def update_receive_tab(self):
@@ -739,7 +760,6 @@ class ElectrumWindow(QMainWindow):
             QMessageBox.information(self, 'Alias', msg, 'OK')
 
     def update_contacts_tab(self):
-        self.update_completions()
 
         l = self.contacts_list
         l.clear()
@@ -794,6 +814,8 @@ class ElectrumWindow(QMainWindow):
                 self.wallet.addressbook.append(address)
                 self.wallet.save()
                 self.update_contacts_tab()
+                self.update_history_tab()
+                self.update_completions()
             else:
                 QMessageBox.warning(self, _('Error'), _('Invalid Address'), _('OK'))