electrum

Electrum Bitcoin wallet
git clone https://git.parazyd.org/electrum
Log | Files | Refs | Submodules

commit bc3013caf0d3d6a35290e9cc9e51125b7d03d14c
parent 89ba1d7b0e63e78ba34013017f3ff9a4fe74fabb
Author: ThomasV <thomasv@gitorious>
Date:   Fri, 27 Feb 2015 21:13:17 +0100

fix exchange_rate plugin behavior when typing amounts

Diffstat:
Mgui/qt/main_window.py | 46+++++++++++++++++++++++-----------------------
Mplugins/exchange_rate.py | 3++-
2 files changed, 25 insertions(+), 24 deletions(-)

diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py @@ -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) diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py @@ -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()