ó
ÉÝ{Tc           @   sÒ   d  Z  d d l m Z m Z d d l Td d l Z d d l Z d d l Z d d l Z d d l	 Z	 d d l
 Z
 d d l Z d „  Z d e j f d „  ƒ  YZ d e j f d	 „  ƒ  YZ d
 e	 j f d „  ƒ  YZ d S(   s–  
     qtgui/slabAndFog.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   QtCore(   t   *Nc          C   s8   t  ƒ  j t ƒ }  |  s* t t  ƒ  ƒ }  n  |  j ƒ  d  S(   N(   t
   MAINWINDOWt	   findChildt   slabAndFogGUIt   UnClose(   t   gui(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt
   slabAndFog   s     t   FrontBackStartEndExpSliderc           B   s8   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s¢  t  j j |  | ƒ t  j ƒ  } t  j ƒ  } | j d d d d ƒ | j d ƒ t j d t d t	 j
 j d d ƒ t	 j
 j d d ƒ f ƒ |  _ |  j j d d	 ƒ t  j |  j d
 ƒ ƒ } | j | d d ƒ | j |  j d d ƒ t j d t d t	 j
 j d d ƒ t	 j
 j d d ƒ f ƒ |  _ |  j j d d	 ƒ t  j |  j d ƒ ƒ } | j | d d ƒ | j |  j d d ƒ | 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 d ƒ |  j ƒ |  j |  j t	 j d ƒ |  j ƒ |  j |  j t	 j d ƒ |  j ƒ d  S(   Ni    i   t   reversedt   labelss   QtGui.QWidgett   Densers
   Less densegü©ñÒMbP?iÐ  t   Densityi   t   Closert   Furthert   Startt   sliderReleasedt   sliderValueChangedt   textEditingFinishedt   textChanged(   R    t   QWidgett   __init__t   QVBoxLayoutt   QGridLayoutt   setContentsMarginst
   setSpacingt   ExponentialSlidert   TrueR   t   QCoreApplicationt	   translatet   thicknessSlidert   setRanget   QLabelt   trt	   addWidgett   SignedExponentialSlidert   Falset   positionSlidert	   addLayoutt	   setLayoutt   connectt   SIGNALt   valuesChanged(   t   selft   parentt   layoutt   sliderLayoutt   label(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR   '   s2    ??"""""""c         K   s   |  j  t j d ƒ ƒ d  S(   Nt   ValuesChanged(   t   emitR   R*   (   R,   t   args(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR+   D   s    c         C   s   |  j  j ƒ  S(   N(   R&   t   value(   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   getNearG   s    c         C   s   |  j  j ƒ  |  j j ƒ  S(   N(   R&   R4   R   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   getFarJ   s    c         C   s(   |  j  j | ƒ |  j j | | ƒ d  S(   N(   R&   t   setValueR   (   R,   t   neart   far(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt
   setNearFarM   s    N(   t   __name__t
   __module__t   NoneR   R+   R5   R6   R:   (    (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR	   &   s
   			t   FrontBackStartEndc           B   s§   e  Z d d  d d d 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 RS(   t   frontt   backt   widtht   positionc         C   s—  t  j j |  | ƒ t  j ƒ  } | j d d d d ƒ | j d ƒ t  j |  j | ƒ ƒ } | j | d d ƒ t  j	 ƒ  |  _
 |  j
 j d d ƒ t  j	 ƒ  |  _ |  j j d d ƒ | j |  j
 d d ƒ t  j |  j | ƒ ƒ } | j | d d ƒ | j |  j d d ƒ t  j |  j | ƒ ƒ } | j | d d ƒ t  j	 ƒ  |  _ |  j j d d ƒ t  j	 ƒ  |  _ |  j j d d ƒ | j |  j d d ƒ t  j |  j | ƒ ƒ } | j | d d ƒ | j |  j d d ƒ |  j | ƒ |  j |  j
 t j d ƒ t j |  j d ƒ ƒ |  j |  j t j d ƒ t j |  j d	 ƒ ƒ |  j |  j t j d ƒ t j |  j d
 ƒ ƒ |  j |  j t j d ƒ t j |  j d ƒ ƒ d  S(   Ni   i    g     ˆÃÀg     ˆÃ@i   i   s   valueChanged(double)R8   R9   RA   RB   (   R    R   R   R   R   R   R!   R"   R#   t   QDoubleSpinBoxR8   R    R9   RA   RB   R(   R)   R   R*   t	   functoolst   partialR+   (   R,   R-   t
   frontLabelt	   backLabelt
   widthLabelt   posLabelR.   t   widget(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR   S   s:    ...c         C   sè   |  j  ƒ  yÆ | d k s% | d k r” |  j ƒ  |  j j ƒ  |  j j ƒ  k r” | d k ru |  j j |  j j ƒ  ƒ q‘ |  j j |  j j ƒ  ƒ q” n  | d k s¬ | d k r¹ |  j ƒ  n  |  j t j	 d ƒ ƒ Wn n X|  j
 ƒ  d  S(   NR8   R9   RA   RB   R1   (   t   disconnectSignalst   calcAndSetWidthPositionR8   R4   R9   R7   t   calcAndSetNearFarR2   R   R*   t   connectSignals(   R,   t   name(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR+   s   s    

c         C   sD   |  j  j t ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ d  S(   N(   R8   t   blockSignalsR   R9   RA   RB   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRK   „   s    c         C   sD   |  j  j t ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ d  S(   N(   R8   RP   R%   R9   RA   RB   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRN   Š   s    c         C   s   |  j  j ƒ  S(   N(   RA   R4   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   getWidth�   s    c         C   s   |  j  j ƒ  S(   N(   RB   R4   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   getPosition“   s    c         C   s   |  j  j ƒ  S(   N(   R8   R4   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR5   –   s    c         C   s   |  j  j ƒ  S(   N(   R9   R4   (   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR6   ™   s    c         C   sz   |  j  ƒ  yX |  j j | ƒ |  j j ƒ  |  j j ƒ  k rW |  j j |  j j ƒ  ƒ n  |  j ƒ  Wn n X|  j ƒ  d  S(   N(   RK   R8   R7   R4   R9   RL   RN   (   R,   R8   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   setNearœ   s    
c         C   sz   |  j  ƒ  yX |  j j | ƒ |  j j ƒ  |  j j ƒ  k rW |  j j |  j j ƒ  ƒ n  |  j ƒ  Wn n X|  j ƒ  d  S(   N(   RK   R9   R7   R8   R4   RL   RN   (   R,   R9   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   setFar§   s    
c         C   sŠ   |  j  ƒ  yh |  j j | ƒ |  j j | ƒ |  j j ƒ  |  j j ƒ  k rg |  j j |  j j ƒ  ƒ n  |  j ƒ  Wn n X|  j ƒ  d  S(   N(   RK   R8   R7   R9   R4   RL   RN   (   R,   R8   R9   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR:   ²   s    
c         C   s@   |  j  ƒ  y |  j j | ƒ |  j ƒ  Wn n X|  j ƒ  d  S(   N(   RK   RA   R7   RM   RN   (   R,   RA   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   setWidth¾   s    
c         C   s@   |  j  ƒ  y |  j j | ƒ |  j ƒ  Wn n X|  j ƒ  d  S(   N(   RK   RB   R7   RM   RN   (   R,   RB   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   setPositionÇ   s    
c         C   sP   |  j  ƒ  y. |  j j | ƒ |  j j | ƒ |  j ƒ  Wn n X|  j ƒ  d  S(   N(   RK   RA   R7   RB   RM   RN   (   R,   RA   RB   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   setWidthPositionÐ   s    
c         C   s†   |  j  ƒ  yd |  j j ƒ  |  j j ƒ  d } |  j j ƒ  |  j j ƒ  d } |  j j | ƒ |  j j | ƒ Wn n X|  j ƒ  d  S(   Ng       @(   RK   RB   R4   RA   R8   R7   R9   RN   (   R,   R8   R9   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRM   Ú   s    
  c         C   s‚   |  j  ƒ  y` |  j j ƒ  |  j j ƒ  d } |  j j ƒ  |  j j ƒ  } |  j j | ƒ |  j j | ƒ Wn n X|  j ƒ  d  S(   Ng       @(   RK   R9   R4   R8   RB   R7   RA   RN   (   R,   RB   RA   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRL   å   s    
 N(   R;   R<   R=   R   R+   RK   RN   RQ   RR   R5   R6   RS   RT   R:   RU   RV   RW   RM   RL   (    (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR>   R   s     															
	R   c           B   sP   e  Z d  „  Z d d „ Z e d „ Z d „  Z i  d „ Z d „  Z	 d „  Z
 RS(   c         C   s/   t  j d k r t j d d ƒ St j d d ƒ S(   Nt   darwini  i,  i6  (   t   syst   platformR   t   QSize(   R,   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   minimumSizeHintø   s    c      	   C   sx  t  j j |  | d t j j d t ƒ|  j d ƒ |  j d ƒ t	 j
 ƒ  } t	 j ƒ  } t	 j |  j d ƒ |  ƒ |  _ | j |  j ƒ | j | ƒ t	 j ƒ  } t ƒ  |  _ |  j j d d d d ƒ | j |  j ƒ | j | ƒ t	 j ƒ  } t	 j |  j d ƒ |  ƒ |  _ | j |  j ƒ | j d d d d ƒ | j | ƒ t	 j ƒ  } t d d	 d
 d d d d d ƒ |  _ | j d d d d ƒ | j |  j ƒ | j | ƒ t	 j ƒ  } t	 j |  j d ƒ |  ƒ |  _ t	 j |  j d ƒ |  ƒ } | j |  j ƒ | j | ƒ | j d d d d ƒ | j | ƒ | j d ƒ | j d d d d ƒ |  j | ƒ |  j t ƒ  d t j d ƒ |  j ƒ |  j t ƒ  d 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 d ƒ |  j ƒ |  j | t j d ƒ |  j  ƒ |  j ƒ  d  S(   Nt   defaultDockAreat   tabifys   Clip and fogt
   slab_n_fogs   Depth cue fogi    s   Clipping withRF   R?   RG   R@   RH   RA   RI   RB   s   Cap perfect spheress   Custom planes..i   i   t   SlabChangedt
   FogChangeds	   clicked()R1   s   clicked(bool)(!   t   MGSimpleDialogt   MGSimpleDockDialogR   R   t   Qtt   RightDockWidgetAreaR%   t   setWindowTitlet   setObjectNameR    R   t   QHBoxLayoutt	   QCheckBoxR"   t   fog_onR#   R'   R	   t   fog_fbR   t   slab_onR>   t   slab_fbt   clip_capt   QPushButtont
   addStretchR(   R)   t	   GLWIDGETSR*   t   resett   applyt   customClipGuiDraw(   R,   R-   R.   t   line_layoutt   customClipButton(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR   þ   sT    %$&&"""""c            s	  t  j |  ƒ } | j |  j d ƒ ƒ t  j | ƒ ‰  t  j |  ƒ } ˆ  j ƒ  } t  j |  j d ƒ |  ƒ } ˆ  j | d d ƒ t  j |  j d ƒ |  ƒ } ˆ  j | d d d d ƒ ‡  f d †  } x±t	 d ƒ D]£} ˆ  j ƒ  } t  j t
 | d ƒ |  ƒ } ˆ  j | | d ƒ t  j |  ƒ } | j j | ƒ ˆ  j | | d ƒ t  j |  ƒ }	 |	 j | ƒ |	 j d	 ƒ |	 j j | ƒ ˆ  j |	 | d ƒ t  j |  ƒ }
 |
 j | ƒ |
 j d	 ƒ |
 j j | ƒ ˆ  j |
 | d
 ƒ t  j |  ƒ } | j | ƒ | j d	 ƒ | j j | ƒ ˆ  j | | d ƒ t  j |  ƒ } | j | ƒ | j d	 ƒ | j j | ƒ ˆ  j | | d ƒ qÍ Wt  j |  ƒ } | j t  j j ƒ } |  j | t j d ƒ | j ƒ t t ƒ  ƒ d k rát t ƒ  d d ƒ rát ƒ  d j } xét	 t | ƒ ƒ D]Ò} ˆ  j | d d ƒ j ƒ  j t ƒ | | j  d ƒ ru| | d ruˆ  j | d d ƒ j ƒ  j! t ƒ n# ˆ  j | d d ƒ j ƒ  j! t" ƒ ˆ  j | d d ƒ j ƒ  j t" ƒ | | j  d ƒ rt | | d ƒ d k rˆ  j | d d ƒ j ƒ  j t ƒ ˆ  j | d d
 ƒ j ƒ  j t ƒ ˆ  j | d d ƒ j ƒ  j t ƒ ˆ  j | d d ƒ j ƒ  j t ƒ ˆ  j | d d ƒ j ƒ  j t
 | | d d ƒ ƒ ˆ  j | d d
 ƒ j ƒ  j t
 | | d d ƒ ƒ ˆ  j | d d ƒ j ƒ  j t
 | | d d ƒ ƒ ˆ  j | d d ƒ j ƒ  j t
 | | d d
 ƒ ƒ ˆ  j | d d ƒ j ƒ  j t" ƒ ˆ  j | d d
 ƒ j ƒ  j t" ƒ ˆ  j | d d ƒ j ƒ  j t" ƒ ˆ  j | d d ƒ j ƒ  j t" ƒ qqWqán  | j# ˆ  ƒ ˆ  j | ƒ | j$ ƒ  d  S(   Ns   Custom clipping planest   Oni    i   t   Planei   i   c             s  g  } xÈ t  d d ƒ D]· } i  } t ˆ  j | d ƒ j ƒ  j ƒ  ƒ | d <g  } x] t  d d ƒ D]L } y/ | j t ˆ  j | | ƒ j ƒ  j ƒ  ƒ ƒ Wq` | j d ƒ q` Xq` Wt | ƒ | d <| j | ƒ q Wt	 t
 ƒ  ƒ d k rt
 ƒ  d j | ƒ t
 ƒ  d j ƒ  n  d  S(   Ni   i   t   visiblei   i   i    t   plane(   t   ranget   intt   itemAtPositionRJ   t	   isCheckedt   appendt   floatt   textt   tuplet   lenRq   t   setCustomClipPlanest   updateGL(   R3   t   customClipPlanest   iRz   t   thePlanet   j(   R.   (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   changedC  s    (/s   0.0i   i   s   clicked(bool)R†   Ry   Rz   (%   R    t   QDialogRf   R"   R   t   QDoubleValidatort   rowCountR!   R#   R{   t   strRi   t   clickedR)   t	   QLineEditt   setValidatort   setTextt
   textEditedt   QDialogButtonBoxt	   addButtont   CloseR   R*   t   closeRƒ   Rq   t   hasattrR†   R}   RJ   RP   R   t   has_keyt
   setCheckedR%   R(   t   exec_(   R,   t   checkedt   dialogt   dvR�   R0   RŠ   R‡   t   viscbt   at   bt   ct   dt   dbbt   pbt   pl(    (   R.   s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRt   6  s‚    #!&##-####5555###0c         C   sÒ   x t  ƒ  D] } | j t ƒ q
 W|  j ƒ  } xc t  ƒ  D]X } | j | d ƒ | j | d | d ƒ | j | d | d | d d | d ƒq7 Wt ƒ  j ƒ  t ƒ  j	 ƒ  x t  ƒ  D] } | j t
 ƒ q· Wd  S(   NRj   t   fog_neart   fog_farRl   t
   slab_widtht   slab_offsetRn   (   Rq   RP   R   t	   getParamst   setFogt   setFogNearAndFart   setSlabR   t   updateGLWindowst   GLLeftMouseReleasedR%   (   R,   RJ   t   params(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRs   “  s    -c         K   sí   | j  | ƒ xC d d d g D]2 } | j | ƒ r t |  | ƒ j | | ƒ q q W| j d ƒ rž | j d ƒ rž t |  d ƒ rž |  j j | d | d ƒ n  | j d ƒ ré | j d ƒ ré t |  d	 ƒ ré |  j j | d | d ƒ n  d  S(
   NRj   Rl   Rn   R§   R¨   Rk   R©   Rª   Rm   (	   t   updateR™   t   getattrRš   R˜   Rk   R:   Rm   RW   (   R,   R±   t   kwt   key(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt	   setParams¦  s    !--c         C   s¿   i  } xB d d d g D]1 } t  |  | ƒ r t |  | ƒ j ƒ  | | <q q Wt  |  d ƒ rƒ |  j j ƒ  | d <|  j j ƒ  | d <n  t  |  d ƒ r» |  j j ƒ  | d <|  j j ƒ  | d	 <n  | S(
   NRj   Rl   Rn   Rm   R©   Rª   Rk   R§   R¨   (	   R˜   R³   R~   Rm   RQ   RR   Rk   R5   R6   (   R,   t   parsRµ   (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR«   ´  s     c         C   sú   |  j  j t ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ t ƒ  d } |  j d | j	 d | j
 d | j d | j d | j d | j d | j ƒ |  j  j t ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ |  j j t ƒ d  S(	   Ni    Rj   R§   R¨   Rl   Rn   R©   Rª   (   Rj   RP   R   Rl   Rn   Rk   Rm   Rq   R¶   t   fog_enabledR§   R¨   t   slab_enabledR©   Rª   R%   (   R,   t   glWidget(    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyRr   Ã  s$    					
N(   R;   R<   R\   R=   R   R%   Rt   Rs   R¶   R«   Rr   (    (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyR   ó   s   	8]		(   t   __doc__t   PyQt4R    R   t   global_definitionsRY   t   ost   guiUtilst	   mgWidgetsRb   RD   R   R   R   R	   R>   Rc   R   (    (    (    s=   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/qtgui/slabAndFog.pyt   <module>   s   
$	,¡