Browse Source

add Max button to swap dialog, fix fee slider behaviour when max is selected

bip39-recovery
ThomasV 5 years ago
parent
commit
77c2aa5017
  1. 19
      electrum/gui/qt/swap_dialog.py

19
electrum/gui/qt/swap_dialog.py

@ -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
@ -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)
@ -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:
@ -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)
@ -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)

Loading…
Cancel
Save