Update email plugin for multiple windows.
This commit is contained in:
parent
73de35aa56
commit
8e7bcfeeb9
|
@ -697,7 +697,7 @@ class ElectrumWindow(QMainWindow):
|
||||||
item = self.receive_list.itemAt(position)
|
item = self.receive_list.itemAt(position)
|
||||||
addr = str(item.text(2))
|
addr = str(item.text(2))
|
||||||
req = self.wallet.receive_requests[addr]
|
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 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(_("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))
|
menu.addAction(_("Save as BIP70 file"), lambda: self.export_payment_request(addr))
|
||||||
|
|
|
@ -22,8 +22,6 @@ import socket
|
||||||
import time
|
import time
|
||||||
import threading
|
import threading
|
||||||
import base64
|
import base64
|
||||||
import re
|
|
||||||
import platform
|
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
from Queue import Queue
|
from Queue import Queue
|
||||||
|
|
||||||
|
@ -114,7 +112,7 @@ class Plugin(BasePlugin):
|
||||||
def is_available(self):
|
def is_available(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def __init__(self, parent, config, name)
|
def __init__(self, parent, config, name):
|
||||||
BasePlugin.__init__(self, parent, config, name)
|
BasePlugin.__init__(self, parent, config, name)
|
||||||
self.imap_server = self.config.get('email_server', '')
|
self.imap_server = self.config.get('email_server', '')
|
||||||
self.username = self.config.get('email_username', '')
|
self.username = self.config.get('email_username', '')
|
||||||
|
@ -122,31 +120,28 @@ class Plugin(BasePlugin):
|
||||||
if self.imap_server and self.username and self.password:
|
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 = Processor(self.imap_server, self.username, self.password, self.on_receive)
|
||||||
self.processor.start()
|
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):
|
def on_receive(self, pr_str):
|
||||||
self.print_error('received payment request')
|
self.print_error('received payment request')
|
||||||
self.pr = PaymentRequest(pr_str)
|
self.pr = PaymentRequest(pr_str)
|
||||||
if self.win:
|
self.obj.emit(SIGNAL('email:new_invoice'))
|
||||||
self.win.emit(SIGNAL('email:new_invoice'))
|
|
||||||
|
|
||||||
def new_invoice(self):
|
def new_invoice(self):
|
||||||
self.win.invoices.add(self.pr)
|
if self.parent.windows:
|
||||||
self.win.update_invoices_list()
|
window = self.parent.windows[0]
|
||||||
|
window.invoices.add(self.pr)
|
||||||
@hook
|
window.update_invoices_list()
|
||||||
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)
|
|
||||||
|
|
||||||
@hook
|
@hook
|
||||||
def receive_list_menu(self, menu, addr):
|
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
|
from electrum import paymentrequest
|
||||||
r = self.wallet.receive_requests.get(addr)
|
r = window.wallet.receive_requests.get(addr)
|
||||||
message = r.get('memo', '')
|
message = r.get('memo', '')
|
||||||
if r.get('signature'):
|
if r.get('signature'):
|
||||||
pr = paymentrequest.serialize_request(r)
|
pr = paymentrequest.serialize_request(r)
|
||||||
|
@ -154,7 +149,7 @@ class Plugin(BasePlugin):
|
||||||
pr = paymentrequest.make_request(self.config, r)
|
pr = paymentrequest.make_request(self.config, r)
|
||||||
if not pr:
|
if not pr:
|
||||||
return
|
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:
|
if not ok:
|
||||||
return
|
return
|
||||||
recipient = str(recipient)
|
recipient = str(recipient)
|
||||||
|
@ -163,22 +158,23 @@ class Plugin(BasePlugin):
|
||||||
try:
|
try:
|
||||||
self.processor.send(recipient, message, payload)
|
self.processor.send(recipient, message, payload)
|
||||||
except BaseException as e:
|
except BaseException as e:
|
||||||
self.win.show_message(str(e))
|
window.show_message(str(e))
|
||||||
return
|
return
|
||||||
|
|
||||||
self.win.show_message(_('Request sent.'))
|
window.show_message(_('Request sent.'))
|
||||||
|
|
||||||
|
|
||||||
def requires_settings(self):
|
def requires_settings(self):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def settings_widget(self, window):
|
def settings_widget(self, window):
|
||||||
|
self.settings_window = window
|
||||||
return EnterButton(_('Settings'), self.settings_dialog)
|
return EnterButton(_('Settings'), self.settings_dialog)
|
||||||
|
|
||||||
def settings_dialog(self, x):
|
def settings_dialog(self, x):
|
||||||
from electrum_gui.qt.util import Buttons, CloseButton, OkButton
|
from electrum_gui.qt.util import Buttons, CloseButton, OkButton
|
||||||
|
|
||||||
d = QDialog(self.window)
|
d = QDialog(self.settings_window)
|
||||||
d.setWindowTitle("Email settings")
|
d.setWindowTitle("Email settings")
|
||||||
d.setMinimumSize(500, 200)
|
d.setMinimumSize(500, 200)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue