Preferences/ConfigurationPages/EmailPage.py

changeset 6828
bb6667ea9ae7
parent 6825
e659bb96cdfa
equal deleted inserted replaced
6825:e659bb96cdfa 6828:bb6667ea9ae7
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 import smtplib 12 import smtplib
13 import socket 13 import socket
14 import sys
14 15
15 from PyQt5.QtCore import pyqtSlot, Qt 16 from PyQt5.QtCore import pyqtSlot, Qt
16 from PyQt5.QtGui import QCursor 17 from PyQt5.QtGui import QCursor
17 from PyQt5.QtWidgets import QApplication 18 from PyQt5.QtWidgets import QApplication
18 19
19 from E5Gui import E5MessageBox 20 from E5Gui import E5MessageBox
21 from E5Gui.E5Application import e5App
22
23 from E5Network.E5GoogleMailHelpers import getInstallCommand, RequiredPackages
20 24
21 from .ConfigurationPageBase import ConfigurationPageBase 25 from .ConfigurationPageBase import ConfigurationPageBase
22 from .Ui_EmailPage import Ui_EmailPage 26 from .Ui_EmailPage import Ui_EmailPage
23 27
24 import Preferences 28 import Preferences
44 ] 48 ]
45 self.__pipCommand = "pip install --upgrade {0}".format( 49 self.__pipCommand = "pip install --upgrade {0}".format(
46 " ".join(pipPackages)) 50 " ".join(pipPackages))
47 51
48 # set initial values 52 # set initial values
49 try: 53 self.__checkGoogleMail()
50 import googleapiclient # __IGNORE_WARNING__
51 self.googleMailCheckBox.setChecked(
52 Preferences.getUser("UseGoogleMailOAuth2"))
53
54 from E5Network.E5GoogleMail import isClientSecretFileAvailable
55 if not isClientSecretFileAvailable():
56 # credentials file is not installed
57 self.googleMailCheckBox.setChecked(False)
58 self.googleMailCheckBox.setEnabled(False)
59 self.googleMailInfoLabel.setText(self.tr(
60 "<p>The credentials file is not present. Has the Gmail API"
61 " been enabled?</p>"))
62 Preferences.setUser("UseGoogleMailOAuth2", False)
63 except ImportError:
64 # missing libraries, disable Google Mail
65 self.googleMailCheckBox.setChecked(False)
66 self.googleMailCheckBox.setEnabled(False)
67 self.googleMailInfoLabel.setText(self.tr(
68 "<p>The Google Mail Client API is not installed."
69 " Use <code>{0}</code> to install it.</p>")
70 .format(self.__pipCommand))
71 self.googleHelpButton.setEnabled(False)
72 Preferences.setUser("UseGoogleMailOAuth2", False)
73 54
74 self.mailServerEdit.setText(Preferences.getUser("MailServer")) 55 self.mailServerEdit.setText(Preferences.getUser("MailServer"))
75 self.portSpin.setValue(Preferences.getUser("MailServerPort")) 56 self.portSpin.setValue(Preferences.getUser("MailServerPort"))
76 self.emailEdit.setText(Preferences.getUser("Email")) 57 self.emailEdit.setText(Preferences.getUser("Email"))
77 self.signatureEdit.setPlainText(Preferences.getUser("Signature")) 58 self.signatureEdit.setPlainText(Preferences.getUser("Signature"))
85 self.useTlsButton.setChecked(True) 66 self.useTlsButton.setChecked(True)
86 elif encryption == "SSL": 67 elif encryption == "SSL":
87 self.useSslButton.setChecked(True) 68 self.useSslButton.setChecked(True)
88 else: 69 else:
89 self.noEncryptionButton.setChecked(True) 70 self.noEncryptionButton.setChecked(True)
90 71
91 def save(self): 72 def save(self):
92 """ 73 """
93 Public slot to save the Email configuration. 74 Public slot to save the Email configuration.
94 """ 75 """
95 Preferences.setUser( 76 Preferences.setUser(
288 if self.__helpDialog is None: 269 if self.__helpDialog is None:
289 try: 270 try:
290 from E5Network.E5GoogleMail import GoogleMailHelp 271 from E5Network.E5GoogleMail import GoogleMailHelp
291 helpStr = GoogleMailHelp() 272 helpStr = GoogleMailHelp()
292 except ImportError: 273 except ImportError:
293 helpStr = self.tr( 274 helpStr = self.tr(
294 "<p>The Google Mail Client API is not installed." 275 "<p>The Google Mail Client API is not installed."
295 " Use <code>{0}</code> to install it.</p>" 276 " Use <code>{0}</code> to install it.</p>"
296 ).format(self.__pipCommand) 277 ).format(getInstallCommand())
297 278
298 from E5Gui.E5SimpleHelpDialog import E5SimpleHelpDialog 279 from E5Gui.E5SimpleHelpDialog import E5SimpleHelpDialog
299 self.__helpDialog = E5SimpleHelpDialog( 280 self.__helpDialog = E5SimpleHelpDialog(
300 title=self.tr("Gmail API Help"), 281 title=self.tr("Gmail API Help"),
301 helpStr=helpStr, parent=self) 282 helpStr=helpStr, parent=self)
302 283
303 self.__helpDialog.show() 284 self.__helpDialog.show()
285
286 @pyqtSlot()
287 def on_googleInstallButton_clicked(self):
288 """
289 Private slot to install the required packages for use of Google Mail.
290 """
291 pip = e5App().getObject("Pip")
292 pip.installPackages(RequiredPackages, interpreter=sys.executable)
293 self.__checkGoogleMail()
294
295 @pyqtSlot()
296 def on_googleCheckAgainButton_clicked(self):
297 """
298 Private slot to check again the availability of Google Mail.
299 """
300 self.__checkGoogleMail()
301
302 def __checkGoogleMail(self):
303 """
304 Private method to check the Google Mail availability and set the
305 widgets accordingly.
306 """
307 self.googleMailInfoLabel.hide()
308 self.googleInstallButton.show()
309 self.googleCheckAgainButton.show()
310 self.googleHelpButton.setEnabled(True)
311 self.googleMailCheckBox.setEnabled(True)
312
313 try:
314 import E5Network.E5GoogleMail # __IGNORE_WARNING__
315 from E5Network.E5GoogleMailHelpers import \
316 isClientSecretFileAvailable
317
318 self.googleInstallButton.hide()
319 if not isClientSecretFileAvailable():
320 # secrets file is not installed
321 self.googleMailCheckBox.setChecked(False)
322 self.googleMailCheckBox.setEnabled(False)
323 self.googleMailInfoLabel.setText(self.tr(
324 "<p>The client secrets file is not present."
325 " Has the Gmail API been enabled?</p>"))
326 self.googleMailInfoLabel.show()
327 Preferences.setUser("UseGoogleMailOAuth2", False)
328 else:
329 self.googleMailCheckBox.setChecked(
330 Preferences.getUser("UseGoogleMailOAuth2"))
331 self.googleMailInfoLabel.hide()
332 self.googleCheckAgainButton.hide()
333 except ImportError:
334 # missing libraries, disable Google Mail
335 self.googleMailCheckBox.setChecked(False)
336 self.googleMailCheckBox.setEnabled(False)
337 self.googleMailInfoLabel.setText(self.tr(
338 "<p>The Google Mail Client API is not installed."
339 " Use <code>{0}</code> to install it.</p>"
340 ).format(getInstallCommand()))
341 self.googleMailInfoLabel.show()
342 self.googleHelpButton.setEnabled(False)
343 Preferences.setUser("UseGoogleMailOAuth2", False)
304 344
305 345
306 def create(dlg): 346 def create(dlg):
307 """ 347 """
308 Module function to create the configuration page. 348 Module function to create the configuration page.

eric ide

mercurial