commit bd6bfcea0e020442e6809d145c6dae55a8f65f9c
parent 00ded10810be0e2c9119e3b54596f5d64d6e082c
Author: ThomasV <electrumdev@gmail.com>
Date: Sun, 31 May 2015 07:53:43 +0200
Merge pull request #1267 from kyuupichan/spendable_coins
get_spendable_coins and frozen addrs
Diffstat:
3 files changed, 10 insertions(+), 15 deletions(-)
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -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'))
diff --git a/lib/commands.py b/lib/commands.py
@@ -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']
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -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))