fix exchange_rate plugin behavior when typing amounts

This commit is contained in:
ThomasV 2015-02-27 21:13:17 +01:00
parent 89ba1d7b0e
commit bc3013caf0
2 changed files with 25 additions and 24 deletions

View File

@ -1008,29 +1008,9 @@ class ElectrumWindow(QMainWindow):
self.amount_e.shortcut.connect(on_shortcut)
def text_edited(is_fee):
outputs = self.payto_e.get_outputs()
amount = self.amount_e.get_amount()
fee = self.fee_e.get_amount() if is_fee else None
if amount is None:
self.fee_e.setAmount(None)
self.not_enough_funds = False
else:
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 = False
except NotEnoughFunds:
self.not_enough_funds = True
if not is_fee:
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))
self.amount_e.textEdited.connect(lambda:text_edited(False))
self.fee_e.textEdited.connect(lambda:text_edited(True))
self.payto_e.textChanged.connect(lambda: self.update_fee(False))
self.amount_e.textEdited.connect(lambda: self.update_fee(False))
self.fee_e.textEdited.connect(lambda: self.update_fee(True))
def entry_changed():
if not self.not_enough_funds:
@ -1053,6 +1033,26 @@ class ElectrumWindow(QMainWindow):
run_hook('create_send_tab', grid)
return w
def update_fee(self, is_fee):
outputs = self.payto_e.get_outputs()
amount = self.amount_e.get_amount()
fee = self.fee_e.get_amount() if is_fee else None
if amount is None:
self.fee_e.setAmount(None)
self.not_enough_funds = False
else:
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 = False
except NotEnoughFunds:
self.not_enough_funds = True
if not is_fee:
fee = None if self.not_enough_funds else self.wallet.get_tx_fee(tx)
self.fee_e.setAmount(fee)
def update_fee_edit(self):
b = self.config.get('can_edit_fees', False)
self.fee_e.setVisible(b)

View File

@ -742,12 +742,13 @@ class Plugin(BasePlugin):
fiat_amount = Decimal(str(self.fiat_e.text()))
except:
self.btc_e.setText("")
self.win.fee_e.setText("")
return
exchange_rate = self.exchanger.exchange(Decimal("1.0"), self.fiat_unit())
if exchange_rate is not None:
btc_amount = fiat_amount/exchange_rate
self.btc_e.setAmount(int(btc_amount*Decimal(100000000)))
self.btc_e.textEdited.emit("")
self.win.update_fee(False)
self.fiat_e.textEdited.connect(fiat_changed)
def btc_changed():
btc_amount = self.btc_e.get_amount()