Change balance text to show conversion amount when text is entered into the amount field.
This commit is contained in:
@@ -2,6 +2,7 @@ from PyQt4.QtCore import *
|
|||||||
from PyQt4.QtGui import *
|
from PyQt4.QtGui import *
|
||||||
from decimal import Decimal as D
|
from decimal import Decimal as D
|
||||||
from i18n import _
|
from i18n import _
|
||||||
|
import decimal
|
||||||
import exchange_rate
|
import exchange_rate
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
@@ -102,7 +103,7 @@ class MiniWindow(QDialog):
|
|||||||
# Use QCompleter
|
# Use QCompleter
|
||||||
self.address_input = TextedLineEdit(_("Enter a Bitcoin address..."))
|
self.address_input = TextedLineEdit(_("Enter a Bitcoin address..."))
|
||||||
self.address_input.setObjectName("address_input")
|
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)
|
self.address_field_changed)
|
||||||
metrics = QFontMetrics(qApp.font())
|
metrics = QFontMetrics(qApp.font())
|
||||||
self.address_input.setMinimumWidth(
|
self.address_input.setMinimumWidth(
|
||||||
@@ -125,6 +126,9 @@ class MiniWindow(QDialog):
|
|||||||
self.amount_validator.setDecimals(8)
|
self.amount_validator.setDecimals(8)
|
||||||
self.amount_input.setValidator(self.amount_validator)
|
self.amount_input.setValidator(self.amount_validator)
|
||||||
|
|
||||||
|
self.connect(self.amount_input, SIGNAL("textChanged(QString)"),
|
||||||
|
self.amount_input_changed)
|
||||||
|
|
||||||
amount_layout = QHBoxLayout()
|
amount_layout = QHBoxLayout()
|
||||||
amount_layout.addWidget(self.amount_input)
|
amount_layout.addWidget(self.amount_input)
|
||||||
amount_layout.addStretch()
|
amount_layout.addStretch()
|
||||||
@@ -172,13 +176,7 @@ class MiniWindow(QDialog):
|
|||||||
|
|
||||||
def set_balances(self, btc_balance):
|
def set_balances(self, btc_balance):
|
||||||
self.btc_balance = btc_balance
|
self.btc_balance = btc_balance
|
||||||
quote_currency = self.quote_currencies[0]
|
quote_text = self.create_quote_text(btc_balance)
|
||||||
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)
|
|
||||||
btc_balance = "%.2f" % (btc_balance / bitcoin(1))
|
btc_balance = "%.2f" % (btc_balance / bitcoin(1))
|
||||||
self.balance_label.set_balances(btc_balance, quote_text)
|
self.balance_label.set_balances(btc_balance, quote_text)
|
||||||
main_account_info = \
|
main_account_info = \
|
||||||
@@ -187,6 +185,26 @@ class MiniWindow(QDialog):
|
|||||||
self.accounts_selector.clear()
|
self.accounts_selector.clear()
|
||||||
self.accounts_selector.addAction("%s" % main_account_info)
|
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):
|
def send(self):
|
||||||
if self.actuator.send(self.address_input.text(),
|
if self.actuator.send(self.address_input.text(),
|
||||||
self.amount_input.text(), self):
|
self.amount_input.text(), self):
|
||||||
@@ -209,17 +227,40 @@ class MiniWindow(QDialog):
|
|||||||
|
|
||||||
class BalanceLabel(QLabel):
|
class BalanceLabel(QLabel):
|
||||||
|
|
||||||
|
SHOW_CONNECTING = 1
|
||||||
|
SHOW_BALANCE = 2
|
||||||
|
SHOW_AMOUNT = 3
|
||||||
|
|
||||||
def __init__(self, change_quote_currency, parent=None):
|
def __init__(self, change_quote_currency, parent=None):
|
||||||
super(QLabel, self).__init__(_("Connecting..."), parent)
|
super(QLabel, self).__init__(_("Connecting..."), parent)
|
||||||
self.change_quote_currency = change_quote_currency
|
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):
|
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)
|
if self.state == self.SHOW_CONNECTING:
|
||||||
self.setText(label_text)
|
self.state = self.SHOW_BALANCE
|
||||||
|
self.set_balance_text(btc_balance, quote_text)
|
||||||
|
|
||||||
def mousePressEvent(self, event):
|
def mousePressEvent(self, event):
|
||||||
self.change_quote_currency()
|
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):
|
class TextedLineEdit(QLineEdit):
|
||||||
|
|
||||||
def __init__(self, inactive_text, parent=None):
|
def __init__(self, inactive_text, parent=None):
|
||||||
|
|||||||
Reference in New Issue
Block a user