commit 8b11efb3278c02c56a950bdfe3d2bf9b93392a52
parent 40a4bf3c913508e96439b7a6c228be56737b1a8b
Author: Amir Taaki <genjix@riseup.net>
Date: Thu, 5 Jul 2012 17:33:26 +0200
Popup for receiving Bitcoins.
Diffstat:
M | lib/gui_lite.py | | | 64 | +++++++++++++++++++++++++++++++++++++++++++++++++++++----------- |
1 file changed, 53 insertions(+), 11 deletions(-)
diff --git a/lib/gui_lite.py b/lib/gui_lite.py
@@ -29,6 +29,12 @@ class Timer(QThread):
self.emit(SIGNAL('timersignal'))
time.sleep(0.5)
+def resize_line_edit_width(line_edit, text_input):
+ metrics = QFontMetrics(qApp.font())
+ # Create an extra character to add some space on the end
+ text_input += "A"
+ line_edit.setMinimumWidth(metrics.width(text_input))
+
class ElectrumGui:
def __init__(self, wallet):
@@ -119,19 +125,18 @@ class MiniWindow(QDialog):
self.balance_label = BalanceLabel(self.change_quote_currency)
self.balance_label.setObjectName("balance_label")
- copy_button = QPushButton(_("&Copy My Address"))
- copy_button.setObjectName("copy_button")
- copy_button.setDefault(True)
- self.connect(copy_button, SIGNAL("clicked()"),
- self.actuator.copy_address)
+ self.receive_button = QPushButton(_("&Receive"))
+ self.receive_button.setObjectName("receive_button")
+ self.receive_button.setDefault(True)
+ self.connect(self.receive_button, SIGNAL("clicked()"),
+ self.copy_address)
self.address_input = TextedLineEdit(_("Enter a Bitcoin address..."))
self.address_input.setObjectName("address_input")
self.connect(self.address_input, SIGNAL("textEdited(QString)"),
self.address_field_changed)
- metrics = QFontMetrics(qApp.font())
- self.address_input.setMinimumWidth(
- metrics.width("1E4vM9q25xsyDwWwdqHUWnwshdWC9PykmL"))
+ resize_line_edit_width(self.address_input,
+ "1E4vM9q25xsyDwWwdqHUWnwshdWC9PykmL")
self.address_completions = QStringListModel()
address_completer = QCompleter(self.address_input)
@@ -173,7 +178,7 @@ class MiniWindow(QDialog):
main_layout.addWidget(expand_button, 2, 0)
main_layout.addWidget(self.balance_label, 0, 1)
- main_layout.addWidget(copy_button, 0, 2)
+ main_layout.addWidget(self.receive_button, 0, 2)
main_layout.addLayout(address_layout, 1, 1, 1, -1)
@@ -264,6 +269,10 @@ class MiniWindow(QDialog):
else:
self.valid_address.setChecked(False)
+ def copy_address(self):
+ receive_popup = ReceivePopup(self.receive_button)
+ self.actuator.copy_address(receive_popup)
+
def update_completions(self, completions):
self.address_completions.setStringList(completions)
@@ -391,15 +400,48 @@ class PasswordDialog(QDialog):
return
return unicode(self.password_input.text())
+class ReceivePopup(QDialog):
+
+ def __init__(self, parent=None):
+ super(QDialog, self).__init__(parent)
+ #self.setFrameStyle(QFrame.WinPanel|QFrame.Raised)
+ #self.setAlignment(Qt.AlignCenter)
+ self.setMouseTracking(True)
+
+ def mouseMoveEvent(self, event):
+ if not self.rect().contains(event.pos()):
+ self.close()
+
+ def set_address(self, address):
+ label = QLabel(_("Copied your Bitcoin address to the clipboard!"))
+ address_display = QLineEdit(address)
+ address_display.setReadOnly(True)
+ resize_line_edit_width(address_display, address)
+
+ main_layout = QVBoxLayout(self)
+ main_layout.addWidget(label)
+ main_layout.addWidget(address_display)
+
+ def popup(self):
+ parent = self.parent()
+ top_left_pos = parent.mapToGlobal(parent.rect().bottomLeft())
+ self.move(top_left_pos)
+ center_mouse_pos = self.mapToGlobal(self.rect().center())
+ QCursor.setPos(center_mouse_pos)
+ self.show()
+
class MiniActuator:
def __init__(self, wallet):
self.wallet = wallet
- def copy_address(self):
+ def copy_address(self, receive_popup):
addrs = [addr for addr in self.wallet.all_addresses()
if not self.wallet.is_change(addr)]
- qApp.clipboard().setText(random.choice(addrs))
+ copied_address = random.choice(addrs)
+ qApp.clipboard().setText(copied_address)
+ receive_popup.set_address(copied_address)
+ receive_popup.popup()
def send(self, address, amount, parent_window):
dest_address = self.fetch_destination(address)