o
    tf]/                     @   s  d Z ddlmZmZ ddlmZ ddlmZmZ ddl	m
Z
 ddlmZ ddlmZmZmZ dd	lmZmZmZmZmZmZmZmZ d
ZdZdd Zdd ZG dd deee
ZG dd deZeeG dd deZeeG dd deZ eG dd dee
Z!eeG dd deZ"eG dd dee
Z#eeG dd deZ$G d d! d!eZ%eG d"d# d#eZ&G d$d% d%e%Z'eG d&d' d'e'Z(d(S ))z8Int class.

Represents an unbounded int using a widget.
   )DescriptionWidgetDescriptionStyle)ValueWidget)registerwidget_serialization)
CoreWidget    )Instance)ColorInstanceDictNumberFormat)UnicodeCIntBoolCaselessStrEnumTuple
TraitErrordefaultvalidatez=
Parameters
----------
value: integer
    The initial value.
a)  
Parameters
----------
value: integer
    The initial value.
min: integer
    The lower limit for the value.
max: integer
    The upper limit for the value.
step: integer
    The step between allowed values.
behavior : str
    slider handle and connector dragging behavior. Default is 'drag-tap'.
c                       d fdd	}t |_| _ S )z)Add int docstring template to class init.Nc                    s*   |d ur||d< t  | jdi | d S Nvalue super__init__selfr   kwargsclsr   f/var/www/html/software/conda/envs/catlas/lib/python3.10/site-packages/ipywidgets/widgets/widget_int.pyr   +   s   z_int_doc.<locals>.__init__N)
_int_doc_t__doc__r   r    r   r   r   r!   _int_doc)   s   r&   c                    r   )z1Add bounded int docstring template to class init.Nc                    sZ   |d ur||d< |d ur||d< |d ur||d< |d ur ||d< t  | jdi | d S Nr   minmaxstepr   r   r   r   r(   r)   r*   r   r   r   r!   r   6   s   z"_bounded_int_doc.<locals>.__init__NNNN)_bounded_int_doc_tr$   r   r%   r   r   r!   _bounded_int_doc4   s   r.   c                       s6   e Zd ZdZedddjddZd
 fdd		Z  ZS )_Intz1Base class for widgets that represent an integer.r   z	Int valuehelpTsyncNc                    s&   |d ur||d< t  jdi | d S r   r   r   	__class__r   r!   r   J   s   z_Int.__init__r"   )	__name__
__module____qualname__r$   r   tagr   r   __classcell__r   r   r4   r!   r/   F   s    r/   c                       sz   e Zd ZdZedddjddZedddjddZd fd
d	Ze	ddd Z
e	ddd Ze	ddd Z  ZS )_BoundedIntzSBase class for widgets that represent an integer bounded from above and below.
    d   	Max valuer0   Tr2   r   	Min valueNc                    sV   |d ur||d< |d ur||d< |d ur||d< |d ur ||d< t  jdi | d S r'   r   r+   r4   r   r!   r   V   s   z_BoundedInt.__init__r   c                 C   s4   |d }| j |ks| j|k rt t|| j | j}|S )zCap and floor valuer   )r(   r)   )r   proposalr   r   r   r!   _validate_valuea   s   z_BoundedInt._validate_valuer(   c                 C   s.   |d }|| j krtd|| jkr|| _|S )Enforce min <= value <= maxr   setting min > max)r)   r   r   )r   r?   r(   r   r   r!   _validate_mini      

z_BoundedInt._validate_minr)   c                 C   s.   |d }|| j k rtd|| jk r|| _|S )rA   r   setting max < min)r(   r   r   )r   r?   r)   r   r   r!   _validate_maxs   rD   z_BoundedInt._validate_maxr,   )r6   r7   r8   r$   r   r9   r)   r(   r   r   r@   rC   rF   r:   r   r   r4   r!   r;   P   s    

	r;   c                   @   l   e Zd ZdZedjddZedjddZedddjddZ	edd	djddZ
ed
ddjddZdS )IntTextz*Textbox widget that represents an integer.IntTextViewTr2   ZIntTextModelFEnable or disable user changesr0   lUpdate the value as the user types. If False, update on submission, e.g., pressing Enter or navigating away.r   #Minimum step to increment the valueNr6   r7   r8   r$   r   r9   
_view_name_model_namer   disabledcontinuous_updater   r*   r   r   r   r!   rH   }   s    rH   c                   @   rG   )BoundedIntTextzLTextbox widget that represents an integer bounded from above and below.
    rI   Tr2   ZBoundedIntTextModelFrJ   r0   rK   r   rL   NrM   r   r   r   r!   rR      s    rR   c                   @   6   e Zd ZdZedjddZeddddjddZdS )SliderStyleButton style widget.ZSliderStyleModelTr2   NzColor of the slider handle.
allow_noner1   )	r6   r7   r8   r$   r   r9   rO   r
   Zhandle_colorr   r   r   r!   rT          rT   c                   @   s   e Zd ZdZedjddZedjddZedddjddZ	e
d	d
gd	ddjddZedddjddZedddjddZedddjddZedddjddZeejdddieZe
g ddddjddZdS )	IntSliderzKSlider widget that represents an integer bounded from above and below.
    ZIntSliderViewTr2   ZIntSliderModelr   rL   r0   
horizontalverticalVertical or horizontal.valuesdefault_valuer1   3Display the current value of the slider next to it.dFormat for the readoutzAUpdate the value of the widget as the user is holding the slider.FrJ   r3   drag-tapz	drag-snaptapZdragZsnaprd   Slider dragging behavior.Nr   )r6   r7   r8   r$   r   r9   rN   rO   r   r*   r   orientationr   readoutr   readout_formatrQ   rP   r   rT   r   stylebehaviorr   r   r   r!   rY      s0    
rY   c                   @   rS   )ProgressStylerU   ZProgressStyleModelTr2   NzColor of the progress bar.rV   )	r6   r7   r8   r$   r   r9   rO   r
   Z	bar_colorr   r   r   r!   rl      rX   rl   c                   @   s|   e Zd ZdZedjddZedjddZeddgddd	jddZ	eg d
