ó
ÉÝ{Tc           @   sÊ   d  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 d l Td e j f d „  ƒ  YZ	 d d l
 Z
 d d l Z d d l Z d e
 j
 f d „  ƒ  YZ d d	 d
 „ Z d „  Z d S(   sž  
     python/ui/SurfaceDispobj.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ÿÿÿÿN(   t   *t   SurfaceDispobjc        	   B   s  e  Z d6 Z d6 Z d6 Z i  Z i d  d 6d d 6d d 6d d 6d d 6d d	 6Z d
 d d g Z d d d g Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d d d i d d 6i  i  i  d d „ Z d „  Z d d d „ Z d „  Z d d „ Z d d „ Z d d „ Z d d  „ Z d d! „ Z d" „  Z d# „  Z d$ „  Z d% „  Z d i  d& „ Z d d d' „ Z d( d) „ Z d* d+ „ Z  d d d d d d d d d, „ Z! d d- d. „ Z" d d d d/ „ Z# d i  d0 „ Z$ d d1 „ Z% d d2 „ Z& d3 „  Z' d d d4 „ Z( d5 „  Z) RS(7   t
   allnotsolvt   selecti   t   nothydrogeni    t   neighb_wholerest   neighb_exclt   neighb_excl_solventg      @t
   neighb_radt   Normals   van der Waalss   Solvent accessiblet   surface_type_normalt   surface_type_vdwt   surface_type_accessiblec         C   s§   |  j  |  _  t |  d ƒ r£ t |  j d ƒ r£ t |  j j d ƒ r£ |  j  |  j _  |  j j j d ƒ t t ƒ  d ƒ rŠ t ƒ  j j ƒ  n  d d  l } | j	 ƒ  n  d  S(   Nt   graphmodt   objt   SetSymmetryMatricesi   t   glWidgetiÿÿÿÿ(
   t   doBiomoleculet   hasattrR   R   t   SetDrawSymmetryt
   MAINWINDOWR   t   SetupSymmetryt   rebuildt   UpdateDisplay(   t   selfR   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   toggleBiomolecule4   s    6c         C   s”   |  j  |  _  t |  d ƒ r� t |  j d ƒ r� t |  j j d ƒ r� |  j  |  j _  t t ƒ  d ƒ rw t ƒ  j j ƒ  n  d d  l } | j ƒ  n  d  S(   NR   R   R   R   iÿÿÿÿ(	   t
   doSymmetryR   R   R   R   R   R   R   R   (   R   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   toggleSymmetryStatus>   s    6
c         C   s   |  j  ƒ  } | j d ƒ S(   Nt   inside_shiny(   t   getDrawingStylePMt   get(   R   t   pm(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   insideShinyU   s    c         C   s   |  j  ƒ  } | j d ƒ S(   Nt   inside_colour(   R   R   (   R   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   insideColourY   s    c         C   s   |  j  ƒ  } | j d ƒ S(   Nt   double_side(   R   R   (   R   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   isDoubleSided]   s    c         C   s“   |  j  ƒ  } | j |  j ƒ t |  d ƒ r4 |  ` n  |  j  ƒ  } | j |  j ƒ x< d g D]1 } t |  | ƒ rZ t |  | ƒ j d | ƒ qZ qZ Wd  S(   Nt   drawingStylePMR   t
   parameters(   R   t   remove_dependentt   handleDrawingStylePMR   R%   t   add_dependentt   getattrt	   setparams(   R   R   t	   gobj_name(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   removeCustomDrawingStyleb   s    	t    t   allt   commandc	      
   K   s"  t  j s t ƒ  n  t  j j |  j ƒ t  j j |  j ƒ d |  _ d |  _ d |  _ d |  _
 d |  _ d |  _ d |  _ d |  _ t |  _ t |  _ | r¯ |  j r¯ d | d <n  t j j |  d | d | d | d | ƒ| sð | j t  j ƒ nG | r7| d d k r7| d d	 k  r7t j | ƒ } t j | ƒ } n  t j |  j j d
 | d |  j ƒ|  _ | swi |  j d 6} n  | j d d ƒ d k r²| j d d ƒ r²|  j | d <n  t j |  j j d
 | d |  j ƒ|  _ | sïi d d 6} n  t j d | d |  j d |  j ƒ |  _ g  |  _  d |  _! t" d |  ƒ |  _# t$ ƒ  j% |  j# ƒ |  j# j& j' |  j( ƒ |  j) d ƒ | j* d ƒ rž|  j+ d | d d d ƒ }
 n |  j+ d | j d d ƒ ƒ }
 |
 j |  j, ƒ |  j j- ƒ  } x@ | D]8 } t. | d ƒ râ| j/ d k râ|  j0 | j/ ƒ PqâqâWd S(   s/   
    Initialise the surface display object
    t   solidt   normali   i    t   visibleR   t   parentt   paramsil   t	   selparamst   dispobj_namet   same_asR   R.   t   electrostatict   colour_modet	   colparamst   MolDatat	   SelHandlet   uit   createt   drawing_stylet   namet   customt   masterCrystalN(1   R   t   ElectroColourSchemet   createElectroParamsManagerR)   t   handleColourSchemet   MapColourSchemet   surface_stylet   surface_typet   update_surface_stylet   Nonet   surft   done_electrostatict   done_mapt   reapply_selectiont   hide_on_selection_updatet   FalseR   R   t   dataobjt   DispObjt   __init__t   updatet   selection_initialisationt   model_selectiont   fix_v108R=   R4   RA   t
   SelHandle1R   t
   SelHandle2t   model_colourt   loaded_mapst   update_contextt
   surfobjectR   t   BUILDt   appendR   t   SetAlphat   opacityt   update_dependentst   has_keyR   R(   t   get_dispobjR   RC   t   setMasterCrystal(   R   R4   R3   RA   R6   R;   t   styleparamsR5   t   restore_from_versiont   keywordsR   t   dispobjst   dispobj(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRT   o   s^    	
										&' +''		c         K   s^   t  |  d ƒ r! |  j r! |  ` n  t j r@ t j j |  j ƒ n  |  j ƒ  t j j	 |  ƒ d  S(   NRL   (
   R   RL   R   RD   R'   t   handle_colour_changet   closeDrawingStylePMRR   RS   t   delete(   R   Ri   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRn   Å   s     		
c         O   s5   t  j j |  d | d | ƒ|  j s1 d |  _ n  d  S(   Nt   toggle_visibilityt
   visibilityi   (   RR   RS   t   set_visibilityRL   RJ   (   R   Ro   Rp   t   argsRi   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRq   Î   s    	 c         C   s   d |  _  d  S(   Ni   (   RJ   (   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   set_do_redrawØ   s    c         C   s)   d |  _  |  j r% | r% d |  _ n  d  S(   Ni   i    (   RO   RP   R3   (   R   t   keep_visible(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   set_reapply_selectionÝ   s    	 c         C   sh   t  j j |  d | ƒ} t |  d ƒ r: |  j j | d <n  x' d d g D] } t |  | ƒ | | <qG W| S(   NR/   R%   R@   RH   RI   (   RR   RS   R5   R   R%   RA   R*   (   R   R/   t   parst   item(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR5   â   s    c         C   s   |  j  j d | ƒ S(   NR/   (   RY   t   getSaveParams(   R   R/   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR6   î   s    c         C   s   |  j  j d | ƒ S(   NR/   (   RZ   Rx   (   R   R/   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRg   ó   s    c         C   s8   |  j  j d | ƒ } t |  d ƒ r4 |  j | d <n  | S(   s&   
    Bundle the colour parameters
    R/   t   map(   R[   R;   R   Ry   (   R   R/   Rv   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR;   ø   s     c         C   sn  d d  l  } d } | j |  j ƒ  | j ƒ d } | r` d } |  j j | ƒ |  j d d ƒ n  | j |  j ƒ  | j ƒ d } | r¡ d } |  j j d | ƒ n  | j |  j	 ƒ  | j	 ƒ d } | rß d } |  j
 j | ƒ n  | j |  j ƒ  | j ƒ \ } } } | j d ƒ r0|  j | d ƒ |  j ƒ  n  | j d ƒ r]|  j | d ƒ |  j ƒ  n  | j d ƒ rç|  j d	 | d d
 d ƒ } | j |  j ƒ |  j r·|  j j d | ƒ n  |  j ƒ  t ƒ  j j d | d g ƒ d } n  | j d ƒ r0t ƒ  j j d | d g ƒ |  j ƒ  |  j ƒ  d } n  t | t j j |  | ƒ ƒ } | rj|  j j d g ƒ n  | S(   Niÿÿÿÿi    i   Rt   R;   RI   RH   R@   RA   RB   R&   t   add_PMt	   delete_PMRU   (   t   utilst
   dict_diffsR6   RY   t   setSaveParamsRu   R;   R[   t
   set_colourRg   RZ   R5   Rd   t   set_surface_typeRs   t   set_surface_styleR   R)   R(   R   R+   t   HISTORYt
   update_guiR`   Rm   t   maxRR   RS   t   update_data_status0(   R   t
   shadowdispR|   t   rvt   diffst   undiffsR   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   update_data_status  sN    $	 
	

	 c         C   s   d S(   Ni   (    (   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   canBeTransparent9  s    c         C   s   d S(   Ni   (    (   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   isLegendPossible>  s    c         C   s   |  j  j ƒ  S(   N(   R[   t	   getLegend(   R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR�   C  s    c         K   s«   | j  | ƒ |  j j d | d | ƒ t |  j j j ƒ  ƒ d k rš |  j j j ƒ  t ƒ  rš t	 t ƒ  d ƒ rš t	 t ƒ  j
 d ƒ rš t ƒ  j
 j ƒ  qš n  |  j d ƒ d S(   s5   
    Handle colour related commands from the GUI
    R;   t
   one_colouri    R   t   updateGLt   colourN(   RU   R[   R   t   lenR   R   t   GetSurfacePrimitivest   forceRegenerateSurfaceArraysR   R   R   R�   Rc   (   R   R�   R;   Ri   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR   I  s    0c         K   s   | r | d k r n  d  S(   Nt   1(    (   R   t   ccp4mapfilet   exitRi   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   openmapfileY  s    R2   c         C   s)   | |  j  k r% |  j ƒ  | |  _  n  d  S(   N(   RI   Ru   (   R   RI   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR€   a  s    
R1   c         C   s)   | |  j  k r% |  j ƒ  | |  _  n  d  S(   N(   RH   Rs   (   R   RH   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR�   h  s    
c	         K   sa  | r |  j  j d d ƒ n  | r| d k rl |  j sK t ƒ  j d ƒ d Sd }
 d } d } d	 } d
 } q]| d k r™ d }
 d } d } d	 } d } q]| d k rÓ |  j s² d Sd }
 d } d } d } d
 } q]| d k r]d }
 d } d } d } d } q]nZ | r*t d k r*|  j j | ƒ } n3 | r]t d k r]|  j j | t	 j
 j ƒ  ƒ } n  d S(   s)   
    Handle assorted icon menu input
    t   legendR”   t
   save_grasps'   Need to calculate surface before savingNs   Save surface as Grasp filet   _grasp_filet   GRASPs   *.grasps   -unknownt
   load_grasps   Load Grasp surface fileR.   t   save_electros   Save electrostatic as map filet	   _map_filet   MAPs   *.mapt   load_electros   Load electrostatic map filet   ok(   R[   t   create_colour_legendRL   t   MGGUIt   WarningMessageRM   R–   t   writePhiMapt   readPhiMapAndColourWithSchemeR   RD   t   CColourScheme(   R   R�   t   helpt	   centre_ont   loadsavet   listdatat   save_electro_filet   load_electro_fileR˜   Ri   t   titlet   typet   formatt   filtert   unknownR‡   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   handle_iconp  sL    
					t   queryc         K   sX   |  j  s d  S|  j  j ƒ  } | rP d d  l } | j | d t d d d | ƒn | Sd  S(   Niÿÿÿÿt   textt   warningi   t	   overwrite(   RL   t   reportR|   t   saveFileRµ   (   R   t   filenameR·   Ri   t   listingR|   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt	   list_dataË  s    	 "c         C   så   | r; t  | ƒ r; t  | ƒ |  _ |  j j |  j ƒ |  j S| rÁ t |  d ƒ rÁ | sg d |  j } n  t  d ƒ j |  j ƒ t d | d d ƒ |  _ |  j j |  j ƒ | rÁ t ƒ  j	 ƒ  qÁ n  t |  d ƒ r× |  j St  d ƒ Sd  S(   NR%   t   surface_drawing_styleRA   t	   copy_from(
   t   PMR%   R)   R(   R   RA   R'   t   createDrawingStylePMR‚   t   autoSave(   R   RB   RA   t	   auto_save(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR   ×  s      c         K   sÏ   | rË | j  d ƒ r3 |  j d k r3 d |  _ q3 n  | j  d ƒ r` |  j d k r` d |  _ q` n  | j  d ƒ r� |  j d k r� d |  _ q� n  x; d d d	 d
 d g D]! } | j  | ƒ r£ d |  _ q£ q£ Wn  d S(   s(   
    User has changed drawing style
    t
   line_widtht   meshi   t   dot_spacingt   dotst   dot_sizet   context_cutofft   probe_radiust   blend_edgest   resolution_deltaRI   N(   Rd   RH   RJ   RO   (   R   t   ParamsManagert   updatedRi   Rw   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR(   ì  s        c         C   s€   t  |  d ƒ r| |  j j |  j ƒ |  j j ƒ  |  ` | r| |  j r` |  j j d t d ƒ ƒ n  t d ƒ j |  j ƒ q| n  d  S(   NR%   R&   R½   (	   R   R%   R'   R(   Rn   R   R+   R¿   R)   (   R   t   reset(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRm     s    	 c         K   st   | d k r- |  j  j d k r- d |  j  _ n- | d k rZ |  j  j d k rZ d |  j  _ n  d d  l } | j ƒ  d  S(   Nt   Surface_electroR9   i   t   Surface_mapRy   iÿÿÿÿ(   R[   R:   t   do_recolourR   R   (   R   t   ColourSchemeManagert   kwR   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRF     s    c      
   K   s>   t  |  j j d d d |  j ƒ  d |  j ƒ  d |  j ƒ  ƒd S(   s   
    Clone this object
    R3   i    R6   R;   Rg   N(   R   R4   RA   R6   R;   Rg   (   R   Ri   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   clone  s    c         K   s4   | d k r d |  _  n | d k r0 d |  _  n  d  S(   Nt	   transformi   t   reconfigure(   RO   (   R   t	   attributet   masterRi   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   handle_moving_data(  s    c            s3  ˆ j  s d Sˆ j s) ˆ j s) ˆ j r2 d ‰ no ˆ j j rG d ‰ nZ ˆ j rY d ‰ nH ˆ j r� ˆ j r� ˆ j j	 j
 ˆ j ƒ ˆ j j d ƒ d ˆ _ n  d Sd d l } d d l } ˆ j ƒ  ‰ d } d } d ˆ _ ‡ ‡ ‡ f d †  } ˆ d k r"t j d	 ˆ j j ƒ } | j ˆ j j ƒ  ƒ | j d
 d d d ƒ | j d d ƒ } ˆ j j ƒ  st j d	 ˆ j j ƒ } | j ˆ j j ƒ  ƒ ˆ j j j | j ƒ  | j  | j ƒ  | j! ƒ | j" ƒ  \ } } ˆ j j j# | j ƒ  | j  | | d ˆ j$ d ƒ | j% ƒ n  ˆ d k rd d l& }	 ˆ j rhˆ j j' d d ƒ ˆ j j' d d ƒ ˆ j j( ƒ  ˆ ` n  | j ƒ  ˆ _ ˆ j) t* ƒ  ƒ ˆ j$ d ƒ ‰ ˆ j$ d ƒ |	 j+ d ‰ ˆ j$ d ƒ ‰  ‡  ‡ ‡ ‡ f d †  }
 t, j- d k rõd d l. m/ } m0 } d d l1 } d d l2 } t* ƒ  } | j3 | ƒ ˆ _4 ˆ j4 j5 d ƒ ˆ j4 j6 | j7 j8 ƒ t9 j: j; t9 j: j< t9 j: j= t> ƒ d d d ƒ ƒ } | j? t9 j: j< | d ƒ ƒ } ˆ j4 j@ | ƒ | jA ˆ j4 | jB d ƒ tC jD | j1 jE d ƒ ƒ xO tF ˆ d ƒ r8ˆ jG jH ƒ  sˆ jG jI ƒ  r8| j1 jE d ƒ ˆ jG jJ ƒ  qêW| j1 jE d ƒ | j2 tC jD |
 | | ƒ ƒ ˆ _G | jA ˆ jG | jB d ƒ tC jD | jK ƒ  jL ˆ j4 ƒ ƒ | jA ˆ jG | jB d ƒ tC jD | | | ƒ ƒ ˆ jG jM ƒ  | jK ƒ  jN ˆ j4 ƒ q|
 | | ƒ | | | ƒ q/| | | ƒ n | | | ƒ d S(    s¥   
    This method is called once at the end of every event loop
    and it should recalculate the surface if flags are set
    to indicate redrawing is necessary
    i    i   i   i   R   iÿÿÿÿNc            sæ  d Gˆ j  GHˆ j  d k r� ˆ ` d  ˆ _ ˆ j j d ˆ j ƒ ˆ j j d d ƒ ˆ j j ƒ  ˆ j t ƒ  ƒ d ˆ _ t	 ƒ  j
 d ƒ d Sˆ d k r× d GHd ˆ _ d ˆ _ t d ˆ j j ƒ ˆ j _ d ˆ _ n  t ˆ d	 ƒ rû ˆ j ˆ _ ˆ ` n  ˆ d k r’ˆ j j d
 k r`t j j ƒ  } ˆ j sJˆ j j ˆ j | ƒ q�ˆ j j d
 | ƒ q’ˆ j j d k rAt j j ƒ  } ˆ j s+ˆ j j j d ƒ ˆ j j j ƒ  GH| rëˆ j j ˆ j j |  j ƒ  | j ƒ  | ˆ j j  ƒ n4 ˆ j j ˆ j j |  j ƒ  |  j ƒ  | ˆ j j  ƒ d ˆ _ q�ˆ j j d | ƒ q’ˆ j j! j" |  j ƒ  ƒ ˆ j j# ƒ  ˆ j j$ ˆ j j |  j ƒ  ˆ j j% ƒ n  ˆ r9d d  l& } d d d g } | j' | j( | j) g } ˆ j j* | | j+ ˆ j, ƒ ƒ ˆ j j- ˆ  j. d ƒ ƒ ˆ j j/ ˆ  j. d ƒ ƒ ˆ j j0 ˆ  j. d ƒ ƒ n  ˆ j rŠˆ j j d ˆ j d d d d ƒ ˆ j j ƒ  ˆ j j1 j2 ˆ j3 ƒ n  |  r–~  n  | r¢~ n  d ˆ _4 d ˆ j _ d ˆ _5 d ˆ _ ˆ râˆ j6 j7 d ƒ n  d  S(   Nt   restOfSurfaceDrawi    RL   RU   i   s¦   Surface calculation interrupted.
Restart by toggling visiblility.
The calculation will be faster if the
resolution is set to a larger value
in the Surface Preferencesi   s   Finished calculating surfacet	   surf_tempRy   R9   t   surface_potential_charget	   potentialiÿÿÿÿR1   RÆ   RÄ   RÅ   RÇ   RÃ   R3   R   (8   t   surface_calc_rvRL   RK   R   R+   R   t   rebuildGLDisplayObjectR   RJ   R£   R¤   RM   RN   R„   R[   RÑ   R   RÛ   R:   R   RG   R§   t   loadMapAndColourWithSchemet
   colour_mapt   colourByScalarValueRD   R4   t   molHndt
   LoadCharget   PrintChargest   evaluatePhiAndColourWithSchemet	   getSelHndt   contains_hydrogent
   CMolColourt   SetSelHandlet   apply_colourt   ColourSurfacet   atomColourVectort   surfacet   CCP4MG_SURFACE_SOLIDt   CCP4MG_SURFACE_DOTSt   CCP4MG_SURFACE_MESHt	   set_stylet   indexRH   t   SetDotSpacingR   t
   SetDotSizet   SetLineWidthR   Ra   Rb   R]   RO   t   do_rebuildGLR`   (   t
   surfHandlet   contextHandlet   ColourSchemeRî   t   aliast	   code_list(   R   R   t   update_surface(    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRÚ   S  s‚    							+ 	"  			 t   moldata_namet	   hydrogenst   closeg{®Gáz„?t   allowg        RÈ   RL   RU   RÉ   RË   g     €f@RÊ   c            s¢  | rá ˆ j  d k rT ˆ j j ˆ j j |  j ƒ  | j ƒ  ˆ ˆ t ˆ  ƒ ƒ ˆ _ qžˆ j  d k r¢ ˆ j j ˆ j j |  j ƒ  | j ƒ  ˆ ˆ t ˆ  ƒ ƒ ˆ _ qžˆ j j	 ˆ j j |  j ƒ  | j ƒ  ˆ ˆ t ˆ  ƒ ƒ ˆ _ n½ ˆ j  d k r&ˆ j j
 ˆ j j |  j ƒ  ˆ ˆ t ˆ  ƒ ƒ ˆ _ nx ˆ j  d k rkˆ j j ˆ j j |  j ƒ  ˆ ˆ t ˆ  ƒ ƒ ˆ _ n3 ˆ j j ˆ j j |  j ƒ  ˆ ˆ t ˆ  ƒ ƒ ˆ _ d  S(   Nt   vdwt
   accessible(   RI   RL   t   calculate_vdw_with_contextR4   Rã   Rç   t   boolRÞ   t!   calculate_accessible_with_contextt   calculate_with_contextt   calculate_vdwt   calculate_accessiblet	   calculate(   Rø   Rù   (   RÊ   RÉ   RË   R   (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   calcSurface×  s    ???66t   linux2(   t   QtCoret   QtGuis   Interrupt surface calculations   ..t   qticonss   stop_sign_128x128.pngs   clicked(bool)t   surfaceThreads
   finished()(O   R3   RO   R]   RL   R[   RÑ   RJ   t   do_update_opacityR   R   Ra   Rb   R÷   R`   Rî   t   mmdb2R   RK   RÞ   RW   R=   R4   RA   t	   setSelHndRY   Rç   t   cleanSelectiont   cleanAltLocsRZ   t	   getSameAsRã   t   Selectt
   STYPE_ATOMt   SKEY_ORt   getSelIndext   SelectNeighboursR   t   SKEY_ANDt   mathR+   R   Rß   R   t   pit   syst   platformt   PyQt4R  R  t   mginterruptt   UtilityThreadt   QToolButtont   interruptButtont   setTextt   setToolButtonStylet   Qtt   ToolButtonTextBesideIcont   ost   patht   abspatht   joint   dirnamet   __file__t   QIcont   setIcont   connectt   SIGNALt	   functoolst   partialt	   SetStatusR   R  t	   isRunningt
   isFinishedt   waitt	   statusBart   removeWidgett   startt   addPermanentWidget(   R   Rî   t   mmdbRø   Rù   RÚ   R‡   t	   nselatomst   selAtomsR  R  R  R  R"  R#  t   mainwint   icondirt   icon(    (   RÊ   R   RÉ   RË   R   Rý   sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   draw1  sŒ    	 					\."			311!7.N(*   t   __name__t
   __module__RK   RD   t   HydroColourSchemeRG   t   class_dependentsRV   t   surface_type_menut   surface_type_aliasR   R   R    R"   R$   R-   RT   Rn   Rq   Rs   Ru   R5   R6   Rg   R;   RŠ   R‹   RŒ   R�   R   R—   R€   R�   R³   R¼   R   R(   Rm   RF   RÔ   RÙ   RD  (    (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR      sd   
	
						T		
	
	7				X		R^   c           B   s\   e  Z d  „  Z d d d d d „ Z d „  Z d „  Z d „  Z d d d
 d „ Z d	 „  Z RS(   c         K   s/   x( | j  ƒ  D] } t |  | | | ƒ q Wd  S(   N(   t   keyst   setattr(   R   Ri   t   key(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR+     s    i    c         C   s(   | |  _  | |  _ | |  _ | |  _ d  S(   N(   t   draw_unit_cellt   xshiftst   yshiftst   zshifts(   R   RN  t   xshiftt   yshiftt   zshift(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   DrawUnitCell  s    			c         K   sy   t  j  j |  | � x_ | j ƒ  D]Q } | d k rH t | | ƒ |  _ q  | d k r  |  j j t | | ƒ ƒ q  q  Wd  S(   Nt   symmetry_radiust   draw_symmetry(   t   graphicsmodelR+   RK  t   floatRV  R   R   t   int(   R   Ri   RM  (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR+     s    c         K   s)  |  j  rè |  j rè t |  j d ƒ rè t |  j j d ƒ rè |  j j ƒ  d k rR d  S|  j j j j d d ƒ } t | ƒ d k rƒ d  Sd d  l	 } | j
 t | ƒ ƒ } |  j j d ƒ |  j j | ƒ |  j j | ƒ |  j j d ƒ d  S|  j d k s|  j r|  j j g  ƒ d  S|  j | | ƒ d  S(   NR4   Rã   i    i   iÿÿÿÿ(   R   R>   R   R4   R   t   GetNumSymmetryMatricesRã   t   GetBiomoleculeAsMatricesR‘   t
   pygl_coordt	   IntVectorR   R   t   SetSymmetryMatrixNumberst   SetDrawSymmetryColouredRW  R   t   setup_symmetry(   R   t   pointt   extentsRi   t   matricesR]  t   numbers(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR   &  s"    9c         C   sÿ  d d  l  } d d  l } | j | ƒ } | j | d ƒ } | j | d ƒ } | j | d ƒ } | j | d ƒ }	 |  j r· t |  j d ƒ r· t |  j j d ƒ r· |  j d k sÿ |  j |  j k sÿ |  j |  j	 k sÿ |  j
 |  j k sÿ |  j |  j k rËt j d |  j j j ƒ }
 |
 j ƒ  } | j |  j j j | | | | | |	 |  j |  j |  j
 |  j |  j ƒ |  _ |  j j |  j j ƒ  ƒ |  j j |  j j ƒ  ƒ |  j j |  j j ƒ  ƒ |
 rË~
 qËn  |  j |  _	 |  j
 |  _ |  j |  _ |  j |  _ d  S(	   Niÿÿÿÿi    i   i   i   R4   Rã   Rþ   (   R]  t   symmetryt	   CartesianR>   R   R4   RN  t   old_draw_unit_cellRO  t   old_xshiftsRP  t   old_yshiftsRQ  t   old_zshiftsRW   R=   RA   Rç   t   SymmetryRã   RV  R   R   t   GetSymmetryMatricest   SetUnitCellt   GetUnitCellR_  t   GetSymmetryMatrixNumbers(   R   t   pRc  R]  Rf  Rb  t   tlt   trt   brt   blRø   t   selHnd(    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRa  :  s(    ‡K 	R.   i   c         C   sÃ   d |  _  | |  _ |  j d | ƒ t j ƒ  |  _ |  j j t ƒ | |  _ d |  _	 d |  _
 d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ t |  _ t |  _ d  S(   Ni    R>   iñØÿÿiK   (   RU   RL   t   graphicsmodel_initt   cprimt   DisplayobjectR   t   SetAnchoredt   TrueR>   RW  RN  Rh  RO  RP  RQ  Ri  Rj  Rk  RV  t   symmetry_labelsRQ   R   R   (   R   R>   R3   RL   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRT   U  s&    															c         C   sn   |  j  s d S|  j r& |  j j ƒ  n  |  j s3 d Sd d l } d d l } | j |  j |  j ƒ d |  _  d S(   s/   
      Generate surface graphical object
      Niÿÿÿÿi    (   RU   R   t   clear_primsRL   Rî   R  t   add_surface(   R   Rî   R  (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   build_primitivesn  s    	 		N(	   RE  RF  R+   RU  R   Ra  RK   RT   R  (    (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyR^     s   				R½   R.   c         C   s€  d d  l  } | j d |  d d d d d | d d	 d
 d d d d d d d d d d g
 d i d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d d 6d i t d  t d! d" d# d$ d% d& d' d( d) d* ƒ d 6t d  t d! d+ d# d$ d% d, d' d( d) d- ƒ d 6t d  t d! d. d# d$ d% d/ d' d0 d) d ƒ d 6t d  d1 d! d2 d# d3 ƒ d 6t d  t d! d4 d# d$ d% d* d' d5 d) d6 ƒ d 6t d  t d! d7 d# d$ d% d8 d' d d) d ƒ d 6t d  t d! d9 d# d$ d% d: d' d d) d ƒ d 6t d  d1 d! d; d# d3 ƒ d 6t d  t d! d< d# d= ƒ d 6t d  d1 d! d> d# d3 ƒ d 6t d  t d! d? d# d3 ƒ d 6t d  d1 d! d@ d# d3 ƒ d 6dA dB ƒ 	} | S(C   NiÿÿÿÿRA   R®   s   Surface drawing stylet   picture_definitioni   R¾   t
   apply_modet
   on_requestt   guiRÉ   RÈ   RË   RÊ   RÅ   RÇ   RÃ   R#   R!   R   t   defaultg      @g      ø?i    i   gš™™™™™¹?g      ð?iè  t   warning_limitt
   warning_ont
   definitionR¯   t   labels!   Cutoff distance for context atomst   stylet   spinboxR„   g      4@t   ming        t   stepg      à?s   Surface probe radius(0-3)g      @gš™™™™™É?s   Resolution in degrees(2-89)iY   i   R  s   Blend colour borderst   checkboxs!   Maximum dot separation(0.005-0.5)g{®Gázt?g{®Gáz„?s   Dot size(1.0-3.0)i   s   Mesh line widthi   s   Draw both sides of surfaces   Inside colourt   colourcombos   Inside surface shinys$   Warn for calculation with more atomss   Warning for long calculationR¨   t   surfaces(   t   servicesRÌ   t   dictRY  t   strRZ  (   RA   R¾   R�  R   (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRÀ   �  sD    $
1.....	c          C   sÝ   t  j sÖ d d  l }  |  j d d d d d d d d g d d	 d	 d
 d d g d d d i t d d d d d d d d d d ƒ d 6d d ƒ t  _ |  j d d d d d d d d g d d	 d	 d
 d d g d d ƒ t  _ n  t  j S(   NiÿÿÿÿRA   RÏ   t   rangesg        g      à¿g      à?t   colourst   redt   whitet   bluet   modeRY  t   definitionsR¯   R„   g      @R‹  g      ÀRŒ  gš™™™™™©?R‰  RŠ  R®   s   Electrostatic potentialRÐ   s   Surface map colouring(   R   RD   R�  RÒ   R‘  RG   (   R�  (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyRE   §  s    		.	(   t   __doc__R  R*  R4  RR   RW   R[   t   global_definitionsRS   R   RX  Rx  t   timeR^   RÀ   RE   (    (    (    sE   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/SurfaceDispobj.pyt   <module>   s   $
ÿ ÿ èt&