Show
Ignore:
Timestamp:
05/19/08 22:59:57 (7 months ago)
Author:
Ronny Pfannschmidt <Ronny.Pfannschmidt@…>
Message:

got rid of the mess pida.core.plugins

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pida/core/servicemanager.py

    r1165 r1171  
    11import os, imp, sys 
    22 
    3 from pida.core.interfaces import IService, IEditor, IPlugin 
    4 from pida.core.plugins import Registry 
    53from pida.core.service import Service 
    64 
     
    111109        self._boss = boss 
    112110        self._loader = ServiceLoader(self._boss) 
    113         self._reg = Registry() 
    114         self._plugin_objects = {} 
     111        self._reg = {} 
    115112 
    116113    def get_service(self, name): 
    117         return self._reg.get_singleton(name) 
     114        return self._reg[name] 
    118115 
    119116    def get_services(self): 
    120117        return sorted( 
    121                 self._reg.get_features(IService), 
     118                self._reg.values(), 
    122119                key=Service.sort_key) 
    123120 
    124121    def get_plugins(self): 
    125         return sorted( 
    126                 self._reg.get_features(IPlugin), 
    127                 key=Service.sort_key) 
     122        services = self.get_services() 
     123        return [s for s in services if not s.__module__.startswith('pida.services')] 
    128124 
    129125    def get_services_not_plugins(self): 
    130126        services = self.get_services() 
    131         plugins = self.get_plugins() 
    132         return [s for s in services if s not in plugins] 
     127        return [s for s in services if s.__module__.startswith('pida.services')] 
    133128 
    134129    def activate_services(self): 
     
    161156                plugin.stop_components() 
    162157                plugin.stop() 
    163                 self._reg.unregister(self._plugin_objects[plugin_name]) 
     158                del self._reg[plugin_name] 
    164159                return plugin 
    165160            else: 
     
    174169 
    175170    def _register_service(self, service): 
    176         self._reg.register_plugin( 
    177             instance=service, 
    178             singletons=( 
    179                 service.get_name(), 
    180             ), 
    181             features=( 
    182                 IService, 
    183             ) 
    184         ) 
    185  
    186     def _register_plugin(self, plugin): 
    187         plugin_object = self._reg.register_plugin( 
    188             instance=plugin, 
    189             singletons=( 
    190                 plugin.get_name(), 
    191             ), 
    192             features=( 
    193                 IService, 
    194                 IPlugin, 
    195             ) 
    196         ) 
    197         self._plugin_objects[plugin.get_name()] = plugin_object 
     171        self._reg[service.get_name()] = service 
     172 
     173    def _register_plugin(self, service): 
     174        self._reg[service.get_name()] = service 
    198175 
    199176    def _create_services(self): 
     
    239216 
    240217    def register_editor(self, service): 
    241         self._reg.register_plugin( 
    242             instance=service, 
    243             singletons=( 
    244                 service.get_name(), 
    245                 IEditor, 
    246             ), 
    247             features=( 
    248                 IService, 
    249             ) 
    250         ) 
     218        self._reg[service.get_name()] = service 
    251219 
    252220    def stop(self):