Merge pull request #1267 from kyuupichan/spendable_coins

get_spendable_coins and frozen addrs
This commit is contained in:
ThomasV 2015-05-31 07:53:43 +02:00
commit bd6bfcea0e
3 changed files with 10 additions and 15 deletions

View File

@ -1410,13 +1410,13 @@ class ElectrumWindow(QMainWindow):
if addr_URL:
menu.addAction(_("View on block explorer"), lambda: webbrowser.open(addr_URL))
if any(addr not in self.wallet.frozen_addresses for addr in addrs):
if any(not self.wallet.is_frozen(addr) for addr in addrs):
menu.addAction(_("Freeze"), lambda: self.set_frozen_state(addrs, True))
if any(addr in self.wallet.frozen_addresses for addr in addrs):
if any(self.wallet.is_frozen(addr) for addr in addrs):
menu.addAction(_("Unfreeze"), lambda: self.set_frozen_state(addrs, False))
def can_send(addr):
return addr not in self.wallet.frozen_addresses and self.wallet.get_addr_balance(addr) != (0, 0)
return not self.wallet.is_frozen(addr) and sum(self.wallet.get_addr_balance(addr)[:2])
if any(can_send(addr) for addr in addrs):
menu.addAction(_("Send From"), lambda: self.send_from_addresses(addrs))
@ -1433,13 +1433,11 @@ class ElectrumWindow(QMainWindow):
return self.pay_from
else:
domain = self.wallet.get_account_addresses(self.current_account)
for i in self.wallet.frozen_addresses:
if i in domain: domain.remove(i)
return self.wallet.get_spendable_coins(domain)
def send_from_addresses(self, addrs):
self.set_pay_from( addrs )
self.set_pay_from(addrs)
self.tabs.setCurrentIndex(1)
self.update_fee(False)
@ -1581,7 +1579,7 @@ class ElectrumWindow(QMainWindow):
item.setFont(0, QFont(MONOSPACE_FONT))
item.setData(0, Qt.UserRole, address)
item.setData(0, Qt.UserRole+1, True) # label can be edited
if address in self.wallet.frozen_addresses:
if self.wallet.is_frozen(address):
item.setBackgroundColor(0, QColor('lightblue'))
if self.wallet.is_beyond_limit(address, account, is_change):
item.setBackgroundColor(0, QColor('red'))

View File

@ -265,7 +265,7 @@ class Commands:
return self.network.synchronous_get([ ('blockchain.address.get_history',[addr]) ])[0]
def listunspent(self):
l = copy.deepcopy(self.wallet.get_spendable_coins())
l = copy.deepcopy(self.wallet.get_spendable_coins(exclude_frozen = False))
for i in l: i["value"] = str(Decimal(i["value"])/100000000)
return l
@ -278,7 +278,7 @@ class Commands:
return {'address':r[0] }
def createrawtransaction(self, inputs, outputs):
coins = self.wallet.get_spendable_coins(None)
coins = self.wallet.get_spendable_coins(exclude_frozen = False)
tx_inputs = []
for i in inputs:
prevout_hash = i['txid']

View File

@ -562,10 +562,12 @@ class Abstract_Wallet(object):
return c, u, x
def get_spendable_coins(self, domain=None):
def get_spendable_coins(self, domain = None, exclude_frozen = True):
coins = []
if domain is None:
domain = self.addresses(True)
if exclude_frozen:
domain = set(domain) - self.frozen_addresses
for addr in domain:
c = self.get_addr_utxo(addr)
for txo, v in c.items():
@ -846,11 +848,6 @@ class Abstract_Wallet(object):
# get coins
if not coins:
if domain is None:
domain = self.addresses(True)
for i in self.frozen_addresses:
if i in domain:
domain.remove(i)
coins = self.get_spendable_coins(domain)
amount = sum(map(lambda x:x[2], outputs))