def deactivatePlugin(self, project_name, plugin_env): view = self.itsView prefs = Utility.loadPrefs(Globals.options) pluginPrefs = self.widget.GetSubMenu().pluginPrefs for egg in plugin_env[project_name]: break else: return None def deleteItems(item): for child in item.iterChildren(): deleteItems(child) if isinstance(item, Kind): for instance in item.iterItems(): instance.delete(True) for ep in egg.get_entry_map('chandler.parcels').values(): parcel = Parcel.find_parcel_from_entrypoint(view, ep) if parcel is not None: deleteItems(parcel) parcel.delete(True) pluginPrefs[ep.dist.key] = 'inactive' if 'plugins' not in prefs: prefs['plugins'] = pluginPrefs else: prefs['plugins'].update(pluginPrefs) self.widget.GetSubMenu().pluginPrefs = prefs['plugins'] prefs.write() return egg
def activatePlugin(self, project_name, plugin_env): view = self.itsView prefs = Utility.loadPrefs(Globals.options) pluginPrefs = self.widget.GetSubMenu().pluginPrefs for egg in plugin_env[project_name]: pkg_resources.working_set.add(egg) for ep in egg.get_entry_map('chandler.parcels').values(): try: ep.require(plugin_env) requires = egg.requires(ep.extras) except pkg_resources.ResolutionError: logger.exception("Activating %s failed", egg.egg_name()) return None, None break else: return None, None dependencies = pkg_resources.working_set.resolve(requires) for ep in pkg_resources.iter_entry_points('chandler.parcels'): name = ep.dist.key if plugin_env[name]: # only handle plugin entrypoints if ep.dist == egg or ep.dist in dependencies: if pluginPrefs.get(name, 'inactive') == 'inactive': Parcel.load_parcel_from_entrypoint(view, ep) pluginPrefs[name] = 'active' else: dependencies.remove(ep.dist) if 'plugins' not in prefs: prefs['plugins'] = pluginPrefs else: prefs['plugins'].update(pluginPrefs) self.widget.GetSubMenu().pluginPrefs = prefs['plugins'] prefs.write() return egg, dependencies