URI: 
       tPopup for receiving Bitcoins. - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 8b11efb3278c02c56a950bdfe3d2bf9b93392a52
   DIR parent 40a4bf3c913508e96439b7a6c228be56737b1a8b
  HTML 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(-)
       ---
   DIR diff --git a/lib/gui_lite.py b/lib/gui_lite.py
       t@@ -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):
       t@@ -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)
       t@@ -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)
        
       t@@ -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)
        
       t@@ -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)