tUpdate email plugin for multiple windows. - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit 8e7bcfeeb974ac7bd43de7229c606543929b67a5
 (DIR) parent 73de35aa563d8502bacb80be220f9d02e2411c43
 (HTM) Author: Neil Booth <kyuupichan@gmail.com>
       Date:   Fri,  4 Sep 2015 13:29:33 +0900
       
       Update email plugin for multiple windows.
       
       Diffstat:
         M gui/qt/main_window.py               |       2 +-
         M plugins/email_requests.py           |      38 ++++++++++++++-----------------
       
       2 files changed, 18 insertions(+), 22 deletions(-)
       ---
 (DIR) diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -697,7 +697,7 @@ class ElectrumWindow(QMainWindow):
                item = self.receive_list.itemAt(position)
                addr = str(item.text(2))
                req = self.wallet.receive_requests[addr]
       -        menu = QMenu()
       +        menu = QMenu(self)
                menu.addAction(_("Copy Address"), lambda: self.view_and_paste(_('Address'), '', addr))
                menu.addAction(_("Copy URI"), lambda: self.view_and_paste('URI', '', self.get_request_URI(addr)))
                menu.addAction(_("Save as BIP70 file"), lambda: self.export_payment_request(addr))
 (DIR) diff --git a/plugins/email_requests.py b/plugins/email_requests.py
       t@@ -22,8 +22,6 @@ import socket
        import time
        import threading
        import base64
       -import re
       -import platform
        from decimal import Decimal
        from Queue import Queue
        
       t@@ -114,7 +112,7 @@ class Plugin(BasePlugin):
            def is_available(self):
                return True
        
       -    def __init__(self, parent, config, name)
       +    def __init__(self, parent, config, name):
                BasePlugin.__init__(self, parent, config, name)
                self.imap_server = self.config.get('email_server', '')
                self.username = self.config.get('email_username', '')
       t@@ -122,31 +120,28 @@ class Plugin(BasePlugin):
                if self.imap_server and self.username and self.password:
                    self.processor = Processor(self.imap_server, self.username, self.password, self.on_receive)
                    self.processor.start()
       -        self.win = None
       +        self.obj = QObject()
       +        self.obj.connect(self.obj, SIGNAL('email:new_invoice'), self.new_invoice)
        
            def on_receive(self, pr_str):
                self.print_error('received payment request')
                self.pr = PaymentRequest(pr_str)
       -        if self.win:
       -            self.win.emit(SIGNAL('email:new_invoice'))
       +        self.obj.emit(SIGNAL('email:new_invoice'))
        
            def new_invoice(self):
       -        self.win.invoices.add(self.pr)
       -        self.win.update_invoices_list()
       -
       -    @hook
       -    def init_qt(self, gui):
       -        from electrum_gui.qt.util import ThreadedButton
       -        self.win = gui.main_window
       -        self.win.connect(self.win, SIGNAL('email:new_invoice'), self.new_invoice)
       +        if self.parent.windows:
       +            window = self.parent.windows[0]
       +            window.invoices.add(self.pr)
       +            window.update_invoices_list()
        
            @hook
            def receive_list_menu(self, menu, addr):
       -        menu.addAction(_("Send via e-mail"), lambda: self.send(addr))
       +        window = menu.parentWidget()
       +        menu.addAction(_("Send via e-mail"), lambda: self.send(window, addr))
        
       -    def send(self, addr):
       +    def send(self, window, addr):
                from electrum import paymentrequest
       -        r = self.wallet.receive_requests.get(addr)
       +        r = window.wallet.receive_requests.get(addr)
                message = r.get('memo', '')
                if r.get('signature'):
                    pr = paymentrequest.serialize_request(r)
       t@@ -154,7 +149,7 @@ class Plugin(BasePlugin):
                    pr = paymentrequest.make_request(self.config, r)
                if not pr:
                    return
       -        recipient, ok = QtGui.QInputDialog.getText(self.win, 'Send request', 'Email invoice to:')
       +        recipient, ok = QtGui.QInputDialog.getText(window, 'Send request', 'Email invoice to:')
                if not ok:
                    return
                recipient = str(recipient)
       t@@ -163,22 +158,23 @@ class Plugin(BasePlugin):
                try:
                    self.processor.send(recipient, message, payload)
                except BaseException as e:
       -            self.win.show_message(str(e))
       +            window.show_message(str(e))
                    return
        
       -        self.win.show_message(_('Request sent.'))
       +        window.show_message(_('Request sent.'))
        
        
            def requires_settings(self):
                return True
        
            def settings_widget(self, window):
       +        self.settings_window = window
                return EnterButton(_('Settings'), self.settings_dialog)
        
            def settings_dialog(self, x):
                from electrum_gui.qt.util import Buttons, CloseButton, OkButton
        
       -        d = QDialog(self.window)
       +        d = QDialog(self.settings_window)
                d.setWindowTitle("Email settings")
                d.setMinimumSize(500, 200)