commit 3628f6430e102040cf097a1f6f2f56544f110a60
parent ce0a33cb679f4e61a7ffe93cf12f4f4d68b361c2
Author: kazcw <keziahw@gmail.com>
Date: Thu, 14 Nov 2013 23:07:25 -0500
clean up sending address input
in particular fee calculation was off for send-from
Diffstat:
2 files changed, 19 insertions(+), 31 deletions(-)
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -810,8 +810,8 @@ class ElectrumWindow(QMainWindow):
if self.amount_e.is_shortcut:
self.amount_e.is_shortcut = False
- c, u = self.wallet.get_account_balance(self.current_account)
- inputs, total, fee = self.wallet.choose_tx_inputs_from_account( c + u, 0, self.current_account)
+ sendable = self.get_sendable_balance()
+ inputs, total, fee = self.wallet.choose_tx_inputs( sendable, 0, self.get_payment_sources())
fee = self.wallet.estimated_fee(inputs)
amount = total - fee
self.amount_e.setText( self.format_amount(amount) )
@@ -824,7 +824,7 @@ class ElectrumWindow(QMainWindow):
if not is_fee: fee = None
if amount is None:
return
- inputs, total, fee = self.wallet.choose_tx_inputs_from_account( amount, fee, self.current_account )
+ inputs, total, fee = self.wallet.choose_tx_inputs(amount, 0, self.get_payment_sources())
if not is_fee:
self.fee_e.setText( self.format_amount( fee ) )
if inputs:
@@ -909,10 +909,9 @@ class ElectrumWindow(QMainWindow):
@protected
def send_tx(self, to_address, amount, fee, label, password):
-
try:
- tx = self.wallet.mktx_from_account( [(to_address, amount)],
- password, fee, self.current_account, self.pay_from)
+ tx = self.wallet.mktx( [(to_address, amount)], password, fee,
+ domain=self.get_payment_sources())
except Exception as e:
traceback.print_exc(file=sys.stdout)
self.show_message(str(e))
@@ -1176,21 +1175,27 @@ class ElectrumWindow(QMainWindow):
menu.addAction(_("Unprioritize"),
lambda: self.set_addrs_prioritized(addrs, False))
- total = 0
- for item in self.receive_list.selectedItems():
- c, u = self.wallet.get_addr_balance(unicode(item.text(0)))
- total += c + u
- balance = " [%s]" % self.format_amount(total)
+ balance = " [%s]" % self.format_amount(self.get_sendable_balance())
menu.addAction(_("Send From")+balance,
- lambda: self.send_from_addresses(self.receive_list))
+ lambda: self.send_from_addresses(addrs))
run_hook('receive_menu', menu)
menu.exec_(self.receive_list.viewport().mapToGlobal(position))
+ def get_sendable_balance(self):
+ return sum(sum(self.wallet.get_addr_balance(a)) for a in self.get_payment_sources())
+
+
+ def get_payment_sources(self):
+ if self.pay_from:
+ return self.pay_from
+ else:
+ return self.wallet.get_account_addresses(self.current_account)
+
+
def send_from_addresses(self, addrs):
- for item in addrs.selectedItems():
- self.pay_from.append(unicode(item.text(0)))
+ self.pay_from = addrs[:]
self.tabs.setCurrentIndex(1)
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -1138,12 +1138,6 @@ class Wallet:
return [x[1] for x in coins]
-
- def choose_tx_inputs_from_account( self, amount, fixed_fee, account ):
- domain = self.get_account_addresses(account) if account else None
- return self.choose_tx_inputs( amount, fixed_fee, domain )
-
-
def choose_tx_inputs( self, amount, fixed_fee, domain = None ):
""" todo: minimize tx size """
total = 0
@@ -1357,17 +1351,6 @@ class Wallet:
return Transaction.from_io(inputs, outputs)
- def mktx_from_account(self, outputs, password, fee=None, account=None,
- pay_from=None):
- if pay_from:
- domain = pay_from
- elif account:
- domain = self.get_account_addresses(account)
- else:
- domain = None
- return self.mktx(outputs, password, fee, change_addr=None, domain=domain)
-
-
def mktx(self, outputs, password, fee=None, change_addr=None, domain= None ):
tx = self.make_unsigned_transaction(outputs, fee, change_addr, domain)
keypairs = {}