| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| def create_service(context, name, *args): |
| sm = context.ServiceManager |
| if len(args) > 0: |
| return sm.createInstanceWithArgumentsAndContext(name, args, context) |
| else: |
| return sm.createInstanceWithContext(name, context) |
|
|
|
|
| class Namespace(object): |
| def __init__(self, dotted_name): |
| self.dotted_name = dotted_name |
|
|
| def __getattr__(self, name): |
| return Namespace(self.dotted_name + '.' + name) |
|
|
| def __call__(self, context, *args): |
| return create_service(context, self.dotted_name, *args) |
|
|
| def bind(self, context): |
| return ContextBoundNamespace(self, context) |
|
|
|
|
| class ContextBoundNamespace(object): |
|
|
| def __init__(self, namespace, context): |
| self.namespace = namespace |
| self.context = context |
|
|
| def __getattr__(self, name): |
| obj = getattr(self.namespace, name, None) |
| if isinstance(obj, Namespace): |
| return obj.bind(self.context) |
| return obj |
|
|
| def __call__(self, *args): |
| return self.namespace(self.context, *args) |
|
|
| def __iter__(self): |
| context = self.context |
| sm = context.ServiceManager |
| prefix = self.dotted_name + '.' |
| for name in sm.AvailableServiceNames: |
| if name.startswith(prefix): |
| basename = name[len(prefix):] |
| if basename.find('.') == -1: |
| yield basename |
|
|
|
|
| css = Namespace('com.sun.star') |
|
|