src/eric7/PluginManager/PluginUninstallDialog.py

branch
eric7
changeset 10061
8bdad5699288
parent 9653
e67609152c5e
child 10428
a071d4065202
equal deleted inserted replaced
10060:b946699e9e79 10061:8bdad5699288
21 from eric7.EricWidgets import EricMessageBox 21 from eric7.EricWidgets import EricMessageBox
22 from eric7.EricWidgets.EricApplication import ericApp 22 from eric7.EricWidgets.EricApplication import ericApp
23 from eric7.EricWidgets.EricMainWindow import EricMainWindow 23 from eric7.EricWidgets.EricMainWindow import EricMainWindow
24 24
25 from .PluginManager import PluginManager 25 from .PluginManager import PluginManager
26 from .PluginUtilities import getPluginHeaderEntry, hasPluginHeaderEntry
26 from .Ui_PluginUninstallDialog import Ui_PluginUninstallDialog 27 from .Ui_PluginUninstallDialog import Ui_PluginUninstallDialog
27 28
28 29
29 class PluginUninstallWidget(QWidget, Ui_PluginUninstallDialog): 30 class PluginUninstallWidget(QWidget, Ui_PluginUninstallDialog):
30 """ 31 """
148 if pluginDirectory not in sys.path: 149 if pluginDirectory not in sys.path:
149 sys.path.insert(2, pluginDirectory) 150 sys.path.insert(2, pluginDirectory)
150 spec = importlib.util.spec_from_file_location(pluginName, pluginFile) 151 spec = importlib.util.spec_from_file_location(pluginName, pluginFile)
151 module = importlib.util.module_from_spec(spec) 152 module = importlib.util.module_from_spec(spec)
152 spec.loader.exec_module(module) 153 spec.loader.exec_module(module)
153 if not hasattr(module, "packageName"): 154 if not hasPluginHeaderEntry(module, "packageName"):
154 EricMessageBox.critical( 155 EricMessageBox.critical(
155 self, 156 self,
156 self.tr("Plugin Uninstallation"), 157 self.tr("Plugin Uninstallation"),
157 self.tr( 158 self.tr(
158 """<p>The plugin <b>{0}</b> has no 'packageName'""" 159 """<p>The plugin <b>{0}</b> has no 'packageName'"""
159 """ attribute. Aborting...</p>""" 160 """ attribute. Aborting...</p>"""
160 ).format(pluginName), 161 ).format(pluginName),
161 ) 162 )
162 return False 163 return False
163 164
164 package = getattr(module, "packageName", None) 165 package = getPluginHeaderEntry(module, "packageName", None)
165 if package is None: 166 if package is None:
166 package = "None" 167 package = "None"
167 packageDir = "" 168 packageDir = ""
168 else: 169 else:
169 packageDir = os.path.join(pluginDirectory, package) 170 packageDir = os.path.join(pluginDirectory, package)
171 hasattr(module, "prepareUninstall") 172 hasattr(module, "prepareUninstall")
172 and not self.keepConfigurationCheckBox.isChecked() 173 and not self.keepConfigurationCheckBox.isChecked()
173 ): 174 ):
174 module.prepareUninstall() 175 module.prepareUninstall()
175 internalPackages = [] 176 internalPackages = []
176 if hasattr(module, "internalPackages"): 177 if hasPluginHeaderEntry(module, "internalPackages"):
177 # it is a comma separated string 178 # it is a comma separated string
178 internalPackages = [p.strip() for p in module.internalPackages.split(",")] 179 internalPackages = [
180 p.strip()
181 for p in getPluginHeaderEntry(module, "internalPackages", "").split(",")
182 ]
179 del module 183 del module
180 184
181 # clean sys.modules 185 # clean sys.modules
182 self.__pluginManager.removePluginFromSysModules( 186 self.__pluginManager.removePluginFromSysModules(
183 pluginName, package, internalPackages 187 pluginName, package, internalPackages

eric ide

mercurial