electrum

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

commit 81507780b93396cd3fe0571d7066d4ffcb36173a
parent 8efc081ded281136bab4f7d9cc9b7fb76993dc47
Author: Amir Taaki <genjix@riseup.net>
Date:   Mon,  2 Jul 2012 20:14:10 +0200

Change balance text to show conversion amount when text is entered into the amount field.

Diffstat:
Mlib/gui_lite.py | 61+++++++++++++++++++++++++++++++++++++++++++++++++++----------
1 file changed, 51 insertions(+), 10 deletions(-)

diff --git a/lib/gui_lite.py b/lib/gui_lite.py @@ -2,6 +2,7 @@ from PyQt4.QtCore import * from PyQt4.QtGui import * from decimal import Decimal as D from i18n import _ +import decimal import exchange_rate import random import re @@ -102,7 +103,7 @@ class MiniWindow(QDialog): # Use QCompleter self.address_input = TextedLineEdit(_("Enter a Bitcoin address...")) self.address_input.setObjectName("address_input") - self.connect(self.address_input, SIGNAL("textChanged(QString)"), + self.connect(self.address_input, SIGNAL("textEdited(QString)"), self.address_field_changed) metrics = QFontMetrics(qApp.font()) self.address_input.setMinimumWidth( @@ -125,6 +126,9 @@ class MiniWindow(QDialog): self.amount_validator.setDecimals(8) self.amount_input.setValidator(self.amount_validator) + self.connect(self.amount_input, SIGNAL("textChanged(QString)"), + self.amount_input_changed) + amount_layout = QHBoxLayout() amount_layout.addWidget(self.amount_input) amount_layout.addStretch() @@ -172,13 +176,7 @@ class MiniWindow(QDialog): def set_balances(self, btc_balance): self.btc_balance = btc_balance - quote_currency = self.quote_currencies[0] - quote_balance = self.exchanger.exchange(btc_balance, quote_currency) - if quote_balance is None: - quote_text = "" - else: - quote_text = "(%.2f %s)" % ((quote_balance / bitcoin(1)), - quote_currency) + quote_text = self.create_quote_text(btc_balance) btc_balance = "%.2f" % (btc_balance / bitcoin(1)) self.balance_label.set_balances(btc_balance, quote_text) main_account_info = \ @@ -187,6 +185,26 @@ class MiniWindow(QDialog): self.accounts_selector.clear() self.accounts_selector.addAction("%s" % main_account_info) + def amount_input_changed(self, amount_text): + try: + amount = D(str(amount_text)) + except decimal.InvalidOperation: + self.balance_label.show_balance() + else: + quote_text = self.create_quote_text(amount * bitcoin(1)) + if quote_text: + self.balance_label.set_amount_text(quote_text) + + def create_quote_text(self, btc_balance): + quote_currency = self.quote_currencies[0] + quote_balance = self.exchanger.exchange(btc_balance, quote_currency) + if quote_balance is None: + quote_text = "" + else: + quote_text = "(%.2f %s)" % ((quote_balance / bitcoin(1)), + quote_currency) + return quote_text + def send(self): if self.actuator.send(self.address_input.text(), self.amount_input.text(), self): @@ -209,17 +227,40 @@ class MiniWindow(QDialog): class BalanceLabel(QLabel): + SHOW_CONNECTING = 1 + SHOW_BALANCE = 2 + SHOW_AMOUNT = 3 + def __init__(self, change_quote_currency, parent=None): super(QLabel, self).__init__(_("Connecting..."), parent) self.change_quote_currency = change_quote_currency + self.state = self.SHOW_CONNECTING + self.balance_text = "" + self.amount_text = "" def set_balances(self, btc_balance, quote_text): - label_text = "<span style='font-size: 16pt'>%s</span> <span style='font-size: 10pt'>BTC</span> <span style='font-size: 10pt'>%s</span>" % (btc_balance, quote_text) - self.setText(label_text) + if self.state == self.SHOW_CONNECTING: + self.state = self.SHOW_BALANCE + self.set_balance_text(btc_balance, quote_text) def mousePressEvent(self, event): self.change_quote_currency() + def set_balance_text(self, btc_balance, quote_text): + self.balance_text = "<span style='font-size: 16pt'>%s</span> <span style='font-size: 10pt'>BTC</span> <span style='font-size: 10pt'>%s</span>" % (btc_balance, quote_text) + if self.state == self.SHOW_BALANCE: + self.setText(self.balance_text) + + def set_amount_text(self, quote_text): + self.state = self.SHOW_AMOUNT + self.amount_text = "<span style='font-size: 10pt'>%s</span>" % quote_text + self.setText(self.amount_text) + + def show_balance(self): + if self.state == self.SHOW_AMOUNT: + self.state = self.SHOW_BALANCE + self.setText(self.balance_text) + class TextedLineEdit(QLineEdit): def __init__(self, inactive_text, parent=None):