
    hMhf                        d Z ddlmZ ddlmZ ddlmZ ddlmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZmZmZ dd
Z G d dee          Ze G d de                      Ze G d de                      Ze G d de                      Zd	S )zpSelectionContainer class.

Represents a multipage container that can be used to group other widgets into
pages.
   )Box)register)
CoreWidget    )UnicodeDictCInt
TraitErrorvalidateobserve)
TypedTuple)chainrepeatisliceNc                 X    t          t          | t          |                    |          S )zkReturns the sequence elements and then returns None up to the given size (or indefinitely if size is None).)r   r   r   )iterablepaddinglengths      l/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/ipywidgets/widgets/widget_selectioncontainer.pypadr      s"    %&//22F;;;    c                   8   e Zd ZdZ e e            d                              d          Z eddd                              d          Z	 e
d	          d
             Z e
d          d             Z ed          d             Zd Zd Zd Zd ZdS )_SelectionContainerz2Base class used to display multiple child widgets.zTitles of the pages)traithelpTsynczThe index of the selected page. This is either an integer selecting a particular sub-widget, or None to have no widgets selected.N)r   
allow_nonedefault_valueselected_indexc                     |j         'd|j         cxk    rt          | j                  k     r
n n|j         S t          d          )Nr   z&Invalid selection: index out of bounds)valuelenchildrenr
   selfproposals     r   _validated_indexz$_SelectionContainer._validated_index   sN    >!Q(.%M%M%M%M3t};M;M%M%M%M%M%M>!EFFFr   titlesc           	      l    t          t          |j        dt          | j                                      S )N )tupler   r"   r#   r$   r%   s     r   _validate_titlesz$_SelectionContainer._validate_titles&   s(    SS-?-?@@AAAr   r$   c                 V    |                                   |                                  d S N)_reset_selected_index_reset_titles)r&   changes     r   _observe_childrenz%_SelectionContainer._observe_children*   s,    ""$$$r   c                 d    | j         &t          | j                  | j         k     rd | _         d S d S d S r/   )r    r#   r$   r&   s    r   r0   z)_SelectionContainer._reset_selected_index/   s>    *s4=/A/ADDW/W/W"&D +*/W/Wr   c                     t          | j                  t          | j                  k    rt          | j                  | _        d S d S r/   )r#   r)   r$   r,   r5   s    r   r1   z!_SelectionContainer._reset_titles3   s>    t{s4=1111,,DKKK 21r   c                 h    t          | j                  }|d}|||<   t          |          | _        dS )zSets the title of a container page.
        Parameters
        ----------
        index : int
            Index of the container page
        title : unicode
            New title
        Nr+   )listr)   r,   )r&   indextitler)   s       r   	set_titlez_SelectionContainer.set_title8   s7     dk""=EuFmmr   c                     | j         |         S )zGets the title of a container page.
        Parameters
        ----------
        index : int
            Index of the container page
        )r)   )r&   r9   s     r   	get_titlez_SelectionContainer.get_titleH   s     {5!!r   )__name__
__module____qualname____doc__r   r   tagr)   r	   r    r   r(   r-   r   r3   r0   r1   r;   r=    r   r   r   r      s/       <<Zggii.CDDDHHdHSSFT U   
ctcnn	  XG G  G XhB B B WZ  ' ' '- - -
$ $ $ " " " " "r   r   c                       e Zd ZdZ ed                              d          Z ed                              d          ZdS )	Accordionz4Displays children each on a separate accordion page.AccordionViewTr   AccordionModelNr>   r?   r@   rA   r   rB   
_view_name_model_namerC   r   r   rE   rE   Q   sU        >>))--4-88J'*++//T/::KKKr   rE   c                        e Zd ZdZ ed                              d          Z ed                              d          Zd	 fd	Zd Z	 xZ
S )
Tabz3Displays children each on a separate accordion tab.TabViewTr   TabModelrC   c                 v    t          |          dk    r	d|vrd|d<    t                      j        dd|i| d S )Nr   r    r$   rC   )r#   super__init__)r&   r$   kwargs	__class__s      r   rQ   zTab.__init__^   sR    x==1!1!?!?'(F#$55(5f55555r   c                     t          | j                  }|dk    r	d | _        d S | j        d k    r	d| _        d S || j        k     r|dz
  | _        d S d S )Nr   r   )r#   r$   r    )r&   num_childrens     r   r0   zTab._reset_selected_indexc   ss    4=))1"&D  D(("#D D///"."2D 0/r   )rC   )r>   r?   r@   rA   r   rB   rI   rJ   rQ   r0   __classcell__)rS   s   @r   rL   rL   X   s        ==##''T'22J'*%%))t)44K6 6 6 6 6 6
3 3 3 3 3 3 3r   rL   c                       e Zd ZdZ ed                              d          Z ed                              d          ZdS )Stackz!Displays only the selected child.	StackViewTr   
StackModelNrH   rC   r   r   rX   rX   t   sT        ++%%))t)44J',''+++66KKKr   rX   )NN)rA   
widget_boxr   widgetr   widget_corer   	traitletsr   r   r	   r
   r   r   trait_typesr   	itertoolsr   r   r   r   r   rE   rL   rX   rC   r   r   <module>ra      s                # # # # # # H H H H H H H H H H H H H H H H # # # # # # + + + + + + + + + +< < < <9" 9" 9" 9" 9"#z 9" 9" 9"v 
; ; ; ; ;# ; ; 
; 
3 3 3 3 3
 3 3 
36 
7 7 7 7 7 7 7 
7 7 7r   