add explicit 'max' button to send tab. fixes #1428
This commit is contained in:
parent
3314b3acc7
commit
fff8462f36
|
@ -174,6 +174,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
# set initial message
|
# set initial message
|
||||||
self.console.showMessage(self.network.banner)
|
self.console.showMessage(self.network.banner)
|
||||||
|
|
||||||
|
self.is_max = False
|
||||||
self.payment_request = None
|
self.payment_request = None
|
||||||
self.checking_accounts = False
|
self.checking_accounts = False
|
||||||
self.qr_window = None
|
self.qr_window = None
|
||||||
|
@ -1004,6 +1005,12 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
grid.addWidget(amount_label, 4, 0)
|
grid.addWidget(amount_label, 4, 0)
|
||||||
grid.addWidget(self.amount_e, 4, 1)
|
grid.addWidget(self.amount_e, 4, 1)
|
||||||
|
|
||||||
|
max_button = EnterButton(_("Max"), self.spend_max)
|
||||||
|
hbox = QHBoxLayout()
|
||||||
|
hbox.addWidget(max_button)
|
||||||
|
hbox.addStretch(1)
|
||||||
|
grid.addLayout(hbox, 4, 3)
|
||||||
|
|
||||||
msg = _('Bitcoin transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
|
msg = _('Bitcoin transactions are in general not free. A transaction fee is paid by the sender of the funds.') + '\n\n'\
|
||||||
+ _('The amount of fee can be decided freely by the sender. However, transactions with low fees take more time to be processed.') + '\n\n'\
|
+ _('The amount of fee can be decided freely by the sender. However, transactions with low fees take more time to be processed.') + '\n\n'\
|
||||||
+ _('A suggested fee is automatically added to this field. You may override it. The suggested fee increases with the size of the transaction.')
|
+ _('A suggested fee is automatically added to this field. You may override it. The suggested fee increases with the size of the transaction.')
|
||||||
|
@ -1011,8 +1018,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
|
|
||||||
self.fee_slider = QSlider(Qt.Horizontal, self)
|
self.fee_slider = QSlider(Qt.Horizontal, self)
|
||||||
self.fee_slider.setRange(0, 4)
|
self.fee_slider.setRange(0, 4)
|
||||||
self.fee_slider.setTickInterval(1)
|
|
||||||
self.fee_slider.setTickPosition(QSlider.TicksBelow)
|
|
||||||
self.fee_slider.setToolTip(_(''))
|
self.fee_slider.setToolTip(_(''))
|
||||||
self.fee_description = QLabel('')
|
self.fee_description = QLabel('')
|
||||||
def slider_moved():
|
def slider_moved():
|
||||||
|
@ -1020,7 +1025,11 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
self.fee_description.setText(['slow','','medium','','fast'][i])
|
self.fee_description.setText(['slow','','medium','','fast'][i])
|
||||||
def slider_released():
|
def slider_released():
|
||||||
self.config.set_key('fee_level', self.fee_slider.sliderPosition(), False)
|
self.config.set_key('fee_level', self.fee_slider.sliderPosition(), False)
|
||||||
|
if self.is_max:
|
||||||
|
self.spend_max()
|
||||||
|
else:
|
||||||
self.update_fee()
|
self.update_fee()
|
||||||
|
|
||||||
self.fee_slider.valueChanged.connect(slider_moved)
|
self.fee_slider.valueChanged.connect(slider_moved)
|
||||||
self.fee_slider.sliderReleased.connect(slider_released)
|
self.fee_slider.sliderReleased.connect(slider_released)
|
||||||
self.fee_slider.setValue(self.config.get('fee_level', 2))
|
self.fee_slider.setValue(self.config.get('fee_level', 2))
|
||||||
|
@ -1044,20 +1053,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
buttons.addWidget(self.clear_button)
|
buttons.addWidget(self.clear_button)
|
||||||
grid.addLayout(buttons, 6, 1, 1, 2)
|
grid.addLayout(buttons, 6, 1, 1, 2)
|
||||||
|
|
||||||
def on_shortcut():
|
self.amount_e.shortcut.connect(self.spend_max)
|
||||||
inputs = self.get_coins()
|
|
||||||
sendable = sum(map(lambda x:x['value'], inputs))
|
|
||||||
fee = self.fee_e.get_amount() if self.fee_e.isModified() else None
|
|
||||||
addr = self.get_payto_or_dummy()
|
|
||||||
amount, fee = self.wallet.get_max_amount(self.config, inputs, addr, fee)
|
|
||||||
if not self.fee_e.isModified():
|
|
||||||
self.fee_e.setAmount(fee)
|
|
||||||
self.amount_e.setAmount(amount)
|
|
||||||
self.not_enough_funds = (fee + amount > sendable)
|
|
||||||
# emit signal for fiat_amount update
|
|
||||||
self.amount_e.textEdited.emit("")
|
|
||||||
|
|
||||||
self.amount_e.shortcut.connect(on_shortcut)
|
|
||||||
self.payto_e.textChanged.connect(self.update_fee)
|
self.payto_e.textChanged.connect(self.update_fee)
|
||||||
self.amount_e.textEdited.connect(self.update_fee)
|
self.amount_e.textEdited.connect(self.update_fee)
|
||||||
|
|
||||||
|
@ -1110,6 +1106,22 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
run_hook('create_send_tab', grid)
|
run_hook('create_send_tab', grid)
|
||||||
return w
|
return w
|
||||||
|
|
||||||
|
|
||||||
|
def spend_max(self):
|
||||||
|
inputs = self.get_coins()
|
||||||
|
sendable = sum(map(lambda x:x['value'], inputs))
|
||||||
|
fee = self.fee_e.get_amount() if self.fee_e.isModified() else None
|
||||||
|
addr = self.get_payto_or_dummy()
|
||||||
|
amount, fee = self.wallet.get_max_amount(self.config, inputs, addr, fee)
|
||||||
|
if not self.fee_e.isModified():
|
||||||
|
self.fee_e.setAmount(fee)
|
||||||
|
self.amount_e.setAmount(amount)
|
||||||
|
self.not_enough_funds = (fee + amount > sendable)
|
||||||
|
# emit signal for fiat_amount update
|
||||||
|
self.amount_e.textEdited.emit("")
|
||||||
|
self.is_max = True
|
||||||
|
|
||||||
|
|
||||||
def update_fee(self):
|
def update_fee(self):
|
||||||
self.require_fee_update = True
|
self.require_fee_update = True
|
||||||
|
|
||||||
|
@ -1460,6 +1472,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
|
||||||
|
|
||||||
|
|
||||||
def do_clear(self):
|
def do_clear(self):
|
||||||
|
self.is_max = False
|
||||||
self.not_enough_funds = False
|
self.not_enough_funds = False
|
||||||
self.payment_request = None
|
self.payment_request = None
|
||||||
self.payto_e.is_pr = False
|
self.payto_e.is_pr = False
|
||||||
|
|
Loading…
Reference in New Issue