ó
ÉÝ{Tc           @   s�   d  Z  d d l m Z m Z d d l Z d d l Z d d l Td e j f d „  ƒ  YZ d e j f d „  ƒ  YZ	 d	 e j f d
 „  ƒ  YZ
 d S(   s•  
     qtgui/mgSliders.py: CCP4MG Molecular Graphics Program
     Copyright (C) 2001-2008 University of York, CCLRC
     Copyright (C) 2009-2011 University of York
     Copyright (C) 2012 STFC

     This library is free software: you can redistribute it and/or
     modify it under the terms of the GNU Lesser General Public License
     version 3, modified in accordance with the provisions of the 
     license to address the requirements of UK law.
 
     You should have received a copy of the modified GNU Lesser General 
     Public License along with this library.  If not, copies may be 
     downloaded from http://www.ccp4.ac.uk/ccp4license.php
 
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU Lesser General Public License for more details.
iÿÿÿÿ(   t   QtGuit   QtCoreN(   t   *t   DropDownSliderWithValuec           B   sb   e  Z d
 d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 d „  Z
 d
 d	 „ Z RS(   c         C   s7  |  j  j t ƒ d d  l } | j |  j j ƒ  d ƒ } d d  l } t | ƒ d k r^ d } n  y} |  j ry t	 | ƒ } n t
 | ƒ } |  j  j | |  j ƒ |  j rÁ |  j t j d ƒ | ƒ n |  j t j d ƒ | ƒ WnE |  j r|  j t j d ƒ d ƒ q#|  j t j d ƒ d ƒ n X|  j  j t ƒ d  S(   Niÿÿÿÿg      è?t    i    s   valueChanged(int)s   valueChanged(double)(   t   slidert   blockSignalst   Truet   utilst	   safeFloatt   textt   matht   strt   integert   intt   floatt   setValuet   sliderScalet   emitR   t   SIGNALt   False(   t   selft   dumR   t   valueR   t   val(    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyt   textChanged   s&    				c         C   sÜ   |  j  j t ƒ |  j r< |  j  j d |  j ƒ  j ƒ  ƒ n  |  j  j d |  j ƒ  j ƒ  ƒ |  j  j t ƒ |  j rŽ |  j	 t
 j d ƒ ƒ nJ |  j r¹ |  j	 t
 j d ƒ |  j ƒ  ƒ n |  j	 t
 j d ƒ |  j ƒ  ƒ d  S(   Ns   %4is   %8.4fs   sliderReleased()s   valueChanged(int)s   valueChanged(double)(   R
   R   R   R   t   setTextR   t   stripR   t   immediateModeR   R   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyt   sliderReleased5   s    	# 		"c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyt   setImmediateModeE   s    c         C   sÖ   |  j  j t ƒ |  j r= |  j  j d | |  j j ƒ  ƒ n! |  j  j d | |  j j ƒ  ƒ |  j rÂ |  j r™ |  j t	 j
 d ƒ t | ƒ |  j ƒ qÂ |  j t	 j
 d ƒ t | ƒ |  j ƒ n  |  j  j t ƒ d  S(   Ns   %4is   %8.4fs   valueChanged(int)s   valueChanged(double)(   R
   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyt   sliderChangedH   s    	$!		))c         C   s›   |  j  j t ƒ |  j  j | |  j ƒ |  j  j t ƒ |  j j t ƒ |  j rm |  j j d | j	 ƒ  ƒ n |  j j d | j	 ƒ  ƒ |  j j t ƒ d  S(   Ns   %4is   %8.4f(
   R   R   R   R   R   R   R
   R   R   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   U   s    	c         C   s   |  j  j ƒ  |  j S(   N(   R   R   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   a   s    i    c         C   s%  d d  l  } | |  _ | | } d | k  o6 d k  n rD d } n  |  j r† d |  _ | |  _ | |  _ t j | | |  j ƒ |  _ no d | |  _ t	 | j
 |  j | ƒ ƒ |  _ t	 | j
 |  j | ƒ ƒ |  _ t j |  j |  j d |  j ƒ |  _ |  j j |  j |  j ƒ |  j j |  j ƒ d  S(   Niÿÿÿÿg{®Gáz„¿g{®Gáz„?g      Y@i   g     @�@i   (   R   R   R   t	   sliderMint	   sliderMaxR    t   QIntValidatorR
   t	   validatorR   t   floort   QDoubleValidatorR   t   setRanget   setValidator(   R   t   mint   maxR   R   t	   realRange(    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR&   d   s     	
 					$c         C   sB   d d  l  } t | j |  j | ƒ ƒ |  _ |  j j |  j ƒ d  S(   Niÿÿÿÿ(   R   R   R$   R   t   stepR   t   setSingleStep(   R   R+   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR,   v   s    c         C   sC  t  j j |  | ƒ t  j ƒ  } | j d d d d ƒ | j d ƒ | j t j j	 ƒ t  j
 ƒ  |  _ t  j |  ƒ } t  j | ƒ } t  j | ƒ |  _ | j |  j ƒ | j | ƒ } t  j ƒ  } | j | ƒ | j t  j j ƒ | j d ƒ |  j j d d ƒ | j |  j ƒ | j | ƒ |  j | ƒ |  j j d ƒ |  j j d ƒ t  j |  j j ƒ  |  j j ƒ  d |  j ƒ |  _ |  j j |  j ƒ |  j  |  j t j! d ƒ |  j" ƒ |  j  |  j t j! d	 ƒ |  j# ƒ |  j  |  j t j! d
 ƒ |  j$ ƒ |  j  |  j t j! d ƒ |  j$ ƒ d |  _% d |  _& d |  _' |  j j( d ƒ d  S(   Ni   i   iœÿÿÿid   i<   i-   i   s   valueChanged(int)s   sliderReleased()s   textEdited(const QString&)s   editingFinished()i   i    g      Y@()   R    t   QWidgett   __init__t   QHBoxLayoutt   setContentsMarginst
   setSpacingt   setAlignmentR   t   Qtt	   AlignLeftt	   QLineEditR
   t   QMenut   QWidgetActiont   QSliderR   t   setDefaultWidgett	   addActiont   QToolButtont   setMenut   setPopupModet   InstantPopupt   setMaximumWidthR&   t	   addWidgett	   setLayoutt   setMinimumWidthR%   t   minimumt   maximumR#   R'   t   connectR   R   R   R   R   R   R   R   (   R   t   alignt   parentt   layoutt   menut   wact   actiont   tb(    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR.   {   s>    0""""			N(   t   __name__t
   __module__t   NoneR   R   R   R   R   R   R&   R,   R.   (    (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR      s   						t   mgSliderc           B   sk   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d d „ Z
 d	 „  Z d d
 „ Z RS(   c         C   s7  |  j  j t ƒ d d  l } | j |  j j ƒ  d ƒ } d d  l } t | ƒ d k r^ d } n  y} |  j ry t	 | ƒ } n t
 | ƒ } |  j  j | |  j ƒ |  j rÁ |  j t j d ƒ | ƒ n |  j t j d ƒ | ƒ WnE |  j r|  j t j d ƒ d ƒ q#|  j t j d ƒ d ƒ n X|  j  j t ƒ d  S(   Niÿÿÿÿg      è?R   i    s   valueChanged(int)s   valueChanged(double)(   R   R   R   R   R	   R
   R   R   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   ¦   s&    				c         C   sþ   |  j  j t ƒ |  j r< |  j  j d |  j ƒ  j ƒ  ƒ n  |  j  j d |  j ƒ  j ƒ  ƒ |  j  j t ƒ |  j r° |  j r— |  j	 t
 j d ƒ ƒ qú |  j	 t
 j d ƒ ƒ nJ |  j rÛ |  j	 t
 j d ƒ |  j ƒ  ƒ n |  j	 t
 j d ƒ |  j ƒ  ƒ d  S(   Ns   %4is   %8.4fs   sliderReleased()s   valueChanged(int)s   valueChanged(double)(   R
   R   R   R   R   R   R   R   R   R   R   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   Å   s    	# 			"c         C   sÖ   |  j  j t ƒ |  j r= |  j  j d | |  j j ƒ  ƒ n! |  j  j d | |  j j ƒ  ƒ |  j  j t ƒ |  j rÒ |  j r© |  j	 t
 j d ƒ t | ƒ |  j ƒ qÒ |  j	 t
 j d ƒ t | ƒ |  j ƒ n  d  S(   Ns   %4is   %8.4fs   valueChanged(int)s   valueChanged(double)(   R
   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   Û   s    	$!		)c         C   s   | |  _  d  S(   N(   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   ë   s    c         C   s{   |  j  j t ƒ |  j  j | |  j ƒ |  j  j t ƒ |  j r] |  j j d | j	 ƒ  ƒ n |  j j d | j	 ƒ  ƒ d  S(   Ns   %4is   %8.4f(
   R   R   R   R   R   R   R   R
   R   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   î   s    	c         C   s   |  j  j ƒ  |  j S(   N(   R   RC   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyRC   ú   s    c         C   s   |  j  j ƒ  |  j S(   N(   R   R   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   ý   s    i    c         C   s%  d d  l  } | |  _ | | } d | k  o6 d k  n rD d } n  |  j r† d |  _ | |  _ | |  _ t j | | |  j ƒ |  _ no d | |  _ t	 | j
 |  j | ƒ ƒ |  _ t	 | j
 |  j | ƒ ƒ |  _ t j |  j |  j d |  j ƒ |  _ |  j j |  j |  j ƒ |  j j |  j ƒ d  S(   Niÿÿÿÿg{®Gáz„¿g{®Gáz„?g      Y@i   g     @�@i   (   R   R   R   R    R!   R    R"   R
   R#   R   R$   R%   R   R&   R'   (   R   R(   R)   R   R   R*   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR&      s     	
 					$c         C   sB   d d  l  } t | j |  j | ƒ ƒ |  _ |  j j |  j ƒ d  S(   Niÿÿÿÿ(   R   R   R$   R   R+   R   R,   (   R   R+   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR,     s    c         C   s  t  j j |  | ƒ t  j ƒ  } d } | j | | | | ƒ | j | ƒ d |  _ t  j |  ƒ |  _ t  j	 | |  ƒ |  _
 |  j d d d ƒ |  j j d ƒ |  j j d ƒ |  j j t t t t |  j j ƒ  ƒ ƒ ƒ t t t |  j j ƒ  ƒ ƒ ƒ ƒ |  j j ƒ  ƒ | j |  j
 ƒ | j |  j t j j ƒ |  j |  j
 t j d ƒ |  j ƒ |  j |  j
 t j d	 ƒ |  j ƒ |  j |  j t j d
 ƒ |  j ƒ |  j |  j t j d
 ƒ |  j ƒ |  j |  j t j d ƒ |  j ƒ |  j j  t |  j
 j! ƒ  ƒ ƒ |  j" | ƒ |  j# ƒ  d S(   s™   
      For real value slider we want a slider with a big integer range,
      and then to scale the float line edit values onto that
      and vv.
      i   i   g        g      Y@i    i<   i(   s   valueChanged(int)s   sliderReleased()s   textEdited(const QString&)s   editingFinished()N($   R    R-   R.   R/   R0   R1   R   R5   R
   R8   R   R&   R?   RB   t   setMaxLengthR)   t   lenR   R   R#   t   bottomt   topt   decimalsR@   R   R3   t   AlignTopRE   R   R   R   R   R   R   RA   t   show(   R   RF   RG   RH   t   margin(    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR.     s,    	\"""""N(   RM   RN   RO   R   R   R   R   R   RC   R   R&   R,   R.   (    (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyRP   £   s   							t   mgDeltaSliderc           B   s_   e  Z d
 d  „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z d „  Z	 d „  Z
 d	 „  Z RS(   c         C   sO  t  j j |  | ƒ d |  _ t  j ƒ  } d } | j | | | | ƒ | j | ƒ t  j |  ƒ |  _ t  j	 | |  ƒ |  _
 |  j
 j d d ƒ d |  _ |  j |  j
 t j d ƒ |  j ƒ |  j |  j
 t j d ƒ |  j ƒ |  j j d ƒ |  j d d ƒ |  j j d ƒ |  j j t t t t |  j j ƒ  ƒ ƒ ƒ t t t |  j j ƒ  ƒ ƒ ƒ ƒ |  j j ƒ  ƒ | j |  j
 ƒ | j |  j t j j ƒ |  j |  j
 t j d	 ƒ |  j  ƒ |  j |  j t j d
 ƒ |  j! ƒ |  j |  j t j d
 ƒ |  j! ƒ |  j |  j t j d ƒ |  j! ƒ |  j j" t |  j
 j# ƒ  ƒ ƒ |  j$ | ƒ |  j% ƒ  d S(   s™   
      For real value slider we want a slider with a big integer range,
      and then to scale the float line edit values onto that
      and vv.
      i    i   iœÿÿÿid   s   sliderPressed()s   sliderReleased()i<   i(   s   valueChanged(int)s   textEdited(const QString&)s   editingFinished()N(&   R    R-   R.   t   resetToZeroR/   R0   R1   R5   R
   R8   R   R&   R   RE   R   R   t   sliderOnt	   sliderOffR?   RB   RQ   R)   RR   R   R   R#   RS   RT   RU   R@   R3   RV   R   R   R   R   RA   RW   (   R   RF   RG   RH   RX   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR.   <  s2    		""\""""c         C   sî   t  |  j j ƒ  ƒ } d d  l } t | ƒ d k r< d } n  yf |  j rW t | ƒ } n t  | ƒ } |  j rˆ |  j t j d ƒ | ƒ n |  j t j d ƒ | ƒ WnE |  j rÍ |  j t j d ƒ d ƒ qê |  j t j d ƒ d ƒ n Xd  S(   NiÿÿÿÿR   i    s   valueChanged(int)s   valueChanged(double)(	   R   R
   R   R   R   R   R   R   R   (   R   R   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   ^  s    				c         C   sî   |  j  j t ƒ |  j r\ t |  j  j  ƒ  ƒ t | ƒ |  j } |  j  j d | j ƒ  ƒ n@ t |  j  j  ƒ  ƒ t | ƒ |  j } |  j  j d | j ƒ  ƒ |  j  j t	 ƒ |  j rÑ |  j
 t j d ƒ | ƒ n |  j
 t j d ƒ | ƒ d  S(   Ns   %4is   %8.4fs   valueChanged(int)s   valueChanged(double)(   R
   R   R   R   R   R   R   R   R   R   R   R   R   (   R   R   t   new(    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   z  s    	&&	c         C   sD   |  j  r& |  j j d | j ƒ  ƒ n |  j j d | j ƒ  ƒ d  S(   Ns   %4is   %8.4f(   R   R
   R   R   (   R   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   Œ  s    	c         C   s3   |  j  r t |  j j ƒ  ƒ St |  j j ƒ  ƒ Sd  S(   N(   R   R   R
   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR   ’  s    	i    c         C   s    d d  l  } | |  _ | | } d | k  o6 d k  n rD d } n  |  j rk t j | | |  j ƒ |  _ n t j | | d |  j ƒ |  _ |  j j |  j ƒ d  S(   Niÿÿÿÿg{®Gáz„¿g{®Gáz„?g      Y@i   (   R   R   R    R"   R
   R#   R%   R'   (   R   R(   R)   R   R   R*   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR&   ™  s    	
 		c         C   s#   t  j ƒ  j |  j ƒ  |  j ƒ d  S(   N(   t   global_definitionst
   MAINWINDOWt   addAnimationHandlert
   objectNamet   update(   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR[   ¤  s    c         C   sM   t  j ƒ  j |  j ƒ  ƒ |  j j t ƒ |  j j d ƒ |  j j t ƒ d  S(   Ni    (	   R^   R_   t   removeAnimationHandlerRa   R   R   R   R   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyR\   ¨  s    c         C   s   |  j  |  j j ƒ  ƒ d  S(   N(   R   R   R   (   R   (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyRb   °  s    N(   RM   RN   RO   R.   R   R   R   R   R&   R[   R\   Rb   (    (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyRY   9  s   "						(   t   __doc__t   PyQt4R    R   t   sipt   syst   mgUpperLowerSliderR-   R   RP   RY   (    (    (    s<   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/mgSliders.pyt   <module>   s   
ˆ–