U
    PeR4                     @   s   d Z dZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZ G dd deZedkr~ddlmZ G d	d
 d
eZe   dS )a.  
Slider
======

.. image:: images/slider.jpg

The :class:`Slider` widget looks like a scrollbar. It supports horizontal and
vertical orientations, min/max values and a default value.

To create a slider from -100 to 100 starting from 25::

    from kivy.uix.slider import Slider
    s = Slider(min=-100, max=100, value=25)

To create a vertical slider::

    from kivy.uix.slider import Slider
    s = Slider(orientation='vertical')

To create a slider with a red line tracking the value::

    from kivy.uix.slider import Slider
    s = Slider(value_track=True, value_track_color=[1, 0, 0, 1])


Kv Example::

    BoxLayout:
        Slider:
            id: slider
            min: 0
            max: 100
            step: 1
            orientation: 'vertical'

        Label:
            text: str(slider.value)

Slider    )Widget)	NumericPropertyAliasPropertyOptionPropertyReferenceListPropertyBoundedNumericPropertyStringPropertyListPropertyBooleanPropertyColorPropertyc                   @   sX  e Zd ZdZedZedZedZedZe	dddZ
eeeZeddd	Zed
ZedZedZedZedZedZedZedZedZeeeZeddddgZeddddgZedZeddddgZ edZ!e	dddZ"dd Z#dd Z$dd Z%dd Z&e'e%e&d d!d"Z(d#d$ Z)d%d& Z*e'e)e*d'd!d"Z+d(d) Z,d*d+ Z-d,d- Z.d.S )/r   zZClass for creating a Slider widget.

    Check module documentation for more details.
    g        g      Y@Z16sp
horizontal)Zverticalr   )optionsr   )minz3atlas://data/images/defaulttheme/sliderh_backgroundz<atlas://data/images/defaulttheme/sliderh_background_disabledz3atlas://data/images/defaulttheme/sliderv_backgroundz<atlas://data/images/defaulttheme/sliderv_background_disabledZ36spz.atlas://data/images/defaulttheme/slider_cursorz7atlas://data/images/defaulttheme/slider_cursor_disabledZ32sp   F   Z3dpall)r   handlec                 G   s   t | jt| j | j| _d S Nr   maxvalueselflargs r   3/tmp/pip-unpacked-wheel-xzebddm3/kivy/uix/slider.pyon_min  s    zSlider.on_minc                 G   s   t | jt| j | j| _d S r   r   r   r   r   r   on_max!  s    zSlider.on_maxc                 C   s.   | j }| j| }|dkrdS | j| t| S Nr   )r   r   r   float)r   vmindr   r   r   get_norm_value$  s
    
zSlider.get_norm_valuec                 C   s\   | j }| j}| j}t |||  | |}|dkr8|| _n t t|| | | | || _d S r    )r   r   stepr   round)r   r   r"   Zvmaxr%   valr   r   r   set_norm_value+  s    zSlider.set_norm_value)r   r   r   T)bindcachec                 C   sb   | j }| j}| j}| j}| jdkr@|| || jd|    |fS ||| || jd|    fS d S )Nr      )paddingxyvalue_normalizedorientationwidthheight)r   r,   r-   r.   nvalr   r   r   get_value_posU  s    
zSlider.get_value_posc                 C   s   | j }t| j| t|d | j| }t| j| t|d | j| }| jdkr| jdkrbd| _	q|| j | t
| jd|   | _	n4| jdkrd| _	n"|| j | t
| jd|   | _	d S )Nr   r   r   r+   )r,   r   rightr   r-   topr.   r0   r1   r/   r!   r2   )r   posr,   r-   r.   r   r   r   set_value_pos_  s      


zSlider.set_value_pos)r7   sizer   r   r,   r/   r0   c                 C   s   | j s| j|j sd S |jrd|jks0d|jkrn| jrNt| j| j| j | _n t| j| j| j| j d  | _d|jksd|jkr| jrt| j| j| j | _qt| j| j| j| j d  | _n:| j	dkr| j
d j|j r||  n||  |j| _dS )	NZdownleft   Zupr5   r   r   T)disabledZcollide_pointr7   Zis_mouse_scrollingbuttonr%   r   r   r   sensitivitychildrenZgrab	value_posr   touchr   r   r   on_touch_downy  s.    

zSlider.on_touch_downc                 C   s   |j | kr|j| _dS d S NTZgrab_currentr7   r@   rA   r   r   r   on_touch_move  s    
zSlider.on_touch_movec                 C   s   |j | kr|j| _dS d S rD   rE   rA   r   r   r   on_touch_up  s    
zSlider.on_touch_upN)/__name__
__module____qualname____doc__r   r   r   r   r,   r   r0   r   ranger	   r%   r
   Zbackground_horizontalZbackground_disabled_horizontalZbackground_verticalZbackground_disabled_verticalZbackground_widthZcursor_imageZcursor_disabled_imageZcursor_widthZcursor_heightZcursor_sizer   Zborder_horizontalZborder_verticalr   Zvalue_trackr   Zvalue_track_colorZvalue_track_widthr>   r   r   r$   r(   r   r/   r4   r8   r@   rC   rF   rG   r   r   r   r   r   1   sj   





		
			
	
	r   __main__)Appc                   @   s   e Zd Zdd ZdS )	SliderAppc                 C   s
   t ddS )N   )r,   r   )r   r   r   r   build  s    zSliderApp.buildN)rH   rI   rJ   rQ   r   r   r   r   rO     s   rO   N)rK   __all__Zkivy.uix.widgetr   Zkivy.propertiesr   r   r   r   r	   r
   r   r   r   r   rH   Zkivy.apprN   rO   runr   r   r   r   <module>   s   ',  o