commit 46c2de3979936067b7d88ce48cf5a33b9f3dd2ff
parent 52d4437d508142f9eabe69d7e19bb8c8dc107985
Author: ThomasV <thomasv@gitorious>
Date: Wed, 11 Jun 2014 14:44:26 +0200
separate AmountEdit and BTCAmountEdit classes, for exchange rate plugin
Diffstat:
3 files changed, 50 insertions(+), 42 deletions(-)
diff --git a/gui/qt/amountedit.py b/gui/qt/amountedit.py
@@ -13,6 +13,44 @@ class MyLineEdit(QLineEdit):
class AmountEdit(MyLineEdit):
+ def __init__(self, base_unit, is_int = False, parent=None):
+ QLineEdit.__init__(self, parent)
+ self.base_unit = base_unit
+ self.textChanged.connect(self.numbify)
+ self.is_int = is_int
+ self.is_shortcut = False
+
+ def numbify(self):
+ text = unicode(self.text()).strip()
+ if text == '!':
+ self.is_shortcut = True
+ pos = self.cursorPosition()
+ chars = '0123456789'
+ if not self.is_int: chars +='.'
+ s = ''.join([i for i in text if i in chars])
+ if not self.is_int:
+ if '.' in s:
+ p = s.find('.')
+ s = s.replace('.','')
+ s = s[:p] + '.' + s[p:p+8]
+ self.setText(s)
+ self.setCursorPosition(pos)
+
+ def paintEvent(self, event):
+ QLineEdit.paintEvent(self, event)
+ if self.base_unit:
+ panel = QStyleOptionFrameV2()
+ self.initStyleOption(panel)
+ textRect = self.style().subElementRect(QStyle.SE_LineEditContents, panel, self)
+ textRect.adjust(2, 0, -10, 0)
+ painter = QPainter(self)
+ painter.setPen(self.palette().brush(QPalette.Disabled, QPalette.Text).color())
+ painter.drawText(textRect, Qt.AlignRight | Qt.AlignVCenter, self.base_unit())
+
+
+
+class BTCAmountEdit(AmountEdit):
+
def __init__(self, decimal_point, is_int = False, parent=None):
QLineEdit.__init__(self, parent)
self.decimal_point = decimal_point
@@ -37,32 +75,3 @@ class AmountEdit(MyLineEdit):
x = amount / Decimal(p)
self.setText(str(x))
- def paintEvent(self, event):
- QLineEdit.paintEvent(self, event)
- if self.decimal_point:
- panel = QStyleOptionFrameV2()
- self.initStyleOption(panel)
- textRect = self.style().subElementRect(QStyle.SE_LineEditContents, panel, self)
- textRect.adjust(2, 0, -10, 0)
- painter = QPainter(self)
- painter.setPen(self.palette().brush(QPalette.Disabled, QPalette.Text).color())
- painter.drawText(textRect, Qt.AlignRight | Qt.AlignVCenter, self.base_unit())
-
-
- def numbify(self):
- text = unicode(self.text()).strip()
- if text == '!':
- self.is_shortcut = True
- pos = self.cursorPosition()
- chars = '0123456789'
- if not self.is_int: chars +='.'
- s = ''.join([i for i in text if i in chars])
- if not self.is_int:
- if '.' in s:
- p = s.find('.')
- s = s.replace('.','')
- s = s[:p] + '.' + s[p:p+8]
- self.setText(s)
- self.setCursorPosition(pos)
-
-
diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
@@ -44,7 +44,7 @@ from electrum import SimpleConfig, Wallet, WalletStorage
from electrum import bmp, pyqrnative
-from amountedit import AmountEdit, MyLineEdit
+from amountedit import BTCAmountEdit, MyLineEdit
from network_dialog import NetworkDialog
from qrcodewidget import QRCodeWidget
@@ -648,7 +648,7 @@ class ElectrumWindow(QMainWindow):
grid.setRowStretch(8, 1)
from paytoedit import PayToEdit
- self.amount_e = AmountEdit(self.get_decimal_point)
+ self.amount_e = BTCAmountEdit(self.get_decimal_point)
self.payto_e = PayToEdit(self.amount_e)
self.payto_help = HelpButton(_('Recipient of the funds.') + '\n\n' + _('You may enter a Bitcoin address, a label from your list of contacts (a list of completions will be proposed), or an alias (email-like address that forwards to a Bitcoin address)'))
grid.addWidget(QLabel(_('Pay to')), 1, 0)
@@ -686,7 +686,7 @@ class ElectrumWindow(QMainWindow):
grid.addWidget(self.amount_e, 4, 1, 1, 2)
grid.addWidget(self.amount_help, 4, 3)
- self.fee_e = AmountEdit(self.get_decimal_point)
+ self.fee_e = BTCAmountEdit(self.get_decimal_point)
grid.addWidget(QLabel(_('Fee')), 5, 0)
grid.addWidget(self.fee_e, 5, 1, 1, 2)
grid.addWidget(HelpButton(
@@ -2256,7 +2256,7 @@ class ElectrumWindow(QMainWindow):
fee_label = QLabel(_('Transaction fee') + ':')
grid.addWidget(fee_label, 2, 0)
- fee_e = AmountEdit(self.get_decimal_point)
+ fee_e = BTCAmountEdit(self.get_decimal_point)
fee_e.setText(self.format_amount(self.wallet.fee).strip())
grid.addWidget(fee_e, 2, 1)
msg = _('Fee per kilobyte of transaction.') + ' ' \
diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py
@@ -321,7 +321,7 @@ class Plugin(BasePlugin):
def __init__(self,a,b):
BasePlugin.__init__(self,a,b)
- self.currencies = [self.config.get('currency', "EUR")]
+ self.currencies = [self.fiat_unit()]
self.exchanges = [self.config.get('use_exchange', "Blockchain")]
def init(self):
@@ -365,7 +365,7 @@ class Plugin(BasePlugin):
r2[0] = text
def create_fiat_balance_text(self, btc_balance):
- quote_currency = self.config.get("currency", "EUR")
+ quote_currency = self.fiat_unit()
self.exchanger.use_exchange = self.config.get("use_exchange", "Blockchain")
cur_rate = self.exchanger.exchange(Decimal("1.0"), quote_currency)
if cur_rate is None:
@@ -427,7 +427,7 @@ class Plugin(BasePlugin):
except Exception:
return
elif cur_exchange == "BitcoinVenezuela":
- cur_currency = self.config.get('currency', "EUR")
+ cur_currency = self.fiat_unit()
if cur_currency == "VEF":
try:
resp_hist = self.exchanger.get_json('api.bitcoinvenezuela.com', "/historical/index.php?coin=BTC")['VEF_BTC']
@@ -517,7 +517,7 @@ class Plugin(BasePlugin):
cur_request = str(self.currencies[x])
except Exception:
return
- if cur_request != self.config.get('currency', "EUR"):
+ if cur_request != self.fiat_unit():
self.config.set_key('currency', cur_request, True)
cur_exchange = self.config.get('use_exchange', "Blockchain")
if cur_request == "USD" and (cur_exchange == "CoinDesk" or cur_exchange == "Winkdex"):
@@ -548,7 +548,7 @@ class Plugin(BasePlugin):
self.currencies = []
combo.clear()
self.exchanger.query_rates.set()
- cur_currency = self.config.get('currency', "EUR")
+ cur_currency = self.fiat_unit()
if cur_request == "CoinDesk" or cur_request == "Winkdex":
if cur_currency == "USD":
hist_checkbox.setEnabled(True)
@@ -585,7 +585,7 @@ class Plugin(BasePlugin):
hist_checkbox.setEnabled(False)
def set_currencies(combo):
- current_currency = self.config.get('currency', "EUR")
+ current_currency = self.fiat_unit()
try:
combo.clear()
except Exception:
@@ -632,8 +632,7 @@ class Plugin(BasePlugin):
return False
def fiat_unit(self):
- quote_currency = self.config.get("currency", "???")
- return quote_currency
+ return self.config.get("currency", "EUR")
def fiat_dialog(self):
if not self.config.get('use_exchange_rate'):
@@ -685,6 +684,6 @@ class Plugin(BasePlugin):
self.gui.main_window.amount_e.setText( quote )
def exchange_rate_button(self, grid):
- quote_currency = self.config.get("currency", "EUR")
+ quote_currency = self.fiat_unit()
self.fiat_button = EnterButton(_(quote_currency), self.fiat_dialog)
grid.addWidget(self.fiat_button, 4, 3, Qt.AlignHCenter)