add NotEnoughFunds exception
This commit is contained in:
parent
5adb10e4d2
commit
01cf04079f
10
gui/gtk.py
10
gui/gtk.py
|
@ -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
|
||||
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:
|
||||
if tx:
|
||||
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)
|
||||
|
|
|
@ -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)]
|
||||
try:
|
||||
tx = self.wallet.make_unsigned_transaction(outputs, fee, coins = self.get_coins())
|
||||
self.not_enough_funds = (tx is None)
|
||||
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))
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue