diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py index 0145088d..1a52d984 100644 --- a/gui/qt/main_window.py +++ b/gui/qt/main_window.py @@ -757,8 +757,9 @@ class ElectrumWindow(QMainWindow): if self.amount_e.is_shortcut: self.amount_e.is_shortcut = False sendable = self.get_sendable_balance() - inputs, total, fee = self.wallet.choose_tx_inputs( sendable, 0, self.get_payment_sources()) - fee = self.wallet.estimated_fee(inputs) + # there is only one output because we are completely spending inputs + inputs, total, fee = self.wallet.choose_tx_inputs( sendable, 0, 1, self.get_payment_sources()) + fee = self.wallet.estimated_fee(inputs, 1) amount = total - fee self.amount_e.setText( self.format_amount(amount) ) self.fee_e.setText( self.format_amount( fee ) ) @@ -770,7 +771,8 @@ class ElectrumWindow(QMainWindow): if not is_fee: fee = None if amount is None: return - inputs, total, fee = self.wallet.choose_tx_inputs(amount, fee, self.get_payment_sources()) + # assume that there will be 2 outputs (one for change) + inputs, total, fee = self.wallet.choose_tx_inputs(amount, fee, 2, self.get_payment_sources()) if not is_fee: self.fee_e.setText( self.format_amount( fee ) ) if inputs: diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py index 9f850ff1..4e57d17b 100644 --- a/plugins/exchange_rate.py +++ b/plugins/exchange_rate.py @@ -32,6 +32,7 @@ class Exchanger(threading.Thread): self.parent = parent self.quote_currencies = None self.lock = threading.Lock() + self.query_rates = threading.Event() self.use_exchange = self.parent.config.get('use_exchange', "Blockchain") self.parent.exchanges = EXCHANGES self.parent.currencies = ["EUR","GBP","USD"] @@ -94,8 +95,9 @@ class Exchanger(threading.Thread): def run(self): self.is_running = True while self.is_running: + self.query_rates.clear() self.update_rate() - time.sleep(150) + self.query_rates.wait(150) def update_cd(self): @@ -379,7 +381,10 @@ class Plugin(BasePlugin): ok_button = QPushButton(_("OK")) def on_change(x): - cur_request = str(self.currencies[x]) + try: + cur_request = str(self.currencies[x]) + except Exception: + return if cur_request != self.config.get('currency', "EUR"): self.config.set_key('currency', cur_request, True) if cur_request == "USD" and self.config.get('use_exchange', "Blockchain") == "CoinDesk": @@ -397,7 +402,9 @@ class Plugin(BasePlugin): cur_request = str(self.exchanges[x]) if cur_request != self.config.get('use_exchange', "Blockchain"): self.config.set_key('use_exchange', cur_request, True) - self.exchanger.update_rate() + self.currencies = [] + combo.clear() + self.exchanger.query_rates.set() if cur_request == "CoinDesk": if self.config.get('currency', "EUR") == "USD": hist_checkbox.setEnabled(True) @@ -459,7 +466,7 @@ class Plugin(BasePlugin): combo.currentIndexChanged.connect(on_change) combo_ex.currentIndexChanged.connect(on_change_ex) hist_checkbox.stateChanged.connect(on_change_hist) - combo.connect(d, SIGNAL('refresh_currencies_combo()'), lambda: set_currencies(combo)) + combo.connect(self.win, SIGNAL('refresh_currencies_combo()'), lambda: set_currencies(combo)) combo_ex.connect(d, SIGNAL('refresh_exchanges_combo()'), lambda: set_exchanges(combo_ex)) ok_button.clicked.connect(lambda: ok_clicked()) layout.addWidget(combo,1,1)