ddd	jddZ
eejdddieZdS )IntProgresszJProgress bar that represents an integer bounded from above and below.
    ZProgressViewTr2   ZIntProgressModelrZ   r[   r\   r]   )successinfowarningZdanger rq   z.Use a predefined styling for the progress bar.r3   Nr   )r6   r7   r8   r$   r   r9   rN   rO   r   rg   Z	bar_styler   rl   r   rj   r   r   r   r!   rm      s     rm   c                   @   sl   e Zd Zee e dddjddZedd Zej	dd Zed	d
 Z
e
j	dd
 Z
eddd ZdS )	_IntRange)r   r   zTuple of (lower, upper) bounds)r_   r1   Tr2   c                 C   
   | j d S Nr   r   r   r   r   r!   lower      
z_IntRange.lowerc                 C   s   || j d f| _ d S Nr   ru   )r   rw   r   r   r!   rw         c                 C   rs   ry   ru   rv   r   r   r!   upper   rx   z_IntRange.upperc                 C   s   | j d |f| _ d S rt   ru   )r   r{   r   r   r!   r{      rz   r   c                 C   s$   |d \}}||k rt d||fS )Nr   zsetting lower > upper)r   r   r?   rw   r{   r   r   r!   r@      s   z_IntRange._validate_valueN)r6   r7   r8   r   r   r9   r   propertyrw   setterr{   r   r@   r   r   r   r!   rr      s     



rr   c                   @   s   e Zd ZdZedjddZedjddZeddjddZ	eddjddZ
ed	d
djddZedddjddZedddjddZedddjddZdS )PlayzSPlay/repeat buttons to step through values automatically, and optionally loop.
    ZPlayViewTr2   Z	PlayModelz)Whether the control is currently playing.r0   z5Whether the control will repeat in a continuous loop.r<   z*The time between two animation steps (ms).r   zIncrement stepFrJ   z,Show the repeat toggle button in the widget.N)r6   r7   r8   r$   r   r9   rN   rO   r   Zplayingrepeatr   intervalr*   rP   Zshow_repeatr   r   r   r!   r      s    r   c                       sj   e Zd ZedddjddZedddjddZ fdd	Zed
ddd Z	ed fddZ
  ZS )_BoundedIntRanger<   r=   r0   Tr2   r   r>   c              	      s   | dd| dd}}| dd d u r(d| d|  d| d|  f|d< n t|d tsHz
t|d |d< W n   tdt|d t j|i | d S )	Nr(   r   r)   r<   r   g      ?g      ?z_A 'range' must be able to be cast to a tuple. The input of type {} could not be cast to a tuple)get
isinstancetuple	TypeErrorformattyper   r   )r   argsr   r(   r)   r4   r   r!   r      s   
z_BoundedIntRange.__init__r(   r)   c                 C   s   |d }|d }|j dkr|| jkrtd|j dkr$|| jk r$td|j dkr:t|| jd t|| jd f| _|j dkrPt|| jd t|| jd f| _|S )	Ntraitr   r(   rB   r)   rE   r   r   )namer)   r   r(   r   )r   r?   r   newr   r   r!   _validate_bounds  s   
"
"z!_BoundedIntRange._validate_boundsr   c                    sL   t  |\}}t|| jt|| j}}t|| jt|| j}}||fS r"   )r   r@   r(   r)   r|   r4   r   r!   r@     s   z _BoundedIntRange._validate_value)r6   r7   r8   r   r9   r)   r(   r   r   r   r@   r:   r   r   r4   r!   r      s    
r   c                   @   s   e Zd ZdZedjddZedjddZedddjddZ	e
d	d
gd	ddjddZedddjddZedddjddZedddjddZeeddjdddieZedddjddZe
g ddddjddZdS )IntRangeSlidera  Slider/trackbar that represents a pair of ints bounded by minimum and maximum value.

    Parameters
    ----------
    value : int tuple
        The pair (`lower`, `upper`) of integers
    min : int
        The lowest allowed value for `lower`
    max : int
        The highest allowed value for `upper`
    step : int
        step of the trackbar
    description : str
        name of the slider
    orientation : {'horizontal', 'vertical'}
        default is 'horizontal'
    readout : {True, False}
        default is True, display the current value of the slider next to it
    behavior : str
        slider handle and connector dragging behavior. Default is 'drag-tap'.
    readout_format : str
        default is '.2f', specifier for the format function used to represent
        slider value for human consumption, modeled after Python 3's format
        specification mini-language (PEP 3101).
    ZIntRangeSliderViewTr2   ZIntRangeSliderModelr   z$Minimum step that the value can taker0   rZ   r[   r\   r]   r`   ra   rb   zAUpdate the value of the widget as the user is sliding the slider.zSlider style customizations.r3   FrJ   rc   rd   rf   Nr   )r6   r7   r8   r$   r   r9   rN   rO   r   r*   r   rg   r   rh   r   ri   rQ   r   rT   r   rj   rP   rk   r   r   r   r!   r     s0    
r   N))r$   Zwidget_descriptionr   r   Zvaluewidgetr   Zwidgetr   r   Zwidget_corer   Z	traitletsr	   Ztrait_typesr
   r   r   r   r   r   r   r   r   r   r   r#   r-   r&   r.   r/   r;   rH   rR   rT   rY   rl   rm   rr   r   r   r   r   r   r   r!   <module>   sH   (
-	
)