address tab: replace tree view with buttons
This commit is contained in:
parent
fefcd7bbcd
commit
01108d8b47
|
@ -45,6 +45,17 @@ class AddressList(MyTreeWidget):
|
||||||
MyTreeWidget.__init__(self, parent, self.create_menu, [], 1)
|
MyTreeWidget.__init__(self, parent, self.create_menu, [], 1)
|
||||||
self.refresh_headers()
|
self.refresh_headers()
|
||||||
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
|
||||||
|
self.show_change = False
|
||||||
|
self.show_used = 3
|
||||||
|
self.change_button = QToolButton(self)
|
||||||
|
self.used_button = QToolButton(self)
|
||||||
|
self.change_button.clicked.connect(self.toggle_change)
|
||||||
|
self.used_button.clicked.connect(self.toggle_used)
|
||||||
|
self.set_change_button_text()
|
||||||
|
self.set_used_button_text()
|
||||||
|
|
||||||
|
def get_buttons(self):
|
||||||
|
return self.change_button, self.used_button
|
||||||
|
|
||||||
def refresh_headers(self):
|
def refresh_headers(self):
|
||||||
headers = [ _('Address'), _('Label'), _('Balance')]
|
headers = [ _('Address'), _('Label'), _('Balance')]
|
||||||
|
@ -54,57 +65,60 @@ class AddressList(MyTreeWidget):
|
||||||
headers.extend([_('Tx')])
|
headers.extend([_('Tx')])
|
||||||
self.update_headers(headers)
|
self.update_headers(headers)
|
||||||
|
|
||||||
|
def toggle_change(self):
|
||||||
|
self.show_change = not self.show_change
|
||||||
|
self.set_change_button_text()
|
||||||
|
self.on_update()
|
||||||
|
|
||||||
|
def set_change_button_text(self):
|
||||||
|
s = [_('Receiving'), _('Change')]
|
||||||
|
self.change_button.setText(s[self.show_change])
|
||||||
|
|
||||||
|
def toggle_used(self):
|
||||||
|
self.show_used = (self.show_used + 1) % 4
|
||||||
|
self.set_used_button_text()
|
||||||
|
self.on_update()
|
||||||
|
|
||||||
|
def set_used_button_text(self):
|
||||||
|
s = [_('Unused'), _('Funded'), _('Used'), _('All')]
|
||||||
|
self.used_button.setText(s[self.show_used])
|
||||||
|
|
||||||
def on_update(self):
|
def on_update(self):
|
||||||
self.wallet = self.parent.wallet
|
self.wallet = self.parent.wallet
|
||||||
item = self.currentItem()
|
item = self.currentItem()
|
||||||
current_address = item.data(0, Qt.UserRole) if item else None
|
current_address = item.data(0, Qt.UserRole) if item else None
|
||||||
|
addr_list = self.wallet.get_change_addresses() if self.show_change else self.wallet.get_receiving_addresses()
|
||||||
self.clear()
|
self.clear()
|
||||||
receiving_addresses = self.wallet.get_receiving_addresses()
|
|
||||||
change_addresses = self.wallet.get_change_addresses()
|
|
||||||
if True:
|
|
||||||
account_item = self
|
|
||||||
sequences = [0,1] if change_addresses else [0]
|
|
||||||
for is_change in sequences:
|
|
||||||
if len(sequences) > 1:
|
|
||||||
name = _("Receiving") if not is_change else _("Change")
|
|
||||||
seq_item = QTreeWidgetItem( [ name, '', '', '', ''] )
|
|
||||||
account_item.addChild(seq_item)
|
|
||||||
if not is_change:
|
|
||||||
seq_item.setExpanded(True)
|
|
||||||
else:
|
|
||||||
seq_item = account_item
|
|
||||||
used_item = QTreeWidgetItem( [ _("Used"), '', '', '', ''] )
|
|
||||||
used_flag = False
|
|
||||||
addr_list = change_addresses if is_change else receiving_addresses
|
|
||||||
for address in addr_list:
|
for address in addr_list:
|
||||||
num = len(self.wallet.history.get(address,[]))
|
num = len(self.wallet.history.get(address,[]))
|
||||||
is_used = self.wallet.is_used(address)
|
is_used = self.wallet.is_used(address)
|
||||||
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.parent.format_amount(c + u + x)
|
balance = c + u + x
|
||||||
|
if self.show_used == 0 and (balance or is_used):
|
||||||
|
continue
|
||||||
|
if self.show_used == 1 and balance == 0:
|
||||||
|
continue
|
||||||
|
if self.show_used == 2 and not is_used:
|
||||||
|
continue
|
||||||
|
balance_text = self.parent.format_amount(balance)
|
||||||
fx = self.parent.fx
|
fx = self.parent.fx
|
||||||
if fx and fx.get_fiat_address_config():
|
if fx and fx.get_fiat_address_config():
|
||||||
rate = fx.exchange_rate()
|
rate = fx.exchange_rate()
|
||||||
fiat_balance = fx.value_str(c + u + x, rate)
|
fiat_balance = fx.value_str(balance, rate)
|
||||||
address_item = QTreeWidgetItem([address, label, balance, fiat_balance, "%d"%num])
|
address_item = QTreeWidgetItem([address, label, balance_text, fiat_balance, "%d"%num])
|
||||||
address_item.setTextAlignment(3, Qt.AlignRight)
|
address_item.setTextAlignment(3, Qt.AlignRight)
|
||||||
else:
|
else:
|
||||||
address_item = QTreeWidgetItem([address, label, balance, "%d"%num])
|
address_item = QTreeWidgetItem([address, label, balance_text, "%d"%num])
|
||||||
address_item.setTextAlignment(2, Qt.AlignRight)
|
address_item.setTextAlignment(2, Qt.AlignRight)
|
||||||
address_item.setFont(0, QFont(MONOSPACE_FONT))
|
address_item.setFont(0, QFont(MONOSPACE_FONT))
|
||||||
address_item.setData(0, Qt.UserRole, address)
|
address_item.setData(0, Qt.UserRole, address)
|
||||||
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):
|
||||||
address_item.setBackground(0, ColorScheme.BLUE.as_color(True))
|
address_item.setBackground(0, ColorScheme.BLUE.as_color(True))
|
||||||
if self.wallet.is_beyond_limit(address, is_change):
|
if self.wallet.is_beyond_limit(address, self.show_change):
|
||||||
address_item.setBackground(0, ColorScheme.RED.as_color(True))
|
address_item.setBackground(0, ColorScheme.RED.as_color(True))
|
||||||
if is_used:
|
self.addChild(address_item)
|
||||||
if not used_flag:
|
|
||||||
seq_item.insertChild(0, used_item)
|
|
||||||
used_flag = True
|
|
||||||
used_item.addChild(address_item)
|
|
||||||
else:
|
|
||||||
seq_item.addChild(address_item)
|
|
||||||
if address == current_address:
|
if address == current_address:
|
||||||
self.setCurrentItem(address_item)
|
self.setCurrentItem(address_item)
|
||||||
|
|
||||||
|
|
|
@ -1563,22 +1563,26 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
self.utxo_list.update()
|
self.utxo_list.update()
|
||||||
self.update_fee()
|
self.update_fee()
|
||||||
|
|
||||||
def create_list_tab(self, l):
|
def create_list_tab(self, l, buttons=None):
|
||||||
w = QWidget()
|
w = QWidget()
|
||||||
w.searchable_list = l
|
w.searchable_list = l
|
||||||
vbox = QVBoxLayout()
|
vbox = QVBoxLayout()
|
||||||
w.setLayout(vbox)
|
w.setLayout(vbox)
|
||||||
vbox.setContentsMargins(0, 0, 0, 0)
|
vbox.setContentsMargins(0, 0, 0, 0)
|
||||||
vbox.setSpacing(0)
|
vbox.setSpacing(0)
|
||||||
|
if buttons:
|
||||||
|
hbox = QHBoxLayout()
|
||||||
|
for b in buttons:
|
||||||
|
hbox.addWidget(b)
|
||||||
|
hbox.addStretch()
|
||||||
|
vbox.addLayout(hbox)
|
||||||
vbox.addWidget(l)
|
vbox.addWidget(l)
|
||||||
buttons = QWidget()
|
|
||||||
vbox.addWidget(buttons)
|
|
||||||
return w
|
return w
|
||||||
|
|
||||||
def create_addresses_tab(self):
|
def create_addresses_tab(self):
|
||||||
from .address_list import AddressList
|
from .address_list import AddressList
|
||||||
self.address_list = l = AddressList(self)
|
self.address_list = l = AddressList(self)
|
||||||
return self.create_list_tab(l)
|
return self.create_list_tab(l, l.get_buttons())
|
||||||
|
|
||||||
def create_utxo_tab(self):
|
def create_utxo_tab(self):
|
||||||
from .utxo_list import UTXOList
|
from .utxo_list import UTXOList
|
||||||
|
|
Loading…
Reference in New Issue