ó
ÉÝ{Tc           @   s­   d  Z  d d l Td f  d „  ƒ  YZ d e f d „  ƒ  YZ d f  d „  ƒ  YZ d	 f  d
 „  ƒ  YZ d f  d „  ƒ  YZ d „  Z d d „ Z d d d „ Z	 d f  d „  ƒ  YZ
 d S(   s{  
     python/ui/services.py: CCP4MG Molecular Graphics Program
     Copyright (C) 2001-2008 University of York, CCLRC
     Copyright (C) 2009-2010 University of York

     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   *t   TempObjsc           B   s    e  Z g  Z d  „  Z d „  Z RS(   c         C   sB   |  j  j |  ƒ d d  l } | j ƒ  |  _ t ƒ  j |  j ƒ d  S(   Niÿÿÿÿ(   t   objinstst   appendt   graphicsmodelt   graphmodt   BUILD(   t   selfR   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   __init__   s    c         C   sE   |  j  j |  ƒ r% |  j  j |  ƒ n  t ƒ  j |  j ƒ d |  _ d  S(   Nt    (   R   t   countt   removeR   t	   deletemodR   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   delete"   s     (   t   __name__t
   __module__R   R   R   (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR      s   	t
   MakeVectorc           B   s)   e  Z d  d  d „ Z d „  Z d „  Z RS(   R	   c         C   s5   t  j |  ƒ | |  _ | |  _ d |  _ d |  _ d  S(   Ni   t   red(   R   R   t
   first_atomt   display_stylet	   do_redrawt   colour(   R   R   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   +   s
    			c         K   s   t  j |  ƒ d  S(   N(   R   R   (   R   t   keywords(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   4   s    c         C   s„   |  j  s |  j r d  S|  j j j ƒ  d d  l } d d  l } t ƒ  j |  j	 ƒ } | j
 j | ƒ } |  j j j ƒ  d |  _  d  S(   Niÿÿÿÿi    (   R   t   visibleR   t   objt   clear_primst   cprimt
   pygl_coordt   MGCOLOURt   RGBR   t   DoubleVectort	   IntVectort   rebuild(   R   R   R   t   colt   colv(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   draw9   s     (   R   R   R   R   R#   (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   (   s   		t   ParamsManagerc           B   s.  e  Z g  Z d  d g  i  i  d  i  d  d d  d  d d d d d d „ Z d „  Z d „  Z d „  Z d d „ Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z i  d d „ Z i  i  d „ Z d „  Z d  d „ Z d d „ Z i  d „ Z d d d „ Z d d d d  d „ Z d d d „ Z i  d „ Z RS(   R	   t
   Parametersi    c         C   s  | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ |	 |  _ |
 |  _ i  |  _	 |  j	 j
 | ƒ i  |  _ |  j j
 | ƒ i  |  _ x9 | j ƒ  D]+ } i  |  j | <|  j | j
 | | ƒ q™ W| |  _ | |  _ |  j j |  ƒ g  |  _ | |  _ | |  _ | r|  j d | ƒ n  t ƒ  j | ƒ } | rÞ|  j ržx\ |  j D]N } | j | ƒ rI|  j | j | | ƒ r—|  j | | | | | <q—qIqIWn  x= |  j	 j ƒ  D]) } | j | ƒ r®| | |  j	 | <q®q®Wn  d  |  _ |  j rý|  j ƒ  n  d  S(   Nt	   copy_from(   t   titlet   namet   guit
   custom_guit
   apply_modet   apply_actiont   plugint   picture_definitiont   projectt   paramst   updatet   defaultst
   definitiont   keyst   helpt   update_defnt   instsR   t
   dependentst   c_accesst   onCreatet   copyt
   PM_MANAGERt   gett   has_keyt   Nonet   CParamsManagert   createCParamsManager(   R   R(   R'   R)   t   defaultR3   R5   R1   R+   R.   R/   R&   R9   R*   R,   R-   R:   t   keyt   saved_params(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   V   sL    																		&		 c         C   sÕ   d d  l  } | j ƒ  |  _ x³ |  j j ƒ  D]¢ } |  j j | ƒ r+ |  j | j d t ƒ } | t k st | t k r™ |  j j	 | |  j j | d ƒ ƒ qÍ | t
 k rÍ |  j j | |  j j | d ƒ ƒ qÍ q+ q+ Wd  S(   Niÿÿÿÿt   typei    g      ð?(   t   paramsmanagerR@   R0   R4   R3   R>   R=   t   intt   boolt   SetIntt   floatt   SetFloat(   R   RF   RC   RE   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRA   ”   s    %c         C   sA   |  j  j |  ƒ r% |  j  j |  ƒ n  t |  d ƒ r= |  ` n  d  S(   NR@   (   R7   R
   R   t   hasattrR@   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   £   s     c         C   s)   |  j  j | ƒ s% |  j  j | ƒ n  d  S(   N(   R8   R
   R   (   R   t	   dependent(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   add_dependentª   s    c         C   sQ   |  j  j | ƒ r% |  j  j | ƒ n  | rM t |  j  ƒ d k rM |  j ƒ  n  d  S(   Ni    (   R8   R
   R   t   lenR   (   R   RM   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   remove_dependent±   s    c         C   s   t  |  d ƒ r |  j Sd  Sd  S(   NR*   (   RL   R*   R?   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   getCustomGuiº   s    c         C   s   |  j  S(   N(   R)   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt	   getGuiDefÂ   s    c         C   s%   |  j  j | ƒ r |  j  | Si  Sd  S(   N(   R3   R>   (   R   R(   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   getParamDefÇ   s    c         C   s   |  j  S(   N(   R'   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   getTitleÏ   s    c         C   s   i  } | j  |  j ƒ | S(   N(   R1   R2   (   R   t   defs(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   getDefaultsÔ   s    c         C   s   i  } | j  |  j ƒ | S(   N(   R1   R0   (   R   R0   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt	   getparamsÜ   s    i   c   
      K   s6  | j  | ƒ |  j d |  j d | ƒ } | r|  j j  | ƒ |  j ræ |  j s] |  j ƒ  n  x† | j ƒ  D]u \ } } |  j | j d t	 ƒ } | t	 k s§ | t
 k r½ |  j j | | ƒ qj | t k rj |  j j | | ƒ qj qj Wn  x* |  j D] } | d |  j d | ƒ qð Wn  | r2d d  l }	 |	 j ƒ  n  d  S(   Nt   current_paramst
   new_paramsRE   R$   t   updatediÿÿÿÿ(   R1   t   interpret_parametersR0   R9   R@   RA   t   itemsR3   R=   RG   RH   RI   RJ   RK   R8   R(   R    t   UpdateDisplay(
   R   RY   t
   do_rebuildR   RZ   RC   t   valueRE   t   depR    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt	   setparamsã   s&    			  c         C   s  d d  l  } i  } xÿ | j ƒ  D]ñ } | j | ƒ r|  j rÚ |  j j | ƒ rÚ |  j | j d d ƒ } d t g j | ƒ rž | j | | | | ƒ | | <qÚ t d d g j | ƒ rÚ | j	 | | | | ƒ | | <qÚ n  | | | | k r| | | | <qq | | | | <q W| S(   NiÿÿÿÿRE   R	   RH   RJ   t   real(
   t   utilsR4   R>   R3   R=   RG   R
   t   safeIntRJ   t	   safeFloat(   R   RX   RY   Rc   RZ   t   itemRE   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR[      s    !$c         C   s  d d  l  } d } d } d } x› |  j D]� } |  j | } |  j | j d t ƒ } | t k rm | d } q( | t k r† | d } q( | t k rŸ | d } q( | d k r( | d } q( q( W| j | ƒ }	 | j | ƒ }
 d } d } d } xÖ |  j D]Ë } |  j | } |  j | j d t ƒ } | t k rRt |  j	 | ƒ |	 | <| d } qö | t k r‚t |  j	 | ƒ |
 | <| d } qö | t k r‘qö | d k rö t |  j	 | ƒ |	 | <| d } qö qö W| rç| rç| | |
 | |	 ƒ n, | rý| | |
 ƒ n | r| | |	 ƒ n  d  S(   Niÿÿÿÿi    RE   i   RH   (
   R   R)   R3   R=   RG   RJ   t   strt   intat   doubleaR0   (   R   t   commandR   t   n_intt   n_floatt   n_strt   parRf   RE   t   iparst   fparst   i_intt   i_floatt   i_str(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR1     sP    c         C   sE   | s  i  } | j  |  j ƒ | S|  j j | ƒ r= |  j | Sd Sd  S(   NR	   (   R1   R0   R>   (   R   RC   t   pars(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR=   K  s    c         C   s~   d d  l  } t | | j ƒ r- t | ƒ } n  | s7 d Sx@ |  j j ƒ  D]/ } | j j | ƒ rG | j | |  j | <qG qG Wd  S(   Niÿÿÿÿi   (   t   typest
   isinstancet
   StringTypet   PMR0   R4   R>   (   R   R&   Ru   RC   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR;   W  s      c         C   s5  d d  l  } | j |  j | ƒ d } | r-|  j j | ƒ xÁ | j ƒ  D]³ \ } } |  j j | ƒ rH |  j | j d t ƒ } |  j	 rû |  j
 sž |  j ƒ  n  | t k s¶ | t k rÌ |  j
 j | | ƒ qø | t k rî |  j
 j | | ƒ qø | | =qû qH qH Wx' |  j D] } | d |  j d | ƒ q	Wd Sd Sd  S(   Niÿÿÿÿi   RE   R$   RZ   i    (   Rc   t
   dict_diffsR0   R1   R\   R3   R>   R=   RG   R9   R@   RA   RH   RI   RJ   RK   R8   R(   (   R   R0   Rc   t   diffsRC   R_   RE   R`   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   update_data_statusa  s&    		  c         C   s‡   i  } i  } xn |  j  j ƒ  D]] \ } } | j | ƒ r | j | ƒ r | | | | k r | | | | <| | | | <q q W| | g S(   N(   R3   R\   R>   (   R   t   initial_statust   final_statust   changed_initialt   changed_finalRf   t   defn(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   compare_objects|  s    g        c   
      K   s%  i  } xî | j  ƒ  D]à } d | t | | ƒ | t | | ƒ } |  j | j d ƒ t k r› t | d ƒ | | <|  j rã |  j j | t | ƒ ƒ qã nH |  j | j d ƒ t k rã | | | <|  j rã |  j j | | ƒ qã n  |  j	 j
 | ƒ q Wx' |  j D] }	 |	 d |  j d | ƒ qWd  S(   Ni   RE   gÓBÎûÿß?R$   RZ   (   R4   RJ   R3   R=   RG   R9   R@   RI   RK   R0   R1   R8   R(   (
   R   R|   R}   t   fractiont   stepR   RZ   Rf   t	   new_valueR`   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   movie_interpolationŠ  s    	 
	  t   methodc   
      C   s  d d  l  } d } | d k r1 d } | d } n d } | |  j d d } | | j d	 |  j | d
 | ƒ} d } xt |  j j ƒ  D]c \ } }	 | s» |  j j | ƒ r„ |	 |  j | k r„ | d } | | j | |	 | d
 | ƒ} q„ q„ W| d d !d | d } | d k r| Sd Sd  S(   NiÿÿÿÿR	   R†   t   )s   ParamsManager( t   }s    = s   { R(   t   stylei    i   s
             s   

(   Rc   R(   t   picture_defn_itemR0   R\   R2   R>   (
   R   t   pretty_printR‰   t   allRc   t   streamt   b_endt   noutRC   R_   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   save_picture_definition�  s"    "+
&c         C   sG   x@ | j  ƒ  D]2 \ } } |  j j | ƒ r | | |  j | <q q Wd  S(   N(   R\   R2   R>   R0   (   R   R0   RC   R_   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   restore_picture_definition¸  s    N(   R   R   R7   R?   R   RA   R   RN   RP   RQ   RR   RS   RT   RV   RW   Ra   R[   R1   R=   R;   R{   R�   R…   R�   R‘   (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR$   L   s6   		:											1
t   ParamsManagerManagerc           B   se   e  Z d
 Z d  „  Z d d d „ Z i  d d „ Z d „  Z i  d „ Z i  d „ Z	 i  g  d	 „ Z
 RS(   c         C   s   |  t  _ i  |  _ d  S(   N(   R’   R7   t   restored_data(   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   Í  s    	iÿÿÿÿR	   c         C   sª   i  } | j  |  j ƒ xT t j D]I } | j | k r  | d k  sP | | j k ri | j ƒ  | | j <qi q  q  Wx6 t j D]+ } | j | k rw | j ƒ  | | j <qw qw W| S(   Ni    (	   R1   R“   R$   R7   R/   R.   RW   R(   t   ColourSchemeManager(   R   R.   R/   t   dataR   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   saveÒ  s    i    c         C   sø   | r i  |  _  n  |  j  j | ƒ x@ t j D]5 } |  j  j | j ƒ r, | j |  j  | j ƒ q, q, WxI t j D]> } |  j  j | ƒ ro t d | ƒ } | j |  j  | ƒ qo qo Wx@ t j D]5 } |  j  j | j ƒ r» | j	 |  j  | j ƒ q» q» Wd  S(   NR(   (
   R“   R1   R”   R7   R>   R(   Ra   t   colour_pref_aliasR$   R{   (   R   R•   t
   initialiset   cst   modet
   scheme_objt   pm(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   restoreè  s     c         C   s%   |  j  j | ƒ r |  j  | Sd  Sd  S(   N(   R“   R>   R?   (   R   R(   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR=      s    c         C   sv   d d  l  } i  } x] |  j j ƒ  D]L } | j | ƒ r" | j |  j | | | ƒ d } | rn | | | <qn q" q" W| S(   Niÿÿÿÿi   (   Rc   R“   R4   R>   Ry   (   R   t   otherRc   Rz   Rf   t   dd(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt
   difference  s    ! c         C   sd   x] | j  ƒ  D]O } |  j j | ƒ r x4 | | j  ƒ  D] } | | | |  j | | <q6 Wq q Wd  S(   N(   R4   R“   R>   (   R   t   sourceRf   t   it(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   add  s    c         C   s  g  } x™ t  j D]Ž } | j | j ƒ s | j | j ƒ rr | j | | j ƒ } | r› | j d | j g ƒ q› qž t | j ƒ j ƒ  | j d | j g ƒ q q Wx[ t	 j D]P } | j | j ƒ r¬ | j | | j ƒ } | rü | j d | j g ƒ qü q¬ q¬ W| S(   Nt	   update_PMt	   delete_PM(
   R$   R7   R
   R(   R>   R{   R   Rx   R   R”   (   R   R•   t   exclude_listt
   update_guiRœ   t   rv(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR{     s       N(   R   R   R?   R7   R   R–   R�   R=   R    R£   R{   (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR’   È  s   		t   ParamsManagerShadowc           B   s,   e  Z d Z d  „  Z d „  Z i  d „ Z RS(   c         C   s   |  t  _ d  S(   N(   R©   R7   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   >  s    c         C   s#   |  t  _ t ƒ  j d |  j ƒ d  S(   NR•   (   R©   R7   R<   R�   R•   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR�   C  s    	c         C   sv   d d  l  } i  } x] |  j j ƒ  D]L } | j | ƒ r" | j |  j | | | ƒ d } | rn | | | <qn q" q" W| S(   Niÿÿÿÿi   (   Rc   R•   R4   R>   Ry   (   R   Rž   Rc   Rz   Rf   RŸ   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR    I  s    ! N(   R   R   R?   R7   R   R�   R    (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR©   6  s   		c          C   s7   t  j s0 d d  l }  t ƒ  } |  j ƒ  t  _ n  t  j S(   Niÿÿÿÿ(   R”   t   CColourSchemest   mgappR   (   R«   t   c(    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   getCColourSchemesV  s
    		R	   c         C   sN   x$ t  j D] } | j |  k r
 | Sq
 Wt  j j |  ƒ rF t  d |  ƒ Sd  Sd  S(   NR(   (   R”   R7   R(   R—   R
   R?   (   R(   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   colourschememanagerc  s    c         K   sU   |  r: t  j j |  ƒ r: t t  j t  j j |  ƒ ƒ } n d  S| rQ | j ƒ  n  d  S(   N(   R”   t   colour_pref_menuR
   R®   R—   t   indext   draw_gui(   Rf   t   colour_prefR4   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   colourschemesguiq  s
    " R”   c        
   B   s  e  Z d  d l Z d  d l Z d Z g  Z d d d d d d d d	 d
 d g
 Z d d d d d d d d d d g
 Z i
 i d d 6d d 6d 6i d d 6d d 6d 6i d d 6d d 6d d 6d 6i d d 6d d 6d  d! 6d" d# 6d$ d 6d 6i d d 6d% d 6d& d! 6d' d# 6d$ d 6d 6i d d 6d( d 6d) d! 6d* d# 6d$ d 6d 6i d d 6d+ d 6d& d! 6d( d# 6d$ d 6d 6i d d 6d+ d 6d& d! 6d( d# 6d$ d 6d 6i d d 6d, d 6d& d! 6d( d# 6d$ d 6d 6i d d 6d, d 6d& d! 6d( d# 6d$ d 6d 6Z	 d- d. d/ g Z
 e j e j e j g Z d0 d1 g Z e j e j g Z d2 d2 d d/ d0 g  g  i  d2 d3 „	 Z d4 „  Z d5 „  Z d6 „  Z i  d7 „ Z d8 „  Z d9 „  Z i  d: „ Z d; „  Z g  g  d. d0 d< „ Z d= „  Z d> „  Z d? „  Z d d d@ „ Z  dA dB dC „ Z! i  dD „ Z" d d d& d2 dE „ Z# i  dF „ Z$ RS(G   iÿÿÿÿNs	   Atom types   Residue types   Secondary structures   Temperature factort	   Occupancyt   Charges   Atom solvent accesss   Residue solvent accesss   Atom buried areas   Residue buried areat   atomtypet   restypet   secstrt   bvaluet	   occupancyt   charget   atom_sast   res_sast   atom_contactt   res_contactRg   RE   t   lineeditR‰   t   labeli    t
   extensibleRJ   i'  t   maxiñØÿÿt   mini   Rƒ   t   spinboxg      ð?g        gš™™™™™©?g      @g      Àgš™™™™™É?g      Y@g      y@t   NOR   t   HSVt	   clockwises   anti-clockwiseR	   c
      	   C   s‰  d d  l  }
 t ƒ  | |  _ | |  _ | |  _ i  |  _ |  j j | ƒ | rY | |  _ n: |  j j	 | ƒ rŠ |  j
 |  j j | ƒ |  _ n	 | |  _ |	 |  _ g  } x | D] } | j | ƒ q© Wg  } x | D] } | j | ƒ qÍ Wi | d 6| d 6|  _ g  |  _ t j j t | ƒ ƒ } | r| |  _ | j ƒ  |  _ |  j d k rUd |  _ n |  j d k rpd |  _ n  |  j d sM|  j ƒ  } | d |  j d <|  j d	 k röd d  l } g  } x( | d
 D] } | j | j | ƒ ƒ qÆW| |  j d <q
| d
 |  j d <qMn@ |
 j ƒ  |  _ | |  _ |  j d | d | d |  j d |  j ƒ |  j j |  ƒ t ƒ  j | ƒ } | r…|  j | ƒ n  d  S(   Niÿÿÿÿt   rangest   coloursRb   RJ   t   stringRg   i   R¸   i   t   limitR   t   interpolate_modet   colour_wheel_direction(    R«   R­   RÍ   RÎ   R(   t   definitionsR1   R'   R—   R
   R¯   R°   R/   R   R2   R8   R”   Rª   t	   GetSchemeRg   t   ColourSchemet   GetModeRš   t   GetColourSchemet   modelt   convertSecstrCodet   CColourSchemet   SetColourSchemeR7   R<   R=   Ra   (   R   R(   R'   Rš   t   interpolatet	   directionRÉ   RÊ   RÏ   R/   R«   t   ranges0Rf   t   colours0R›   R¨   RÔ   t   rngRD   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR   ž  sb    						  
				
c         C   s)   |  j  j |  ƒ r% |  j  j |  ƒ n  d  S(   N(   R7   R
   R   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   __del__å  s     c         C   s   |  j  S(   N(   RÑ   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRÖ   ê  s    c         C   s   |  j  S(   N(   R'   (   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRT   ð  s    c         C   sY   |  j  j | ƒ r |  j  | S| d k rQ t j j |  j ƒ rQ t j j |  j ƒ S| Sd  S(   NRÉ   (   RÏ   R>   R”   t   colour_pref_definitionsR(   R=   (   R   t   paramRB   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRS   õ  s
    !c         C   s   i  } | j  |  j ƒ | S(   N(   R1   R2   (   R   RU   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRV     s    c         C   s7  d d  l  } xÑ t d d d g ƒ D]º } | j j |  j k rL d | j _ q" |  j d k r | j j d k rÜ d | j _ qÜ q" |  j d k r² | j j d	 k rÜ d | j _ qÜ q" |  j d
 k r" | j j r" d | j _ q" q" WxP |  j D]E } t ƒ  r| d |  j ƒ qê y | d |  j ƒ Wqê d GHqê Xqê Wd  S(   Niÿÿÿÿt   object_typet   MolDispt   SurfaceDispobji   R¾   t   atom_buriedR¿   t
   res_buriedR¶   R”   s   Error updating colours(	   t   dataobjt   get_dispobjt   model_colourt   colour_modeR(   t   do_recolourt   non_C_atomtypeR8   t	   DEVELOPER(   R   Rå   R   R`   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   apply  s&      	c   	      K   s�  | j  | ƒ |  j d k r� | j d ƒ r� | j d ƒ r� | d j d ƒ d k r� | d j d d d d g ƒ | d j d	 d
 d d g ƒ n  x: d d g D], } | j | ƒ r� t |  | | | ƒ q� q� W|  j |  j j |  j	 ƒ } |  j
 j |  j ƒ r|  j |  j
 j |  j ƒ } n |  j d } |  j j | | ƒ | j d ƒ r‚| j d ƒ r‚|  j d k rˆ|  j j | d | d ƒ q‚|  j d k rRd d  l } |  j d k r4t | d ƒ r4t | d d | j ƒ r4d d  l } g  } x( | d D] } | j | j | ƒ ƒ qúW|  j j | | d ƒ q|  j j | d | d ƒ q‚|  j d k r‚|  j j | d | d ƒ q‚n  |  j ƒ  d  S(   NR·   RÉ   RÊ   t   DAi    t   DTt   DGt   DCR   t   yellowt   greent   blueRÍ   RÎ   RJ   RG   iÿÿÿÿR¸   Rg   (   R1   R(   R>   R
   t   extendt   setattrt   interpolation_codest   interpolation_aliasR°   RÍ   t   direction_aliasRÎ   t   direction_codesRÑ   t   SetInterpolationModeRš   t   SetSchemeFloatRu   RO   Rv   t   IntTypeRÔ   R   RÕ   t   SetSchemeIntt   SetSchemeStringRì   (	   R   R0   t   kwRf   t   interpt   dirnRu   RÔ   RÉ   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRa   %  s6    F : !c         C   s5  |  j  d k r! |  j j ƒ  } n0 |  j  d k rB |  j j ƒ  } n |  j j ƒ  } g  } |  j d k rœ d d  l } xE | D] } | j | j | ƒ ƒ qy Wn x | D] } | j | ƒ q£ W|  j j	 ƒ  } g  } x | D] } | j | ƒ qÖ Wi  } | | d <| | d <x' d d g D] } t
 |  | ƒ | | <qW| S(	   NRJ   RG   R¸   iÿÿÿÿRÉ   RÊ   RÍ   RÎ   (   Rš   RÑ   t   GetSchemeFloatt   GetSchemeIntt   GetSchemeStringR(   RÔ   R   RÕ   t   GetSchemeColourst   getattr(   R   t   rngsRÉ   RÔ   Rf   t   colsRÊ   Rt   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRW   P  s,       

c         C   sû   |  j  d k r% |  j j | | ƒ n8 |  j  d k rJ |  j j | | ƒ n |  j j | | ƒ |  j j |  j ƒ rå |  j |  j j	 |  j ƒ } |  j
 j |  j ƒ rÂ |  j |  j
 j	 |  j ƒ } n |  j d } |  j j | | ƒ n  | |  _ | |  _ d  S(   NRJ   RG   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/python/ui/services.pyR×   k  s    	c         C   sÁ   |  j  j ƒ  } g  } x | D] } | j | ƒ q Wt | ƒ } |  j d k r` |  j  j ƒ  } n0 |  j d k r� |  j  j ƒ  } n |  j  j ƒ  } g  } x | D] } | j | ƒ q� W| | | g S(   NRJ   RG   (   RÑ   R  R   RO   Rš   R  R  R  (   R   t   tcolourR   Rf   t   nranget   tdefnR€   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRÓ   „  s      c         C   s   |  j  j | ƒ d  S(   N(   R8   R   (   R   RM   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRN   –  s    c         C   s7   |  j  j | ƒ r3 y |  j  j | ƒ Wq3 q3 Xn  d  S(   N(   R8   R
   R   (   R   RM   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyRP   ›  s
    c         C   s{   i  } i  } |  j  d k rq t | d ƒ t | d ƒ k rq | d | d k rq | d | d <| d | d <qq n  | | g S(   NRJ   RÉ   (   Rš   RO   (   R   R|   R}   R~   R   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR�   ¤  s     R†   i   c   
      C   sÓ   d d  l  } |  j ƒ  } d } | d k r= d } | d } n d } | |  j d d } | | j d	 |  j | d
 | ƒ} x9 | j ƒ  D]+ \ } }	 | | j | |	 | d
 | ƒ} q‡ W| d d !d | d } | S(   NiÿÿÿÿR	   R†   R‡   s   ColourSchemeManager(Rˆ   s    = t   {R(   R‰   i    s
             s   

(   Rc   RW   R(   RŠ   R\   (
   R   R‹   R‰   RŒ   Rc   Rt   R�   RŽ   RC   R_   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR�   ²  s    "#c         C   s*   |  j  ƒ  } | j | ƒ |  j | ƒ d  S(   N(   RW   R1   Ra   (   R   R0   Rt   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR‘   É  s    c         K   s¸   x� | j  ƒ  D] } g  } xN t d t | | ƒ ƒ D]3 } | j d | | | | | | | | ƒ q3 W|  j j ƒ  }	 |  j j | |	 ƒ q Wx! |  j D] }
 |
 d |  j ƒ qš Wd  S(   Ni    i   R”   (	   R4   t   rangeRO   R   RÑ   R  Rû   R8   R(   (   R   R|   R}   R‚   Rƒ   R   Rf   RÉ   t   iiRÊ   R`   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR…   Ñ  s      c         C   s·   |  j  ƒ  } d d  l } | j | | ƒ d } | r¯ | j d ƒ rd | j d ƒ rd | d | d <n0 | j d ƒ r” | j d ƒ r” | d | d <n  |  j | ƒ |  j ƒ  d Sd Sd  S(   Niÿÿÿÿi   RÊ   RÉ   t   rangesst   colourssi    (   RW   Rc   Ry   R>   Ra   Rì   (   R   R0   t
   cur_paramsRc   Rz   (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR{   à  s    
(%   R   R   R   t	   atom_utilR?   Rª   R7   R¯   R—   RÞ   R÷   t   NOCOLOURREPt   RGBCOLOURREPt   HSVCOLOURREPRö   Rø   t   COLOUR_WHEEL_CLOCKt   COLOUR_WHEEL_ANTICLOCKRù   R   RÝ   RÖ   RT   RS   RV   Rì   Ra   RW   R×   RÓ   RN   RP   R�   R�   R‘   R…   R{   (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyR”   ~  s^   		******-E					+					N(   t   __doc__t   global_definitionsR   R   R$   R’   R©   R­   R®   R³   R”   (    (    (    s?   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/services.pyt   <module>   s   
$ÿ }n 	