mirror of
https://github.com/LBRYFoundation/LBRY-Vault.git
synced 2025-08-23 17:47:31 +00:00
add NotEnoughFunds exception
This commit is contained in:
parent
5adb10e4d2
commit
01cf04079f
4 changed files with 20 additions and 13 deletions
14
gui/gtk.py
14
gui/gtk.py
|
@ -680,19 +680,22 @@ class ElectrumWindow:
|
||||||
self.user_fee = False
|
self.user_fee = False
|
||||||
|
|
||||||
def entry_changed( entry, is_fee ):
|
def entry_changed( entry, is_fee ):
|
||||||
self.funds_error = False
|
|
||||||
amount = numbify(amount_entry)
|
amount = numbify(amount_entry)
|
||||||
fee = numbify(fee_entry)
|
fee = numbify(fee_entry)
|
||||||
if not is_fee: fee = None
|
if not is_fee: fee = None
|
||||||
if amount is None:
|
if amount is None:
|
||||||
return
|
return
|
||||||
tx = self.wallet.make_unsigned_transaction([('op_return', 'dummy_tx', amount)], fee)
|
try:
|
||||||
if not is_fee:
|
tx = self.wallet.make_unsigned_transaction([('op_return', 'dummy_tx', amount)], fee)
|
||||||
if tx:
|
self.funds_error = False
|
||||||
|
except NotEnoughFunds:
|
||||||
|
self.funds_error = True
|
||||||
|
|
||||||
|
if not self.funds_error:
|
||||||
|
if not is_fee:
|
||||||
fee = tx.get_fee()
|
fee = tx.get_fee()
|
||||||
fee_entry.set_text( str( Decimal( fee ) / 100000000 ) )
|
fee_entry.set_text( str( Decimal( fee ) / 100000000 ) )
|
||||||
self.fee_box.show()
|
self.fee_box.show()
|
||||||
if tx:
|
|
||||||
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#000000"))
|
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#000000"))
|
||||||
fee_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)
|
send_button.set_sensitive(True)
|
||||||
|
@ -700,7 +703,6 @@ class ElectrumWindow:
|
||||||
send_button.set_sensitive(False)
|
send_button.set_sensitive(False)
|
||||||
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#cc0000"))
|
amount_entry.modify_text(Gtk.StateType.NORMAL, Gdk.color_parse("#cc0000"))
|
||||||
fee_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)
|
amount_entry.connect('changed', entry_changed, False)
|
||||||
fee_entry.connect('changed', entry_changed, True)
|
fee_entry.connect('changed', entry_changed, True)
|
||||||
|
|
|
@ -35,7 +35,7 @@ from electrum.plugins import run_hook
|
||||||
|
|
||||||
import icons_rc
|
import icons_rc
|
||||||
|
|
||||||
from electrum.util import format_satoshis
|
from electrum.util import format_satoshis, NotEnoughFunds
|
||||||
from electrum import Transaction
|
from electrum import Transaction
|
||||||
from electrum import mnemonic
|
from electrum import mnemonic
|
||||||
from electrum import util, bitcoin, commands, Interface, Wallet
|
from electrum import util, bitcoin, commands, Interface, Wallet
|
||||||
|
@ -953,10 +953,13 @@ class ElectrumWindow(QMainWindow):
|
||||||
if not outputs:
|
if not outputs:
|
||||||
addr = self.payto_e.payto_address if self.payto_e.payto_address else self.dummy_address
|
addr = self.payto_e.payto_address if self.payto_e.payto_address else self.dummy_address
|
||||||
outputs = [('address', addr, amount)]
|
outputs = [('address', addr, amount)]
|
||||||
tx = self.wallet.make_unsigned_transaction(outputs, fee, coins = self.get_coins())
|
try:
|
||||||
self.not_enough_funds = (tx is None)
|
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:
|
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.fee_e.setAmount(fee)
|
||||||
|
|
||||||
self.payto_e.textChanged.connect(lambda:text_edited(False))
|
self.payto_e.textChanged.connect(lambda:text_edited(False))
|
||||||
|
|
|
@ -4,6 +4,7 @@ import shutil
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
is_verbose = False
|
is_verbose = False
|
||||||
|
|
||||||
|
class NotEnoughFunds(Exception): pass
|
||||||
|
|
||||||
class MyEncoder(json.JSONEncoder):
|
class MyEncoder(json.JSONEncoder):
|
||||||
def default(self, obj):
|
def default(self, obj):
|
||||||
|
|
|
@ -27,7 +27,7 @@ import math
|
||||||
import json
|
import json
|
||||||
import copy
|
import copy
|
||||||
|
|
||||||
from util import print_msg, print_error
|
from util import print_msg, print_error, NotEnoughFunds
|
||||||
|
|
||||||
from bitcoin import *
|
from bitcoin import *
|
||||||
from account 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)
|
fee = fixed_fee if fixed_fee is not None else self.estimated_fee(tx)
|
||||||
if total >= amount + fee: break
|
if total >= amount + fee: break
|
||||||
else:
|
else:
|
||||||
print_error("Not enough funds", total, amount, fee)
|
raise NotEnoughFunds()
|
||||||
return None
|
#print_error("Not enough funds", total, amount, fee)
|
||||||
|
#return None
|
||||||
|
|
||||||
# change address
|
# change address
|
||||||
if not change_addr:
|
if not change_addr:
|
||||||
|
|
Loading…
Add table
Reference in a new issue