tseparate AmountEdit and BTCAmountEdit classes, for exchange rate plugin - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 46c2de3979936067b7d88ce48cf5a33b9f3dd2ff
 (DIR) parent 52d4437d508142f9eabe69d7e19bb8c8dc107985
 (HTM) Author: ThomasV <thomasv@gitorious>
       Date:   Wed, 11 Jun 2014 14:44:26 +0200
       
       separate AmountEdit and BTCAmountEdit classes, for exchange rate plugin
       
       Diffstat:
         M gui/qt/amountedit.py                |      67 ++++++++++++++++++-------------
         M gui/qt/main_window.py               |       8 ++++----
         M plugins/exchange_rate.py            |      17 ++++++++---------
       
       3 files changed, 50 insertions(+), 42 deletions(-)
       ---
 (DIR) diff --git a/gui/qt/amountedit.py b/gui/qt/amountedit.py
       t@@ -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
       t@@ -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)
       -
       -
 (DIR) diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -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
        
       t@@ -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)
       t@@ -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(
       t@@ -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.') + ' ' \
 (DIR) diff --git a/plugins/exchange_rate.py b/plugins/exchange_rate.py
       t@@ -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):
       t@@ -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:
       t@@ -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']
       t@@ -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"):
       t@@ -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)
       t@@ -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:
       t@@ -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'):
       t@@ -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)