commit fff8462f362c037b2f6e4b6b65f0f3393ba59655
parent 3314b3acc70f3878a2a93a1832029fd184e68d80
Author: ThomasV <thomasv@electrum.org>
Date: Fri, 20 May 2016 20:14:21 +0200
add explicit 'max' button to send tab. fixes #1428
Diffstat:
1 file changed, 30 insertions(+), 17 deletions(-)
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -174,6 +174,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
# set initial message
self.console.showMessage(self.network.banner)
+ self.is_max = False
self.payment_request = None
self.checking_accounts = False
self.qr_window = None
@@ -1004,6 +1005,12 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
grid.addWidget(amount_label, 4, 0)
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'\
+ _('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.')
@@ -1011,8 +1018,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.fee_slider = QSlider(Qt.Horizontal, self)
self.fee_slider.setRange(0, 4)
- self.fee_slider.setTickInterval(1)
- self.fee_slider.setTickPosition(QSlider.TicksBelow)
self.fee_slider.setToolTip(_(''))
self.fee_description = QLabel('')
def slider_moved():
@@ -1020,7 +1025,11 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
self.fee_description.setText(['slow','','medium','','fast'][i])
def slider_released():
self.config.set_key('fee_level', self.fee_slider.sliderPosition(), False)
- self.update_fee()
+ if self.is_max:
+ self.spend_max()
+ else:
+ self.update_fee()
+
self.fee_slider.valueChanged.connect(slider_moved)
self.fee_slider.sliderReleased.connect(slider_released)
self.fee_slider.setValue(self.config.get('fee_level', 2))
@@ -1044,20 +1053,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
buttons.addWidget(self.clear_button)
grid.addLayout(buttons, 6, 1, 1, 2)
- def on_shortcut():
- 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.amount_e.shortcut.connect(self.spend_max)
self.payto_e.textChanged.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)
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):
self.require_fee_update = True
@@ -1460,6 +1472,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError):
def do_clear(self):
+ self.is_max = False
self.not_enough_funds = False
self.payment_request = None
self.payto_e.is_pr = False