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