eric7/PluginManager/PluginManager.py

Fri, 22 Apr 2022 16:43:25 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 22 Apr 2022 16:43:25 +0200
branch
eric7
changeset 9031
8c9013b363bc
parent 9016
6f079c524e99
child 9134
8caa0936e258
permissions
-rw-r--r--

Fixed an issue related to updating the plug-in repository file and the respective view.

0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
8881
54e42bc2437a Updated copyright for 2022.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8637
diff changeset
3 # Copyright (c) 2007 - 2022 Detlev Offenbach <detlev@die-offenbachs.de>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
7 Module implementing the Plugin Manager.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
10 import os
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import sys
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
12 import zipfile
7400
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
13 import types
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
14 import importlib
8240
93b8a353c4bf Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8228
diff changeset
15 import contextlib
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
16
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
17 from PyQt6.QtCore import (
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
18 pyqtSignal, QObject, QDate, QFile, QFileInfo, QUrl, QIODevice
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
19 )
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
20 from PyQt6.QtGui import QPixmap
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
21 from PyQt6.QtNetwork import (
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
22 QNetworkAccessManager, QNetworkRequest, QNetworkReply
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
23 )
537
72b32daeb8d6 Continued replacing QMessageBox methods with own methods.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 496
diff changeset
24
8358
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
25 from EricWidgets import EricMessageBox
144a6b854f70 Sorted the eric specific extensions into packages named like the corresponding PyQt packages (i.e. EricCore,EricGui and EricWidgets).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8356
diff changeset
26 from EricWidgets.EricApplication import ericApp
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
27
8354
12ebd3934fef Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8351
diff changeset
28 from EricNetwork.EricNetworkProxyFactory import proxyAuthenticationRequired
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
29 try:
8366
2a9f5153c438 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
30 from EricNetwork.EricSslErrorHandler import (
2a9f5153c438 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
31 EricSslErrorHandler, EricSslErrorState
2a9f5153c438 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
32 )
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
33 SSL_AVAILABLE = True
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
34 except ImportError:
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
35 SSL_AVAILABLE = False
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
36
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
37 from .PluginExceptions import (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
38 PluginPathError, PluginModulesError, PluginLoadError,
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
39 PluginActivationError, PluginModuleFormatError, PluginClassFormatError
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
40 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
41
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
42 import UI.PixmapCache
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
43
6605
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
44 import Globals
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
45 import Utilities
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
46 import Preferences
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
47
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
48 from eric7config import getConfig
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
49
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
50
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
51 class PluginManager(QObject):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
53 Class implementing the Plugin Manager.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
54
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
55 @signal shutdown() emitted at shutdown of the IDE
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
56 @signal pluginAboutToBeActivated(modulName, pluginObject) emitted just
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
57 before a plugin is activated
3259
f059575254df Fixed some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3200
diff changeset
58 @signal pluginActivated(moduleName, pluginObject) emitted just after
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
59 a plugin was activated
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
60 @signal allPlugginsActivated() emitted at startup after all plugins have
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
61 been activated
3259
f059575254df Fixed some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3200
diff changeset
62 @signal pluginAboutToBeDeactivated(moduleName, pluginObject) emitted just
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
63 before a plugin is deactivated
3259
f059575254df Fixed some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3200
diff changeset
64 @signal pluginDeactivated(moduleName, pluginObject) emitted just after
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
65 a plugin was deactivated
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
66 @signal pluginRepositoryFileDownloaded() emitted to indicate a completed
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
67 download of the plugin repository file
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
68 """
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
69 shutdown = pyqtSignal()
496
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
70 pluginAboutToBeActivated = pyqtSignal(str, object)
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
71 pluginActivated = pyqtSignal(str, object)
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
72 allPlugginsActivated = pyqtSignal()
496
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
73 pluginAboutToBeDeactivated = pyqtSignal(str, object)
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
74 pluginDeactivated = pyqtSignal(str, object)
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
75 pluginRepositoryFileDownloaded = pyqtSignal()
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
76
6267
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
77 def __init__(self, parent=None, disabledPlugins=None, doLoadPlugins=True,
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
78 develPlugin=None):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
79 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
80 Constructor
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
81
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
82 The Plugin Manager deals with three different plugin directories.
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
83 The first is the one, that is part of eric7 (eric7/Plugins). The
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
84 second one is the global plugin directory called 'eric7plugins',
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
85 which is located inside the site-packages directory. The last one
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
86 is the user plugin directory located inside the .eric7 directory
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
87 of the users home directory.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
88
6267
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
89 @param parent reference to the parent object
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
90 @type QObject
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
91 @param disabledPlugins list of plug-ins that have been disabled via
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
92 the command line parameters '--disable-plugin='
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
93 @type list of str
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
94 @param doLoadPlugins flag indicating, that plug-ins should
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
95 be loaded
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
96 @type bool
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
97 @param develPlugin filename of a plug-in to be loaded for
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
98 development
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
99 @type str
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
100 @exception PluginPathError raised to indicate an invalid plug-in path
5726
e1dbd217214a Fixed a few source docu issues (forgotten signals and exceptions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5588
diff changeset
101 @exception PluginModulesError raised to indicate the absence of
e1dbd217214a Fixed a few source docu issues (forgotten signals and exceptions).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5588
diff changeset
102 plug-in modules
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
103 """
8218
7c09585bd960 Applied some more code simplifications suggested by the new Simplify checker (super(Foo, self) => super()).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8205
diff changeset
104 super().__init__(parent)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
105
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
106 self.__ui = parent
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
107 self.__develPluginFile = develPlugin
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
108 self.__develPluginName = None
6267
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
109 if disabledPlugins is not None:
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
110 self.__disabledPlugins = disabledPlugins[:]
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
111 else:
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
112 self.__disabledPlugins = []
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
113
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
114 self.__inactivePluginsKey = "PluginManager/InactivePlugins"
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
115
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
116 self.pluginDirs = {
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
117 "eric7": os.path.join(getConfig('ericDir'), "Plugins"),
8306
2bfd53096b5f Renamed Globals.getPythonModulesDirectory() to Globals.getPythonLibraryDirectory() because that name is clearer.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8293
diff changeset
118 "global": os.path.join(Utilities.getPythonLibraryDirectory(),
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
119 "eric7plugins"),
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
120 "user": os.path.join(Utilities.getConfigDir(), "eric7plugins"),
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
121 }
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
122 self.__priorityOrder = ["eric7", "global", "user"]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
123
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
124 self.__defaultDownloadDir = os.path.join(
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
125 Utilities.getConfigDir(), "Downloads")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
126
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
127 self.__activePlugins = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
128 self.__inactivePlugins = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
129 self.__onDemandActivePlugins = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
130 self.__onDemandInactivePlugins = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
131 self.__activeModules = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
132 self.__inactiveModules = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133 self.__onDemandActiveModules = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
134 self.__onDemandInactiveModules = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
135 self.__failedModules = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
136
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
137 self.__foundCoreModules = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
138 self.__foundGlobalModules = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
139 self.__foundUserModules = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
140
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
141 self.__modulesCount = 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
142
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
143 pdirsExist, msg = self.__pluginDirectoriesExist()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
144 if not pdirsExist:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
145 raise PluginPathError(msg)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
146
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
147 if doLoadPlugins:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
148 if not self.__pluginModulesExist():
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
149 raise PluginModulesError
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
150
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
151 self.__insertPluginsPaths()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
152
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
153 self.__loadPlugins()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
154
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
155 self.__checkPluginsDownloadDirectory()
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
156
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
157 self.pluginRepositoryFile = os.path.join(Utilities.getConfigDir(),
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
158 "PluginRepository")
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
159
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
160 # attributes for the network objects
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
161 self.__networkManager = QNetworkAccessManager(self)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
162 self.__networkManager.proxyAuthenticationRequired.connect(
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
163 proxyAuthenticationRequired)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
164 if SSL_AVAILABLE:
8354
12ebd3934fef Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8351
diff changeset
165 self.__sslErrorHandler = EricSslErrorHandler(self)
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
166 self.__networkManager.sslErrors.connect(self.__sslErrors)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
167 self.__replies = []
4630
7b0e38956b5c Refined the online state change behaviour.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4629
diff changeset
168
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
169 def finalizeSetup(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
170 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
171 Public method to finalize the setup of the plugin manager.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
172 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
173 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
174 list(self.__onDemandInactiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
175 list(self.__onDemandActiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
176 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 if hasattr(module, "moduleSetup"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
178 module.moduleSetup()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
180 def getPluginDir(self, key):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
182 Public method to get the path of a plugin directory.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
184 @param key key of the plug-in directory (string)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
185 @return path of the requested plugin directory (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
187 if key not in ["global", "user"]:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
191 return self.pluginDirs[key]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 except KeyError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
193 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 def __pluginDirectoriesExist(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
197 Private method to check, if the plugin folders exist.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
199 If the plugin folders don't exist, they are created (if possible).
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
201 @return tuple of a flag indicating existence of any of the plugin
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 directories (boolean) and a message (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
203 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
204 if self.__develPluginFile:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 path = Utilities.splitPath(self.__develPluginFile)[0]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 fname = os.path.join(path, "__init__.py")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 if not os.path.exists(fname):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7400
diff changeset
209 with open(fname, "w"):
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7400
diff changeset
210 pass
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
211 except OSError:
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
212 return (
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
213 False,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
214 self.tr("Could not create a package for {0}.")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 .format(self.__develPluginFile))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216
4378
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
217 fname = os.path.join(self.pluginDirs["user"], "__init__.py")
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
218 if not os.path.exists(fname):
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
219 if not os.path.exists(self.pluginDirs["user"]):
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
220 os.mkdir(self.pluginDirs["user"], 0o755)
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
221 try:
7785
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7400
diff changeset
222 with open(fname, "w"):
9978016560ec Changed code to use context manager 'open()' for file operations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7400
diff changeset
223 pass
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
224 except OSError:
4378
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
225 del self.pluginDirs["user"]
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
226
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
227 if not os.path.exists(self.pluginDirs["global"]):
7967
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
228 try:
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
229 # create the global plugins directory
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
230 os.mkdir(self.pluginDirs["global"], 0o755)
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
231 fname = os.path.join(self.pluginDirs["global"], "__init__.py")
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
232 with open(fname, "w", encoding="utf-8") as f:
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
233 f.write('# -*- coding: utf-8 -*-' + "\n")
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
234 f.write("\n")
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
235 f.write('"""' + "\n")
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
236 f.write('Package containing the global plugins.' + "\n")
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
237 f.write('"""' + "\n")
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
238 except OSError:
f5da85158db2 PluginManager: changed the code to create a global plugins directory.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7946
diff changeset
239 del self.pluginDirs["global"]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
241 if not os.path.exists(self.pluginDirs["eric7"]):
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
242 return (
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
243 False,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
244 self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
245 "The internal plugin directory <b>{0}</b>"
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
246 " does not exits.").format(self.pluginDirs["eric7"]))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 return (True, "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 def __pluginModulesExist(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 Private method to check, if there are plugins available.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
253
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @return flag indicating the availability of plugins (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
255 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
256 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
257 self.__develPluginFile and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
258 not os.path.exists(self.__develPluginFile)
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
259 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 return False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
262 self.__foundCoreModules = self.getPluginModules(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
263 self.pluginDirs["eric7"])
4378
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
264 if Preferences.getPluginManager("ActivateExternal"):
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
265 if "global" in self.pluginDirs:
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
266 self.__foundGlobalModules = self.getPluginModules(
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
267 self.pluginDirs["global"])
4378
d8f81e864816 Changed the 'load external plug-ins' logic and enable this option upon installation of a plug-in, if it is switched off (needs a restart of eric).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4115
diff changeset
268 if "user" in self.pluginDirs:
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
269 self.__foundUserModules = self.getPluginModules(
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
270 self.pluginDirs["user"])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
272 return len(self.__foundCoreModules + self.__foundGlobalModules +
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
273 self.__foundUserModules) > 0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
275 def getPluginModules(self, pluginPath):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
276 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
277 Public method to get a list of plugin modules.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
279 @param pluginPath name of the path to search (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
280 @return list of plugin module names (list of string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
281 """
3034
7ce719013078 Fixed various coding style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3022
diff changeset
282 pluginFiles = [f[:-3] for f in os.listdir(pluginPath)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 if self.isValidPluginName(f)]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 return pluginFiles[:]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
286 def isValidPluginName(self, pluginName):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
287 """
8444
88b242eba71b Corrected some typos.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8385
diff changeset
288 Public method to check, if a file name is a valid plugin name.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
289
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
290 Plugin modules must start with "Plugin" and have the extension ".py".
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 @param pluginName name of the file to be checked (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
293 @return flag indicating a valid plugin name (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
294 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
295 return pluginName.startswith("Plugin") and pluginName.endswith(".py")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
296
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
297 def __insertPluginsPaths(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
298 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
299 Private method to insert the valid plugin paths intos the search path.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
300 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
301 for key in self.__priorityOrder:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
302 if key in self.pluginDirs:
8205
4a0f1f896341 Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8143
diff changeset
303 if self.pluginDirs[key] not in sys.path:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
304 sys.path.insert(2, self.pluginDirs[key])
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
305 UI.PixmapCache.addSearchPath(self.pluginDirs[key])
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
306
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
307 if self.__develPluginFile:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
308 path = Utilities.splitPath(self.__develPluginFile)[0]
3621
15f23ed3f216 Fixed a few source code style issues found by the updated pe8 checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3523
diff changeset
309 if path not in sys.path:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
310 sys.path.insert(2, path)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
311 UI.PixmapCache.addSearchPath(path)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
312
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
313 def __loadPlugins(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
314 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
315 Private method to load the plugins found.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
316 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
317 develPluginName = ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
318 if self.__develPluginFile:
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
319 develPluginPath, develPluginName = Utilities.splitPath(
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
320 self.__develPluginFile)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
321 if self.isValidPluginName(develPluginName):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
322 develPluginName = develPluginName[:-3]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
323
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
324 for pluginName in self.__foundGlobalModules:
6008
ac5057f80f60 Changed the order of precedence for loading plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5904
diff changeset
325 # user and core plug-ins have priority
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
326 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
327 pluginName not in self.__foundUserModules and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
328 pluginName not in self.__foundCoreModules and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
329 pluginName != develPluginName
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
330 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
331 self.loadPlugin(pluginName, self.pluginDirs["global"])
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
332
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
333 for pluginName in self.__foundUserModules:
6008
ac5057f80f60 Changed the order of precedence for loading plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5904
diff changeset
334 # core plug-ins have priority
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
335 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
336 pluginName not in self.__foundCoreModules and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
337 pluginName != develPluginName
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
338 ):
6008
ac5057f80f60 Changed the order of precedence for loading plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5904
diff changeset
339 self.loadPlugin(pluginName, self.pluginDirs["user"])
ac5057f80f60 Changed the order of precedence for loading plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5904
diff changeset
340
ac5057f80f60 Changed the order of precedence for loading plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5904
diff changeset
341 for pluginName in self.__foundCoreModules:
ac5057f80f60 Changed the order of precedence for loading plug-ins.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5904
diff changeset
342 # plug-in under development has priority
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
343 if pluginName != develPluginName:
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
344 self.loadPlugin(pluginName, self.pluginDirs["eric7"])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
345
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
346 if develPluginName:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
347 self.loadPlugin(develPluginName, develPluginPath)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
348 self.__develPluginName = develPluginName
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
349
6629
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
350 def loadDocumentationSetPlugins(self):
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
351 """
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
352 Public method to load just the documentation sets plugins.
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
353
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
354 @exception PluginModulesError raised to indicate the absence of
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
355 plug-in modules
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
356 """
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
357 if not self.__pluginModulesExist():
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
358 raise PluginModulesError
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
359
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
360 self.__insertPluginsPaths()
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
361
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
362 for pluginName in self.__foundGlobalModules:
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
363 # user and core plug-ins have priority
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
364 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
365 pluginName not in self.__foundUserModules and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
366 pluginName not in self.__foundCoreModules and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
367 pluginName.startswith("PluginDocumentationSets")
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
368 ):
6629
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
369 self.loadPlugin(pluginName, self.pluginDirs["global"])
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
370
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
371 for pluginName in self.__foundUserModules:
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
372 # core plug-ins have priority
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
373 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
374 pluginName not in self.__foundCoreModules and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
375 pluginName.startswith("PluginDocumentationSets")
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
376 ):
6629
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
377 self.loadPlugin(pluginName, self.pluginDirs["user"])
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
378
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
379 for pluginName in self.__foundCoreModules:
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
380 # plug-in under development has priority
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
381 if pluginName.startswith("PluginDocumentationSets"):
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
382 self.loadPlugin(pluginName, self.pluginDirs["eric7"])
6629
643ec3a53d17 PluginManager, QtHelpDocumentationDialog: fixed loading plug-in documentation sets when run stand-alone.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6611
diff changeset
383
8293
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
384 def loadPlugin(self, name, directory, reload_=False, install=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
386 Public method to load a plugin module.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
387
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
388 Initially all modules are inactive. Modules that are requested on
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 demand are sorted out and are added to the on demand list. Some
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
390 basic validity checks are performed as well. Modules failing these
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
391 checks are added to the failed modules list.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
392
8293
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
393 @param name name of the module to be loaded
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
394 @type str
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
395 @param directory name of the plugin directory
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
396 @type str
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
397 @param reload_ flag indicating to reload the module
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
398 @type bool
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
399 @param install flag indicating a load operation as part of an
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
400 installation process
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
401 @type bool
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
402 @exception PluginLoadError raised to indicate an issue loading
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
403 the plug-in
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 try:
415
59a0f9e90768 Did some more string format conversions.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 245
diff changeset
406 fname = "{0}.py".format(os.path.join(directory, name))
7400
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
407 spec = importlib.util.spec_from_file_location(name, fname)
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
408 module = importlib.util.module_from_spec(spec)
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
409 sys.modules[module.__name__] = module
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
410 spec.loader.exec_module(module)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
411 if not hasattr(module, "autoactivate"):
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
412 module.error = self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
413 "Module is missing the 'autoactivate' attribute.")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 self.__failedModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 raise PluginLoadError(name)
7023
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
416 if getattr(module, "autoactivate", False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
417 self.__inactiveModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
418 else:
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
419 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
420 not hasattr(module, "pluginType") or
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
421 not hasattr(module, "pluginTypename")
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
422 ):
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
423 module.error = self.tr(
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
424 "Module is missing the 'pluginType' "
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
425 "and/or 'pluginTypename' attributes."
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
426 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 self.__failedModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 raise PluginLoadError(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
429 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
430 self.__onDemandInactiveModules[name] = module
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
431 module.eric7PluginModuleName = name
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
432 module.eric7PluginModuleFilename = fname
8989
25cd4c5f1f19 Added code to check and install all of the plugin dependencies (e.g. after upgrading a virtual environment to a new Python version).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
433 if (
25cd4c5f1f19 Added code to check and install all of the plugin dependencies (e.g. after upgrading a virtual environment to a new Python version).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
434 (install or
25cd4c5f1f19 Added code to check and install all of the plugin dependencies (e.g. after upgrading a virtual environment to a new Python version).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
435 Preferences.getPluginManager("AutoInstallDependencies")) and
25cd4c5f1f19 Added code to check and install all of the plugin dependencies (e.g. after upgrading a virtual environment to a new Python version).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
436 hasattr(module, "installDependencies")
25cd4c5f1f19 Added code to check and install all of the plugin dependencies (e.g. after upgrading a virtual environment to a new Python version).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8881
diff changeset
437 ):
8292
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
438 # ask the module to install its dependencies
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
439 module.installDependencies(self.pipInstall)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 self.__modulesCount += 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
441 if reload_:
7400
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
442 importlib.reload(module)
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
443 self.initOnDemandPlugin(name)
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
444 with contextlib.suppress(KeyError, AttributeError):
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
445 pluginObject = self.__onDemandInactivePlugins[name]
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
446 pluginObject.initToolbar(
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
447 self.__ui, ericApp().getObject("ToolbarManager"))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
448 except PluginLoadError:
3520
bfcefbb1633c Implemented the Python2 compatibility check for plug-ins in the plug-in manager. The flag is named 'python2Compatible'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
449 print("Error loading plug-in module:", name)
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
450 except Exception as err:
7400
e5d62581d002 Removed use of deprecated 'imp' module in the frontend.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
451 module = types.ModuleType(name)
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
452 module.error = self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
453 "Module failed to load. Error: {0}").format(str(err))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
454 self.__failedModules[name] = module
3520
bfcefbb1633c Implemented the Python2 compatibility check for plug-ins in the plug-in manager. The flag is named 'python2Compatible'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3484
diff changeset
455 print("Error loading plug-in module:", name)
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
456 print(str(err))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
457
2889
3737e9f17f44 Fixed an issue in the plug-in manager causing a traceback when installing a new plug-in version of an already loaded one.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
458 def unloadPlugin(self, name):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
459 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
460 Public method to unload a plugin module.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
461
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
462 @param name name of the module to be unloaded (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
463 @return flag indicating success (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
464 """
2889
3737e9f17f44 Fixed an issue in the plug-in manager causing a traceback when installing a new plug-in version of an already loaded one.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
465 if name in self.__onDemandActiveModules:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
466 # cannot unload an ondemand plugin, that is in use
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
467 return False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
468
2889
3737e9f17f44 Fixed an issue in the plug-in manager causing a traceback when installing a new plug-in version of an already loaded one.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
469 if name in self.__activeModules:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
470 self.deactivatePlugin(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
471
2889
3737e9f17f44 Fixed an issue in the plug-in manager causing a traceback when installing a new plug-in version of an already loaded one.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
472 if name in self.__inactiveModules:
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
473 with contextlib.suppress(KeyError):
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
474 pluginObject = self.__inactivePlugins[name]
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
475 with contextlib.suppress(AttributeError):
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
476 pluginObject.prepareUnload()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
477 del self.__inactivePlugins[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 del self.__inactiveModules[name]
2889
3737e9f17f44 Fixed an issue in the plug-in manager causing a traceback when installing a new plug-in version of an already loaded one.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2302
diff changeset
479 elif name in self.__onDemandInactiveModules:
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
480 with contextlib.suppress(KeyError):
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
481 pluginObject = self.__onDemandInactivePlugins[name]
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
482 with contextlib.suppress(AttributeError):
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
483 pluginObject.prepareUnload()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
484 del self.__onDemandInactivePlugins[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
485 del self.__onDemandInactiveModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
486 elif name in self.__failedModules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
487 del self.__failedModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
488
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
489 self.__modulesCount -= 1
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
490 return True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
491
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
492 def removePluginFromSysModules(self, pluginName, package,
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
493 internalPackages):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
494 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
495 Public method to remove a plugin and all related modules from
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
496 sys.modules.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
497
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
498 @param pluginName name of the plugin module (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
499 @param package name of the plugin package (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
500 @param internalPackages list of intenal packages (list of string)
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
501 @return flag indicating the plugin module was found in sys.modules
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
502 (boolean)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
503 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
504 packages = [package] + internalPackages
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
505 found = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
506 if not package:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
507 package = "__None__"
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
508 for moduleName in list(sys.modules.keys())[:]:
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
509 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
510 moduleName == pluginName or
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
511 moduleName.split(".")[0] in packages
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
512 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
513 found = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
514 del sys.modules[moduleName]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
515 return found
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
516
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
517 def initOnDemandPlugins(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
518 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 Public method to create plugin objects for all on demand plugins.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
521 Note: The plugins are not activated.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
522 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
523 names = sorted(self.__onDemandInactiveModules.keys())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
524 for name in names:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 self.initOnDemandPlugin(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
527 def initOnDemandPlugin(self, name):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
528 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
529 Public method to create a plugin object for the named on demand plugin.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
530
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
531 Note: The plug-in is not activated.
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
532
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
533 @param name name of the plug-in (string)
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
534 @exception PluginActivationError raised to indicate an issue during the
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
535 plug-in activation
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
536 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
537 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
538 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
539 module = self.__onDemandInactiveModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
540 except KeyError:
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
541 return
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
542
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
543 if not self.__canActivatePlugin(module):
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
544 raise PluginActivationError(module.eric7PluginModuleName)
7023
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
545 version = getattr(module, "version", "0.0.0")
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
546 className = getattr(module, "className", "")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
547 pluginClass = getattr(module, className)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
548 pluginObject = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
549 if name not in self.__onDemandInactivePlugins:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
550 pluginObject = pluginClass(self.__ui)
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
551 pluginObject.eric7PluginModule = module
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
552 pluginObject.eric7PluginName = className
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
553 pluginObject.eric7PluginVersion = version
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
554 self.__onDemandInactivePlugins[name] = pluginObject
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
555 except PluginActivationError:
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
556 return
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
557
4113
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
558 def initPluginToolbars(self, toolbarManager):
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
559 """
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
560 Public method to initialize plug-in toolbars.
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
561
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
562 @param toolbarManager reference to the toolbar manager object
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
563 (EricToolBarManager)
4113
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
564 """
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
565 self.initOnDemandPlugins()
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
566 for pluginObject in self.__onDemandInactivePlugins.values():
8243
cc717c2ae956 Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8240
diff changeset
567 with contextlib.suppress(AttributeError):
4115
0c70a8f8d54a Some more modifications to improve the plug-in toolbar handling.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4113
diff changeset
568 pluginObject.initToolbar(self.__ui, toolbarManager)
4113
feac3108a780 Some small modifications to the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
569
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
570 def activatePlugins(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
571 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
572 Public method to activate all plugins having the "autoactivate"
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
573 attribute set to True.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
574 """
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8595
diff changeset
575 savedInactiveList = Preferences.getSettings().value(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
576 self.__inactivePluginsKey)
6267
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
577 inactiveList = self.__disabledPlugins[:]
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
578 if savedInactiveList is not None:
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
579 inactiveList += [p for p in savedInactiveList
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
580 if p not in self.__disabledPlugins]
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
581 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
582 self.__develPluginName is not None and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
583 self.__develPluginName in inactiveList
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
584 ):
6267
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
585 inactiveList.remove(self.__develPluginName)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
586 names = sorted(self.__inactiveModules.keys())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
587 for name in names:
6267
350655a6c85f eric6, PluginManager: added the '--disable-plugin=' option to disable plug-ins via the command line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6188
diff changeset
588 if name not in inactiveList:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
589 self.activatePlugin(name)
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
590 self.allPlugginsActivated.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
591
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
592 def activatePlugin(self, name, onDemand=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
593 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
594 Public method to activate a plugin.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
595
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
596 @param name name of the module to be activated
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
597 @param onDemand flag indicating activation of an
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
598 on demand plugin (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
599 @return reference to the initialized plugin object
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
600 @exception PluginActivationError raised to indicate an issue during the
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
601 plug-in activation
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
602 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
603 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
604 try:
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
605 module = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
606 self.__onDemandInactiveModules[name]
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
607 if onDemand else
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
608 self.__inactiveModules[name]
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
609 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
610 except KeyError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
611 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
612
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
613 if not self.__canActivatePlugin(module):
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
614 raise PluginActivationError(module.eric7PluginModuleName)
7023
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
615 version = getattr(module, "version", "0.0.0")
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
616 className = getattr(module, "className", "")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
617 pluginClass = getattr(module, className)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
618 pluginObject = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
619 if onDemand and name in self.__onDemandInactivePlugins:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
620 pluginObject = self.__onDemandInactivePlugins[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
621 elif not onDemand and name in self.__inactivePlugins:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
622 pluginObject = self.__inactivePlugins[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
623 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
624 pluginObject = pluginClass(self.__ui)
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
625 self.pluginAboutToBeActivated.emit(name, pluginObject)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
626 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
627 obj, ok = pluginObject.activate()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
628 except TypeError:
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
629 module.error = self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
630 "Incompatible plugin activation method.")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
631 obj = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
632 ok = True
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
633 except Exception as err:
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
634 module.error = str(err)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
635 obj = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 ok = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
637 if not ok:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
638 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
639
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
640 self.pluginActivated.emit(name, pluginObject)
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
641 pluginObject.eric7PluginModule = module
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
642 pluginObject.eric7PluginName = className
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
643 pluginObject.eric7PluginVersion = version
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
644
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 if onDemand:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
646 self.__onDemandInactiveModules.pop(name)
8240
93b8a353c4bf Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8228
diff changeset
647 with contextlib.suppress(KeyError):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 self.__onDemandInactivePlugins.pop(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 self.__onDemandActivePlugins[name] = pluginObject
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
650 self.__onDemandActiveModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
651 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
652 self.__inactiveModules.pop(name)
8240
93b8a353c4bf Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8228
diff changeset
653 with contextlib.suppress(KeyError):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
654 self.__inactivePlugins.pop(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 self.__activePlugins[name] = pluginObject
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 self.__activeModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
657 return obj
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
658 except PluginActivationError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
659 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
660
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
661 def __canActivatePlugin(self, module):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
662 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 Private method to check, if a plugin can be activated.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
665 @param module reference to the module to be activated
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
666 @return flag indicating, if the module satisfies all requirements
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 for being activated (boolean)
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
668 @exception PluginModuleFormatError raised to indicate an invalid
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
669 plug-in module format
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
670 @exception PluginClassFormatError raised to indicate an invalid
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
671 plug-in class format
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
672 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
673 try:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
674 if not hasattr(module, "version"):
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
675 raise PluginModuleFormatError(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
676 module.eric7PluginModuleName, "version")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
677 if not hasattr(module, "className"):
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
678 raise PluginModuleFormatError(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
679 module.eric7PluginModuleName, "className")
7023
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
680 className = getattr(module, "className", "")
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
681 if not className or not hasattr(module, className):
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
682 raise PluginModuleFormatError(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
683 module.eric7PluginModuleName, className)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
684 pluginClass = getattr(module, className)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
685 if not hasattr(pluginClass, "__init__"):
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
686 raise PluginClassFormatError(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
687 module.eric7PluginModuleName,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
688 className, "__init__")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
689 if not hasattr(pluginClass, "activate"):
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
690 raise PluginClassFormatError(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
691 module.eric7PluginModuleName,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
692 className, "activate")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
693 if not hasattr(pluginClass, "deactivate"):
3022
57179e4cdadd Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3020
diff changeset
694 raise PluginClassFormatError(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
695 module.eric7PluginModuleName,
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
696 className, "deactivate")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
697 return True
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
698 except PluginModuleFormatError as e:
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
699 print(repr(e))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
700 return False
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
701 except PluginClassFormatError as e:
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
702 print(repr(e))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
703 return False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
704
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
705 def deactivatePlugin(self, name, onDemand=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
706 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
707 Public method to deactivate a plugin.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
708
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
709 @param name name of the module to be deactivated
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
710 @param onDemand flag indicating deactivation of an
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
711 on demand plugin (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
712 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
713 try:
8259
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
714 module = (
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
715 self.__onDemandActiveModules[name]
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
716 if onDemand else
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
717 self.__activeModules[name]
2bbec88047dd Applied some more code simplifications suggested by the new Simplify checker (Y108: use ternary operator).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8243
diff changeset
718 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
719 except KeyError:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
720 return
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
721
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
722 if self.__canDeactivatePlugin(module):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
723 pluginObject = None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
724 if onDemand and name in self.__onDemandActivePlugins:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
725 pluginObject = self.__onDemandActivePlugins[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
726 elif not onDemand and name in self.__activePlugins:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
727 pluginObject = self.__activePlugins[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
728 if pluginObject:
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
729 self.pluginAboutToBeDeactivated.emit(name, pluginObject)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
730 pluginObject.deactivate()
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
731 self.pluginDeactivated.emit(name, pluginObject)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
732
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
733 if onDemand:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
734 self.__onDemandActiveModules.pop(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
735 self.__onDemandActivePlugins.pop(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
736 self.__onDemandInactivePlugins[name] = pluginObject
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
737 self.__onDemandInactiveModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
738 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
739 self.__activeModules.pop(name)
8240
93b8a353c4bf Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8228
diff changeset
740 with contextlib.suppress(KeyError):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
741 self.__activePlugins.pop(name)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
742 self.__inactivePlugins[name] = pluginObject
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
743 self.__inactiveModules[name] = module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
744
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
745 def __canDeactivatePlugin(self, module):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
746 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
747 Private method to check, if a plugin can be deactivated.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
748
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
749 @param module reference to the module to be deactivated
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
750 @return flag indicating, if the module satisfies all requirements
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
751 for being deactivated (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
752 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
753 return getattr(module, "deactivateable", True)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
754
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
755 def getPluginObject(self, type_, typename, maybeActive=False):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
756 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
757 Public method to activate an ondemand plugin given by type and
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
758 typename.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
759
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
760 @param type_ type of the plugin to be activated (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
761 @param typename name of the plugin within the type category (string)
7900
72b88fb20261 Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7836
diff changeset
762 @param maybeActive flag indicating, that the plugin may be active
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
763 already (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
764 @return reference to the initialized plugin object
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
765 """
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
766 for name, module in list(self.__onDemandInactiveModules.items()):
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
767 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
768 getattr(module, "pluginType", "") == type_ and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
769 getattr(module, "pluginTypename", "") == typename
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
770 ):
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
771 return self.activatePlugin(name, onDemand=True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
772
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
773 if maybeActive:
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
774 for name, module in list(self.__onDemandActiveModules.items()):
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
775 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
776 getattr(module, "pluginType", "") == type_ and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
777 getattr(module, "pluginTypename", "") == typename
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
778 ):
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
779 self.deactivatePlugin(name, onDemand=True)
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
780 return self.activatePlugin(name, onDemand=True)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
781
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
782 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
783
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
784 def getPluginInfos(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
785 """
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
786 Public method to get infos about all loaded plug-ins.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
787
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
788 @return list of dictionaries with keys "module_name", "plugin_name",
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
789 "version", "auto_activate", "active", "short_desc", "error"
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
790 @rtype list of dict ("module_name": str, "plugin_name": str,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
791 "version": str, "auto_activate": bool, "active": bool,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
792 "short_desc": str, "error": bool)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
793 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
794 infos = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
795
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
796 # 1. active, non-on-demand modules
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
797 for name in list(self.__activeModules.keys()):
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
798 info = self.__getShortInfo(self.__activeModules[name])
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
799 info.update({
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
800 "module_name": name,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
801 "auto_activate": True,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
802 "active": True,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
803 })
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
804 infos.append(info)
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
805
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
806 # 2. inactive, non-on-demand modules
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
807 for name in list(self.__inactiveModules.keys()):
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
808 info = self.__getShortInfo(self.__inactiveModules[name])
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
809 info.update({
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
810 "module_name": name,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
811 "auto_activate": True,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
812 "active": False,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
813 })
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
814 infos.append(info)
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
815
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
816 # 3. active, on-demand modules
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
817 for name in list(self.__onDemandActiveModules.keys()):
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
818 info = self.__getShortInfo(self.__onDemandActiveModules[name])
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
819 info.update({
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
820 "module_name": name,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
821 "auto_activate": False,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
822 "active": True,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
823 })
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
824 infos.append(info)
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
825
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
826 # 4. inactive, non-on-demand modules
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
827 for name in list(self.__onDemandInactiveModules.keys()):
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
828 info = self.__getShortInfo(self.__onDemandInactiveModules[name])
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
829 info.update({
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
830 "module_name": name,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
831 "auto_activate": False,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
832 "active": False,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
833 })
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
834 infos.append(info)
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
835
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
836 # 5. failed modules
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
837 for name in list(self.__failedModules.keys()):
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
838 info = self.__getShortInfo(self.__failedModules[name])
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
839 info.update({
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
840 "module_name": name,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
841 "auto_activate": False,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
842 "active": False,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
843 })
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
844 infos.append(info)
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
845
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
846 return infos
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
847
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
848 def __getShortInfo(self, module):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
849 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
850 Private method to extract the short info from a module.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
851
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
852 @param module module to extract short info from
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
853 @return dictionay containing plug-in data
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
854 @rtype dict ("plugin_name": str, "version": str, "short_desc": str,
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
855 "error": bool)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
856 """
6080
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
857 return {
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
858 "plugin_name": getattr(module, "name", ""),
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
859 "version": getattr(module, "version", ""),
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
860 "short_desc": getattr(module, "shortDescription", ""),
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
861 "error": bool(getattr(module, "error", "")),
436ac20f7639 Made the output of the plug-ins info dialog a bit more understandable and refactored related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6048
diff changeset
862 }
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
863
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
864 def getPluginDetails(self, name):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
865 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
866 Public method to get detailed information about a plugin.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
867
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
868 @param name name of the module to get detailed infos about (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
869 @return details of the plugin as a dictionary
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
870 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
871 details = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
872
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
873 autoactivate = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
874 active = True
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
875
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
876 if name in self.__activeModules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
877 module = self.__activeModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
878 elif name in self.__inactiveModules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
879 module = self.__inactiveModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
880 active = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
881 elif name in self.__onDemandActiveModules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
882 module = self.__onDemandActiveModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
883 autoactivate = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
884 elif name in self.__onDemandInactiveModules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
885 module = self.__onDemandInactiveModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
886 autoactivate = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
887 active = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
888 elif name in self.__failedModules:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
889 module = self.__failedModules[name]
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
890 autoactivate = False
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
891 active = False
5236
9487d3fbb71e Change to the plug-in manager to support plug-in sets (like the documentation sets plug-ins). These containe a '_' in the plug-in archive name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5223
diff changeset
892 elif "_" in name:
9487d3fbb71e Change to the plug-in manager to support plug-in sets (like the documentation sets plug-ins). These containe a '_' in the plug-in archive name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5223
diff changeset
893 # try stripping of a postfix
9487d3fbb71e Change to the plug-in manager to support plug-in sets (like the documentation sets plug-ins). These containe a '_' in the plug-in archive name.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5223
diff changeset
894 return self.getPluginDetails(name.rsplit("_", 1)[0])
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
895 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
896 # should not happen
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
897 return None
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
898
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
899 details["moduleName"] = name
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
900 details["moduleFileName"] = getattr(
8314
e3642a6a1e71 Finished renaming eric6 to eric7.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
901 module, "eric7PluginModuleFilename", "")
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
902 details["pluginName"] = getattr(module, "name", "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
903 details["version"] = getattr(module, "version", "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
904 details["author"] = getattr(module, "author", "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
905 details["description"] = getattr(module, "longDescription", "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
906 details["autoactivate"] = autoactivate
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
907 details["active"] = active
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
908 details["error"] = getattr(module, "error", "")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
909
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
910 return details
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
911
496
ed1e3f654d0b Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 495
diff changeset
912 def doShutdown(self):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
913 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
914 Public method called to perform actions upon shutdown of the IDE.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
915 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
916 names = []
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
917 for name in list(self.__inactiveModules.keys()):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
918 names.append(name)
8637
394377638256 Replaced the direct access to 'Preferences.Prefs.settings' with 'Preferences.getSettings()'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8595
diff changeset
919 Preferences.getSettings().setValue(self.__inactivePluginsKey, names)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
920
495
b31b0bffa5b0 Continued porting signal/slot usage to the new API.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 438
diff changeset
921 self.shutdown.emit()
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
922
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
923 def getPluginDisplayStrings(self, type_):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
924 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
925 Public method to get the display strings of all plugins of a specific
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
926 type.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
927
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
928 @param type_ type of the plugins (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
929 @return dictionary with name as key and display string as value
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
930 (dictionary of string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
931 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
932 pluginDict = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
933
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
934 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
935 list(self.__onDemandActiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
936 list(self.__onDemandInactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
937 ):
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
938 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
939 getattr(module, "pluginType", "") == type_ and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
940 getattr(module, "error", "") == ""
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
941 ):
7023
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
942 plugin_name = getattr(module, "pluginTypename", "")
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
943 if plugin_name:
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
944 if hasattr(module, "displayString"):
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
945 try:
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
946 disp = module.displayString()
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
947 except TypeError:
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
948 disp = getattr(module, "displayString", "")
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
949 if disp != "":
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
950 pluginDict[plugin_name] = disp
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
951 else:
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
952 pluginDict[plugin_name] = plugin_name
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
953
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
954 return pluginDict
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
955
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
956 def getPluginPreviewPixmap(self, type_, name):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
957 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
958 Public method to get a preview pixmap of a plugin of a specific type.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
959
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
960 @param type_ type of the plugin (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
961 @param name name of the plugin type (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
962 @return preview pixmap (QPixmap)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
963 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
964 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
965 list(self.__onDemandActiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
966 list(self.__onDemandInactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
967 ):
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
968 if (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
969 getattr(module, "pluginType", "") == type_ and
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
970 getattr(module, "pluginTypename", "") == name
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
971 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
972 if hasattr(module, "previewPix"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
973 return module.previewPix()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
974 else:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
975 return QPixmap()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
976
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
977 return QPixmap()
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
978
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
979 def getPluginApiFiles(self, language):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
980 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
981 Public method to get the list of API files installed by a plugin.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
982
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
983 @param language language of the requested API files (string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
984 @return list of API filenames (list of string)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
985 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
986 apis = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
987
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
988 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
989 list(self.__activeModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
990 list(self.__onDemandActiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
991 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
992 if hasattr(module, "apiFiles"):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
993 apis.extend(module.apiFiles(language))
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
994
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
995 return apis
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
996
5223
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
997 def getPluginQtHelpFiles(self):
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
998 """
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
999 Public method to get the list of QtHelp documentation files provided
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1000 by a plug-in.
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1001
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1002 @return dictionary with documentation type as key and list of files
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1003 as value
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1004 @rtype dict (key: str, value: list of str)
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1005 """
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1006 helpFiles = {}
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1007 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1008 list(self.__activeModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1009 list(self.__onDemandActiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1010 ):
5223
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1011 if hasattr(module, "helpFiles"):
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1012 helpFiles.update(module.helpFiles())
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1013
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1014 return helpFiles
4c0b3ee7d2d8 Prepared the plug-in manager for a new plug-in type (providing documentation as QtHelp files (*.qch)).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4798
diff changeset
1015
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1016 def getPluginExeDisplayData(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1017 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1018 Public method to get data to display information about a plugins
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1019 external tool.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1020
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1021 @return list of dictionaries containing the data. Each dictionary must
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1022 either contain data for the determination or the data to be
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1023 displayed.<br />
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1024 A dictionary of the first form must have the following entries:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1025 <ul>
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1026 <li>programEntry - indicator for this dictionary form
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1027 (boolean), always True</li>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1028 <li>header - string to be diplayed as a header (string)</li>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1029 <li>exe - the executable (string)</li>
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1030 <li>versionCommand - commandline parameter for the exe
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1031 (string)</li>
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1032 <li>versionStartsWith - indicator for the output line
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1033 containing the version (string)</li>
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1034 <li>versionPosition - number of element containing the
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1035 version (integer)</li>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1036 <li>version - version to be used as default (string)</li>
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1037 <li>versionCleanup - tuple of two integers giving string
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1038 positions start and stop for the version string
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1039 (tuple of integers)</li>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1040 </ul>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1041 A dictionary of the second form must have the following entries:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1042 <ul>
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1043 <li>programEntry - indicator for this dictionary form
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1044 (boolean), always False</li>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1045 <li>header - string to be diplayed as a header (string)</li>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1046 <li>text - entry text to be shown (string)</li>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1047 <li>version - version text to be shown (string)</li>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1048 </ul>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1049 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1050 infos = []
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1051
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1052 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1053 list(self.__activeModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1054 list(self.__inactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1055 ):
438
f62a3f9d2e28 Changed code to include Qt Help tools in programs detection and introduced the 'exeDisplayDataList' plug-in function to report back a list of tools to check for.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
1056 if hasattr(module, "exeDisplayDataList"):
f62a3f9d2e28 Changed code to include Qt Help tools in programs detection and introduced the 'exeDisplayDataList' plug-in function to report back a list of tools to check for.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
1057 infos.extend(module.exeDisplayDataList())
f62a3f9d2e28 Changed code to include Qt Help tools in programs detection and introduced the 'exeDisplayDataList' plug-in function to report back a list of tools to check for.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
1058 elif hasattr(module, "exeDisplayData"):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1059 infos.append(module.exeDisplayData())
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1060 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1061 list(self.__onDemandActiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1062 list(self.__onDemandInactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1063 ):
438
f62a3f9d2e28 Changed code to include Qt Help tools in programs detection and introduced the 'exeDisplayDataList' plug-in function to report back a list of tools to check for.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
1064 if hasattr(module, "exeDisplayDataList"):
f62a3f9d2e28 Changed code to include Qt Help tools in programs detection and introduced the 'exeDisplayDataList' plug-in function to report back a list of tools to check for.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
1065 infos.extend(module.exeDisplayDataList())
f62a3f9d2e28 Changed code to include Qt Help tools in programs detection and introduced the 'exeDisplayDataList' plug-in function to report back a list of tools to check for.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 415
diff changeset
1066 elif hasattr(module, "exeDisplayData"):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1067 infos.append(module.exeDisplayData())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1068
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1069 return infos
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1070
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1071 def getPluginConfigData(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1072 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1073 Public method to get the config data of all active, non on-demand
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1074 plugins used by the configuration dialog.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1075
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1076 Plugins supporting this functionality must provide the plugin module
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1077 function 'getConfigData' returning a dictionary with unique keys
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1078 of lists with the following list contents:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1079 <dl>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1080 <dt>display string</dt>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1081 <dd>string shown in the selection area of the configuration page.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1082 This should be a localized string</dd>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1083 <dt>pixmap name</dt>
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1084 <dd>filename of the pixmap to be shown next to the display
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1085 string</dd>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1086 <dt>page creation function</dt>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1087 <dd>plugin module function to be called to create the configuration
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1088 page. The page must be subclasses from
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1089 Preferences.ConfigurationPages.ConfigurationPageBase and must
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1090 implement a method called 'save' to save the settings. A parent
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1091 entry will be created in the selection list, if this value is
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1092 None.</dd>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1093 <dt>parent key</dt>
945
8cd4d08fa9f6 Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 791
diff changeset
1094 <dd>dictionary key of the parent entry or None, if this defines a
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1095 toplevel entry.</dd>
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1096 <dt>reference to configuration page</dt>
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1097 <dd>This will be used by the configuration dialog and must always
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1098 be None</dd>
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1099 </dl>
2960
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
1100
9453efa25fd5 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2889
diff changeset
1101 @return plug-in configuration data
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1102 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1103 configData = {}
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1104 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1105 list(self.__activeModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1106 list(self.__onDemandActiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1107 list(self.__onDemandInactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1108 ):
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1109 if hasattr(module, 'getConfigData'):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1110 configData.update(module.getConfigData())
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1111 return configData
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1112
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1113 def isPluginLoaded(self, pluginName):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1114 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1115 Public method to check, if a certain plugin is loaded.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1116
110
c9a969db1469 Fixed doc string still containing QString and QStringList.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1117 @param pluginName name of the plugin to check for (string)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1118 @return flag indicating, if the plugin is loaded (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1119 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1120 return (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1121 pluginName in self.__activeModules or
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1122 pluginName in self.__inactiveModules or
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1123 pluginName in self.__onDemandActiveModules or
3036
30c81c9e88b8 Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
1124 pluginName in self.__onDemandInactiveModules
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1125 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1126
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1127 def isPluginActive(self, pluginName):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1128 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1129 Public method to check, if a certain plugin is active.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1130
110
c9a969db1469 Fixed doc string still containing QString and QStringList.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 45
diff changeset
1131 @param pluginName name of the plugin to check for (string)
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1132 @return flag indicating, if the plugin is active (boolean)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1133 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1134 return (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1135 pluginName in self.__activeModules or
3036
30c81c9e88b8 Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
1136 pluginName in self.__onDemandActiveModules
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1137 )
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1138
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1139 ###########################################################################
5555
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1140 ## Specialized plug-in module handling methods below
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1141 ###########################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1142
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1143 ###########################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1144 ## VCS related methods below
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1145 ###########################################################################
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1146
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1147 def getVcsSystemIndicators(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1148 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1149 Public method to get the Vcs System indicators.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1150
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1151 Plugins supporting this functionality must support the module function
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1152 getVcsSystemIndicator returning a dictionary with indicator as key and
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1153 a tuple with the vcs name (string) and vcs display string (string).
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1154
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1155 @return dictionary with indicator as key and a list of tuples as
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1156 values. Each tuple contains the vcs name (string) and vcs display
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1157 string (string).
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1158 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1159 vcsDict = {}
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1160
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1161 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1162 list(self.__onDemandActiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1163 list(self.__onDemandInactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1164 ):
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1165 if (
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1166 getattr(module, "pluginType", "") == "version_control" and
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1167 hasattr(module, "getVcsSystemIndicator")
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1168 ):
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1169 res = module.getVcsSystemIndicator()
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1170 for indicator, vcsData in list(res.items()):
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1171 if indicator in vcsDict:
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1172 vcsDict[indicator].append(vcsData)
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1173 else:
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1174 vcsDict[indicator] = [vcsData]
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1175
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1176 return vcsDict
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1177
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1178 def deactivateVcsPlugins(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1179 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1180 Public method to deactivated all activated VCS plugins.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1181 """
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1182 for name, module in list(self.__onDemandActiveModules.items()):
7023
b025e93cc27d PluginManager, PluginUninstallDialog: changed some getattr() calls detected by the new code style checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
1183 if getattr(module, "pluginType", "") == "version_control":
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1184 self.deactivatePlugin(name, True)
3200
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1185
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1186 ########################################################################
4630
7b0e38956b5c Refined the online state change behaviour.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4629
diff changeset
1187 ## Methods for the creation of the plug-ins download directory
3200
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1188 ########################################################################
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1189
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1190 def __checkPluginsDownloadDirectory(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1191 """
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1192 Private slot to check for the existence of the plugins download
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1193 directory.
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1194 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1195 downloadDir = Preferences.getPluginManager("DownloadPath")
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1196 if not downloadDir:
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1197 downloadDir = self.__defaultDownloadDir
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1198
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1199 if not os.path.exists(downloadDir):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1200 try:
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1201 os.mkdir(downloadDir, 0o755)
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
1202 except OSError:
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1203 # try again with (possibly) new default
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1204 downloadDir = self.__defaultDownloadDir
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1205 if not os.path.exists(downloadDir):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1206 try:
12
1d8dd9706f46 First commit after changing to Python 3.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7
diff changeset
1207 os.mkdir(downloadDir, 0o755)
7836
2f0d208b8137 Changed code to not use the OSError aliases (IOError, EnvironmentError, socket.error and select.error) anymore.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7785
diff changeset
1208 except OSError as err:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
1209 EricMessageBox.critical(
3020
542e97d4ecb3 Fixed a bunch of visible indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2992
diff changeset
1210 self.__ui,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
1211 self.tr("Plugin Manager Error"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
1212 self.tr(
2992
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1213 """<p>The plugin download directory"""
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1214 """ <b>{0}</b> could not be created. Please"""
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1215 """ configure it via the configuration"""
dbdf27746da5 Continued to shorten the code lines to max. 79 characters.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2960
diff changeset
1216 """ dialog.</p><p>Reason: {1}</p>""")
3036
30c81c9e88b8 Fixed a bunch of indentation issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3034
diff changeset
1217 .format(downloadDir, str(err)))
0
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1218 downloadDir = ""
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1219
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1220 Preferences.setPluginManager("DownloadPath", downloadDir)
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1221
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1222 def preferencesChanged(self):
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1223 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1224 Public slot to react to changes in configuration.
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1225 """
de9c2efb9d02 Started porting eric4 to Python3
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1226 self.__checkPluginsDownloadDirectory()
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1227
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1228 ########################################################################
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1229 ## Methods for automatic plug-in update check below
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1230 ########################################################################
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1231
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1232 def checkPluginUpdatesAvailable(self):
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1233 """
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1234 Public method to check the availability of updates of plug-ins.
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1235 """
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1236 period = Preferences.getPluginManager("UpdatesCheckInterval")
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1237 # 0 = off
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1238 # 1 = daily
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1239 # 2 = weekly
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1240 # 3 = monthly
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1241 # 4 = always
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1242
8580
e91b276e0771 Re-introduced the Internet reachability checks.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8444
diff changeset
1243 if period == 0 or not self.__ui.isOnline():
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1244 return
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1245
3200
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1246 elif period in [1, 2, 3]:
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1247 lastModified = QFileInfo(self.pluginRepositoryFile).lastModified()
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1248 if lastModified.isValid() and lastModified.date().isValid():
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1249 lastModifiedDate = lastModified.date()
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1250 now = QDate.currentDate()
8228
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
1251 if (
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
1252 (period == 1 and lastModifiedDate.day() == now.day()) or
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
1253 (period == 2 and lastModifiedDate.daysTo(now) < 7) or
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
1254 (period == 3 and (lastModifiedDate.daysTo(now) <
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
1255 lastModifiedDate.daysInMonth()))
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1256 ):
8228
772103b14c18 Applied some more code simplifications suggested by the new Simplify checker (Y114: use logical or for multiple if).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8222
diff changeset
1257 # daily, weekly, monthly
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1258 return
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1259
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1260 self.downLoadRepositoryFile()
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1261
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1262 def downLoadRepositoryFile(self, url=None):
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1263 """
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1264 Public method to download the plugin repository file.
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1265
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1266 @param url URL to get the plugin repository file from
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1267 (defaults to None)
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1268 @type QUrl or str (optional)
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1269 """
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1270 self.__updateAvailable = False
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1271
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1272 if url is None:
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1273 url = Preferences.getUI("PluginRepositoryUrl7")
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1274 request = QNetworkRequest(QUrl(url))
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7967
diff changeset
1275 request.setAttribute(
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7967
diff changeset
1276 QNetworkRequest.Attribute.CacheLoadControlAttribute,
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7967
diff changeset
1277 QNetworkRequest.CacheLoadControl.AlwaysNetwork)
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1278 reply = self.__networkManager.get(request)
6088
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1279 reply.finished.connect(
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1280 lambda: self.__downloadRepositoryFileDone(reply))
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1281 self.__replies.append(reply)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1282
6088
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1283 def __downloadRepositoryFileDone(self, reply):
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1284 """
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1285 Private method called after the repository file was downloaded.
6088
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1286
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1287 @param reply reference to the reply object of the download
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1288 @type QNetworkReply
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1289 """
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1290 if reply in self.__replies:
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1291 self.__replies.remove(reply)
6088
b7fdd0db835e Removed use of sender() in the plug-in repository dialog and the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6080
diff changeset
1292
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7967
diff changeset
1293 if reply.error() != QNetworkReply.NetworkError.NoError:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
1294 EricMessageBox.warning(
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1295 None,
3190
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
1296 self.tr("Error downloading file"),
a9a94491c4fd Changed the code to use QObject.tr() instead of QObject.trUtf8().
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3171
diff changeset
1297 self.tr(
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1298 """<p>Could not download the requested file"""
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1299 """ from {0}.</p><p>Error: {1}</p>"""
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
1300 ).format(Preferences.getUI("PluginRepositoryUrl7"),
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1301 reply.errorString())
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1302 )
4626
c891c7ad6b60 Added some missing deleteLater() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4566
diff changeset
1303 reply.deleteLater()
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1304 return
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1305
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1306 ioDevice = QFile(self.pluginRepositoryFile + ".tmp")
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7967
diff changeset
1307 ioDevice.open(QIODevice.OpenModeFlag.WriteOnly)
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1308 ioDevice.write(reply.readAll())
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1309 ioDevice.close()
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1310 if QFile.exists(self.pluginRepositoryFile):
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1311 QFile.remove(self.pluginRepositoryFile)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1312 ioDevice.rename(self.pluginRepositoryFile)
4626
c891c7ad6b60 Added some missing deleteLater() calls.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4566
diff changeset
1313 reply.deleteLater()
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1314
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1315 if os.path.exists(self.pluginRepositoryFile):
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1316 f = QFile(self.pluginRepositoryFile)
8143
2c730d5fd177 Changed the use of PyQt enums because the way they were used previously is deprecated since two years and replaced some deprecated Qt stuff.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7967
diff changeset
1317 if f.open(QIODevice.OpenModeFlag.ReadOnly):
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1318 # save current URL
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
1319 url = Preferences.getUI("PluginRepositoryUrl7")
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1320
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1321 # read the repository file
8366
2a9f5153c438 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1322 from EricXML.PluginRepositoryReader import (
2a9f5153c438 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1323 PluginRepositoryReader
2a9f5153c438 Corrected some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8358
diff changeset
1324 )
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1325 reader = PluginRepositoryReader(f, self.checkPluginEntry)
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1326 reader.readXML()
8318
962bce857696 Replaced all imports of PyQt5 to PyQt6 and started to replace code using obsoleted methods and adapt to the PyQt6 enum usage.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8314
diff changeset
1327 if url != Preferences.getUI("PluginRepositoryUrl7"):
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1328 # redo if it is a redirect
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1329 self.checkPluginUpdatesAvailable()
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1330 return
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1331
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1332 if self.__updateAvailable:
8595
ce2034bc1c6e Plugin Repository: added an integrated plugin repository viewer (right side).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8580
diff changeset
1333 self.__ui.activatePluginRepositoryViewer()
9031
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1334 else:
8c9013b363bc Fixed an issue related to updating the plug-in repository file and the respective view.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9016
diff changeset
1335 self.pluginRepositoryFileDownloaded.emit()
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1336
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1337 def checkPluginEntry(self, name, short, description, url, author, version,
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1338 filename, status):
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1339 """
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1340 Public method to check a plug-in's data for an update.
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1341
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1342 @param name data for the name field (string)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1343 @param short data for the short field (string)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1344 @param description data for the description field (list of strings)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1345 @param url data for the url field (string)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1346 @param author data for the author field (string)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1347 @param version data for the version field (string)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1348 @param filename data for the filename field (string)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1349 @param status status of the plugin (string [stable, unstable, unknown])
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1350 """
3200
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1351 # ignore hidden plug-ins
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1352 pluginName = os.path.splitext(url.rsplit("/", 1)[1])[0]
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1353 if pluginName in Preferences.getPluginManager("HiddenPlugins"):
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1354 return
83bde5e6f146 Extended the plugin repository dialog to allow to hide unwanted entries and cleanup the plugin downloads area.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3190
diff changeset
1355
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1356 archive = os.path.join(Preferences.getPluginManager("DownloadPath"),
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1357 filename)
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1358
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1359 # Check against installed/loaded plug-ins
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1360 pluginDetails = self.getPluginDetails(pluginName)
6611
59b262a8e31c PluginManager: reworked the last fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6608
diff changeset
1361 if pluginDetails is None:
3113
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1362 if not Preferences.getPluginManager("CheckInstalledOnly"):
2780e230f129 Continued implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3112
diff changeset
1363 self.__updateAvailable = True
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1364 return
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1365
6605
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1366 versionTuple = Globals.versionToTuple(version)[:3]
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1367 pluginVersionTuple = Globals.versionToTuple(
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1368 pluginDetails["version"])[:3]
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1369
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1370 if pluginVersionTuple < versionTuple:
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1371 self.__updateAvailable = True
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1372 return
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1373
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1374 if not Preferences.getPluginManager("CheckInstalledOnly"):
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1375 # Check against downloaded plugin archives
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1376 # 1. Check, if the archive file exists
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1377 if not os.path.exists(archive):
6611
59b262a8e31c PluginManager: reworked the last fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6608
diff changeset
1378 if pluginDetails["moduleName"] != pluginName:
59b262a8e31c PluginManager: reworked the last fix.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6608
diff changeset
1379 self.__updateAvailable = True
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1380 return
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1381
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1382 # 2. Check, if the archive is a valid zip file
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1383 if not zipfile.is_zipfile(archive):
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1384 self.__updateAvailable = True
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1385 return
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1386
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1387 # 3. Check the version of the archive file
5588
6ba512d9f46a Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5555
diff changeset
1388 zipFile = zipfile.ZipFile(archive, "r")
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1389 try:
5588
6ba512d9f46a Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5555
diff changeset
1390 aversion = zipFile.read("VERSION").decode("utf-8")
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1391 except KeyError:
6605
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1392 aversion = "0.0.0"
5588
6ba512d9f46a Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5555
diff changeset
1393 zipFile.close()
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1394
6605
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1395 aversionTuple = Globals.versionToTuple(aversion)[:3]
6ae78749babc PluginManager: added version check for situation, where the downloaded files have been deleted already.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6360
diff changeset
1396 if aversionTuple != versionTuple:
3114
7942a890a4fc Refined the plug-in update check by checking against installed plug-ins before checking downloaded ones.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3113
diff changeset
1397 self.__updateAvailable = True
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1398
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1399 def __sslErrors(self, reply, errors):
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1400 """
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1401 Private slot to handle SSL errors.
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1402
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1403 @param reply reference to the reply object (QNetworkReply)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1404 @param errors list of SSL errors (list of QSslError)
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1405 """
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1406 ignored = self.__sslErrorHandler.sslErrorsReply(reply, errors)[0]
8354
12ebd3934fef Renamed 'E5Utilities' to 'EricUtilities' and 'E5Network' to 'EricNetwork'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8351
diff changeset
1407 if ignored == EricSslErrorState.NOT_IGNORED:
3112
9485059ea9fa Started implementing the automatic plug-in update check in the plug-in manager.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3036
diff changeset
1408 self.__downloadCancelled = True
5555
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1409
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1410 ########################################################################
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1411 ## Methods to clear private data of plug-ins below
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1412 ########################################################################
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1413
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1414 def clearPluginsPrivateData(self, type_):
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1415 """
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1416 Public method to clear the private data of plug-ins of a specified
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1417 type.
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1418
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1419 Plugins supporting this functionality must support the module function
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1420 clearPrivateData() and have the module level attribute pluginType.
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1421
5853
e45a570528a4 Changed the safe browsing code to be less interruptive.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5726
diff changeset
1422 @param type_ type of the plugin to clear private data for (string)
5555
5ece4e830780 Added some code to clear out history information of projects, VCS plug-ins and untyped plug-ins, that implement a clearPrivateData() module function.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5395
diff changeset
1423 """
7255
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1424 for module in (
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1425 list(self.__onDemandActiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1426 list(self.__onDemandInactiveModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1427 list(self.__activeModules.values()) +
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1428 list(self.__inactiveModules.values())
d595f6f9cbf8 Continued to resolve code style issue M841.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7229
diff changeset
1429 ):
8222
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1430 if (
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1431 getattr(module, "pluginType", "") == type_ and
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1432 hasattr(module, "clearPrivateData")
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1433 ):
5994b80b8760 Applied some more code simplifications suggested by the new Simplify checker (Y102: use single if) (batch 1).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8218
diff changeset
1434 module.clearPrivateData()
8292
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1435
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1436 ########################################################################
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1437 ## Methods to install a plug-in module dependency via pip
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1438 ########################################################################
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1439
8293
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1440 def pipInstall(self, packages):
8292
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1441 """
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1442 Public method to install the given package via pip.
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1443
8293
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1444 @param packages list of packages to install
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1445 @type list of str
8292
54b48d756b0a Started preparing the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8268
diff changeset
1446 """
8293
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1447 try:
8356
68ec9c3d4de5 Renamed the modules and classes of the E5Gui package to have the prefix 'Eric' instead of 'E5'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8354
diff changeset
1448 pip = ericApp().getObject("Pip")
8293
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1449 except KeyError:
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1450 # Installation is performed via the plug-in installation script.
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1451 from PipInterface.Pip import Pip
cad568796748 Prepared the plugin manager to install plug-in dependecies.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8292
diff changeset
1452 pip = Pip(self)
9016
6f079c524e99 Changed occurrences of sys.executable with a method to get rid of the "w" on Windows and macOS systems (i.e. change pythonw to python).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8989
diff changeset
1453 pip.installPackages(packages,
6f079c524e99 Changed occurrences of sys.executable with a method to get rid of the "w" on Windows and macOS systems (i.e. change pythonw to python).
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8989
diff changeset
1454 interpreter=Globals.getPythonExecutable())
4566
a2e8f3c420ec Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4378
diff changeset
1455
a2e8f3c420ec Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4378
diff changeset
1456 #
a2e8f3c420ec Dealt with the M801 code style checker messages.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4378
diff changeset
1457 # eflag: noqa = M801

eric ide

mercurial