Browse Source

qt addresses list: use IntEnum for dropdown filters

dependabot/pip/contrib/deterministic-build/ecdsa-0.13.3
SomberNight 6 years ago
parent
commit
ccc1897f36
No known key found for this signature in database GPG Key ID: B33B5F232C6271E9
  1. 62
      electrum/gui/qt/address_list.py

62
electrum/gui/qt/address_list.py

@ -38,6 +38,34 @@ from electrum.wallet import InternalAddressCorruption
from .util import MyTreeView, MONOSPACE_FONT, ColorScheme, webopen from .util import MyTreeView, MONOSPACE_FONT, ColorScheme, webopen
class AddressUsageStateFilter(IntEnum):
ALL = 0
UNUSED = 1
FUNDED = 2
USED_AND_EMPTY = 3
def ui_text(self) -> str:
return {
self.ALL: _('All'),
self.UNUSED: _('Unused'),
self.FUNDED: _('Funded'),
self.USED_AND_EMPTY: _('Used'),
}[self]
class AddressTypeFilter(IntEnum):
ALL = 0
RECEIVING = 1
CHANGE = 2
def ui_text(self) -> str:
return {
self.ALL: _('All'),
self.RECEIVING: _('Receiving'),
self.CHANGE: _('Change'),
}[self]
class AddressList(MyTreeView): class AddressList(MyTreeView):
class Columns(IntEnum): class Columns(IntEnum):
@ -54,16 +82,16 @@ class AddressList(MyTreeView):
super().__init__(parent, self.create_menu, stretch_column=self.Columns.LABEL) super().__init__(parent, self.create_menu, stretch_column=self.Columns.LABEL)
self.setSelectionMode(QAbstractItemView.ExtendedSelection) self.setSelectionMode(QAbstractItemView.ExtendedSelection)
self.setSortingEnabled(True) self.setSortingEnabled(True)
self.show_change = 0 self.show_change = AddressTypeFilter.ALL # type: AddressTypeFilter
self.show_used = 0 self.show_used = AddressUsageStateFilter.ALL # type: AddressUsageStateFilter
self.change_button = QComboBox(self) self.change_button = QComboBox(self)
self.change_button.currentIndexChanged.connect(self.toggle_change) self.change_button.currentIndexChanged.connect(self.toggle_change)
for t in [_('All'), _('Receiving'), _('Change')]: for addr_type in AddressTypeFilter.__members__.values(): # type: AddressTypeFilter
self.change_button.addItem(t) self.change_button.addItem(addr_type.ui_text())
self.used_button = QComboBox(self) self.used_button = QComboBox(self)
self.used_button.currentIndexChanged.connect(self.toggle_used) self.used_button.currentIndexChanged.connect(self.toggle_used)
for t in [_('All'), _('Unused'), _('Funded'), _('Used')]: for addr_usage_state in AddressUsageStateFilter.__members__.values(): # type: AddressUsageStateFilter
self.used_button.addItem(t) self.used_button.addItem(addr_usage_state.ui_text())
self.setModel(QStandardItemModel(self)) self.setModel(QStandardItemModel(self))
self.update() self.update()
@ -71,8 +99,8 @@ class AddressList(MyTreeView):
return QLabel(_("Filter:")), self.change_button, self.used_button return QLabel(_("Filter:")), self.change_button, self.used_button
def on_hide_toolbar(self): def on_hide_toolbar(self):
self.show_change = 0 self.show_change = AddressTypeFilter.ALL # type: AddressTypeFilter
self.show_used = 0 self.show_used = AddressUsageStateFilter.ALL # type: AddressUsageStateFilter
self.update() self.update()
def save_toolbar_state(self, state, config): def save_toolbar_state(self, state, config):
@ -94,25 +122,25 @@ class AddressList(MyTreeView):
} }
self.update_headers(headers) self.update_headers(headers)
def toggle_change(self, state): def toggle_change(self, state: int):
if state == self.show_change: if state == self.show_change:
return return
self.show_change = state self.show_change = AddressTypeFilter(state)
self.update() self.update()
def toggle_used(self, state): def toggle_used(self, state: int):
if state == self.show_used: if state == self.show_used:
return return
self.show_used = state self.show_used = AddressUsageStateFilter(state)
self.update() self.update()
@profiler @profiler
def update(self): def update(self):
self.wallet = self.parent.wallet self.wallet = self.parent.wallet
current_address = self.current_item_user_role(col=self.Columns.LABEL) current_address = self.current_item_user_role(col=self.Columns.LABEL)
if self.show_change == 1: if self.show_change == AddressTypeFilter.RECEIVING:
addr_list = self.wallet.get_receiving_addresses() addr_list = self.wallet.get_receiving_addresses()
elif self.show_change == 2: elif self.show_change == AddressTypeFilter.CHANGE:
addr_list = self.wallet.get_change_addresses() addr_list = self.wallet.get_change_addresses()
else: else:
addr_list = self.wallet.get_addresses() addr_list = self.wallet.get_addresses()
@ -126,11 +154,11 @@ class AddressList(MyTreeView):
c, u, x = self.wallet.get_addr_balance(address) c, u, x = self.wallet.get_addr_balance(address)
balance = c + u + x balance = c + u + x
is_used_and_empty = self.wallet.is_used(address) and balance == 0 is_used_and_empty = self.wallet.is_used(address) and balance == 0
if self.show_used == 1 and (balance or is_used_and_empty): if self.show_used == AddressUsageStateFilter.UNUSED and (balance or is_used_and_empty):
continue continue
if self.show_used == 2 and balance == 0: if self.show_used == AddressUsageStateFilter.FUNDED and balance == 0:
continue continue
if self.show_used == 3 and not is_used_and_empty: if self.show_used == AddressUsageStateFilter.USED_AND_EMPTY and not is_used_and_empty:
continue continue
balance_text = self.parent.format_amount(balance, whitespaces=True) balance_text = self.parent.format_amount(balance, whitespaces=True)
# create item # create item

Loading…
Cancel
Save