hooke.ui.gui was getting complicated, so I stripped it down for a moment.
[hooke.git] / hooke / ui / __init__.py
index 42085c25a0b05b5216cb8263004ae4158a4e1b54..47f97351d2f747bbaca71c30470e0e3fe64d5ed4 100644 (file)
@@ -22,9 +22,8 @@
 import ConfigParser as configparser
 
 from .. import version
-from ..compat.odict import odict
 from ..config import Setting
-from ..util.pluggable import IsSubclass
+from ..util.pluggable import IsSubclass, construct_odict
 
 
 USER_INTERFACE_MODULES = [
@@ -52,8 +51,10 @@ class CommandMessage (QueueMessage):
     a :class:`dict` with `argname` keys and `value` values to be
     passed to the command.
     """
-    def __init__(self, command, arguments):
+    def __init__(self, command, arguments=None):
         self.command = command
+        if arguments == None:
+            arguments = {}
         self.arguments = arguments
 
 class UserInterface (object):
@@ -106,27 +107,6 @@ COPYRIGHT
         return 'The playlist %s does not contain any valid force curve data.' \
             % self.name
 
-def construct_odict(this_modname, submodnames, class_selector):
-    """Search the submodules `submodnames` of a module `this_modname`
-    for class objects for which `class_selector(class)` returns
-    `True`.  These classes are instantiated and stored in the returned
-    :class:`hooke.compat.odict.odict` in the order in which they were
-    discovered.
-    """
-    instances = odict()
-    for submodname in submodnames:
-        count = len([s for s in submodnames if s == submodname])
-        assert count > 0, 'No %s entries: %s' % (submodname, submodnames)
-        assert count == 1, 'Multiple (%d) %s entries: %s' \
-            % (count, submodname, submodnames)
-        this_mod = __import__(this_modname, fromlist=[submodname])
-        submod = getattr(this_mod, submodname)
-        for objname in dir(submod):
-            obj = getattr(submod, objname)
-            if class_selector(obj):
-                instance = obj()
-                instances[instance.name] = instance
-    return instances
 
 USER_INTERFACES = construct_odict(
     this_modname=__name__,