tadd Max button to swap dialog, fix fee slider behaviour when max is selected - electrum - Electrum Bitcoin wallet HTML git clone https://git.parazyd.org/electrum DIR Log DIR Files DIR Refs DIR Submodules --- DIR commit 77c2aa5017b7e3d881543b90c35dff4f03417a5d DIR parent a1e8f9e2aa3d1a2bd1d17b91e5f445c86e6556f4 HTML Author: ThomasV <thomasv@electrum.org> Date: Tue, 16 Jun 2020 17:49:34 +0200 add Max button to swap dialog, fix fee slider behaviour when max is selected Diffstat: M electrum/gui/qt/swap_dialog.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) --- DIR diff --git a/electrum/gui/qt/swap_dialog.py b/electrum/gui/qt/swap_dialog.py t@@ -43,6 +43,9 @@ class SwapDialog(WindowModalDialog): self.send_amount_e = BTCAmountEdit(self.window.get_decimal_point) self.send_amount_e.shortcut.connect(self.spend_max) self.recv_amount_e = BTCAmountEdit(self.window.get_decimal_point) + self.max_button = EnterButton(_("Max"), self.spend_max) + self.max_button.setFixedWidth(100) + self.max_button.setCheckable(True) self.send_button = QPushButton('') self.recv_button = QPushButton('') self.send_follows = False t@@ -62,6 +65,7 @@ class SwapDialog(WindowModalDialog): h.addWidget(QLabel(_('You send')+':'), 1, 0) h.addWidget(self.send_amount_e, 1, 1) h.addWidget(self.send_button, 1, 2) + h.addWidget(self.max_button, 1, 3) h.addWidget(QLabel(_('You receive')+':'), 2, 0) h.addWidget(self.recv_amount_e, 2, 1) h.addWidget(self.recv_button, 2, 2) t@@ -99,11 +103,17 @@ class SwapDialog(WindowModalDialog): self.update() def spend_max(self): - if not self.is_reverse: + if self.is_reverse: + return + if self.max_button.isChecked(): self.update_tx('!') if self.tx: txo = self.tx.outputs()[0] self.send_amount_e.setAmount(txo.value) + else: + self.tx = None + self.send_amount_e.setAmount(None) + self.update_fee() def on_send_edited(self): if self.send_amount_e.follows: t@@ -139,6 +149,7 @@ class SwapDialog(WindowModalDialog): sm = self.swap_manager self.send_button.setIcon(read_QIcon("lightning.png" if self.is_reverse else "bitcoin.png")) self.recv_button.setIcon(read_QIcon("lightning.png" if not self.is_reverse else "bitcoin.png")) + self.max_button.setEnabled(not self.is_reverse) server_mining_fee = sm.lockup_fee if self.is_reverse else sm.normal_fee server_fee_str = '%.2f'%sm.percentage + '% + ' + self.window.format_amount(server_mining_fee) + ' ' + self.window.base_unit() self.server_fee_label.setText(server_fee_str) t@@ -149,9 +160,13 @@ class SwapDialog(WindowModalDialog): sm = self.swap_manager fee = sm.get_claim_fee() else: - onchain_amount = self.send_amount_e.get_amount() + is_max = self.max_button.isChecked() + onchain_amount = '!' if is_max else self.send_amount_e.get_amount() self.update_tx(onchain_amount) fee = self.tx.get_fee() if self.tx else None + if is_max and self.tx: + txo = self.tx.outputs()[0] + self.send_amount_e.setAmount(txo.value) fee_text = self.window.format_amount(fee) + ' ' + self.window.base_unit() if fee else '' self.fee_label.setText(fee_text)