Source code for ipywidgets_toggle_buttons.multi_toggle_buttons_with_hide

"""class MultiToggleButtonsWithHide"""
# Standard library imports
import logging

# Third party imports
import ipywidgets

# Local imports
from .abc_toggle_buttons_with_hide import BaseToggleButtonsWithHide

LOGGER = logging.getLogger(__name__)


[docs]class MultiToggleButtonsWithHide(BaseToggleButtonsWithHide): """Class to show multi toggle buttons with section of hide options """ def __init__( self, max_chosen_values=999, options_visible=None, options_hidden=None, **kwargs ): """""" widget_parent = ipywidgets.SelectMultiple() super().__init__( widget_parent, options_visible=options_visible, options_hidden=options_hidden, **kwargs ) self.max_chosen_values = max_chosen_values self._tuple_value_types = (list, tuple) self._update_widget_view() def _on_click_button_to_choose_option(self, wid_but): """What to do when button to choose options clicked""" list_cur_values = list(self.value) str_value_to_alter = wid_but.description if str_value_to_alter in list_cur_values: if str_value_to_alter in list_cur_values: list_cur_values.remove(str_value_to_alter) self.value = list_cur_values else: list_cur_values += [str_value_to_alter] self.value = list_cur_values # self._update_widget_view() def _update_widget_view(self): """Update view of the widget according to all settings""" self.turn_off_all_buttons() for str_value in self.value: # Update main buttons if str_value in self._dict_visible_button_by_option: but = self._dict_visible_button_by_option[str_value] but.button_style = "success" if str_value in self._dict_hidden_button_by_option: but = self._dict_hidden_button_by_option[str_value] but.button_style = "success" # If there are no hidden options then # don't create buttons for showing hidden options if not self.options_hidden: self.children = [self._widget_hbox_main] return None int_hidden_options_selected = len( set(self.value) & set(self.options_hidden)) self._widget_but_hidden_option_selected.description = \ "Hidden options selected: %d" % int_hidden_options_selected if int_hidden_options_selected: self._widget_but_hidden_option_selected.button_style = "success" else: self._widget_but_hidden_option_selected.button_style = "" # Choose to show all boxes if button to_show_hidden pressed if self._wid_but_hide_show.value: if not self._bool_is_hidden_options_created: self._create_buttons_for_hidden_options() self._bool_is_hidden_options_created = True self._wid_but_hide_show.description = "Hide Options below" self.children = [ self._widget_hbox_main, self._widget_hbox_middle_buttons, self._widget_hbox_hidden ] return None # Do not show hidden options self.children = [ self._widget_hbox_main, self._widget_hbox_middle_buttons ] self._wid_but_hide_show.description = "Show Hidden Options" return None