
:\c           @   s   d  Z  d d l Z d d l m Z m Z m Z d d l m Z m Z d d l	 m
 Z
 d e
 f d     YZ d e f d	     YZ e d
 k r d d l m Z e   Z e d  Z e j   e j   e j   n  d S(   s  
The MIT License (MIT)

Copyright (c) 2012-2014 Alexander Turkin
Copyright (c) 2014 William Hallatt
Copyright (c) 2015 Jacob Dawid
Copyright (c) 2016 Luca Weiss

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
iN(   t   QRectt   Qtt   QTimer(   t   QColort   QPainter(   t   QWidgett   QtWaitingSpinnerc           B   s%  e  Z d  Z e e e j d  Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z e j d  Z d   Z d   Z d   Z d   Z d   Z  d   Z! d   Z" d   Z# d   Z$ RS(   t    c         C   s   t  t |   j d |  | |  _ | |  _ t t j  |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d	 |  _ t |  _ t |   |  _ |  j j j |  j  |  j   |  j   |  j   |  j |  |  j t j  d
 S(   R   t   parentg      Y@g-DT!	@g      T@g-DT!?i   i
   i   i    N(   t   superR   t   __init__t   _centerOnParentt   _disableParentWhenSpinningR   R   t   blackt   _colort
   _roundnesst   _minimumTrailOpacityt   _trailFadePercentaget   _revolutionsPerSecondt   _numberOfLinest   _lineLengtht
   _lineWidtht   _innerRadiust   _currentCountert   Falset   _isSpinningR   t   _timert   timeoutt   connectt   rotatet
   updateSizet   updateTimert   hidet   setWindowModalityt   setAttributet   WA_TranslucentBackground(   t   selfR   t   centerOnParentt   disableParentWhenSpinningt   modality(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR
   (   s*    												


c         C   s  |  j    t |   } | j |  j   t j  | j t j t  |  j	 |  j
 k r` d |  _	 n  | j t j  xt d |  j
  D]} | j   | j |  j |  j |  j |  j  t d |  t |  j
  } | j |  | j |  j d  |  j | |  j	 |  j
  } |  j | |  j
 |  j |  j |  j  } | j |  | j t d |  j d |  j |  j  |  j |  j t j  | j   q Wd S(   R   i    ih  i   N(    t   updatePositionR   t   fillRectt   rectR   t   transparentt   setRenderHintt   Antialiasingt   TrueR   R   t   setPent   NoPent   ranget   savet	   translateR   R   t   floatR   t   lineCountDistanceFromPrimaryt   currentLineColorR   R   R   t   setBrusht   drawRoundedRectR    R   R   t   RelativeSizet   restore(   R$   t   QPaintEventt   paintert   it   rotateAnglet   distancet   color(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt
   paintEventL   s4    

c         C   sq   |  j    t |  _ |  j   |  j rE |  j rE |  j   j t  n  |  j j	   sm |  j j
   d |  _ n  d S(   R   i    N(   R(   R.   R   t   showt   parentWidgetR   t
   setEnabledR   R   t   isActivet   startR   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyRF   o   s    
	
c         C   sj   t  |  _ |  j   |  j   r> |  j r> |  j   j t  n  |  j j   rf |  j j	   d |  _
 n  d S(   R   i    N(   R   R   R    RC   R   RD   R.   R   RE   t   stopR   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyRG   |   s    	
c         C   s    | |  _  d |  _ |  j   d S(   R   i    N(   R   R   R   (   R$   t   lines(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setNumberOfLines   s    		c         C   s   | |  _  |  j   d S(   R   N(   R   R   (   R$   t   length(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setLineLength   s    	c         C   s   | |  _  |  j   d S(   R   N(   R   R   (   R$   t   width(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setLineWidth   s    	c         C   s   | |  _  |  j   d S(   R   N(   R   R   (   R$   t   radius(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setInnerRadius   s    	c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR@      s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt	   roundness   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   minimumTrailOpacity   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   trailFadePercentage   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   revolutionsPersSecond   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   numberOfLines   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt
   lineLength   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt	   lineWidth   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   innerRadius   s    c         C   s   |  j  S(   R   (   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt
   isSpinning   s    c         C   s   t  d t d |   |  _ d S(   R   g        g      Y@N(   t   maxt   minR   (   R$   RP   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setRoundness   s    c         C   s   t  |  |  _ d S(   R   N(   R   R   (   R$   R@   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setColor   s    c         C   s   | |  _  |  j   d S(   R   N(   R   R   (   R$   t   revolutionsPerSecond(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setRevolutionsPerSecond   s    	c         C   s   | |  _  d S(   R   N(   R   (   R$   t   trail(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setTrailFadePercentage   s    c         C   s   | |  _  d S(   R   N(   R   (   R$   RQ   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   setMinimumTrailOpacity   s    c         C   s;   |  j  d 7_  |  j  |  j k r- d |  _  n  |  j   d S(   R   i   i    N(   R   R   t   update(   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR      s    c         C   s(   |  j  |  j d } |  j | |  d S(   R   i   N(   R   R   t   setFixedSize(   R$   t   size(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR      s    c         C   s"   |  j  j d |  j |  j  d S(   R   i  N(   R   t   setIntervalR   R   (   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR      s    	c         C   sh   |  j    rd |  j rd |  j |  j    j   d |  j   d |  j    j   d |  j   d  n  d S(   R   i   N(   RC   R   t   moveRL   t   height(   R$   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR(      s    !c         C   s'   | | } | d k  r# | | 7} n  | S(   R   i    (    (   R$   t   currentt   primaryt   totalNrOfLinesR?   (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR5      s    
c         C   s   t  |  } | d k r | S| d } t t j | d | d   } | | k rc | j |  n] | j   | }	 |	 t | d  }
 | j   |
 | } t d t d |   } | j |  | S(   R   i    g      Y@i   g      ?g        (	   R   t   intt   matht   ceilt	   setAlphaFt   alphaFR4   RZ   RY   (   R$   t   countDistanceRj   t   trailFadePerct
   minOpacityt
   colorinputR@   t	   minAlphaFt   distanceThresholdt	   alphaDifft   gradientt   resultAlpha(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR6      s    
(%   t   __name__t
   __module__t   __doc__R.   R   R   t   NonModalR
   RA   RF   RG   RI   RK   RM   RO   R@   RP   RQ   RR   RS   RT   RU   RV   RW   RX   R[   R   R\   R^   R`   Ra   R   R   R   R(   R5   R6   (    (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR   %   s@   	#																									t   NavigatorSpinnerc           B   s   e  Z d  Z d d  Z RS(   R   i   c         C   s   t  t |   j d |  d } d } | d | | d } | | | } |  j |  |  j |  |  j |  |  j d  |  j t d   |  j	 d  |  j
 d  d	 S(
   R   R   gQ@g(\@i   iZ   s   #43B02Ag      ?g      Y@N(   R	   R}   R
   RO   RK   RM   RI   R\   R   R^   R[   (   R$   R   t   total_widtht   r0t   w0RN   t   ring(    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR
     s    (   Ry   Rz   R{   R
   (    (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyR}     s   t   __main__(   t   qapplication(   R{   Rl   t   qtpy.QtCoreR    R   R   t
   qtpy.QtGuiR   R   t   qtpy.QtWidgetsR   R   R}   Ry   t"   anaconda_navigator.utils.qthelpersR   t   appt   Nonet   widgetRF   RB   t   exec_(    (    (    sA   lib/python2.7/site-packages/anaconda_navigator/widgets/spinner.pyt   <module>   s   	

