Success import and better peaks validation in flatfilt and convfilt.
[hooke.git] / hooke / plugin / __init__.py
index 075cdffa0e063c7437a09a666e2f96967e6327dc..4249730e52ab9a3ecb0e88e455c8057991ea9d54 100644 (file)
@@ -30,26 +30,25 @@ from ..util.pluggable import IsSubclass, construct_graph
 
 PLUGIN_MODULES = [
 #    ('autopeak', True),
-#    ('curvetools', True),
+    ('convfilt', True),
     ('cut', True),
+#    ('fclamp', True),
 #    ('fit', True),
 #    ('flatfilts-rolf', True),
-#    ('flatfilts', True),
-#    ('generalclamp', True),
-#    ('generaltccd', True),
-#    ('generalvclamp', True),
+    ('flatfilt', True),
 #    ('jumpstat', True),
 #    ('macro', True),
 #    ('massanalysis', True),
 #    ('multidistance', True),
 #    ('multifit', True),
 #    ('pcluster', True),
-#    ('peakspot', True),
 #    ('procplots', True),
 #    ('review', True),
 #    ('showconvoluted', True),
 #    ('superimpose', True),
+#    ('tccd', True),
 #    ('tutorial', True),
+    ('vclamp', True),
     ]
 """List of plugin modules and whether they should be included by
 default.  TODO: autodiscovery
@@ -57,6 +56,7 @@ default.  TODO: autodiscovery
 
 BUILTIN_MODULES = [
     'config',
+    'curve',
     'debug',
     'note',
     'playlist',
@@ -82,9 +82,10 @@ class Plugin (object):
         self.name = name
         self.setting_section = '%s plugin' % self.name
         self.config = {}
+        self._commands = []
 
     def dependencies(self):
-        """Return a list of :class:`Plugin`\s we require."""
+        """Return a list of names of :class:`Plugin`\s we require."""
         return []
 
     def default_settings(self):
@@ -100,7 +101,7 @@ class Plugin (object):
     def commands(self):
         """Return a list of :class:`hooke.command.Command`\s provided.
         """
-        return []
+        return list(self._commands)
 
 class Builtin (Plugin):
     """A required collection of Hooke commands.
@@ -110,6 +111,19 @@ class Builtin (Plugin):
     """
     pass
 
+# Plugin utility functions
+
+def argument_to_setting(section_name, argument):
+    """Convert an :class:`~hooke.command.Argument` to a
+    `~hooke.conf.Setting`.
+
+    This is a lossy transition, because
+    :class:`~hooke.command.Argument`\s store more information than
+    `~hooke.conf.Setting`\s.
+    """
+    return Setting(section_name, option=argument.name, value=argument.default,
+                   help=argument._help)
+
 # Construct plugin dependency graph and load plugin instances.
 
 PLUGIN_GRAPH = construct_graph(