ó
ÉÝ{Tc           @   sÁ   d  Z  d d l Z d d l Td d l Z d d l Z d d l Td d l Z d d l Z d d l Z d d l	 Td d l
 m Z d „  Z d e f d „  ƒ  YZ d „  Z d	 e e f d
 „  ƒ  YZ d S(   sw  
     python/ui/FieldDisp.py: CCP4MG Molecular Graphics Program
     Copyright (C) 2001-2008 University of York, CCLRC
     Copyright (C) 2009 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ÿÿÿÿN(   t   *(   t   MapPlaneSetc         C   s=   t  j j |  ƒ d k r d St  j j |  ƒ } t  j | Sd  S(   Ni    t    (   t	   FieldDatat   namest   countt   indext   insts(   t   namet   i(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt	   fielddata    s    R   c           B   s‰   e  Z g  Z g  Z i  Z g  d  i  d d „ Z d „  Z d d „ Z d „  Z d „  Z	 i  d „ Z
 d  d	 „ Z d
 „  Z d  d  d  d „ Z RS(   R   i    c         K   s‚   d |  _  d |  _ d |  _ t j |  d d | d d d | d | ƒt j j | ƒ d	 k r~ t j j | ƒ t j	 j |  ƒ n  d  S(
   Nt	   FieldDispgš™™™™™É?R   R   R   t   modulet   filenamet
   dataparamsi    (
   R   t   ratet   stylet   DataObjt   __init__R   R   R   t   appendR   (   t   selfR   R   R   t   restore_from_versiont   kw(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR   ,   s    			c         K   s   t  j |  ƒ ~  d  S(   N(   R   t   delete(   R   t   keywords(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR   6   s    i   c         C   sG   t  j |  ƒ } d g | d <x$ d g D] } t |  | ƒ | | <q& W| S(   NR   t   modulesR   (   R   R   t   getattr(   R   t   allt   datapart   item(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR   :   s
    c         K   sR   d d  l  } d d  l } | j |  j d ƒ |  _ |  j ƒ  |  j d ƒ d d g S(   Niÿÿÿÿi   t   createi    R   (   t   fieldt   mapviewt   ReadCubeFileR   t   fieldst
   gui_createt   update_dependents(   R   R   R   R    (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   loaddataA   s    
c         C   s   t  |  j ƒ } d  S(   N(   R   R   (   R   t   s(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   create_contoursI   s    c         K   s   t  |  j d d d | ƒ} | S(   Nt   visiblei   t   params(   R   R   (   R   R)   R   t   dobj(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt
   add_objectL   s    c         C   s\  |  j  r d } n d } d | g d d d d g d |  j  g d	 d
 g d | g g d d d d g d d g d	 d g d d g g d d d d g d d g d	 d g d d g g d d d d g d d g d	 d g d d g g d d d d g d d g d	 d g d d g g d d d d g d d g d d g d d g g g g } t j j d |  j |  | ƒ d  S(   Nt   Hidet   Showt	   WINDOW_IDt   PARAMt   toggle_visibilityt   TYPEt   _logicalt   INITIALt   RETURN_METHODt   set_visibilityt   LABELR   t   0t   Deletet	   list_filet   list_data_files   List map statst   _sampling_ratet   sampling_rate_guis   Grid spacingR+   s
   Add objectt   DISPLAYt   PULLDOWNt   comt   icon(   R(   t   GUIR   t   CreateGUIWindowR   (   R   t   windowt   visibility_labelt   guidef(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   define_iconP   sF    																				c         K   s   d  S(   N(    (   R   R   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR:   z   s    c         K   sû   | r÷ t  j j d |  d d g d d d d d d g g g g d	 d d
 d g d d d g d d g d d g d d g d d g d d g d d g d t |  j ƒ g g	 g d d d d d g g d d	 d g g d  d! d d" g g d# d$ g g g g g ƒ n  d% S(&   s3   
    Create and handling map sampling rate GUI
    t   sampling_ratet   TITLEs   Contour grid sizeR4   R<   t   RETURN_LISTs   sampling_rate::param_valuet   ALIASt   OBJECTR1   t   Wheelt	   CONFIGUREt   scales   0.05t   labels	   grid sizet   messages   Set the contour grid sizet
   param_namet	   max_values   3.0t	   min_values   0.02t   entryt   1t   param_valueR=   t   WINDOWt   LINER6   s   Recalculate contour witht   BUTTONSt   okt   Applyt   dismisst   CLOSEN(   RA   R   RB   t   strR   (   R   R;   RG   t   exitR   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR<      s0    										(   t   __name__t
   __module__R   R   t   class_dependentsR   R   R   R%   R'   R+   RF   R:   R<   (    (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR   '   s   
			*	c         C   sS   t  |  ƒ } | s d S| j j | ƒ d k r2 d S| j j | ƒ } | j | Sd  S(   NR   i    (   R
   t   objnamesR   R   t   objinsts(   t   parentR   t   mR	   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt	   fielddisp²   s     R   c           B   s¿   e  Z i  Z d  d i  d d „ Z d  d „ Z d „  Z d „  Z d d „ Z d „  Z d  d  d d	 „ Z	 d  d
 „ Z
 d „  Z d  d d „ Z d  d d „ Z d „  Z d  d  d d „ Z d „  Z RS(   R   i   i    c      	   K   s$  d d  l  } d d  l } d d  l }	 d d  l }
 d d  l } d d  l } i  } | j ƒ  j d ƒ | d <d | d <d | d <d | d <d | d	 <d | d
 <| j d d d d ƒ | d <g  | d <d d  l	 } | j
 | ƒ rt | j
 | ƒ d j ƒ d k r| j ƒ  j d ƒ | d <n | j ƒ  j d ƒ | d <| j | ƒ | j | ƒ t j |  d | | d | d | ƒ| j |  j j |  j ƒ } | j ƒ  | j ƒ  |  _ | j ƒ  |  _ |  j |  j k  r×d |  _ d |  _ n  t |  j ƒ t |  j ƒ k r|  j |  _ n |  j |  _ |
 j |  j j d |  j d |  j ƒ|  _ |  |  j _ |  j s`t j |  _ n  t j |  ƒ |	 j j  j! |  j ƒ |  j" |  _# |  j |  j d } |  j$ d d |  j |  j | g d t% |  j& ƒ ƒ |  j' d d ƒ |  j( d d ƒ |  j) t* |  j& ƒ ƒ |  j+ |  j, d d ƒd  S(   Niÿÿÿÿt   surface_stylegš™™™™™¹?t   contour_leveli   t	   ncontoursi    t	   selectiont   maxvalt   minvalt   planet   plane_definitiont   other_colourt   colourt   first_colourR   R(   R)   i
   iöÿÿÿt   ifieldt   ncontg      I@t   style_widgett   SCALER   t   force(-   R   R    t   buildt   nxmapgraphicsmodelt
   pygl_coordt   mapt   MapParamsManagert   gett   Planet   dataobjt   get_dataobjt   lenRc   t   updatet   DispObjR   t   GetFieldRe   R"   Rk   t   GenerateStatst   MaxRl   t   MinRm   t   absRj   t   graphmodt   uiRo   R   t   initialisationR   R   R   t
   gui_objectR#   R^   Ri   t   set_selectiont
   set_colourt	   set_stylet   floatt
   set_paramsRh   (   R   Re   R   R(   R)   R   R   R   R    Rx   Ry   Rz   R{   t   parsR   t   ft   resol(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR   ½   sZ    





1"
	*	1c         C   s€  d d  l  } g  } g  } x! | j j D] } | j | ƒ q% Wx! | j j D] } | j | ƒ qI W| j d ƒ | j d ƒ | j d ƒ | j d ƒ |  j r¦ d } n d } d | g d	 d
 d d g d |  j g d d g d | g g d	 d d d d d g d d g g d t |  j ƒ g d d g d d g g d	 d d d g d d g d d g d d g g d	 d d d | | g d |  j g d d g d d g g d	 d  d d g d d g d d! g d d" g g d	 d# d d g d d g d d$ g d d# g g d	 d% d d g d d g d d% g d d& g g d' d( d) d
 g d* d g d) d  g d* d g d) d# g d) d% g g g g	 } t	 j
 j d+ |  j |  | ƒ d  S(,   Niÿÿÿÿs   Contour Slicet   slicet   Maskt   maskR,   R-   R.   R/   R0   R1   R2   R3   R4   R5   R6   Rj   t   TYPEDEFt   menus   Single Contours   Plus/Minus ContoursRU   s   -1s   Contour modeR‘   t	   centre_onR7   s	   Centre onRh   t   _menus   Surface style ..Rn   s   Contour slice detailst   define_planet   clonet   CloneR   R8   R=   R>   R?   t   rb2R@   (   R{   t   MapDispt   surface_style_menuR   t   surface_style_aliasR(   R^   Rj   Rh   RA   R   RB   R   (   R   RC   R{   t
   style_menut   style_aliasR   RD   RE   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyRF   ò   sv      																									c         K   s/   |  j  ƒ  } t |  j j d |  j d | ƒd  S(   NR(   R)   (   R)   R   Re   R   R(   (   R   R   R’   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR�   5  s    c      	   C   s“   |  j  |  j d } t |  j ƒ |  _ yS t j j |  j d t |  j ƒ g d t j j	 d |  j |  j  | g ƒ g g ƒ Wn d |  j
 GHn Xd  S(   Ng      I@R   Ru   Rv   s   Error updating gui DataObj(   Rl   Rm   R^   Ri   t   style_labelRA   R   t   SetAttributesRŒ   t   writeguilistR   (   R   R”   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   update_contour_range:  s    !2c         C   sC   t  j |  ƒ } x- d d d d g D] } t |  | ƒ | | <q" W| S(   NRi   Rj   Rh   Ro   (   Rƒ   R)   R   (   R   R   R’   R   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR)   D  s    c         C   s  d d  l  } d } | j |  j ƒ  | j ƒ d } | rS d } |  j j d g ƒ n  x¦ | j ƒ  D]˜ } | d k r‰ |  j d | d ƒ q` | d k r² |  j d t | d ƒ ƒ q` | d k rÕ |  j d | d ƒ q` | d k r` |  j	 d | d ƒ q` q` Wt
 | t j |  | ƒ ƒ } | S(	   Niÿÿÿÿi    i   R‚   Ri   Rj   Rh   Ro   (   t   utilst
   dict_diffsR)   t
   update_guiR   t   keyst   set_contourR‘   R^   t	   set_planet   maxRƒ   t   update_data_status0(   R   t
   shadowdispR©   t   rvt   diffst   key(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   update_data_statusJ  s"    c         K   sy  d d  l  } d d  l } | s* | s* | ru| rB t | ƒ |  _ n  | rZ t | ƒ |  _ n  |  j j j | j |  j j	 |  j ƒ ƒ d |  _
 d t |  j ƒ |  _ t j j |  j d |  j g g ƒ | j |  j j	 |  j ƒ } | j ƒ  | j ƒ  |  _ | j ƒ  |  _ |  j |  j k  r-d |  _ d |  _ n  t |  j ƒ t |  j ƒ k r[|  j |  _ n |  j |  _ |  j ƒ  n  d  S(   Niÿÿÿÿi   s   Orbital Rk   i
   iöÿÿÿ(   Ry   R   t   intRk   R‰   t   objt   define_fieldR„   Re   R"   t	   do_redrawR^   t   selection_labelRA   R   R¦   RŒ   R…   R†   Rl   R‡   Rm   Rˆ   R¨   (   R   Rk   t   orbitalRw   R   Ry   R   R“   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR�   _  s,      (	"
	c      	   C   sÈ   d d  l  } g  } x0 t | j |  j j ƒ ƒ D] } | j | ƒ q. Wd d g d | g d d g d d d	 d
 | | g d t |  j ƒ g d d g g d d d d g g g g } t j	 j
 d |  | ƒ d  S(   NiÿÿÿÿRH   s   Select Molecular OrbitalR.   R4   R�   R/   R»   R˜   R™   R3   R6   t   OrbitalR=   R>   RŸ   t   fieldobj_selmenu(   R   t   ranget   GetNumFieldsRe   R"   R   R^   Rk   RA   R   RB   (   R   RC   R   t   orbital_menuR	   RE   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   define_selectionw  s    "			c         K   s   |  j  | d d ƒd  S(   NR‚   i    (   R­   (   R   t   valueR   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR�   ‹  s    c         K   s›   t  | ƒ |  _ |  j j j |  j ƒ |  j j j |  j ƒ d |  _ |  j t | ƒ k r— | |  _ t	 | ƒ r— t
 j j |  j d |  j g g ƒ q— n  d  S(   Ni   R   (   R�   Ri   R‰   R·   t   SetMaxContourLevelt   SetMinContourLevelR¹   R¥   R^   R¶   RA   R   R¦   RŒ   (   R   Ri   R‚   R   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR­   Ž  s    		c         K   s�   t  j |  d | ƒ} | s! | r^ t ƒ  j |  j ƒ } |  j j j | d | d | d ƒ n  |  j |  _ t	 j
 j |  j d |  j g g ƒ d  S(   NRq   i    i   i   (   t
   COneColourRŽ   t   MGCOLOURt   RGBRq   R‰   R·   t	   SetColourt   colour_labelRA   R   R¦   RŒ   (   R   Rq   Rw   R   t   changedt   rgb(    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyRŽ   ˜  s    (c         C   sM   |  j  s d S|  j j j |  j ƒ |  j j ƒ  |  j j d ƒ d |  _  d S(   Ni    R‰   i   (   R¹   R‰   R·   t   SetNumberOfContoursRj   t   build_primitivest   do_rebuildGLR   (   R   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   draw   s    	 	c         K   s  d d  l  } d d  l } | rN d d g j | ƒ rN t | ƒ |  _ d |  _ n  | r| |  j k so | d k r| |  _ |  j d k r¶ |  j j j	 | j
 ƒ |  j j j | j ƒ nL|  j d k rô |  j j j	 | j ƒ |  j j j | j ƒ n|  j d k r2|  j j j	 | j ƒ |  j j j | j ƒ nÐ |  j d	 k rp|  j j j	 | j
 ƒ |  j j j | j ƒ n’ |  j d
 k r®|  j j j |  j ƒ |  j j j	 | j ƒ nT |  j d k r|  j j j |  j ƒ |  j j j	 | j ƒ |  j j j | j ƒ n  d |  _ n  d  S(   NiÿÿÿÿRU   s   -1i   i    t   chickenwiret   marching_cubest   solidt   solid_chickenwireR•   R—   (   R    Rx   R   R¶   Rj   R¹   Rh   R‰   R·   t   SetPlotTypet   CHICKENWIREt   SetLineStylet	   WIREFRAMEt   MARCHINGCUBESt   SOLIDt   SetPlaneRn   t   CONTOURSt   MASK(   R   Rh   Rj   Rw   R   R    Rx   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR‘   ª  s6    !	c         K   sw   d d  l  } d d  l } d d  l } | j | j |  j j |  j ƒ j ƒ } | j j	 j
 j j | |  j j d d ƒd  S(   Niÿÿÿÿt   zoomi   (   R   Rz   Rx   t   CartesianPtrR„   Re   R"   Rk   t   originR   t   glthreadt   gleventRš   R‰   R·   (   R   R   R   Rz   Rx   Rß   (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyRš   Î  s
    '(   R`   Ra   Rb   R   RF   R�   R¨   R)   Rµ   R�   RÁ   R�   R­   RŽ   RÏ   R‘   Rš   (    (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyR   »   s   5C		
		
	
$(   t   __doc__RA   R©   t   ost   stringR   t   modelRx   t   viewt   global_definitionst   MapPlaneR   R
   R   R   Rg   Rƒ   R   (    (    (    s@   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/FieldDisp.pyt   <module>   s   


	‹		