hooke.ui.gui was getting complicated, so I stripped it down for a moment.
[hooke.git] / hooke / ui / gui / panel / __init__.py
1 # Copyright\r
2 \r
3 from ....util.pluggable import IsSubclass, construct_odict\r
4 \r
5 \r
6 PANEL_MODULES = [\r
7     'commands',\r
8 #    'note',\r
9 #    'notebook',\r
10 #    'playlist',\r
11 #    'plot',\r
12 #    'propertyeditor',\r
13 #    'results',\r
14 #    'selection',\r
15 #    'welcome',\r
16     ]\r
17 """List of panel modules.  TODO: autodiscovery\r
18 """\r
19 \r
20 class Panel (object):\r
21     """Base class for Hooke GUI panels.\r
22     \r
23     :attr:`name` identifies the request type and should match the\r
24     module name.\r
25     """\r
26     def __init__(self, name=None, callbacks=None, **kwargs):\r
27         super(Panel, self).__init__(**kwargs)\r
28         self.name = name\r
29         if callbacks == None:\r
30             callbacks = {}\r
31         self._callbacks = callbacks\r
32 \r
33 \r
34 PANELS = construct_odict(\r
35     this_modname=__name__,\r
36     submodnames=PANEL_MODULES,\r
37     class_selector=IsSubclass(Panel, blacklist=[Panel]),\r
38     instantiate=False)\r
39 """:class:`hooke.compat.odict.odict` of :class:`Panel`\r
40 instances keyed by `.name`.\r
41 """\r