From df5acd1ea5f3dfc781d4ae91ef3860ff634d8a68 Mon Sep 17 00:00:00 2001 From: ThomasV Date: Tue, 10 Mar 2020 17:30:08 +0100 Subject: [PATCH] kivy: add delete button for invoices/requests --- electrum/gui/kivy/theming/light/delete.png | Bin 0 -> 453 bytes electrum/gui/kivy/uix/screens.py | 16 +++++++++++++++- electrum/gui/kivy/uix/ui_screens/receive.kv | 2 +- electrum/gui/kivy/uix/ui_screens/send.kv | 6 +++++- electrum/wallet.py | 2 ++ 5 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 electrum/gui/kivy/theming/light/delete.png diff --git a/electrum/gui/kivy/theming/light/delete.png b/electrum/gui/kivy/theming/light/delete.png new file mode 100644 index 0000000000000000000000000000000000000000..02a7d58bac9689d2c016bbc093c9f9e8a4f8b6ee GIT binary patch literal 453 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE8Azrw%`pX1t^qzFu0Z-f#UN;I@gbl=VkJR- z!3^vi{1TG7(G5+_Gv^*ZarW`sFJHg^eQ#nviGhJp($mE;q=ND7rPjjcK!N6i#<%y+ zT=zdH*eO7NOFZi>$*FcTRXisF(YC+Gw(YN}kD73QzW9>w&sksot#qt{a8thbi+_0l zvyUP~mYTbQw@t|CH z*Y@`bzfW!7Rler;DmIhSH7ngr>`PZ%UemT^Psx(go7lGYap=94x@PoY(c?{QX7k_u zU3#}{v()XZ|1b1kZ;ZeCLu~fppTFMtf7>&Uf41vhZLn`uUb0I3^z}I2cc}>EdQVqB Jmvv4FO#loM%#i>9 literal 0 HcmV?d00001 diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py index be2fc81b9..75de262e4 100644 --- a/electrum/gui/kivy/uix/screens.py +++ b/electrum/gui/kivy/uix/screens.py @@ -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): @@ -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() diff --git a/electrum/gui/kivy/uix/ui_screens/receive.kv b/electrum/gui/kivy/uix/ui_screens/receive.kv index 3d5a78389..74b17211f 100644 --- a/electrum/gui/kivy/uix/ui_screens/receive.kv +++ b/electrum/gui/kivy/uix/ui_screens/receive.kv @@ -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()) diff --git a/electrum/gui/kivy/uix/ui_screens/send.kv b/electrum/gui/kivy/uix/ui_screens/send.kv index 4047bfb0e..8b394be09 100644 --- a/electrum/gui/kivy/uix/ui_screens/send.kv +++ b/electrum/gui/kivy/uix/ui_screens/send.kv @@ -148,6 +148,10 @@ BoxLayout: 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() @@ -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: diff --git a/electrum/wallet.py b/electrum/wallet.py index 72b7f3cea..497ce3d42 100644 --- a/electrum/wallet.py +++ b/electrum/wallet.py @@ -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]: