@ -393,7 +393,7 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
def update ( self ) :
def update ( self ) :
if not self . finalized :
if not self . finalized :
self . update_fee_fields ( )
self . update_fee_fields ( )
self . finalize_button . setEnabled ( self . tx is not None )
self . finalize_button . setEnabled ( self . can_finalize ( ) )
if self . tx is None :
if self . tx is None :
return
return
self . update_io ( )
self . update_io ( )
@ -659,6 +659,9 @@ class BaseTxDialog(QDialog, MessageBoxMixin):
def set_title ( self ) :
def set_title ( self ) :
self . setWindowTitle ( _ ( " Create transaction " ) if not self . finalized else _ ( " Transaction " ) )
self . setWindowTitle ( _ ( " Create transaction " ) if not self . finalized else _ ( " Transaction " ) )
def can_finalize ( self ) - > bool :
return False
def on_finalize ( self ) :
def on_finalize ( self ) :
pass # overridden in subclass
pass # overridden in subclass
@ -688,7 +691,8 @@ class PreviewTxDialog(BaseTxDialog, TxEditor):
TxEditor . __init__ ( self , window = window , make_tx = make_tx , is_sweep = bool ( external_keypairs ) )
TxEditor . __init__ ( self , window = window , make_tx = make_tx , is_sweep = bool ( external_keypairs ) )
BaseTxDialog . __init__ ( self , parent = window , desc = ' ' , prompt_if_unsaved = False ,
BaseTxDialog . __init__ ( self , parent = window , desc = ' ' , prompt_if_unsaved = False ,
finalized = False , external_keypairs = external_keypairs )
finalized = False , external_keypairs = external_keypairs )
BlockingWaitingDialog ( window , _ ( " Preparing transaction... " ) , self . update_tx )
BlockingWaitingDialog ( window , _ ( " Preparing transaction... " ) ,
lambda : self . update_tx ( fallback_to_zero_fee = True ) )
self . update ( )
self . update ( )
def create_fee_controls ( self ) :
def create_fee_controls ( self ) :
@ -861,9 +865,14 @@ class PreviewTxDialog(BaseTxDialog, TxEditor):
self . feerounding_icon . setToolTip ( self . feerounding_text )
self . feerounding_icon . setToolTip ( self . feerounding_text )
self . feerounding_icon . setVisible ( abs ( feerounding ) > = 1 )
self . feerounding_icon . setVisible ( abs ( feerounding ) > = 1 )
def can_finalize ( self ) :
return ( self . tx is not None
and not self . not_enough_funds )
def on_finalize ( self ) :
def on_finalize ( self ) :
if not self . tx :
if not self . can_finalize ( ) :
return
return
assert self . tx
self . finalized = True
self . finalized = True
self . tx . set_rbf ( self . rbf_cb . isChecked ( ) )
self . tx . set_rbf ( self . rbf_cb . isChecked ( ) )
self . tx . locktime = self . locktime_e . get_locktime ( )
self . tx . locktime = self . locktime_e . get_locktime ( )