clean up sending address input
authorkazcw <keziahw@gmail.com>
Fri, 15 Nov 2013 04:07:25 +0000 (23:07 -0500)
committerThomasV <thomasv@gitorious>
Sat, 16 Nov 2013 09:52:44 +0000 (10:52 +0100)
in particular fee calculation was off for send-from

gui/qt/main_window.py
lib/wallet.py

index 09da1d6..1536b98 100644 (file)
@@ -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)
 
 
index fc79574..fc9cc56 100644 (file)
@@ -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 = {}