85 lines
2.8 KiB
Python
85 lines
2.8 KiB
Python
# Copyright (c) Jupyter Development Team.
|
|
# Distributed under the terms of the Modified BSD License.
|
|
|
|
"""Bool class.
|
|
|
|
Represents a boolean using a widget.
|
|
"""
|
|
|
|
from .widget_description import DescriptionWidget
|
|
from .widget_core import CoreWidget
|
|
from .valuewidget import ValueWidget
|
|
from .widget import register
|
|
from traitlets import Unicode, Bool, CaselessStrEnum
|
|
|
|
|
|
class _Bool(DescriptionWidget, ValueWidget, CoreWidget):
|
|
"""A base class for creating widgets that represent booleans."""
|
|
value = Bool(False, help="Bool value").tag(sync=True)
|
|
disabled = Bool(False, help="Enable or disable user changes.").tag(sync=True)
|
|
|
|
def __init__(self, value=None, **kwargs):
|
|
if value is not None:
|
|
kwargs['value'] = value
|
|
super(_Bool, self).__init__(**kwargs)
|
|
|
|
_model_name = Unicode('BoolModel').tag(sync=True)
|
|
|
|
|
|
@register
|
|
class Checkbox(_Bool):
|
|
"""Displays a boolean `value` in the form of a checkbox.
|
|
|
|
Parameters
|
|
----------
|
|
value : {True,False}
|
|
value of the checkbox: True-checked, False-unchecked
|
|
description : str
|
|
description displayed next to the checkbox
|
|
indent : {True,False}
|
|
indent the control to align with other controls with a description. The style.description_width attribute controls this width for consistence with other controls.
|
|
"""
|
|
_view_name = Unicode('CheckboxView').tag(sync=True)
|
|
_model_name = Unicode('CheckboxModel').tag(sync=True)
|
|
indent = Bool(True, help="Indent the control to align with other controls with a description.").tag(sync=True)
|
|
|
|
|
|
@register
|
|
class ToggleButton(_Bool):
|
|
"""Displays a boolean `value` in the form of a toggle button.
|
|
|
|
Parameters
|
|
----------
|
|
value : {True,False}
|
|
value of the toggle button: True-pressed, False-unpressed
|
|
description : str
|
|
description displayed next to the button
|
|
tooltip: str
|
|
tooltip caption of the toggle button
|
|
icon: str
|
|
font-awesome icon name
|
|
"""
|
|
_view_name = Unicode('ToggleButtonView').tag(sync=True)
|
|
_model_name = Unicode('ToggleButtonModel').tag(sync=True)
|
|
|
|
tooltip = Unicode(help="Tooltip caption of the toggle button.").tag(sync=True)
|
|
icon = Unicode('', help= "Font-awesome icon.").tag(sync=True)
|
|
|
|
button_style = CaselessStrEnum(
|
|
values=['primary', 'success', 'info', 'warning', 'danger', ''], default_value='',
|
|
help="""Use a predefined styling for the button.""").tag(sync=True)
|
|
|
|
|
|
@register
|
|
class Valid(_Bool):
|
|
"""Displays a boolean `value` in the form of a green check (True / valid)
|
|
or a red cross (False / invalid).
|
|
|
|
Parameters
|
|
----------
|
|
value: {True,False}
|
|
value of the Valid widget
|
|
"""
|
|
readout = Unicode('Invalid', help="Message displayed when the value is False").tag(sync=True)
|
|
_view_name = Unicode('ValidView').tag(sync=True)
|
|
_model_name = Unicode('ValidModel').tag(sync=True)
|