mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
Modernize test email dialog
This commit is contained in:
parent
fa0533ec0d
commit
adb4cf458a
@ -1,103 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<ui version="4.0">
|
|
||||||
<class>Dialog</class>
|
|
||||||
<widget class="QDialog" name="Dialog">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>542</width>
|
|
||||||
<height>418</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="windowTitle">
|
|
||||||
<string>Test email settings</string>
|
|
||||||
</property>
|
|
||||||
<property name="windowIcon">
|
|
||||||
<iconset resource="../../../../resources/images.qrc">
|
|
||||||
<normaloff>:/images/config.png</normaloff>:/images/config.png</iconset>
|
|
||||||
</property>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="from_">
|
|
||||||
<property name="text">
|
|
||||||
<string>Send test mail from %s to:</string>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="to"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string/>
|
|
||||||
</property>
|
|
||||||
<property name="wordWrap">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="test_button">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Test</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QPlainTextEdit" name="log"/>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QDialogButtonBox" name="buttonBox">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="standardButtons">
|
|
||||||
<set>QDialogButtonBox::Ok</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<resources>
|
|
||||||
<include location="../../../../resources/images.qrc"/>
|
|
||||||
</resources>
|
|
||||||
<connections>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>accepted()</signal>
|
|
||||||
<receiver>Dialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>248</x>
|
|
||||||
<y>254</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>157</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>buttonBox</sender>
|
|
||||||
<signal>rejected()</signal>
|
|
||||||
<receiver>Dialog</receiver>
|
|
||||||
<slot>reject()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>316</x>
|
|
||||||
<y>260</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>286</x>
|
|
||||||
<y>274</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
|
@ -9,43 +9,70 @@ __docformat__ = 'restructuredtext en'
|
|||||||
import cStringIO, sys
|
import cStringIO, sys
|
||||||
from binascii import hexlify, unhexlify
|
from binascii import hexlify, unhexlify
|
||||||
from functools import partial
|
from functools import partial
|
||||||
|
from threading import Thread
|
||||||
|
|
||||||
from PyQt5.Qt import QWidget, pyqtSignal, QDialog, Qt, QLabel, \
|
from PyQt5.Qt import (
|
||||||
QLineEdit, QDialogButtonBox, QGridLayout, QCheckBox
|
QWidget, pyqtSignal, QDialog, Qt, QLabel, QLineEdit, QDialogButtonBox,
|
||||||
|
QGridLayout, QCheckBox, QIcon, QVBoxLayout, QPushButton, QPlainTextEdit,
|
||||||
|
QHBoxLayout)
|
||||||
|
|
||||||
from calibre import prints
|
from calibre import prints
|
||||||
from calibre.gui2.wizard.send_email_ui import Ui_Form
|
from calibre.gui2.wizard.send_email_ui import Ui_Form
|
||||||
from calibre.utils.smtp import config as smtp_prefs
|
from calibre.utils.smtp import config as smtp_prefs
|
||||||
from calibre.gui2.dialogs.test_email_ui import Ui_Dialog as TE_Dialog
|
|
||||||
from calibre.gui2 import error_dialog, question_dialog
|
from calibre.gui2 import error_dialog, question_dialog
|
||||||
|
|
||||||
class TestEmail(QDialog, TE_Dialog):
|
class TestEmail(QDialog):
|
||||||
|
|
||||||
|
test_done = pyqtSignal(object)
|
||||||
|
|
||||||
def __init__(self, pa, parent):
|
def __init__(self, pa, parent):
|
||||||
QDialog.__init__(self, parent)
|
QDialog.__init__(self, parent)
|
||||||
TE_Dialog.__init__(self)
|
|
||||||
self.setupUi(self)
|
|
||||||
opts = smtp_prefs().parse()
|
|
||||||
self.test_func = parent.test_email_settings
|
self.test_func = parent.test_email_settings
|
||||||
self.test_button.clicked.connect(self.test)
|
self.setWindowTitle(_("Test email settings"))
|
||||||
self.from_.setText(unicode(self.from_.text())%opts.from_)
|
self.setWindowIcon(QIcon(I('config.ui')))
|
||||||
|
l = QVBoxLayout(self)
|
||||||
|
opts = smtp_prefs().parse()
|
||||||
|
self.from_ = la = QLabel(_("Send test mail from %s to:")%opts.from_)
|
||||||
|
l.addWidget(la)
|
||||||
|
self.to = le = QLineEdit(self)
|
||||||
if pa:
|
if pa:
|
||||||
self.to.setText(pa)
|
self.to.setText(pa)
|
||||||
|
self.test_button = b = QPushButton(_('&Test'), self)
|
||||||
|
b.clicked.connect(self.start_test)
|
||||||
|
self.test_done.connect(self.on_test_done, type=Qt.QueuedConnection)
|
||||||
|
self.h = h = QHBoxLayout()
|
||||||
|
h.addWidget(le), h.addWidget(b)
|
||||||
|
l.addLayout(h)
|
||||||
if opts.relay_host:
|
if opts.relay_host:
|
||||||
self.label.setText(_('Using: %(un)s:%(pw)s@%(host)s:%(port)s and %(enc)s encryption')%
|
self.la = la = QLabel(_('Using: %(un)s:%(pw)s@%(host)s:%(port)s and %(enc)s encryption')%
|
||||||
dict(un=opts.relay_username, pw=unhexlify(opts.relay_password).decode('utf-8'),
|
dict(un=opts.relay_username, pw=unhexlify(opts.relay_password).decode('utf-8'),
|
||||||
host=opts.relay_host, port=opts.relay_port, enc=opts.encryption))
|
host=opts.relay_host, port=opts.relay_port, enc=opts.encryption))
|
||||||
|
l.addWidget(la)
|
||||||
|
self.log = QPlainTextEdit(self)
|
||||||
|
l.addWidget(self.log)
|
||||||
|
self.bb = bb = QDialogButtonBox(QDialogButtonBox.Close)
|
||||||
|
bb.rejected.connect(self.reject), bb.accepted.connect(self.accept)
|
||||||
|
l.addWidget(bb)
|
||||||
|
|
||||||
def test(self, *args):
|
def start_test(self, *args):
|
||||||
self.log.setPlainText(_('Sending...'))
|
self.log.setPlainText(_('Sending mail, please wait...'))
|
||||||
self.test_button.setEnabled(False)
|
self.test_button.setEnabled(False)
|
||||||
|
t = Thread(target=self.run_test, name='TestEmailSending')
|
||||||
|
t.daemon = True
|
||||||
|
t.start()
|
||||||
|
|
||||||
|
def run_test(self):
|
||||||
try:
|
try:
|
||||||
tb = self.test_func(unicode(self.to.text()))
|
tb = self.test_func(unicode(self.to.text())) or _('Mail successfully sent')
|
||||||
if not tb:
|
except Exception:
|
||||||
tb = _('Mail successfully sent')
|
import traceback
|
||||||
self.log.setPlainText(tb)
|
tb = traceback.format_exc()
|
||||||
finally:
|
self.test_done.emit(tb)
|
||||||
|
|
||||||
|
def on_test_done(self, txt):
|
||||||
|
if self.isVisible():
|
||||||
self.test_button.setEnabled(True)
|
self.test_button.setEnabled(True)
|
||||||
|
self.log.setPlainText(txt)
|
||||||
|
|
||||||
class RelaySetup(QDialog):
|
class RelaySetup(QDialog):
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user