widget_container.py
203 lines
| 6.8 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r14283 | """ContainerWidget class. | ||
Represents a container that can be used to group other widgets. | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2013, the IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the Modified BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r14308 | from .widget import Widget | ||
Jason Grout
|
r14486 | from IPython.utils.traitlets import Unicode, Bool, List, Instance | ||
Jonathan Frederic
|
r14239 | |||
Jonathan Frederic
|
r14283 | #----------------------------------------------------------------------------- | ||
# Classes | ||||
#----------------------------------------------------------------------------- | ||||
Jonathan Frederic
|
r14239 | class ContainerWidget(Widget): | ||
Jonathan Frederic
|
r14275 | target_name = Unicode('ContainerWidgetModel') | ||
Jonathan Frederic
|
r14239 | default_view_name = Unicode('ContainerView') | ||
Jonathan Frederic
|
r14268 | |||
Jonathan Frederic
|
r14283 | # Keys, all private and managed by helper methods. Flexible box model | ||
# classes... | ||||
Jonathan Frederic
|
r14333 | _keys = ['_vbox', '_hbox', '_align_start', '_align_end', '_align_center', | ||
Jonathan Frederic
|
r14335 | '_pack_start', '_pack_end', '_pack_center', '_flex0', '_flex1', | ||
Jason Grout
|
r14498 | '_flex2', 'description', 'button_text', | ||
'children'] | ||||
children = List(Instance(Widget)) | ||||
Jonathan Frederic
|
r14409 | description = Unicode() | ||
button_text = Unicode() | ||||
Jonathan Frederic
|
r14269 | _hbox = Bool(False) | ||
_vbox = Bool(False) | ||||
Jonathan Frederic
|
r14333 | _align_start = Bool(False) | ||
_align_end = Bool(False) | ||||
_align_center = Bool(False) | ||||
_pack_start = Bool(False) | ||||
_pack_end = Bool(False) | ||||
_pack_center = Bool(False) | ||||
Jonathan Frederic
|
r14335 | _flex0 = Bool(False) | ||
_flex1 = Bool(False) | ||||
_flex2 = Bool(False) | ||||
Jonathan Frederic
|
r14269 | |||
def hbox(self, enabled=True): | ||||
Jonathan Frederic
|
r14283 | """Make this container an hbox. Automatically disables conflicting | ||
features. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the hbox feature of the container, defaults to | ||||
True.""" | ||||
Jonathan Frederic
|
r14269 | self._hbox = enabled | ||
if enabled: | ||||
self._vbox = False | ||||
def vbox(self, enabled=True): | ||||
Jonathan Frederic
|
r14283 | """Make this container an vbox. Automatically disables conflicting | ||
features. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the vbox feature of the container, defaults to | ||||
True.""" | ||||
Jonathan Frederic
|
r14269 | self._vbox = enabled | ||
if enabled: | ||||
self._hbox = False | ||||
Jonathan Frederic
|
r14333 | def align_start(self, enabled=True): | ||
Jonathan Frederic
|
r14283 | """Make the contents of this container align to the start of the axis. | ||
Automatically disables conflicting alignments. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the start alignment of the container, defaults to | ||||
True.""" | ||||
Jonathan Frederic
|
r14333 | self._align_start = enabled | ||
Jonathan Frederic
|
r14269 | if enabled: | ||
Jonathan Frederic
|
r14333 | self._align_end = False | ||
self._align_center = False | ||||
Jonathan Frederic
|
r14269 | |||
Jonathan Frederic
|
r14333 | def align_end(self, enabled=True): | ||
Jonathan Frederic
|
r14283 | """Make the contents of this container align to the end of the axis. | ||
Automatically disables conflicting alignments. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the end alignment of the container, defaults to | ||||
True.""" | ||||
Jonathan Frederic
|
r14333 | self._align_end = enabled | ||
Jonathan Frederic
|
r14269 | if enabled: | ||
Jonathan Frederic
|
r14333 | self._align_start = False | ||
self._align_center = False | ||||
Jonathan Frederic
|
r14269 | |||
Jonathan Frederic
|
r14333 | def align_center(self, enabled=True): | ||
Jonathan Frederic
|
r14283 | """Make the contents of this container align to the center of the axis. | ||
Automatically disables conflicting alignments. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the center alignment of the container, defaults to | ||||
True.""" | ||||
Jonathan Frederic
|
r14333 | self._align_center = enabled | ||
Jonathan Frederic
|
r14269 | if enabled: | ||
Jonathan Frederic
|
r14333 | self._align_start = False | ||
self._align_end = False | ||||
def pack_start(self, enabled=True): | ||||
"""Make the contents of this container pack to the start of the axis. | ||||
Automatically disables conflicting packings. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the start packing of the container, defaults to | ||||
True.""" | ||||
self._pack_start = enabled | ||||
if enabled: | ||||
self._pack_end = False | ||||
self._pack_center = False | ||||
def pack_end(self, enabled=True): | ||||
"""Make the contents of this container pack to the end of the axis. | ||||
Automatically disables conflicting packings. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the end packing of the container, defaults to | ||||
True.""" | ||||
self._pack_end = enabled | ||||
if enabled: | ||||
self._pack_start = False | ||||
self._pack_center = False | ||||
def pack_center(self, enabled=True): | ||||
"""Make the contents of this container pack to the center of the axis. | ||||
Automatically disables conflicting packings. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the center packing of the container, defaults to | ||||
True.""" | ||||
self._pack_center = enabled | ||||
if enabled: | ||||
self._pack_start = False | ||||
self._pack_end = False | ||||
Jonathan Frederic
|
r14335 | |||
def flex0(self, enabled=True): | ||||
"""Put this container in flex0 mode. Automatically disables conflicting | ||||
flex modes. See the widget tutorial part 5 example notebook for more | ||||
information. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the flex0 attribute of the container, defaults to | ||||
True.""" | ||||
self._flex0 = enabled | ||||
if enabled: | ||||
self._flex1 = False | ||||
self._flex2 = False | ||||
def flex1(self, enabled=True): | ||||
"""Put this container in flex1 mode. Automatically disables conflicting | ||||
flex modes. See the widget tutorial part 5 example notebook for more | ||||
information. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the flex1 attribute of the container, defaults to | ||||
True.""" | ||||
self._flex1 = enabled | ||||
if enabled: | ||||
self._flex0 = False | ||||
self._flex2 = False | ||||
def flex2(self, enabled=True): | ||||
"""Put this container in flex2 mode. Automatically disables conflicting | ||||
flex modes. See the widget tutorial part 5 example notebook for more | ||||
information. | ||||
Parameters | ||||
---------- | ||||
enabled: bool (optional) | ||||
Enabled or disable the flex2 attribute of the container, defaults to | ||||
True.""" | ||||
self._flex2 = enabled | ||||
if enabled: | ||||
self._flex0 = False | ||||
self._flex1 = False | ||||