tx dialog clean-up: remove 'finalized' field and related code
This commit is contained in:
@@ -136,11 +136,6 @@ class TxInOutWidget(QWidget):
|
|||||||
self.tx = tx
|
self.tx = tx
|
||||||
inputs_header_text = _("Inputs") + ' (%d)'%len(self.tx.inputs())
|
inputs_header_text = _("Inputs") + ' (%d)'%len(self.tx.inputs())
|
||||||
|
|
||||||
#if not self.finalized:
|
|
||||||
# selected_coins = self.main_window.get_manually_selected_coins()
|
|
||||||
# if selected_coins is not None:
|
|
||||||
# inputs_header_text += f" - " + _("Coin selection active ({} UTXOs selected)").format(len(selected_coins))
|
|
||||||
|
|
||||||
self.inputs_header.setText(inputs_header_text)
|
self.inputs_header.setText(inputs_header_text)
|
||||||
|
|
||||||
ext = QTextCharFormat() # "external"
|
ext = QTextCharFormat() # "external"
|
||||||
@@ -362,9 +357,10 @@ def show_transaction(tx: Transaction, *, parent: 'ElectrumWindow', desc=None, pr
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BaseTxDialog(QDialog, MessageBoxMixin):
|
|
||||||
|
|
||||||
def __init__(self, *, parent: 'ElectrumWindow', desc, prompt_if_unsaved, finalized: bool, external_keypairs=None):
|
class TxDialog(QDialog, MessageBoxMixin):
|
||||||
|
|
||||||
|
def __init__(self, tx: Transaction, *, parent: 'ElectrumWindow', desc, prompt_if_unsaved, external_keypairs=None):
|
||||||
'''Transactions in the wallet will show their description.
|
'''Transactions in the wallet will show their description.
|
||||||
Pass desc to give a description for txs not yet in the wallet.
|
Pass desc to give a description for txs not yet in the wallet.
|
||||||
'''
|
'''
|
||||||
@@ -372,7 +368,6 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
QDialog.__init__(self, parent=None)
|
QDialog.__init__(self, parent=None)
|
||||||
self.tx = None # type: Optional[Transaction]
|
self.tx = None # type: Optional[Transaction]
|
||||||
self.external_keypairs = external_keypairs
|
self.external_keypairs = external_keypairs
|
||||||
self.finalized = finalized
|
|
||||||
self.main_window = parent
|
self.main_window = parent
|
||||||
self.config = parent.config
|
self.config = parent.config
|
||||||
self.wallet = parent.wallet
|
self.wallet = parent.wallet
|
||||||
@@ -380,7 +375,6 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
self.saved = False
|
self.saved = False
|
||||||
self.desc = desc
|
self.desc = desc
|
||||||
self.setMinimumWidth(640)
|
self.setMinimumWidth(640)
|
||||||
self.set_title()
|
|
||||||
|
|
||||||
self.psbt_only_widgets = [] # type: List[QWidget]
|
self.psbt_only_widgets = [] # type: List[QWidget]
|
||||||
|
|
||||||
@@ -444,21 +438,16 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
# Transaction sharing buttons
|
# Transaction sharing buttons
|
||||||
self.sharing_buttons = [self.export_actions_button, self.save_button]
|
self.sharing_buttons = [self.export_actions_button, self.save_button]
|
||||||
run_hook('transaction_dialog', self)
|
run_hook('transaction_dialog', self)
|
||||||
#if not self.finalized:
|
|
||||||
# self.create_fee_controls()
|
|
||||||
# vbox.addWidget(self.feecontrol_fields)
|
|
||||||
self.hbox = hbox = QHBoxLayout()
|
self.hbox = hbox = QHBoxLayout()
|
||||||
hbox.addLayout(Buttons(*self.sharing_buttons))
|
hbox.addLayout(Buttons(*self.sharing_buttons))
|
||||||
hbox.addStretch(1)
|
hbox.addStretch(1)
|
||||||
hbox.addLayout(Buttons(*self.buttons))
|
hbox.addLayout(Buttons(*self.buttons))
|
||||||
vbox.addLayout(hbox)
|
vbox.addLayout(hbox)
|
||||||
self.set_buttons_visibility()
|
|
||||||
|
|
||||||
dialogs.append(self)
|
dialogs.append(self)
|
||||||
|
|
||||||
def set_buttons_visibility(self):
|
self.set_tx(tx)
|
||||||
for b in [self.export_actions_button, self.save_button, self.sign_button, self.broadcast_button, self.partial_tx_actions_button]:
|
self.update()
|
||||||
b.setVisible(self.finalized)
|
self.set_title()
|
||||||
|
|
||||||
def set_tx(self, tx: 'Transaction'):
|
def set_tx(self, tx: 'Transaction'):
|
||||||
# Take a copy; it might get updated in the main window by
|
# Take a copy; it might get updated in the main window by
|
||||||
@@ -667,8 +656,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
txid = self.tx.txid()
|
txid = self.tx.txid()
|
||||||
fx = self.main_window.fx
|
fx = self.main_window.fx
|
||||||
tx_item_fiat = None
|
tx_item_fiat = None
|
||||||
if (self.finalized # ensures we don't use historical rates for tx being constructed *now*
|
if (txid is not None and fx.is_enabled() and amount is not None):
|
||||||
and txid is not None and fx.is_enabled() and amount is not None):
|
|
||||||
tx_item_fiat = self.wallet.get_tx_item_fiat(
|
tx_item_fiat = self.wallet.get_tx_item_fiat(
|
||||||
tx_hash=txid, amount_sat=abs(amount), fx=fx, tx_fee=fee)
|
tx_hash=txid, amount_sat=abs(amount), fx=fx, tx_fee=fee)
|
||||||
lnworker_history = self.wallet.lnworker.get_onchain_history() if self.wallet.lnworker else {}
|
lnworker_history = self.wallet.lnworker.get_onchain_history() if self.wallet.lnworker else {}
|
||||||
@@ -683,7 +671,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
can_sign = not self.tx.is_complete() and \
|
can_sign = not self.tx.is_complete() and \
|
||||||
(self.wallet.can_sign(self.tx) or bool(self.external_keypairs))
|
(self.wallet.can_sign(self.tx) or bool(self.external_keypairs))
|
||||||
self.sign_button.setEnabled(can_sign)
|
self.sign_button.setEnabled(can_sign)
|
||||||
if self.finalized and tx_details.txid:
|
if tx_details.txid:
|
||||||
self.tx_hash_e.setText(tx_details.txid)
|
self.tx_hash_e.setText(tx_details.txid)
|
||||||
else:
|
else:
|
||||||
# note: when not finalized, RBF and locktime changes do not trigger
|
# note: when not finalized, RBF and locktime changes do not trigger
|
||||||
@@ -785,7 +773,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
self.ln_amount_label.setText(ln_amount_str)
|
self.ln_amount_label.setText(ln_amount_str)
|
||||||
else:
|
else:
|
||||||
self.ln_amount_label.hide()
|
self.ln_amount_label.hide()
|
||||||
show_psbt_only_widgets = self.finalized and isinstance(self.tx, PartialTransaction)
|
show_psbt_only_widgets = isinstance(self.tx, PartialTransaction)
|
||||||
for widget in self.psbt_only_widgets:
|
for widget in self.psbt_only_widgets:
|
||||||
if isinstance(widget, QMenu):
|
if isinstance(widget, QMenu):
|
||||||
widget.menuAction().setVisible(show_psbt_only_widgets)
|
widget.menuAction().setVisible(show_psbt_only_widgets)
|
||||||
@@ -863,11 +851,11 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
|
|||||||
vbox.addWidget(self.block_hash_label)
|
vbox.addWidget(self.block_hash_label)
|
||||||
|
|
||||||
# set visibility after parenting can be determined by Qt
|
# set visibility after parenting can be determined by Qt
|
||||||
self.rbf_label.setVisible(self.finalized)
|
self.rbf_label.setVisible(True)
|
||||||
self.locktime_final_label.setVisible(self.finalized)
|
self.locktime_final_label.setVisible(True)
|
||||||
|
|
||||||
def set_title(self):
|
def set_title(self):
|
||||||
self.setWindowTitle(_("Create transaction") if not self.finalized else _("Transaction"))
|
self.setWindowTitle(_("Transaction") + ' ' + self.tx.txid())
|
||||||
|
|
||||||
def can_finalize(self) -> bool:
|
def can_finalize(self) -> bool:
|
||||||
return False
|
return False
|
||||||
@@ -911,11 +899,3 @@ class TxOutputColoring:
|
|||||||
self.text_char_format.setBackground(QBrush(self.color))
|
self.text_char_format.setBackground(QBrush(self.color))
|
||||||
self.text_char_format.setToolTip(tooltip)
|
self.text_char_format.setToolTip(tooltip)
|
||||||
|
|
||||||
|
|
||||||
class TxDialog(BaseTxDialog):
|
|
||||||
def __init__(self, tx: Transaction, *, parent: 'ElectrumWindow', desc, prompt_if_unsaved):
|
|
||||||
BaseTxDialog.__init__(self, parent=parent, desc=desc, prompt_if_unsaved=prompt_if_unsaved, finalized=True)
|
|
||||||
self.set_tx(tx)
|
|
||||||
self.update()
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user