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:
M | lib/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):