@ -1464,19 +1464,23 @@ class JMWalletTab(QWidget):
popup . show ( )
popup . show ( )
def updateWalletInfo ( self , walletinfo = None ) :
def updateWalletInfo ( self , walletinfo = None ) :
nm = jm_single ( ) . config . getint ( " GUI " , " max_mix_depth " )
max_mixdepth_count = jm_single ( ) . config . getint ( " GUI " , " max_mix_depth " )
l = self . walletTree
previous_expand_states = [ ]
# before deleting, note whether items were expanded
# before deleting, note whether items were expanded
esrs = [ ]
for i in range ( self . walletTree . topLevelItemCount ( ) ) :
for i in range ( l . topLevelItemCount ( ) ) :
tli = self . walletTree . invisibleRootItem ( ) . child ( i )
tli = l . invisibleRootItem ( ) . child ( i )
# must check top and also the two subitems (branches):
# must check top and also the two subitems (branches):
expandedness = tuple (
expandedness = tuple (
x . isExpanded ( ) for x in [ tli , tli . child ( 0 ) , tli . child ( 1 ) ] )
x . isExpanded ( ) for x in [ tli , tli . child ( 0 ) , tli . child ( 1 ) ] )
esrs . append ( expandedness )
previous_expand_states . append ( expandedness )
l . clear ( )
if walletinfo :
self . walletTree . clear ( )
# Skip the remaining of this method if wallet info doesn't exist
if walletinfo == None :
return
rows , mbalances , xpubs , total_bal = walletinfo
rows , mbalances , xpubs , total_bal = walletinfo
if jm_single ( ) . config . get ( " BLOCKCHAIN " , " blockchain_source " ) == " regtest " :
if jm_single ( ) . config . get ( " BLOCKCHAIN " , " blockchain_source " ) == " regtest " :
self . wallet_name = mainWindow . testwalletname
self . wallet_name = mainWindow . testwalletname
@ -1490,45 +1494,54 @@ class JMWalletTab(QWidget):
total_bal = " (unknown, no blockchain source available) "
total_bal = " (unknown, no blockchain source available) "
self . label1 . setText ( " CURRENT WALLET: " + self . wallet_name +
self . label1 . setText ( " CURRENT WALLET: " + self . wallet_name +
' , total balance: ' + total_bal )
' , total balance: ' + total_bal )
l . show ( )
self . walletTree . show ( )
if jm_single ( ) . bc_interface is None and self . wallet_name != ' NONE ' :
if jm_single ( ) . bc_interface is None and self . wallet_name != ' NONE ' :
return
return
for i in range ( nm ) :
for m ixdepth in range ( max_mixdepth_count ) :
if walletinfo :
if walletinfo :
mdbalance = mbalances [ i ]
mdbalance = mbalances [ m ixdepth ]
else :
else :
mdbalance = " {0:.8f} " . format ( 0 )
mdbalance = " {0:.8f} " . format ( 0 )
m_item = QTreeWidgetItem ( [ " Mixdepth " + str ( i ) + " , balance: " +
m_item = QTreeWidgetItem ( [ " Mixdepth " + str ( m ixdepth ) + " , balance: " +
mdbalance , ' ' , ' ' , ' ' , ' ' ] )
mdbalance , ' ' , ' ' , ' ' , ' ' ] )
l . addChild ( m_item )
self . walletTree . addChild ( m_item )
# if expansion states existed, reinstate them:
# if expansion states existed, reinstate them:
if len ( esrs ) == nm :
if len ( previous_expand_states ) == max_mixdepth_count :
m_item . setExpanded ( esrs [ i ] [ 0 ] )
m_item . setExpanded ( previous_expand_states [ mixdepth ] [ 0 ] )
# by default, if the balance of the mix depth is greater than 0, expand it
elif float ( mdbalance ) > 0 :
m_item . setExpanded ( True )
for forchange in [ 0 , 1 ] :
for forchange in [ 0 , 1 ] :
heading = " EXTERNAL " if forchange == 0 else " INTERNAL "
heading = " EXTERNAL " if forchange == 0 else " INTERNAL "
if walletinfo and heading == " EXTERNAL " :
if walletinfo and heading == " EXTERNAL " :
heading_end = ' ' + xpubs [ i ] [ forchange ]
heading_end = ' ' + xpubs [ m ixdepth ] [ forchange ]
heading + = heading_end
heading + = heading_end
seq_item = QTreeWidgetItem ( [ heading , ' ' , ' ' , ' ' , ' ' ] )
seq_item = QTreeWidgetItem ( [ heading , ' ' , ' ' , ' ' , ' ' ] )
m_item . addChild ( seq_item )
m_item . addChild ( seq_item )
# by default, external is expanded, but remember user choice:
if not forchange :
# by default, the external addresses of mixdepth 0 is expanded
seq_item . setExpanded ( True )
should_expand = mixdepth == 0 and not forchange
if len ( esrs ) == nm :
seq_item . setExpanded ( esrs [ i ] [ forchange + 1 ] )
if not walletinfo :
if not walletinfo :
item = QTreeWidgetItem ( [ ' None ' , ' ' , ' ' , ' ' ] )
item = QTreeWidgetItem ( [ ' None ' , ' ' , ' ' , ' ' ] )
seq_item . addChild ( item )
seq_item . addChild ( item )
else :
else :
for j in range ( len ( rows [ i ] [ forchange ] ) ) :
for j in range ( len ( rows [ m ixdepth ] [ forchange ] ) ) :
item = QTreeWidgetItem ( rows [ i ] [ forchange ] [ j ] )
item = QTreeWidgetItem ( rows [ m ixdepth ] [ forchange ] [ j ] )
item . setFont ( 0 , QFont ( MONOSPACE_FONT ) )
item . setFont ( 0 , QFont ( MONOSPACE_FONT ) )
if rows [ i ] [ forchange ] [ j ] [ 3 ] != ' new ' :
if rows [ m ixdepth ] [ forchange ] [ j ] [ 3 ] != ' new ' :
item . setForeground ( 3 , QBrush ( QColor ( ' red ' ) ) )
item . setForeground ( 3 , QBrush ( QColor ( ' red ' ) ) )
# by default, if the balance is non zero, it is also expanded
if float ( rows [ mixdepth ] [ forchange ] [ j ] [ 2 ] ) > 0 :
should_expand = True
seq_item . addChild ( item )
seq_item . addChild ( item )
# Remember user choice, if expansion states existed, reinstate them:
if len ( previous_expand_states ) == max_mixdepth_count :
should_expand = previous_expand_states [ mixdepth ] [ forchange + 1 ]
seq_item . setExpanded ( should_expand )
class JMMainWindow ( QMainWindow ) :
class JMMainWindow ( QMainWindow ) :