URI: 
       tkivy: add delete button for invoices/requests - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit df5acd1ea5f3dfc781d4ae91ef3860ff634d8a68
   DIR parent 6c2ef176cceb7a1cb1c08550a22d0ee4c1b27d6b
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue, 10 Mar 2020 17:30:08 +0100
       
       kivy: add delete button for invoices/requests
       
       Diffstat:
         A electrum/gui/kivy/theming/light/de… |       0 
         M electrum/gui/kivy/uix/screens.py    |      16 +++++++++++++++-
         M electrum/gui/kivy/uix/ui_screens/r… |       2 +-
         M electrum/gui/kivy/uix/ui_screens/s… |       6 +++++-
         M electrum/wallet.py                  |       2 ++
       
       5 files changed, 23 insertions(+), 3 deletions(-)
       ---
   DIR diff --git a/electrum/gui/kivy/theming/light/delete.png b/electrum/gui/kivy/theming/light/delete.png
       Binary files differ.
   DIR diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py
       t@@ -393,6 +393,19 @@ class SendScreen(CScreen):
                else:
                    self.app.tx_dialog(tx)
        
       +    def clear_invoices_dialog(self):
       +        invoices = self.app.wallet.get_invoices()
       +        if not invoices:
       +            return
       +        def callback(c):
       +            if c:
       +                for req in invoices:
       +                    key = req['key']
       +                    self.app.wallet.delete_invoice(key)
       +                self.update()
       +        n = len(invoices)
       +        d = Question(_(f'Delete {n} invoices?'), callback)
       +        d.open()
        
        
        class ReceiveScreen(CScreen):
       t@@ -508,7 +521,8 @@ class ReceiveScreen(CScreen):
                            key = req.get('rhash') or req['address']
                            self.app.wallet.delete_request(key)
                        self.update()
       -        d = Question(_('Delete all requests?'), callback)
       +        n = len(requests)
       +        d = Question(_(f'Delete {n} requests?'), callback)
                d.open()
        
        
   DIR diff --git a/electrum/gui/kivy/uix/ui_screens/receive.kv b/electrum/gui/kivy/uix/ui_screens/receive.kv
       t@@ -134,7 +134,7 @@
                    size_hint: 1, None
                    height: '48dp'
                    IconButton:
       -                icon: 'atlas://electrum/gui/kivy/theming/light/list'
       +                icon: 'atlas://electrum/gui/kivy/theming/light/delete'
                        size_hint: 0.5, None
                        height: '48dp'
                        on_release: Clock.schedule_once(lambda dt: s.clear_requests_dialog())
   DIR diff --git a/electrum/gui/kivy/uix/ui_screens/send.kv b/electrum/gui/kivy/uix/ui_screens/send.kv
       t@@ -149,6 +149,10 @@
                    size_hint: 1, None
                    height: '48dp'
                    IconButton:
       +                icon: 'atlas://electrum/gui/kivy/theming/light/delete'
       +                size_hint: 0.5, 1
       +                on_release: Clock.schedule_once(lambda dt: s.clear_invoices_dialog())
       +            IconButton:
                        size_hint: 0.5, 1
                        on_release: s.do_save()
                        icon: 'atlas://electrum/gui/kivy/theming/light/save'
       t@@ -158,7 +162,7 @@
                        on_release: s.do_paste()
                    IconButton:
                        id: qr
       -                size_hint: 1, 1
       +                size_hint: 0.5, 1
                        on_release: Clock.schedule_once(lambda dt: app.scan_qr(on_complete=app.on_qr))
                        icon: 'atlas://electrum/gui/kivy/theming/light/camera'
                    Button:
   DIR diff --git a/electrum/wallet.py b/electrum/wallet.py
       t@@ -681,6 +681,8 @@ class Abstract_Wallet(AddressSynchronizer, ABC):
                    item['status'] = self.lnworker.get_invoice_status(key)
                else:
                    return
       +        # unique handle
       +        item['key'] = key
                return item
        
            def _get_relevant_invoice_keys_for_tx(self, tx: Transaction) -> Set[str]: