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:
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)