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")) |
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. |