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]: