diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index 04ddaa2b..73b1bbf5 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -1042,7 +1042,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): _('and you will have the possiblity, while it is unconfirmed, to replace it with a transaction that pays a higher fee.'), _('Note that some merchants do not accept non-final transactions until they are confirmed.')] self.rbf_checkbox.setToolTip('

' + ' '.join(msg) + '

') - self.rbf_checkbox.setVisible(self.config.get('use_rbf', False)) + self.rbf_checkbox.setVisible(False) grid.addWidget(self.fee_e_label, 5, 0) grid.addWidget(self.fee_slider, 5, 1) @@ -1149,6 +1149,8 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): self.not_enough_funds = False except NotEnoughFunds: self.not_enough_funds = True + except BaseException: + return if not freeze_fee: fee = None if self.not_enough_funds else self.wallet.get_tx_fee(tx) self.fee_e.setAmount(fee) @@ -1157,6 +1159,22 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): amount = tx.output_value() self.amount_e.setAmount(amount) + rbf_policy = self.config.get('rbf_policy', 1) + if rbf_policy == 0: + b = True + elif rbf_policy == 1: + fee_rate = tx.get_fee() * 1000 / tx.estimated_size() + try: + c = self.config.reverse_dynfee(fee_rate) + b = c in [-1, 25] + except: + b = False + elif rbf_policy == 2: + b = False + self.rbf_checkbox.setVisible(b) + self.rbf_checkbox.setChecked(b) + + def from_list_delete(self, item): i = self.from_list.indexOfTopLevelItem(item) self.pay_from.pop(i) @@ -2407,17 +2425,15 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, PrintError): feebox_cb.stateChanged.connect(on_feebox) fee_widgets.append((feebox_cb, None)) - use_rbf = self.config.get('use_rbf', False) - rbf_cb = QCheckBox(_('Enable Replace-By-Fee')) - rbf_cb.setChecked(use_rbf) + rbf_policy = self.config.get('rbf_policy', 1) + rbf_label = HelpLabel(_('Propose Replace-By-Fee') + ':', '') + rbf_combo = QComboBox() + rbf_combo.addItems([_('Always'), _('If the fee is low'), _('Never')]) + rbf_combo.setCurrentIndex(rbf_policy) def on_rbf(x): - rbf_result = x == Qt.Checked - self.config.set_key('use_rbf', rbf_result) - self.rbf_checkbox.setVisible(rbf_result) - self.rbf_checkbox.setChecked(False) - rbf_cb.stateChanged.connect(on_rbf) - rbf_cb.setToolTip(_('Enable RBF')) - fee_widgets.append((rbf_cb, None)) + self.config.set_key('rbf_policy', x) + rbf_combo.currentIndexChanged.connect(on_rbf) + fee_widgets.append((rbf_label, rbf_combo)) msg = _('OpenAlias record, used to receive coins and to sign payment requests.') + '\n\n'\ + _('The following alias providers are available:') + '\n'\