URI: 
       tqt addresses list: use IntEnum for dropdown filters - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit ccc1897f36b3f8017b669dd15e38c96534a6d524
   DIR parent 86bd3839df5bd31780ed86ff2f099d9e0b2d648d
  HTML Author: SomberNight <somber.night@protonmail.com>
       Date:   Mon,  9 Sep 2019 00:24:22 +0200
       
       qt addresses list: use IntEnum for dropdown filters
       
       Diffstat:
         M electrum/gui/qt/address_list.py     |      62 ++++++++++++++++++++++---------
       
       1 file changed, 45 insertions(+), 17 deletions(-)
       ---
   DIR diff --git a/electrum/gui/qt/address_list.py b/electrum/gui/qt/address_list.py
       t@@ -38,6 +38,34 @@ from electrum.wallet import InternalAddressCorruption
        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 Columns(IntEnum):
       t@@ -54,16 +82,16 @@ class AddressList(MyTreeView):
                super().__init__(parent, self.create_menu, stretch_column=self.Columns.LABEL)
                self.setSelectionMode(QAbstractItemView.ExtendedSelection)
                self.setSortingEnabled(True)
       -        self.show_change = 0
       -        self.show_used = 0
       +        self.show_change = AddressTypeFilter.ALL  # type: AddressTypeFilter
       +        self.show_used = AddressUsageStateFilter.ALL  # type: AddressUsageStateFilter
                self.change_button = QComboBox(self)
                self.change_button.currentIndexChanged.connect(self.toggle_change)
       -        for t in [_('All'), _('Receiving'), _('Change')]:
       -            self.change_button.addItem(t)
       +        for addr_type in AddressTypeFilter.__members__.values():  # type: AddressTypeFilter
       +            self.change_button.addItem(addr_type.ui_text())
                self.used_button = QComboBox(self)
                self.used_button.currentIndexChanged.connect(self.toggle_used)
       -        for t in [_('All'), _('Unused'), _('Funded'), _('Used')]:
       -            self.used_button.addItem(t)
       +        for addr_usage_state in AddressUsageStateFilter.__members__.values():  # type: AddressUsageStateFilter
       +            self.used_button.addItem(addr_usage_state.ui_text())
                self.setModel(QStandardItemModel(self))
                self.update()
        
       t@@ -71,8 +99,8 @@ class AddressList(MyTreeView):
                return QLabel(_("Filter:")), self.change_button, self.used_button
        
            def on_hide_toolbar(self):
       -        self.show_change = 0
       -        self.show_used = 0
       +        self.show_change = AddressTypeFilter.ALL  # type: AddressTypeFilter
       +        self.show_used = AddressUsageStateFilter.ALL  # type: AddressUsageStateFilter
                self.update()
        
            def save_toolbar_state(self, state, config):
       t@@ -94,25 +122,25 @@ class AddressList(MyTreeView):
                }
                self.update_headers(headers)
        
       -    def toggle_change(self, state):
       +    def toggle_change(self, state: int):
                if state == self.show_change:
                    return
       -        self.show_change = state
       +        self.show_change = AddressTypeFilter(state)
                self.update()
        
       -    def toggle_used(self, state):
       +    def toggle_used(self, state: int):
                if state == self.show_used:
                    return
       -        self.show_used = state
       +        self.show_used = AddressUsageStateFilter(state)
                self.update()
        
            @profiler
            def update(self):
                self.wallet = self.parent.wallet
                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()
       -        elif self.show_change == 2:
       +        elif self.show_change == AddressTypeFilter.CHANGE:
                    addr_list = self.wallet.get_change_addresses()
                else:
                    addr_list = self.wallet.get_addresses()
       t@@ -126,11 +154,11 @@ class AddressList(MyTreeView):
                    c, u, x = self.wallet.get_addr_balance(address)
                    balance = c + u + x
                    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
       -            if self.show_used == 2 and balance == 0:
       +            if self.show_used == AddressUsageStateFilter.FUNDED and balance == 0:
                        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
                    balance_text = self.parent.format_amount(balance, whitespaces=True)
                    # create item