Implemented labeling after making a transaction
[electrum-nvc.git] / lib / receiving_widget.py
1 from PyQt4.QtGui import *
2 from PyQt4.QtCore import *
3 from i18n import _
4
5 class ReceivingWidget(QTreeWidget):
6
7     def toggle_used(self):
8         if self.hide_used:
9             self.hide_used = False
10             self.setColumnHidden(2, False)
11         else:
12             self.hide_used = True
13             self.setColumnHidden(2, True)
14         self.update_list()
15
16     def edit_label(self, item, column):
17       if column == 1 and item.isSelected():
18         self.editing = True
19         item.setFlags(Qt.ItemIsEditable|Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
20         self.editItem(item, column)
21         item.setFlags(Qt.ItemIsSelectable | Qt.ItemIsUserCheckable | Qt.ItemIsEnabled | Qt.ItemIsDragEnabled)
22         self.editing = False
23
24     def update_label(self, item, column):
25       if self.editing: 
26           return
27       else:
28           address = str(item.text(0))
29           label = unicode( item.text(1) )
30           self.owner.actuator.wallet.labels[address] = label
31
32     def copy_address(self):
33         address = self.currentItem().text(0)
34         qApp.clipboard().setText(address)
35         
36
37     def update_list(self):
38
39         self.clear()
40         addresses = [addr for addr in self.owner.actuator.wallet.all_addresses() if not self.owner.actuator.wallet.is_change(addr)]
41         for address in addresses:
42             history = self.owner.actuator.wallet.history.get(address,[])
43
44             used = "No"
45             for tx_hash, tx_height in history:
46                 tx = self.owner.actuator.wallet.transactions.get(tx_hash)
47                 if tx:
48                     used = "Yes"
49
50             if(self.hide_used == True and used == "No") or self.hide_used == False:
51                 label = self.owner.actuator.wallet.labels.get(address,'')
52                 item = QTreeWidgetItem([address, label, used])
53                 self.insertTopLevelItem(0, item)
54
55     def __init__(self, owner=None):
56         self.owner = owner
57         self.editing = False
58
59         QTreeWidget.__init__(self, owner)
60         self.setColumnCount(3)
61         self.setHeaderLabels([_("Address"), _("Label"), _("Used")])
62         self.setIndentation(0)
63
64         self.hide_used = True
65         self.setColumnHidden(2, True)
66         self.update_list()