tPreviewTxDialog: fix RBF checkbox - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 74790c16f9414c2ad601f9b9b8fea94d2eaef83a
 (DIR) parent e7efc3657b120b13bf2e3d01b7c1095d794cdae1
 (HTM) Author: SomberNight <somber.night@protonmail.com>
       Date:   Tue, 12 Nov 2019 22:00:29 +0100
       
       PreviewTxDialog: fix RBF checkbox
       
       Diffstat:
         M electrum/gui/qt/transaction_dialog… |      38 +++++++++++++++++--------------
       
       1 file changed, 21 insertions(+), 17 deletions(-)
       ---
 (DIR) diff --git a/electrum/gui/qt/transaction_dialog.py b/electrum/gui/qt/transaction_dialog.py
       t@@ -28,7 +28,7 @@ import copy
        import datetime
        import traceback
        import time
       -from typing import TYPE_CHECKING, Callable
       +from typing import TYPE_CHECKING, Callable, Optional
        from functools import partial
        from decimal import Decimal
        
       t@@ -60,10 +60,12 @@ from .amountedit import FeerateEdit, BTCAmountEdit
        if TYPE_CHECKING:
            from .main_window import ElectrumWindow
        
       +
        class TxSizeLabel(QLabel):
            def setAmount(self, byte_size):
                self.setText(('x   %s bytes   =' % byte_size) if byte_size else '')
        
       +
        class QTextEditWithDefaultSize(QTextEdit):
            def sizeHint(self):
                return QSize(0, 100)
       t@@ -90,12 +92,13 @@ def show_transaction(tx: Transaction, *, parent: 'ElectrumWindow', invoice=None,
        
        class BaseTxDialog(QDialog, MessageBoxMixin):
        
       -    def __init__(self, *, parent: 'ElectrumWindow', invoice, desc, prompt_if_unsaved, finalized):
       +    def __init__(self, *, parent: 'ElectrumWindow', invoice, desc, prompt_if_unsaved, finalized: bool):
                '''Transactions in the wallet will show their description.
                Pass desc to give a description for txs not yet in the wallet.
                '''
                # We want to be a top-level window
                QDialog.__init__(self, parent=None)
       +        self.tx = None  # type: Optional[Transaction]
                self.finalized = finalized
                self.main_window = parent
                self.config = parent.config
       t@@ -202,7 +205,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
                for b in [self.finalize_button]:
                    b.setVisible(not self.finalized)
        
       -    def set_tx(self, tx):
       +    def set_tx(self, tx: 'Transaction'):
                # Take a copy; it might get updated in the main window by
                # e.g. the FX plugin.  If this happens during or after a long
                # sign operation the signatures are lost.
       t@@ -407,7 +410,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
                else:
                    self.date_label.hide()
                self.locktime_label.setText(f"LockTime: {self.tx.locktime}")
       -        self.rbf_label.setText(f"Replace by Fee: {not self.tx.is_final()}")
       +        self.rbf_label.setText(_('Replace by fee') + f": {not self.tx.is_final()}")
        
                if tx_mined_status.header_hash:
                    self.block_hash_label.setText(_("Included in block: {}")
       t@@ -545,6 +548,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
                self.rbf_label = TxDetailLabel()
                vbox_right.addWidget(self.rbf_label)
                self.rbf_cb = QCheckBox(_('Replace by fee'))
       +        self.rbf_cb.setChecked(bool(self.config.get('use_rbf', True)))
                vbox_right.addWidget(self.rbf_cb)
                self.rbf_label.setVisible(self.finalized)
                self.rbf_cb.setVisible(not self.finalized)
       t@@ -564,19 +568,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
                self.setWindowTitle(_("Create transaction") if not self.finalized else _("Transaction"))
        
            def on_finalize(self):
       -        self.finalized = True
       -        for widget in [self.fee_slider, self.feecontrol_fields, self.rbf_cb]:
       -            widget.setEnabled(False)
       -            widget.setVisible(False)
       -        for widget in [self.rbf_label]:
       -            widget.setVisible(True)
       -        self.set_title()
       -        self.set_buttons_visibility()
       -
       -
       -class QTextEditWithDefaultSize(QTextEdit):
       -    def sizeHint(self):
       -        return QSize(0, 100)
       +        pass  # overridden in subclass
        
        
        class TxDetailLabel(QLabel):
       t@@ -772,3 +764,15 @@ class PreviewTxDialog(BaseTxDialog, TxEditor):
                self.set_feerounding_text(int(feerounding))
                self.feerounding_icon.setToolTip(self.feerounding_text)
                self.feerounding_icon.setVisible(abs(feerounding) >= 1)
       +
       +    def on_finalize(self):
       +        self.finalized = True
       +        self.tx.set_rbf(self.rbf_cb.isChecked())
       +        for widget in [self.fee_slider, self.feecontrol_fields, self.rbf_cb]:
       +            widget.setEnabled(False)
       +            widget.setVisible(False)
       +        for widget in [self.rbf_label]:
       +            widget.setVisible(True)
       +        self.set_title()
       +        self.set_buttons_visibility()
       +        self.update()