tfix 'max' button in Kivy (fix #6169) - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 915e132c335f8a4c70538088d7c6ce602de0f054 DIR parent 9e1c4a59e56f0463281bb36fc7fe39482640fe26 HTML Author: ThomasV <thomasv@electrum.org> Date: Fri, 27 Nov 2020 12:48:32 +0100 fix 'max' button in Kivy (fix #6169) Diffstat: M electrum/gui/kivy/main_window.py | 7 ++++++- M electrum/gui/kivy/uix/dialogs/amou… | 5 ++++- M electrum/gui/kivy/uix/dialogs/ligh… | 3 ++- M electrum/gui/kivy/uix/screens.py | 16 +++++++++++----- 4 files changed, 23 insertions(+), 8 deletions(-) --- DIR diff --git a/electrum/gui/kivy/main_window.py b/electrum/gui/kivy/main_window.py t@@ -1173,7 +1173,12 @@ class ElectrumWindow(App, Logger): amount, u = str(amount).split() assert u == self.base_unit def cb(amount): - screen.amount = amount + if amount == '!': + screen.is_max = True + screen.amount = self.get_max_amount() + ' ' + self.base_unit + else: + screen.amount = amount + screen.is_max = False popup = AmountDialog(show_max, amount, cb) popup.open() DIR diff --git a/electrum/gui/kivy/uix/dialogs/amount_dialog.py b/electrum/gui/kivy/uix/dialogs/amount_dialog.py t@@ -49,6 +49,7 @@ Builder.load_string(''' amount: '' fiat_amount: '' is_fiat: False + is_max: False on_fiat_amount: if self.is_fiat: self.amount = app.fiat_to_btc(self.fiat_amount) on_amount: if not self.is_fiat: self.fiat_amount = app.btc_to_fiat(self.amount) size_hint: 1, None t@@ -92,6 +93,7 @@ Builder.load_string(''' on_release: kb.is_fiat = False kb.amount = app.get_max_amount() + kb.is_max = True Button: size_hint: 1, None height: '48dp' t@@ -99,6 +101,7 @@ Builder.load_string(''' on_release: kb.amount = '' kb.fiat_amount = '' + kb.is_max = False Widget: size_hint: 1, 0.2 BoxLayout: t@@ -112,7 +115,7 @@ Builder.load_string(''' height: '48dp' text: _('OK') on_release: - root.callback(btc.text if kb.amount else '') + root.callback('!' if kb.is_max else btc.text if kb.amount else '') popup.dismiss() ''') DIR diff --git a/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py b/electrum/gui/kivy/uix/dialogs/lightning_open_channel.py t@@ -23,6 +23,7 @@ Builder.load_string(''' title: _('Open Lightning Channel') pubkey: '' amount: '' + is_max: False ipport: '' BoxLayout spacing: '12dp' t@@ -154,7 +155,7 @@ class LightningOpenChannelDialog(Factory.Popup, Logger): conn_str = self.pubkey if self.ipport: conn_str += '@' + self.ipport.strip() - amount = self.app.get_amount(self.amount) + amount = '!' if self.is_max else self.app.get_amount(self.amount) self.app.protected('Create a new channel?', self.do_open_channel, (conn_str, amount)) self.dismiss() DIR diff --git a/electrum/gui/kivy/uix/screens.py b/electrum/gui/kivy/uix/screens.py t@@ -196,6 +196,7 @@ class SendScreen(CScreen, Logger): self.address = uri.get('address', '') self.message = uri.get('message', '') self.amount = self.app.format_amount_and_units(amount) if amount else '' + self.is_max = False self.payment_request = None self.is_lightning = False t@@ -260,6 +261,7 @@ class SendScreen(CScreen, Logger): self.is_lightning = False self.is_bip70 = False self.parsed_URI = None + self.is_max = False def set_request(self, pr: 'PaymentRequest'): self.address = pr.get_requestor() t@@ -298,11 +300,14 @@ class SendScreen(CScreen, Logger): if not self.amount: self.app.show_error(_('Please enter an amount')) return - try: - amount = self.app.get_amount(self.amount) - except: - self.app.show_error(_('Invalid amount') + ':\n' + self.amount) - return + if self.is_max: + amount = '!' + else: + try: + amount = self.app.get_amount(self.amount) + except: + self.app.show_error(_('Invalid amount') + ':\n' + self.amount) + return message = self.message if self.is_lightning: return LNInvoice.from_bech32(address) t@@ -439,6 +444,7 @@ class ReceiveScreen(CScreen): def clear(self): self.address = '' self.amount = '' + self.is_max = False # not used for receiving (see app.amount_dialog) self.message = '' self.lnaddr = ''