electrum

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

commit 437fdf4760c1a1b6e322ed71fb464bd615ac9dbe
parent bf8bbfb2c0e751e58ec0cd99d6304eadfb56fc1f
Author: ThomasV <thomasv1@gmx.de>
Date:   Tue, 25 Mar 2014 18:44:23 +0100

Merge pull request #623 from dpdtex/master

Add ability to specify fiat amount when sending bitcoin
Diffstat:
Mgui/qt/main_window.py | 1+
Mplugins/exchange_rate.py | 79+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py @@ -724,6 +724,7 @@ class ElectrumWindow(QMainWindow): + _('The amount of fee can be decided freely by the sender. However, transactions with low fees take more time to be processed.') + '\n\n'\ + _('A suggested fee is automatically added to this field. You may override it. The suggested fee increases with the size of the transaction.')), 5, 3) + run_hook('exchange_rate_button', grid) self.send_button = EnterButton(_("Send"), self.do_send) grid.addWidget(self.send_button, 6, 1) diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py @@ -11,6 +11,7 @@ from decimal import Decimal from electrum.plugins import BasePlugin from electrum.i18n import _ from electrum_gui.qt.util import * +from electrum_gui.qt.amountedit import AmountEdit EXCHANGES = ["BitcoinAverage", @@ -335,6 +336,11 @@ class Plugin(BasePlugin): def toggle(self): out = BasePlugin.toggle(self) self.win.update_status() + if self.config.get('use_exchange_rate'): + try: + self.fiat_button + except: + self.gui.main_window.show_message(_("To see fiat amount when sending bitcoin, please restart Electrum to activate the new GUI settings.")) return out @@ -396,6 +402,7 @@ class Plugin(BasePlugin): def settings_dialog(self): d = QDialog() + d.setWindowTitle("Settings") layout = QGridLayout(d) layout.addWidget(QLabel(_('Exchange rate API: ')), 0, 0) layout.addWidget(QLabel(_('Currency: ')), 1, 0) @@ -423,6 +430,12 @@ class Plugin(BasePlugin): hist_checkbox.setChecked(False) hist_checkbox.setEnabled(False) self.win.update_status() + try: + self.fiat_button + except: + pass + else: + self.fiat_button.setText(cur_request) def disable_check(): hist_checkbox.setChecked(False) @@ -511,3 +524,69 @@ class Plugin(BasePlugin): + def fiat_unit(self): + r = {} + self.set_quote_text(100000000, r) + quote = r.get(0) + if quote: + return quote[-3:] + else: + return "???" + + def fiat_dialog(self): + if not self.config.get('use_exchange_rate'): + self.gui.main_window.show_message(_("To use this feature, first enable the exchange rate plugin.")) + return + + if not self.gui.main_window.network.is_connected(): + self.gui.main_window.show_message(_("To use this feature, you must have a network connection.")) + return + + quote_currency = self.config.get("currency", "EUR") + + d = QDialog(self.gui.main_window) + d.setWindowTitle("Fiat") + vbox = QVBoxLayout(d) + text = "Amount to Send in " + quote_currency + vbox.addWidget(QLabel(_(text)+':')) + + grid = QGridLayout() + fiat_e = AmountEdit(self.fiat_unit) + grid.addWidget(fiat_e, 1, 0) + + r = {} + self.set_quote_text(100000000, r) + quote = r.get(0) + if quote: + text = " 1 BTC=%s"%quote + grid.addWidget(QLabel(_(text)), 4, 0, 3, 0) + + vbox.addLayout(grid) + vbox.addLayout(ok_cancel_buttons(d)) + + if not d.exec_(): + return + + fiat = str(fiat_e.text()) + + if str(fiat) == "" or str(fiat) == ".": + fiat = "0" + + r = {} + self.set_quote_text(100000000, r) + quote = r.get(0) + if not quote: + self.gui.main_window.show_message(_("Exchange rate not available. Please check your network connection.")) + return + else: + quote = quote[:-4] + btcamount = Decimal(fiat) / Decimal(quote) + if str(self.gui.main_window.base_unit()) == "mBTC": + btcamount = btcamount * 1000 + quote = "%.8f"%btcamount + self.gui.main_window.amount_e.setText( quote ) + + def exchange_rate_button(self, grid): + quote_currency = self.config.get("currency", "EUR") + self.fiat_button = EnterButton(_(quote_currency), self.fiat_dialog) + grid.addWidget(self.fiat_button, 4, 3, Qt.AlignHCenter)