add NotEnoughFunds exception

This commit is contained in:
ThomasV 2014-11-20 19:10:43 +01:00
parent 5adb10e4d2
commit 01cf04079f
4 changed files with 20 additions and 13 deletions

View File

@ -680,19 +680,22 @@ class ElectrumWindow:
self.user_fee = False
def entry_changed( entry, is_fee ):
self.funds_error = False
amount = numbify(amount_entry)
fee = numbify(fee_entry)
if not is_fee: fee = None
if amount is None:
return
tx = self.wallet.make_unsigned_transaction([('op_return', 'dummy_tx', amount)], fee)
if not is_fee:
if tx:
try:
tx = self.wallet.make_unsigned_transaction([('op_return', 'dummy_tx', amount)], fee)
self.funds_error = False
except NotEnoughFunds:
self.funds_error = True
if not self.funds_error:
if not is_fee:
fee = tx.get_fee()
fee_entry.set_text( str( Decimal( fee ) / 100000000 ) )
self.fee_box.show()
if tx:
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#000000"))
fee_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#000000"))
send_button.set_sensitive(True)
@ -700,7 +703,6 @@ class ElectrumWindow:
send_button.set_sensitive(False)
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#cc0000"))
fee_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#cc0000"))
self.funds_error = True
amount_entry.connect('changed', entry_changed, False)
fee_entry.connect('changed', entry_changed, True)

View File

@ -35,7 +35,7 @@ from electrum.plugins import run_hook
import icons_rc
from electrum.util import format_satoshis
from electrum.util import format_satoshis, NotEnoughFunds
from electrum import Transaction
from electrum import mnemonic
from electrum import util, bitcoin, commands, Interface, Wallet
@ -953,10 +953,13 @@ class ElectrumWindow(QMainWindow):
if not outputs:
addr = self.payto_e.payto_address if self.payto_e.payto_address else self.dummy_address
outputs = [('address', addr, amount)]
tx = self.wallet.make_unsigned_transaction(outputs, fee, coins = self.get_coins())
self.not_enough_funds = (tx is None)
try:
tx = self.wallet.make_unsigned_transaction(outputs, fee, coins = self.get_coins())
self.not_enough_funds = False
except NotEnoughFunds:
self.not_enough_funds = True
if not is_fee:
fee = self.wallet.get_tx_fee(tx) if tx else None
fee = None if self.not_enough_funds else self.wallet.get_tx_fee(tx)
self.fee_e.setAmount(fee)
self.payto_e.textChanged.connect(lambda:text_edited(False))

View File

@ -4,6 +4,7 @@ import shutil
from datetime import datetime
is_verbose = False
class NotEnoughFunds(Exception): pass
class MyEncoder(json.JSONEncoder):
def default(self, obj):

View File

@ -27,7 +27,7 @@ import math
import json
import copy
from util import print_msg, print_error
from util import print_msg, print_error, NotEnoughFunds
from bitcoin import *
from account import *
@ -712,8 +712,9 @@ class Abstract_Wallet(object):
fee = fixed_fee if fixed_fee is not None else self.estimated_fee(tx)
if total >= amount + fee: break
else:
print_error("Not enough funds", total, amount, fee)
return None
raise NotEnoughFunds()
#print_error("Not enough funds", total, amount, fee)
#return None
# change address
if not change_addr: