show UTXOs in address tab
This commit is contained in:
@@ -1498,7 +1498,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||||||
return w
|
return w
|
||||||
|
|
||||||
def create_addresses_tab(self):
|
def create_addresses_tab(self):
|
||||||
l = MyTreeWidget(self, self.create_receive_menu, [ _('Address'), _('Label'), _('Balance'), _('Tx')], 1)
|
l = MyTreeWidget(self, self.create_address_menu, [ _('Address'), _('Label'), _('Balance'), _('Tx')], 1)
|
||||||
l.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
l.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
||||||
l.on_update = self.update_address_tab
|
l.on_update = self.update_address_tab
|
||||||
self.address_list = l
|
self.address_list = l
|
||||||
@@ -1560,7 +1560,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||||||
menu.addAction(_("View details"), lambda: self.show_account_details(k))
|
menu.addAction(_("View details"), lambda: self.show_account_details(k))
|
||||||
menu.exec_(self.address_list.viewport().mapToGlobal(position))
|
menu.exec_(self.address_list.viewport().mapToGlobal(position))
|
||||||
|
|
||||||
def create_receive_menu(self, position):
|
def create_address_menu(self, position):
|
||||||
selected = self.address_list.selectedItems()
|
selected = self.address_list.selectedItems()
|
||||||
multi_select = len(selected) > 1
|
multi_select = len(selected) > 1
|
||||||
addrs = [unicode(item.text(0)) for item in selected]
|
addrs = [unicode(item.text(0)) for item in selected]
|
||||||
@@ -1576,7 +1576,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||||||
else:
|
else:
|
||||||
item.setExpanded(not item.isExpanded())
|
item.setExpanded(not item.isExpanded())
|
||||||
return
|
return
|
||||||
|
|
||||||
menu = QMenu()
|
menu = QMenu()
|
||||||
if not multi_select:
|
if not multi_select:
|
||||||
menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(addr))
|
menu.addAction(_("Copy to clipboard"), lambda: self.app.clipboard().setText(addr))
|
||||||
@@ -1799,23 +1798,32 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
|||||||
label = self.wallet.labels.get(address,'')
|
label = self.wallet.labels.get(address,'')
|
||||||
c, u, x = self.wallet.get_addr_balance(address)
|
c, u, x = self.wallet.get_addr_balance(address)
|
||||||
balance = self.format_amount(c + u + x)
|
balance = self.format_amount(c + u + x)
|
||||||
item = QTreeWidgetItem([address, label, balance, "%d"%num])
|
address_item = QTreeWidgetItem([address, label, balance, "%d"%num])
|
||||||
item.setFont(0, QFont(MONOSPACE_FONT))
|
address_item.setFont(0, QFont(MONOSPACE_FONT))
|
||||||
item.setData(0, Qt.UserRole, address)
|
address_item.setData(0, Qt.UserRole, address)
|
||||||
item.setData(0, Qt.UserRole+1, True) # label can be edited
|
address_item.setData(0, Qt.UserRole+1, True) # label can be edited
|
||||||
if self.wallet.is_frozen(address):
|
if self.wallet.is_frozen(address):
|
||||||
item.setBackgroundColor(0, QColor('lightblue'))
|
address_item.setBackgroundColor(0, QColor('lightblue'))
|
||||||
if self.wallet.is_beyond_limit(address, account, is_change):
|
if self.wallet.is_beyond_limit(address, account, is_change):
|
||||||
item.setBackgroundColor(0, QColor('red'))
|
address_item.setBackgroundColor(0, QColor('red'))
|
||||||
if is_used:
|
if is_used:
|
||||||
if not used_flag:
|
if not used_flag:
|
||||||
seq_item.insertChild(0, used_item)
|
seq_item.insertChild(0, used_item)
|
||||||
used_flag = True
|
used_flag = True
|
||||||
used_item.addChild(item)
|
used_item.addChild(address_item)
|
||||||
else:
|
else:
|
||||||
seq_item.addChild(item)
|
seq_item.addChild(address_item)
|
||||||
if address == current_address:
|
if address == current_address:
|
||||||
l.setCurrentItem(item)
|
l.setCurrentItem(address_item)
|
||||||
|
# add utxos
|
||||||
|
utxos = self.wallet.get_addr_utxo(address)
|
||||||
|
for x in utxos:
|
||||||
|
h = x.get('prevout_hash')
|
||||||
|
s = h + ":%d"%x.get('prevout_n')
|
||||||
|
label = self.wallet.get_label(h)
|
||||||
|
utxo_item = QTreeWidgetItem([s, label, self.format_amount(x['value'])])
|
||||||
|
utxo_item.setFont(0, QFont(MONOSPACE_FONT))
|
||||||
|
address_item.addChild(utxo_item)
|
||||||
|
|
||||||
|
|
||||||
def update_contacts_tab(self):
|
def update_contacts_tab(self):
|
||||||
|
|||||||
@@ -612,7 +612,20 @@ class Abstract_Wallet(PrintError):
|
|||||||
coins, spent = self.get_addr_io(address)
|
coins, spent = self.get_addr_io(address)
|
||||||
for txi in spent:
|
for txi in spent:
|
||||||
coins.pop(txi)
|
coins.pop(txi)
|
||||||
return coins
|
out = []
|
||||||
|
for txo, v in coins.items():
|
||||||
|
tx_height, value, is_cb = v
|
||||||
|
prevout_hash, prevout_n = txo.split(':')
|
||||||
|
x = {
|
||||||
|
'address':address,
|
||||||
|
'value':value,
|
||||||
|
'prevout_n':int(prevout_n),
|
||||||
|
'prevout_hash':prevout_hash,
|
||||||
|
'height':tx_height,
|
||||||
|
'coinbase':is_cb
|
||||||
|
}
|
||||||
|
out.append(x)
|
||||||
|
return out
|
||||||
|
|
||||||
# return the total amount ever received by an address
|
# return the total amount ever received by an address
|
||||||
def get_addr_received(self, address):
|
def get_addr_received(self, address):
|
||||||
@@ -645,21 +658,11 @@ class Abstract_Wallet(PrintError):
|
|||||||
if exclude_frozen:
|
if exclude_frozen:
|
||||||
domain = set(domain) - self.frozen_addresses
|
domain = set(domain) - self.frozen_addresses
|
||||||
for addr in domain:
|
for addr in domain:
|
||||||
c = self.get_addr_utxo(addr)
|
utxos = self.get_addr_utxo(addr)
|
||||||
for txo, v in c.items():
|
for x in utxos:
|
||||||
tx_height, value, is_cb = v
|
if x['coinbase'] and x['tx_height'] + COINBASE_MATURITY > self.get_local_height():
|
||||||
if is_cb and tx_height + COINBASE_MATURITY > self.get_local_height():
|
|
||||||
continue
|
continue
|
||||||
prevout_hash, prevout_n = txo.split(':')
|
coins.append(x)
|
||||||
output = {
|
|
||||||
'address':addr,
|
|
||||||
'value':value,
|
|
||||||
'prevout_n':int(prevout_n),
|
|
||||||
'prevout_hash':prevout_hash,
|
|
||||||
'height':tx_height,
|
|
||||||
'coinbase':is_cb
|
|
||||||
}
|
|
||||||
coins.append(output)
|
|
||||||
continue
|
continue
|
||||||
return coins
|
return coins
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user