add Max button to swap dialog, fix fee slider behaviour when max is selected
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user