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
Esempio n. 2
0
    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
Esempio n. 4
0
    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