From 1fd53cd60a66fd4918a22c8502bc6382a2cb1330 Mon Sep 17 00:00:00 2001 From: enkore Date: Sun, 24 Feb 2013 20:20:15 +0100 Subject: [PATCH] Add ModuleList --- i3pystatus/__init__.py | 12 +++--------- i3pystatus/core/util.py | 10 ++++++++++ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/i3pystatus/__init__.py b/i3pystatus/__init__.py index a1774c6..effbb19 100644 --- a/i3pystatus/__init__.py +++ b/i3pystatus/__init__.py @@ -48,8 +48,6 @@ class IntervalModule(AsyncModule): time.sleep(self.interval) class i3pystatus: - modules = [] - def __init__(self, standalone=False, interval=1, input_stream=sys.stdin): if standalone: self.io = core.io.StandaloneIO(interval) @@ -57,17 +55,13 @@ class i3pystatus: self.io = core.io.IOHandler(input_stream) self.finder = ClassFinder(Module) + self.modules = ModuleList(self) def register(self, module, *args, **kwargs): """Register a new module.""" - if not module: # One can pass in False or None, if he wishes to temporarily disable a module - return - - module = self.finder.instanciate_class_from_module(module, *args, **kwargs) - - self.modules.append(module) - module.registered(self) + if module: + self.modules.append(self.finder.instanciate_class_from_module(module, *args, **kwargs)) def run(self): for j in core.io.JSONIO(self.io).read(): diff --git a/i3pystatus/core/util.py b/i3pystatus/core/util.py index 38e7d34..8a10b13 100644 --- a/i3pystatus/core/util.py +++ b/i3pystatus/core/util.py @@ -8,8 +8,18 @@ from .exceptions import * __all__ = [ "SettingsBase", "ClassFinder", + "ModuleList", ] +class ModuleList(collections.UserList): + def __init__(self, status_handler): + self.status_handler = status_handler + super().__init__() + + def append(self, module): + module.registered(self.status_handler) + super().append(module) + class KeyConstraintDict(collections.UserDict): class MissingKeys(Exception): def __init__(self, keys):