Removed support for indicating the position of a module
This commit is contained in:
parent
fcd68e1ec1
commit
a2104f5d2f
@ -1,11 +1,9 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
|
|
||||||
import sys
|
import sys
|
||||||
import types
|
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import time
|
import time
|
||||||
import functools
|
import functools
|
||||||
import collections
|
|
||||||
|
|
||||||
from .core import io
|
from .core import io
|
||||||
from .core.util import *
|
from .core.util import *
|
||||||
@ -19,7 +17,6 @@ __all__ = [
|
|||||||
|
|
||||||
class Module(SettingsBase):
|
class Module(SettingsBase):
|
||||||
output = None
|
output = None
|
||||||
position = 0
|
|
||||||
|
|
||||||
def registered(self, status_handler):
|
def registered(self, status_handler):
|
||||||
"""Called when this module is registered with a status handler"""
|
"""Called when this module is registered with a status handler"""
|
||||||
@ -28,7 +25,7 @@ class Module(SettingsBase):
|
|||||||
if self.output:
|
if self.output:
|
||||||
if "name" not in self.output:
|
if "name" not in self.output:
|
||||||
self.output["name"] = self.__name__
|
self.output["name"] = self.__name__
|
||||||
json.insert(self.position, self.output)
|
json.insert(0, self.output)
|
||||||
|
|
||||||
class AsyncModule(Module):
|
class AsyncModule(Module):
|
||||||
def registered(self, status_handler):
|
def registered(self, status_handler):
|
||||||
@ -61,32 +58,15 @@ class i3pystatus:
|
|||||||
|
|
||||||
self.finder = ModuleFinder()
|
self.finder = ModuleFinder()
|
||||||
|
|
||||||
def get_instance_for_module(self, module, position, args, kwargs):
|
def register(self, module, *args, **kwargs):
|
||||||
if isinstance(module, types.ModuleType):
|
|
||||||
if not isinstance(position, int) and not args:
|
|
||||||
# If the user does this: register(modsde, mdesettings) with mdesettings
|
|
||||||
# being a dict Python will put mdesettings into the position argument
|
|
||||||
# , and not into *args. Let's fix that.
|
|
||||||
# If she uses keyword arguments, everything is fine :-)
|
|
||||||
args = (position,)
|
|
||||||
position = 0
|
|
||||||
|
|
||||||
module = self.finder.instanciate_class_from_module(module, *args, **kwargs)
|
|
||||||
elif args or kwargs:
|
|
||||||
raise ValueError("Additional arguments are invalid if 'module' is already an object")
|
|
||||||
|
|
||||||
return (module, position)
|
|
||||||
|
|
||||||
def register(self, module, position=0, *args, **kwargs):
|
|
||||||
"""Register a new module."""
|
"""Register a new module."""
|
||||||
|
|
||||||
if not module: # One can pass in False or None, if he wishes to temporarily disable a module
|
if not module: # One can pass in False or None, if he wishes to temporarily disable a module
|
||||||
return
|
return
|
||||||
|
|
||||||
module, position = self.get_instance_for_module(module, position, args, kwargs)
|
module = self.finder.instanciate_class_from_module(module, *args, **kwargs)
|
||||||
|
|
||||||
self.modules.append(module)
|
self.modules.append(module)
|
||||||
module.position = position
|
|
||||||
module.registered(self)
|
module.registered(self)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
|
@ -131,4 +131,8 @@ class ClassFinder:
|
|||||||
return classes[0]
|
return classes[0]
|
||||||
|
|
||||||
def instanciate_class_from_module(self, module, *args, **kwargs):
|
def instanciate_class_from_module(self, module, *args, **kwargs):
|
||||||
|
if isinstance(module, types.ModuleType):
|
||||||
return self.get_class(module)(*args, **kwargs)
|
return self.get_class(module)(*args, **kwargs)
|
||||||
|
elif args or kwargs:
|
||||||
|
raise ValueError("Additional arguments are invalid if 'module' is already an object")
|
||||||
|
return module
|
||||||
|
Loading…
Reference in New Issue
Block a user