##// END OF EJS Templates
containers and selectioncontainers now only allow one of any single child
Jonathan Frederic -
Show More
@@ -24,11 +24,29 b' class ContainerWidget(DOMWidget):'
24 24
25 25 # Keys, all private and managed by helper methods. Flexible box model
26 26 # classes...
27 children = List(Instance(DOMWidget), sync=True)
27 children = List(Instance(DOMWidget))
28 _children = List(Instance(DOMWidget), sync=True)
28 29
29 description = Unicode(sync=True)
30 button_text = Unicode(sync=True)
30 def __init__(self, *pargs, **kwargs):
31 """Constructor"""
32 DOMWidget.__init__(self, *pargs, **kwargs)
33 self.on_trait_change(self._validate, ['children'])
34
35 def _validate(self, name, old, new):
36 """Validate children list.
37
38 Makes sure only one instance of any given model can exist in the
39 children list."""
40 if new is not None and isinstance(new, list):
41 children = []
42 for child in new:
43 if child not in children:
44 children.append(child)
45 self._children = children
31 46
32 47
33 48 class ModalWidget(ContainerWidget):
34 49 view_name = Unicode('ModalView', sync=True)
50
51 description = Unicode(sync=True)
52 button_text = Unicode(sync=True)
@@ -14,21 +14,19 b' pages.'
14 14 #-----------------------------------------------------------------------------
15 15 # Imports
16 16 #-----------------------------------------------------------------------------
17 from .widget import DOMWidget
17 from .widget_container import ContainerWidget
18 18 from IPython.utils.traitlets import Unicode, Dict, CInt, List, Instance
19 19
20 20 #-----------------------------------------------------------------------------
21 21 # Classes
22 22 #-----------------------------------------------------------------------------
23 class AccordionWidget(DOMWidget):
23 class AccordionWidget(ContainerWidget):
24 24 view_name = Unicode('AccordionView', sync=True)
25 25
26 26 # Keys
27 27 _titles = Dict(help="Titles of the pages", sync=True)
28 28 selected_index = CInt(0, sync=True)
29 29
30 children = List(Instance(DOMWidget), sync=True)
31
32 30 # Public methods
33 31 def set_title(self, index, title):
34 32 """Sets the title of a container page.
General Comments 0
You need to be logged in to leave comments. Login now