URI: 
       tclean up sending address input - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 3628f6430e102040cf097a1f6f2f56544f110a60
   DIR parent ce0a33cb679f4e61a7ffe93cf12f4f4d68b361c2
  HTML 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:
         M gui/qt/main_window.py               |      33 ++++++++++++++++++-------------
         M lib/wallet.py                       |      17 -----------------
       
       2 files changed, 19 insertions(+), 31 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -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) )
       t@@ -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:
       t@@ -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))
       t@@ -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)
        
        
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -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
       t@@ -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 = {}