URI: 
       tkeyboard shortcut to send all the coins in a wallet, with fee - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit ec901f54a4e973ab23e2e0a21088c485d21c43c8
   DIR parent 84101a446b3b508c04ea5a03968d79c232a745e5
  HTML Author: thomasv <thomasv@gitorious>
       Date:   Fri,  5 Apr 2013 18:03:52 +0200
       
       keyboard shortcut to send all the coins in a wallet, with fee
       
       Diffstat:
         M gui/gui_classic.py                  |      13 ++++++++++++-
         M lib/wallet.py                       |      14 +++++++-------
       
       2 files changed, 19 insertions(+), 8 deletions(-)
       ---
   DIR diff --git a/gui/gui_classic.py b/gui/gui_classic.py
       t@@ -687,7 +687,8 @@ class ElectrumWindow(QMainWindow):
                grid.addWidget(self.amount_e, 3, 1, 1, 2)
                grid.addWidget(HelpButton(
                        _('Amount to be sent.') + '\n\n' \
       -                    + _('The amount will be displayed in red if you do not have enough funds in your wallet. Note that if you have frozen some of your addresses, the available funds will be lower than your total balance.')), 3, 3)
       +                    + _('The amount will be displayed in red if you do not have enough funds in your wallet. Note that if you have frozen some of your addresses, the available funds will be lower than your total balance.')
       +                    + _('Keyboard shortcut: type "!" to send all your coins.')), 3, 3)
                
                self.fee_e = QLineEdit()
                grid.addWidget(QLabel(_('Fee')), 4, 0)
       t@@ -721,6 +722,16 @@ class ElectrumWindow(QMainWindow):
        
                def entry_changed( is_fee ):
                    self.funds_error = False
       +
       +            if self.amount_e.text() == '!':
       +                c, u = self.wallet.get_balance()
       +                inputs, total, fee = self.wallet.choose_tx_inputs( c + u, 0 )
       +                fee = self.wallet.estimated_fee(inputs)
       +                amount = c + u - fee
       +                self.amount_e.setText( str( Decimal( amount ) / 100000000 ) )
       +                self.fee_e.setText( str( Decimal( fee ) / 100000000 ) )
       +                return
       +                
                    amount = numbify(self.amount_e)
                    fee = numbify(self.fee_e)
                    if not is_fee: fee = None
   DIR diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -555,14 +555,8 @@ class Wallet:
                    addr = item.get('address')
                    v = item.get('value')
                    total += v
       -
                    inputs.append( item )
       -            if fixed_fee is None:
       -                estimated_size =  len(inputs) * 180 + 80     # this assumes non-compressed keys
       -                fee = self.fee * int(round(estimated_size/1024.))
       -                if fee == 0: fee = self.fee
       -            else:
       -                fee = fixed_fee
       +            fee = self.estimated_fee(inputs) if fixed_fee is None else fixed_fee
                    if total >= amount + fee: break
                else:
                    inputs = []
       t@@ -570,6 +564,12 @@ class Wallet:
                return inputs, total, fee
        
        
       +    def estimated_fee(self, inputs):
       +        estimated_size =  len(inputs) * 180 + 80     # this assumes non-compressed keys
       +        fee = self.fee * int(round(estimated_size/1024.))
       +        if fee == 0: fee = self.fee
       +        return fee
       +
        
            def add_tx_change( self, outputs, amount, fee, total, change_addr=None ):
                change_amount = total - ( amount + fee )