ó
ÉÝ{Tc           @   s  d  Z  d d l Z d d l Z d d l Z d d l Td d l Z d d d d d d	 g Z g  Z d
 f  d „  ƒ  YZ d e f d „  ƒ  YZ	 d f  d „  ƒ  YZ
 d f  d „  ƒ  YZ d f  d „  ƒ  YZ d e
 e f d „  ƒ  YZ d f  d „  ƒ  YZ g  d d d „ Z d S(   s—  
     python/ui/dataobj.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   MolDatat   MapDatat	   FieldDatat   VectorsDatat
   GL2dScreent   CrystalDatat
   Dependencyc        	   B   sn   e  Z d  d d d d d d d d g	 Z d	 „  Z d
 „  Z d d d d d „ Z g  d „ Z d „  Z d „  Z RS(   t	   selectiont   colourt
   visibilityt   createt   deletet   renamet	   transformt   reconfiguret   editc         C   s   i  |  _  i  |  _ d  S(   N(   t
   dependentst   dependencies(   t   self(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   __init__)   s    	c         C   s   |  j  d ƒ |  j ƒ  d  S(   NR   (   t   update_dependentst   remove_all_dependency(   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   5   s    t    c   	      C   s”  d d l  } |  j j | ƒ r. |  j | } n g  } d } xF| D]>} | d } |  j j | ƒ sg Pn  | j | ƒ sA | j | ƒ t | | j ƒ r| t k rÛ t j	 j | ƒ sÃ i  t j	 | <n  | | t j	 | |  <q|| j	 j | ƒ sý i  | j	 | <n  | | | j	 | |  <q| j
 j | ƒ s7i  | j
 | <n  t | ƒ | k rk| | rk| | | j
 | |  <qd | j
 | |  <qA qA W| |  j | <d S(   s½  
    Add a dependency
    master = the master object on which this object is dependent
    attributes = list of the masters attributes that this is dependent on
    handlers = list of methods of this to be called when master 
               attribute changes
    callback = string which is can be executed in global context
               to identify the master object.  This is not
               essential input for any DispObj or DataObj
    iÿÿÿÿNi   R   (   t   typesR   t   has_keyt   valid_attributest   countt   appendt
   isinstancet	   ClassTypet   DispObjt   class_dependentsR   t   len(	   R   t   mastert
   attributest   handlerst   callbackR   R   t   it   att(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   add_dependency?   s2    
   c         C   sI  |  j  j | ƒ r" |  j  | } n d  St | ƒ d k rA | } n  d d  l } xÏ | D]Ç } | j | ƒ rT | j | ƒ t | | j ƒ rÐ t | d ƒ rÐ | j	 j | ƒ rÐ | j	 | j |  ƒ rÐ | j	 | |  =n  t | d ƒ r| j
 j | ƒ r| j
 | j |  ƒ r| j
 | |  =qqT qT Wt | ƒ r;| |  j  | <n
 |  j  | =d  S(   Ni    iÿÿÿÿR    R   (   R   R   R!   R   R   t   removeR   R   t   hasattrR    R   (   R   R"   R#   R   R   R'   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   remove_dependencyv   s*     	c         C   sú   d d l  } xç |  j j ƒ  D]Ö } t | d ƒ r… xQ |  j | D]? } | j j | ƒ r? | j | j |  ƒ r? | j | |  =q? q? Wn  t | d ƒ rè xQ |  j | D]? } | j j | ƒ r¢ | j | j |  ƒ r¢ | j | |  =q¢ q¢ Wn  |  j | =q Wd S(   sh   
    Remove this object from all dependent lists - probably
    because we are deleting this object
    iÿÿÿÿNR    R   (   R   R   t   keysR*   R    R   R   (   R   R   R"   R'   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   š   s    c         B   sæ  d d l  } d d l } |  j j | ƒ s. d Se |  d ƒ r¯ |  j j | ƒ r¯ xZ |  j | j ƒ  D]B \ } } | rc y# | d |  j d | d d UWq¥ q¥ Xqc qc Wq¯ n  e	 |  e
 ƒ r4e
 j j | ƒ r4x^ e
 j | j ƒ  D]F \ } } y0 e e
 j | | g  i |  j d 6| d 6ƒ Wqä qä Xqä Wq4n  e |  d	 ƒ râ|  j j | ƒ râxŠ |  j | j ƒ  D]r } e ƒ  r¤e |  j | | g  i |  d 6| d 6ƒ qiy- e |  j | | g  i |  d 6| d 6ƒ WqiqiXqiWn  d S(
   sS   
    This method will be called by the master object to update its  dependents
    iÿÿÿÿNR    s	   (master='s   ',attribute='s   ')R"   t	   attributeR   (   t   mapt   modelR   R   R*   R    R   t   itemst   nameR   R   t   applyR   R,   t	   DEVELOPER(   R   R-   R.   R/   t   objt   cmd(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   ±   s<      # !	(	   t   __name__t
   __module__R   R   R   R(   R+   R   R   (    (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   #   s   		
	6$	t   DataObjc           B   sR  e  Z g  Z g  Z d  d d d d d g Z d d d i  i  d „ Z d „  Z d d	 „ Z d
 „  Z d „  Z	 d „  Z
 d d „ Z d „  Z d „  Z d d d d „ Z d „  Z d „  Z d d d d d d d „ Z d d d „ Z d „  Z d d d „ Z d „  Z d „  Z d! d! d d d „ Z d „  Z d d „ Z d „  Z d d d g  d  „ Z RS("   t   MolDispt   SurfaceDispobjt   HBondst   Contactst   AnisoUt
   AnnotationR   c   	      C   sN  d d  l  } d d  l } t j |  _ | |  _ d d d g |  _ d |  _ d |  _ g  |  _	 d |  _
 | r— x+ | j ƒ  D] } t |  | | | ƒ qv Wn  | r² | j | ƒ |  _ n  | rÄ | |  _ n  | rÖ | |  _ n  | s| j j | j j |  j d ƒ d ƒ } | s| |  j } qn  |  j | ƒ g  |  _ g  |  _ t j |  ƒ d  S(   NiÿÿÿÿR   i   i    i   (   t   ost   utilst   versiont   ccp4mg_versiont   ccp4mg_creator_versionR1   t   filenamet   visiblet   expandedt
   update_guit   movingR,   t   setattrt   check_filenamet   object_typet   modulet   patht   basenamet   splitextt
   uniquenamet   objnamest   objinstsR   R   (	   R   t   typeR1   RD   RL   t
   dataparamsR?   R@   t   item(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   ð   s4    					   )		c   	      C   s  | s | | k r d  St  j j | ƒ } d d  l } d d  l } | j d d | ƒ } | j d d | ƒ } | |  _ t  j j | ƒ d k r• | } nX d } d } xI | rì | d } | d t | ƒ } t  j j | ƒ d k r¤ d } q¤ q¤ W| |  _	 | t  j | <| S(   Niÿÿÿÿs   \.t   _s   -|\+|\/|%|\*i    i   (
   R8   t   dataobj_namest   indext   ret   stringt   subt
   name_labelR   t   strR1   (	   R   R1   t   oldnamet   oldidxRY   RZ   t   nnamet   contt   n(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   renameuniquename  s&    			
 	c         C   sñ   d d  l  } d d  l } | j d d | ƒ } | j d d | ƒ } | |  _ t j j | ƒ d k rl | } nX d } d } xI | rÃ | d } | d t | ƒ } t j j | ƒ d k r{ d } q{ q{ W| |  _ t j j	 | ƒ t j
 j	 |  ƒ | S(   Niÿÿÿÿs   \.RV   s   -|\+|\/|%|\*i    i   (   RY   RZ   R[   R\   R8   RW   R   R]   R1   R   t   dataobj_insts(   R   R1   R^   RY   RZ   R`   Ra   Rb   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRP   4  s"    			
 	c         C   s   |  j  S(   N(   R\   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt	   get_labelQ  s    c         K   s±   t  |  j ƒ d k rY t  |  j ƒ } x2 t | d d d ƒ D] } |  j | j ƒ  q; Wn  t j |  ƒ t j j |  ƒ r­ t j j |  ƒ } t j	 j
 | ƒ t j j
 | ƒ n  d  S(   Ni    i   iÿÿÿÿ(   R!   RR   t   rangeR   R   R8   Rd   R   RX   RW   t   pop(   R   t   keywordst   llent   iiR&   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   U  s    c         C   s   g  S(   N(    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   getDependentsForDeletionl  s    i   c         C   sU   i  } xH d d d d d d d g D]+ } t  |  | ƒ r" t |  | ƒ | | <q" q" W| S(   NRL   RK   RD   RE   RC   RF   t   customResCIFFiles(   R*   t   getattr(   R   t   allt   dataparRU   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRT   r  s
    "c         K   s
   d d g S(   Ni    R   (    (   R   Rh   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   loaddata~  s    	c         C   s'   |  j  j | j ƒ |  j j | ƒ d  S(   N(   RQ   R   R1   RR   (   R   t   dispobj(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   add_dispobjŠ  s    Rn   c         C   s×   d d  l  } | s g  } n  t | | j ƒ r@ | r@ | g } n | } | r| |  j j | ƒ ru |  j |  j j | ƒ Sd SnW g  } xJ |  j D]? } | s« | j | j ƒ rŒ | j | ƒ | d k rË | SqŒ qŒ W| Sd  S(   NiÿÿÿÿR   t   first(	   R   R   t   ListTypeRQ   R   RR   RX   RK   R   (   R   RK   t   modeR1   R   t   obj_typet   retR4   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_dispobj“  s"    	 c         C   s   |  j  d S(   Ni   (   RD   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   getFilename¬  s    c         C   sZ   d d  l  } d d  l } | j | ƒ |  _ | j j | j j |  j d ƒ d ƒ |  _ d  S(   Niÿÿÿÿi   i    (   R@   R?   RJ   RD   RM   RN   RO   R\   (   R   RD   R@   R?   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   setFilename±  s    c         C   s   d S(   s9   
    Handle translation commands from mouse movement
    N(    (   R   t   dxt   dyt   dzt   rotxt   rotyt   rotz(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   ¸  s    c         K   sB   | r d |  j  } n | d k r1 t | ƒ } n d  S| |  _  d  S(   Ni   R   (   RE   t   int(   R   t   toggle_visibilityR
   Rh   t   vis(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_visibilityÀ  s    c         C   s   |  j  S(   N(   RE   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_visibilityÊ  s    c         K   sB   | r d |  j  } n | d k r1 t | ƒ } n d  S| |  _  d  S(   Ni   R   (   RF   R�   (   R   t   toggle_expandedRF   Rh   t   expd(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_expandedÎ  s    c         C   s   |  j  S(   N(   RF   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_expandedØ  s    c         C   s   d  S(   N(    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   handle_program_exitÝ  s    g        c      
   K   s©   | r¥ | r¥ x– | j  D]ˆ } | j  j | ƒ r |  j  j | ƒ r |  j |  j  j | ƒ j d | j | j  j | ƒ d | j | j  j | ƒ d | d | ƒ q q Wn  d  S(   Nt   initial_statust   final_statust   fractiont   step(   RQ   R   RR   RX   t   movie_interpolation(   R   R‹   RŒ   R�   RŽ   Rh   RU   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR�   â  s    $c         C   sI   t  |  d ƒ s# | j j d ƒ r' t S|  j | j d k rA t St Sd  S(   NRD   (   R*   RT   R   t   FalseRD   t   True(   R   t   shadow_data(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt
   isSameDataî  s
    #c         C   sW  d } t  | t ƒ r$ | j ƒ  } n	 | j } | j d d ƒ t |  d d ƒ k r‰ d } |  j j d g ƒ |  j d | j d d ƒ ƒ n  g  } xâ t d t	 |  j
 ƒ ƒ D]È } | j
 j |  j
 | ƒ sÞ | j |  j | ƒ q¨ | j | j
 j |  j
 | ƒ } |  j | j | j k r.| j |  j | ƒ q¨ |  j | j | ƒ } | r¨ |  j j d |  j
 | g ƒ d } q¨ q¨ W| rºx7 | D]/ }	 |  j j d |	 j g ƒ d } |	 j ƒ  q�W~ n  g  }
 xP t d t	 | j
 ƒ ƒ D]6 } |  j
 j | j
 | ƒ sÙ|
 j | j | ƒ qÙqÙWx= |
 D]5 }	 |	 j |  j ƒ |  j j d |	 j g ƒ d } qW| S(   Ni    RE   i   R
   t   update_DispObjR   t   add(   R   R8   RT   t   getRm   RG   R   R„   Rf   R!   RQ   R   RR   RX   RK   t   update_data_statusR1   R   t   restore(   R   R’   t   cleart   rvt   other_dataparamst   delinsts_listRj   t   shadow_dispt   rv0R4   t   addinsts_list(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR—   ù  sF    	$
c         C   s  t  | t ƒ r | j ƒ  } n	 | j } | j d d ƒ t |  d d ƒ k rp d } |  j d | j d d ƒ ƒ n  xŽ t d t |  j ƒ ƒ D]t } | j j	 |  j | ƒ r‰ | j
 | j j |  j | ƒ } |  j
 | j | j k rý |  j
 | j | ƒ } qý q‰ q‰ Wd  S(   NRE   i   R
   i    (   R   R8   RT   R–   Rm   R„   Rf   R!   RQ   R   RR   RX   RK   t   animate(   R   R’   R›   Rš   Rj   R�   Rž   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR    2  s    	$ c         C   sÔ  d d l  } d d l } d d l } g  } g  }	 |  j rc| j |  j d |  j d ƒ }
 | j d |
 d | d | ƒ } |	 j | d ƒ | j | d ƒ | d rË | rË | t d | d g |  j d <n  |  j d	 k rc| j	 j
 |
 ƒ d d
 } | j	 j | ƒ r| j d | ƒ n  t |  d ƒ r`|  j r`t j d | d | ƒ } | j | d ƒ q`qcn  xN | D]F }
 | j d |
 d | d | ƒ } |	 j | d ƒ | j | d ƒ qjWd G|	 G| GHt |	 ƒ |	 | g S(   s4   
    Copy the data file(s) to another directory
    iÿÿÿÿNi    i   RD   t   dirt	   overwritei   R   s   .ccp4mgt	   animationt   projectt   copy_data_files(   R@   R?   t   shutilRD   t   get_filenamet   copy_data_filet   extendRT   RK   RM   RO   t   existst   insertR*   R£   t   animR¥   R!   (   R   R¤   R¡   R¢   t   extra_filesR@   R?   R¦   t   copiedt   errorst   filnRw   t   mgfile(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR¥   F  s.    $	 ! N(   R6   R7   RW   Rd   t   moldata_orderR   Rc   RP   Re   R   Rk   RT   Rp   Rr   Rx   Ry   Rz   R   R„   R…   Rˆ   R‰   RŠ   t   NoneR�   R“   R—   R    R¥   (    (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR8   é   s6   "	"								
	
			9	t
   COneColourc           B   sP   e  Z d  d d „ Z d „  Z d  d  d d „ Z d „  Z d  d d  d d „ Z RS(   R   i   c         C   s   | |  _  d |  _ | |  _ d  S(   NR   (   R	   t   colour_labelt   ifcomplement(   R   R	   R¶   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   j  s    		c         C   s   d  S(   N(    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   __del__q  s    i    c         K   sÕ   d } | r: x+ | j  ƒ  D] } t |  | | | ƒ q Wn  | d k rz d |  _ d |  _ d |  _ |  j rv d |  _ n  d St ƒ  j | ƒ } | d k rÑ | |  _ | |  _ d |  _ |  j rÈ d |  _ n  d } n  | S(   Ni    t
   complementi   (	   R,   RI   R	   Rµ   t   do_recolourt   legend_visiblet   update_legendt   MGCOLOURt   colour_index(   R   R	   t	   colparamst   forceRh   t   changedRU   Rj   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt
   set_colourw  s(    				 				 	c         C   s   |  j  S(   N(   R	   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt
   get_colour’  s    c         C   s‚   | r0 |  j  | k r~ | |  _  |  j  |  _ q~ nN | r` |  j  | k r~ d |  _  |  j  |  _ q~ n d |  _ |  j r~ d |  _ n  d  S(   Nt   greyi   (   R	   Rµ   R¹   Rº   R»   (   R   R1   t   standardR   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   handle_colour_change—  s    					 (   R6   R7   R   R·   RÁ   RÂ   RÅ   (    (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR´   f  s
   		t   DataObjShadowc           B   s³   e  Z d  d  d  g  g  i  d „ Z d  d d d „ Z d „  Z d „  Z d „  Z d d  d „ Z d d d	 „ Z d  d  d g  d
 „ Z	 d d d „ Z d d „ Z d d „ Z d „  Z RS(   R   c         C   sS   | |  _  | |  _ | |  _ i  |  _ |  j j | ƒ | |  _ | |  _ d |  _ d  S(   Ni   (   R1   RK   RD   RT   t   updateRQ   RR   RE   (   R   R1   RK   RD   RQ   RR   RT   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   µ  s    						i   i    c         C   s_  d d g j  | j ƒ s8 | j d s) d S| j |  _ n  | j |  _ | j |  _ t | t ƒ rn | j |  _ n | j d | ƒ |  _ g  |  _ g  |  _ xÃ t	 d t
 | j ƒ ƒ D]© } | sË | j | j r® t | j | d ƒ só | j | j r® t | j | d ƒ r® |  j j | j | ƒ t ƒ  } |  j j | ƒ | j | j | d | ƒq® q® Wd S(   NR   R   i    i   Rn   t   master_applicationR"   (   R   RK   RD   R1   R   RÆ   RT   RQ   RR   Rf   R!   RE   R*   RÈ   R   t   DispObjShadowt   save(   R   t   dataobjRn   t   save_visibleR&   RR   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRÊ   À  s*     			!c         C   s%   |  j  j d ƒ r |  j  d Sg  Sd  S(   NRD   (   RT   R   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR§   ç  s    c         C   s   | |  j  d <d  S(   NRD   (   RT   (   R   R°   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_filenameî  s    c         C   s   | |  _  d  S(   N(   RË   (   R   RË   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_dataobjó  s    c         J   s�  d d l  m } d d l m } d d l m } d d l m } d d l m	 } d d  l
 }	 d d  l }
 d d  l } |  j |  j d <d } e |  d	 ƒ r² e r² d
 d |  j j g Sd  |  _ |  j j d ƒ r¯|  j d d
 |  j d d g } | j |  j d d
 |  j d d | ƒ } |	 j j | ƒ r;|	 j j |  j d d ƒ r;| j |  j d d ƒ e j d k r^e r|	 j j |  j d d ƒ d k r|	 j j |	 j j |	 j d |  j d d ƒ ƒ rd | d
 <|	 j j |	 j d |  j d d ƒ | d <q8|	 j j |  j d d ƒ d k r8d | d
 <q8q^n# | j | ƒ |	 j j | ƒ | d <e | ƒ d k r�e | d ƒ e  k r�e! | d ƒ | d <n  e | ƒ d k rÜe | d ƒ e  k rÜe! | d ƒ | d <n  | |  j d <|  j d d r¯|	 j j |  j d d ƒ r¯yq e" d ƒ j# d ƒ roe$ |  j d ƒ } | d
 rb| d
 | d d  g S| d } n d d |  j d d g SWq¬d d |  j d d g SXq¯n  |  j j d ƒ rúx6 |  j d D]$ } y d | d d  UWqÏqÏXqÏWn  y d |  j% d d  UWn d d |  j% d  g SX|  j j& d d
 d d
 ƒ } | d
 d k r|  j j' ƒ  |  ` d | | d d  g Sd
 | |  j g S(   Niÿÿÿÿ(   R   (   R   (   R   (   R   (   R   R1   R   RË   i    RD   i   i   t   win32t   PWDt   FULLPATHt   save_sesion_optionst   backup_data_filest   1s+   Error restoring data.
 File does not exist t   moduless   from s	    import *s   self.dataobj=s9   (dataparams=self.dataparams,restore_from_version=version)s%   Failed to create data object of type t   recentret   warnings((   R/   R   R.   R   t   LegendR   t   CrystalR   t   VectorsDispobjR   R?   t   historyR@   R1   RT   R*   R�   RË   R³   R   R§   RM   Rª   R   t   syst   platformt   dirnamet   joint   environRN   R!   RS   t   unicodeR]   t   PMR–   t   restore_data_fileRK   Rp   R   (   R   RA   t   default_dirt   kwR   R   R   R   R   R?   RÛ   R@   t   restore_messaget   filedeft   fullpathRš   RL   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR˜   ø  sz    	"	0\
.#((/
c   	      C   sÒ  d d  l  } d d  l } d d  l } t |  d ƒ s> |  j rY t j ƒ  d d |  j g St |  j | j	 ƒ sƒ t |  j | j
 ƒ rÜ |  j ƒ  } | d t j j | d ƒ k rÜ t j j | d ƒ | d <|  j | ƒ qÜ n  d } |  j rÈxÚ |  j D]Ì } t | t ƒ rõ t |  j | j ƒ rŸ| j ƒ  } t | ƒ t k sOt | ƒ t k rŸ| d t j j | d ƒ k rœt j j | d ƒ | d <| j | ƒ qœqŸn  | j |  j j d | d | ƒqõ qõ Wn  d | g S(	   NiÿÿÿÿRË   i    s0   No defined data object restoring display object i   R   t   override_visibleRA   (   R/   R.   RØ   R*   RË   t	   tracebackt   print_stackR1   R   R   R   R§   R?   RM   t   abspathRÍ   RR   RÉ   R   RS   t   listt   tupleR˜   (	   R   Ré   RA   R/   R.   RØ   t   fnameRæ   R4   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   restore_display_objectsm  s.    
* 	$ )c         C   sÆ  d d l  } d d l } d d l } g  } g  }	 |  j d rb|  j d GH| j j |  j d d ƒ rz |  j d d }
 nY | j j |  j d d ƒ r« |  j d d }
 n( | j |  j d d |  j d d ƒ }
 | j j |
 ƒ sù d d |
 g g  g S| j j |
 ƒ rb| j j |
 ƒ rb| j d |
 d | d	 | ƒ } |	 j	 | d ƒ | j	 | d ƒ | rˆ| |  j d d d
 g |  j d <n  |  j
 d k r_| j j |
 ƒ d d } | j j | ƒ rÖ| j d | ƒ n  |  j j d ƒ r\d d l } | j d |  d |  j d d d ƒ } | j d | d | ƒ } ~ |	 j	 | d ƒ | j	 | d ƒ q\q_qbn  xN | D]F }
 | j d |
 d | d	 | ƒ } |	 j	 | d ƒ | j	 | d ƒ qiWt |	 ƒ |	 | g S(   s4   
    Copy the data file(s) to another directory
    iÿÿÿÿNRD   i   i   i    s   No source data file R¡   R¢   R   R   s   .ccp4mgt   load_animationt   parentt   paramst   loadR¤   (   R@   R?   R¦   RT   RM   Rª   R§   t   isdirR¨   R©   RK   RO   R«   R   t	   AnimationR¥   R!   (   R   R¤   R¡   R¢   R­   R@   R?   R¦   R®   R¯   R°   Rw   RM   Rö   R¬   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR¥   �  sF    $(% $ c         C   sQ  d d  l  } i d d 6d d 6} d } i  |  _ g  |  _ g  |  _ | j | j | j | ƒ \ } |  _ |  _ d } x| j D]} | d } | j j | ƒ re| j | j	 | j | j j
 | ƒ j	 k re| j j
 | ƒ } t d | d | j | j	 ƒ }	 |	 j d	 | j | d
 | j | ƒ }
 |
 s,~	 q‹t | |
 ƒ } |  j j | j | ƒ |  j j |	 ƒ q{ |  j j | j | ƒ t | d ƒ } q{ Wd } xµ | j D]ª } | d } | j j | ƒ sî| j | j	 | j | j j
 | ƒ j	 k rŸt ƒ  }	 |	 j | j | ƒ i  |	 _ |  j j |	 ƒ |  j j |	 j ƒ t | d ƒ } qŸqŸW| S(   Niÿÿÿÿi   RK   i   RD   i    i   R1   Rs   t   secondi   (   R@   t   minus_dataparamst   minus_objnamest   minus_objinstst
   dict_diffsRT   RQ   R   RR   RK   RX   RÉ   t
   differencet   maxR   RÊ   t   minus_paramsR1   (   R   Rs   R÷   R@   t   errcodesRš   Rj   t   objnamet   jjt   tmpt   diff(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRü   º  sF    
			$
>&
?		c         C   s(  d d  l  } | j |  j | j | j ƒ |  _ xL | j D]A } |  j j | ƒ r7 |  j j | ƒ } |  j | =|  j | =q7 q7 Wx¥ | j D]š } |  j j | ƒ rÔ |  j |  j j | ƒ j	 | j | j j | ƒ ƒ q† t
 ƒ  } | j | j | j j | ƒ ƒ |  j j | ƒ |  j j | j ƒ q† Wd  S(   Niÿÿÿÿ(   R@   t   dict_addRT   Rø   Rù   RQ   R   RX   RR   R•   RÉ   RÊ   R   R1   (   R   t   sourceR@   R   Rj   R  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR•   ë  s     
	 t   methodc      
   C   s™  d d g j  |  j ƒ r d Sd d  l } d } | d k r> d S| d k r` d } |  j d	 } n d
 } |  j d } xZ d d g D]L } t |  | d ƒ r€ | | j | t |  | d ƒ | d | d | ƒ} q€ q€ W|  j j d ƒ r|  j d r| | j d d | d | d | ƒ} n  xa |  j j ƒ  D]P } d d d d g j  | ƒ s(| | j | |  j | | d | d | ƒ} q(q(W| d d !d | d } | S(   NR   R   R   iÿÿÿÿi   t   mgpicR  t   )s    (t   }s    = {RD   R1   t   stylet   indentRE   i    RK   RL   s   
      s   

(	   R   RK   R@   R1   Rm   t   picture_defn_itemRT   R   R,   (   R   t   pretty_printR
  R@   R  t   b_endt   streamRU   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   save_picture_definition  s*     8 (3c         C   s.   d } x! |  j  D] } | | j ƒ  } q W| S(   Ni    (   RR   t   isTransparent(   R   t   nnR4   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   nofTransparentObjects&  s    N(   R6   R7   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/dataobj.pyRÆ   °  s   '			u -1"RÉ   c        	   B   s¹   e  Z g  Z g  Z d  d  d i  i  i  i  d  d „ Z d „  Z d „  Z d  d d „ Z d d „ Z d d e	 d	 „ Z
 d d d
 „ Z d d „ Z d i  d  d „ Z d  d d „ Z d „  Z RS(   R   i   c	   
      K   su  | |  _  | |  _ | |  _ | j d ƒ rZ t | d ƒ t k rZ t | d ƒ | d <qZ n  d d d d g j |  j ƒ rK| rš i  |  _ |  j j	 | ƒ n6 | j d ƒ rÇ i | d d 6d d 6|  _ n	 i  |  _ | rò i  |  _
 |  j
 j	 | ƒ n¥ | j d	 ƒ rŽd d g j |  j ƒ rwt ƒ  j | d	 d
 d ƒd k rYi d d 6| d	 d 6|  _
 q‹i | d	 d 6d d 6|  _
 q—i | d	 d	 6|  _
 n	 i  |  _
 | r¹i  |  _ |  j j	 | ƒ qK| j d ƒ r?d g j |  j ƒ rôi | d d 6|  _ qHd g j | d ƒ r!i | d d 6|  _ qHi | d d 6d d 6|  _ qKi  |  _ n  i  |  _ |  j j	 | ƒ | |  j d <d  S(   Nt   opacityR9   R:   R;   R<   R   t   cidt   selectR	   t   safei    t
   one_colourt   colour_modeR   R
  t
   style_modet   same_asRä   (   R1   RK   RE   R   RS   R]   t   floatR   t	   selparamsRÇ   R¾   R¼   RX   t   styleparamsRó   (
   R   R1   RK   RE   R  R¾   R  Ró   Rä   Rh   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   :  s^    						"				c         C   s*   d |  j  k r" |  j j d d ƒ Sd Sd  S(   Nt   ImageRD   R   (   RK   Ró   R–   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR§   …  s    c         C   s   | |  j  d <d  S(   NRD   (   Ró   (   R   R°   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRÍ   Ž  s    RZ   c         C   sâ   d d d d g j  |  j ƒ s( d d g Sd d  l } | d k r� t | | j ƒ r� | sh d d  d g g Sd d  l } | j ƒ  } | j | ƒ SqÞ d | g SnA t | | j	 ƒ rÔ d d  l } | j ƒ  } | j
 | ƒ Sd | g Sd  S(	   NR9   R:   R;   R<   i    R   iÿÿÿÿRí   (   R   RK   R   R   t
   StringTypeR³   t   model_selectiont   SelectionParsert   command_to_listRt   t   list_to_command(   R   R  Ru   R   R!  t   parser(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   convert_selection“  s      
c         C   sñ   | j  |  _  | j |  _ | j |  _ d d d d g j |  j ƒ rº t | t ƒ rx | j |  _ | j |  _ | j |  _ qº | j d | ƒ |  _ | j d | ƒ |  _ | j d | ƒ |  _ n  t | t ƒ rØ | j	 |  _	 n | j	 d | ƒ |  _	 d  S(   NR9   R:   R;   R<   Rn   (
   R1   RK   RE   R   R   RÉ   R  R¾   R  Ró   (   R   Rq   Rn   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRÊ   «  s    i    c         B   s  d d l  m } d d l m } d d  l } d d  l } d d  l }	 d d  l }
 d d g j |  j	 ƒ sÎ y d |  j	 d d  UWqÎ d d  l
 } | j d d	 |  j	 ƒ } y d | d d  UWqË qË XqÎ Xn  | r#|  j	 d
 k s|  j	 d k r#|  j j d ƒ r#|  j d d k r#d |  _ n  d d
 d d g j |  j	 ƒ rö|  j j d ƒ rzd G|  j d GH|  j d |  j d <n  |  j	 d d d d d  U| re d d ƒ } d  } x& | D] } | j | k r·| } q·q·W| d  k	 ró| j ƒ  } xü | D]ñ } | j |  j k røe | d ƒ rue | d ƒ ru| j j ƒ  | j j ƒ  } } | d k se| d k ræ| j ƒ  qæqée | d ƒ ré| j j ƒ  } | d k r¬| j ƒ  qæe | d ƒ ræ| j d k ræ| d k  ræ| j ƒ  qæqéqøqøWqóqn"e } y |  j	 d d d  Ue } Wn n X| s�d d  l } | j ƒ  } e | d  ƒ rßxŒ | j  D]~ } xu e! | ƒ D]g } | |  j	 k rmyE d | j" d! | d  U|  j	 d d GH|  j	 d d d  Ue } PWqÔqÔXqmqmWqZWn  | s�| j# ƒ  xŒ | j  D]~ } xu e! | ƒ D]g } | |  j	 k ryE d | j" d! | d  U|  j	 d d GH|  j	 d d d  Ue } PWqsqsXqqWqùWq�n  | syH d d" l$ m% } d# G|  j	 G|  j G|  j G|  j GH|  j	 d d d  UWqe& j' ƒ  d  \ } } } | GH| GHe( j) | ƒ d$ G|  j GHqXn  d  S(%   Niÿÿÿÿ(   R9   (   t   MapDispR9   R'  s   from s	    import *t   DispobjR   R:   R  t   SURFACEi    R;   R<   R   s   ??? old selectiont   oldSelections   (parent_name,name=self.name s*   ,visible=self.visible,params = self.paramss2   ,selparams=self.selparams,colparams=self.colparamss;   ,styleparams=self.styleparams,restore_from_version=version)RK   R   t
   SelHandle1t
   SelHandle2t	   SelHandleR
  t   SPLINEi   s,   ,visible=self.visible,params = self.params )t   pluginss    import (   R  s   Attempting to restores   DID NOT restore(*   R/   R9   R.   R'  R;   R:   R<   R>   R   RK   RY   R[   R  R   RE   Ró   R  t   get_dataobjR³   R1   Rx   R*   R+  t   getNofAtomsR,  R   R-  R
  R�   R‘   t   MGApplicationt   GetMainWindowR/  R¡   R6   t   loadPluginst	   MGGLImageR  RÜ   t   exc_infoRê   t   print_tb(   R   t   parent_nameRé   RA   t   deleteEmptyR9   R'  R;   R:   R<   R>   RY   RL   t   dobjst   theDobjt   dobjt   dispobjsRq   t   nat1t   nat2t   natt   thisRestoredR2  t   mainwint   plugR4   R  t   exc_typet	   exc_valuet   exc_tb(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR˜   Ã  s®    04* 

!c         C   s/  d d  l  } d } | j | j k r9 | j |  _ d } n  | j | j | j ƒ \ } |  _ |  _ t | | ƒ } d d d d g j |  j ƒ r+x› d D]� } t | | i  ƒ } t | | i  ƒ } | j t | | i  ƒ t | | i  ƒ ƒ \ } }	 }
 t | | ƒ } t	 |  | |	 ƒ t	 |  d | |
 ƒ q” Wn  | S(   Niÿÿÿÿi    i   R9   R:   R;   R<   R  R¾   R  t   minus_(   s	   selparamss	   colparamss   styleparams(
   R@   RE   Rû   Ró   Rþ   Rý   R   RK   Rm   RI   (   R   Rs   R÷   R@   Rš   Rž   RU   t   fft   sst   fdifft   mdiff(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRü   /  s     	'3c         C   sÆ   d d  l  } t | d ƒ r* | j |  _ n  d g } d d d d g j |  j ƒ rj | j d d	 d
 g ƒ n  xU | D]M } t |  | | j t |  | i  ƒ t | | i  ƒ t | d | i  ƒ ƒ ƒ qq Wd  S(   NiÿÿÿÿRE   Ró   R9   R:   R;   R<   R  R¾   R  RG  (	   R@   R*   RE   R   RK   R©   RI   R  Rm   (   R   R  R@   t   attrib_listt   attrib(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR•   L  s    	R  c      	   C   sá  d d  l  } d d  l } d d  l } d d  l } | d k rR d }	 |  j d }
 n d }	 |  j d }
 | r€ |
 d | d }
 n  x9 | j ƒ  D]+ \ } } |
 | j | | | d	 | ƒ}
 q� Wt |  d
 d ƒ sð |
 | j d
 d | d	 | ƒ}
 n  xX |  j	 j
 ƒ  D]G } d d d
 g j | ƒ s |
 | j | |  j	 | | d	 | ƒ}
 q q Wd d d d g j |  j ƒ r¬|  j r£|
 | j d |  j | d	 | d | j j ƒ}
 n  |  j r#d d g j |  j ƒ rõ|
 | j d |  j | d	 | d | j j ƒ}
 q#|
 | j d |  j | d	 | d d g ƒ}
 n  |  j rÄd d d g j |  j ƒ rx|
 | j d |  j | d	 | d | j j ƒ}
 q©|
 | j d |  j | d	 | d | j j ƒ}
 qÄn d g j |  j ƒ rÄn  |
 d d !d |	 d }
 |
 S(   NiÿÿÿÿR  R  s    (R	  s    = {s   
          parent = t   ,R
  RE   i   i    R1   RK   R9   R:   R;   R<   t   selection_parameterst
   dict_ordert   colour_parametersR	   t   style_parametersR'  s
             s   

(   R@   R/   R!  t   model_colourRK   R1   R0   R  Rm   Ró   R,   R   R  R-  t   selection_initialisationR¾   t   colour_initialisation_orderR  R9   t   style_initialisation(   R   R  R
  R#   Rò   R@   R/   R!  RS  R  R  t   keyt   valueRU   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR  [  s<    0#"-	1	1.	14	c         C   sf   | r
 | St  | j ƒ } d } x@ | ra | d } | j |  j t | ƒ } | j j | ƒ } q" W| S(   Ni   (   R!   RQ   R1   RK   R]   R   (   R   R1   Rò   Rb   t   contuR`   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRP   ›  s    	
c         C   s'   |  j  j d d ƒ d k  r d Sd Sd  S(   NR  g      ð?g®Gáz®ï?i   i    (   Ró   R–   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR  «  s    N(   R6   R7   RQ   RR   R   R§   RÍ   R&  RÊ   R�   R˜   R³   Rü   R•   R  RP   R  (    (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRÉ   1  s   !K			l@R   c        
   B   sñ  e  Z i  Z d  d  d d1 d i  i  i  i  d „	 Z d  d „ Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d d „ Z d „  Z d  d  d „ Z d „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d i  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z  d d  „ Z! d! „  Z" d" „  Z# d# „  Z$ d$ „  Z% d% „  Z& d& „  Z d' „  Z' d  d  d  d  d  d  d( „ Z( d) „  Z) d* d+ „ Z* d1 d1 d, d  d- „ Z+ d. „  Z, d/ „  Z- d0 „  Z. RS(2   R   i   c         C   s$  d d  l  } |
 j d ƒ rK t |
 d ƒ t k rK t |
 d ƒ |
 d <qK n  t | | j ƒ ro t | ƒ |  _ n	 | |  _ | |  _	 t
 | ƒ |  _ t |
 j d d ƒ ƒ |  _ |
 j d d ƒ |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d  |  _ d  |  _ g  |  _ g  |  _ d |  _ d |  _ d  |  _ d |  _ |
 j d d ƒ |  _ |
 j d	 d ƒ |  _  | |  _! | |  _" d d  l# } d |  _$ t% j& |  ƒ |  j' | ƒ |  _( |  j j) |  ƒ | rûx+ | j* ƒ  D] } t+ |  | | | ƒ qÚWn  | r/x+ | j* ƒ  D] } t+ |  | | | ƒ qWn  |	 rcx+ |	 j* ƒ  D] } t+ |  | |	 | ƒ qBWn  |
 rxš |
 j* ƒ  D]‰ } | d
 k rët, |  d
 ƒ r£|  j- } n t. ƒ  j/ ƒ  } x* |
 | j* ƒ  D] } |
 | | | | <qÃW| |  _- qvt+ |  | |
 | ƒ qvWn  t0 j& |  ƒ |  j1 d ƒ d  S(   NiÿÿÿÿR  g      ð?t   display_classR   i    i   Rº   t   customSelectionNamet   fontR   (2   R   R   RS   R]   R  R   R   t   dataRò   RK   R�   RE   R–   R  RZ  t   do_update_opacityt   flashingt	   do_redrawt   redraw_labelsR¹   t   builtRH   R³   t   graphmodt   label_graphmodt   do_rebuildGLRG   R\   t   style_labelt
   style_iconRµ   Rº   R[  RÈ   t   display_table_visiblet   copyt   transparentR´   R   RP   R1   Rr   R,   RI   R*   R\  t   FONTMANAGERt   GetValidFontR   R   (   R   t   theTypeR1   Rò   RE   RÈ   Rh  R  R¾   R  Ró   R   Ri  RU   R\  t   item2(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   ¾  sp    																				c         C   s~   | r t  d | ƒ r | } n[ t |  j j ƒ } d } x@ | ry | d } |  j j |  j t | ƒ } t  d | ƒ } q: W| S(   NR1   i   (   Rx   R!   Rò   RQ   R1   RK   R]   (   R   R1   R`   Rb   RY  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRP     s    		
c         C   s2   |  j  d k r |  j ƒ  S|  j  d |  j ƒ  Sd  S(   NR9   t    (   RK   t   get_selection_label(   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRe     s    
c         C   s£   d d  l  } d  } |  j ƒ  } | | j k rŸ | j | } | rŸ t j j t j j t j d d d d | ƒ ƒ rœ t j j t j d d d d | ƒ } qœ qŸ n  | S(   Niÿÿÿÿt   CCP4MGt   qticonst   disptabt
   selections(	   R!  R³   Rp  t   SELECTION_ICONSR?   RM   Rª   Rß   Rà   (   R   R!  t   icont   label(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_selection_icon%  s    1.c         C   s   | |  _  d  S(   N(   R[  (   R   t   t(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   setCustomSelectionName0  s    c         C   sx   t  |  d ƒ r |  j r |  j St  |  d ƒ r; |  j j ƒ  St  |  d ƒ rW |  j j ƒ  St  |  d ƒ rm |  j S|  j Sd  S(   NR[  R-  R+  t   selection_label(   R*   R[  R-  t   getLabelR+  R{  R\   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRp  3  s    c         C   s   |  j  S(   N(   Rµ   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_colour_label?  s    c         C   s   |  j  S(   N(   Rf  (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_style_labelC  s    c         C   s   |  j  S(   N(   Rg  (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   get_style_iconF  s    c         C   s   d |  _  d  S(   Ni   (   t   reapply_selection(   R   Ru   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_reapply_selectionJ  s    c         C   sL   t  |  d ƒ s< t  |  d ƒ s< t  |  d ƒ s< t  |  d ƒ rH d |  _ n  d  S(   Nt   get_position_labelt   create_annotationt   get_textt   Connectivity2i   (   R*   R`  (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_redraw_textM  s    <c         O   s‹   | r d |  j  } n | d k r1 t | ƒ } n d  S| |  _  |  j d ƒ x9 |  j |  j g D]% } | r^ t | j d |  j  ƒ q^ q^ W| S(   Ni   R   R
   RE   (   RE   R�   R   Rc  Rd  RI   R4   (   R   R‚   R
   t   argsRh   Rƒ   t   gobj(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR„   R  s    	 c         C   s   |  j  S(   N(   RE   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR…   `  s    iÿÿÿÿc         C   sÒ   | d k  r d |  j  } n  | rg d |  _  d |  _ t |  d |  j ƒ t ƒ  j d |  j |  j ƒ ng d |  _  t ƒ  j d |  j ƒ t	 |  d ƒ rÎ t |  d |  j
 ƒ d d  l } | j d d ƒ |  `
 n  d  S(   Ni    i   t   saved_visiblet   flashRE   iÿÿÿÿt	   auto_save(   R_  t   flash_countRI   RE   t
   MAINWINDOWt   addAnimationHandlerR1   RŠ  t   removeAnimationHandlerR*   R‰  t   rebuildt   UpdateDisplay(   R   Ru   R�  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_flashinge  s    		 	c         C   s   |  j  S(   N(   R_  (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt
   isFlashingy  s    c         C   s|   |  j  d |  _  |  j  t d ƒ j d ƒ d t ƒ  j ƒ  k  rC d  Sd |  _  d |  j |  _ d d  l } | j d d ƒ d  S(   Ni   t   Animation_paramt   flash_delayiè  i    iÿÿÿÿR‹  (   RŒ  Râ   R–   R�  t   animationIntervalRE   R�  R‘  (   R   R�  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRŠ  ~  s    / 	c         C   s   d |  _  d  S(   Ni   (   R`  (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_do_redrawŠ  s    c         C   s   d S(   Ni    (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   unthreadedDraw�  s    c         C   s   d S(   Ni    (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   draw”  s    c         C   sU   |  j  rH x< |  j  D]. } t |  | d  ƒ } | r | j | ƒ q q Wn  g  |  _  d S(   Ni    (   Re  Rm   R³   t   rebuildGLDisplayObject(   R   t   maint	   gobj_nameRˆ  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRš  ™  s    		c         J   s?   |  j  ƒ  } d |  j d  U|  j d |  j d } | d  Ud  S(   Ns   import t   .s5   (self.parent.name,visible=self.visible,params = pars)(   Ró   RK   (   R   Rh   t   parsR5   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   clone¥  s
    c         K   sè   t  j |  ƒ |  j ƒ  r3 t ƒ  j d |  j ƒ n  xO d d g D]A } t |  | d  ƒ } | r@ t ƒ  j | ƒ t	 ƒ  j
 | ƒ q@ q@ Wd  |  _ |  j j j |  ƒ rá |  j j j |  ƒ } |  j j j | ƒ |  j j j | ƒ n  ~  d  S(   NRŠ  Rc  Rd  (   R   R   R“  R�  R�  R1   Rm   R³   t   removeGLDisplayObjectt   BUILDt	   deletemodt   legend_objectRò   RR   R   RX   RQ   Rg   (   R   Rh   Rœ  Rˆ  R&   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   ¯  s     	c         C   sœ   i  } xB d d d d d g D]+ } t  |  | ƒ r t |  | ƒ | | <q q W| r˜ xD | j ƒ  D]3 \ } } | j | ƒ r^ | | | | <| | =q^ q^ Wn  | S(   NRE   R  Rº   R[  RZ  (   R*   Rm   R0   R   (   R   Rn   R   t   selRU   RW  t   newkey(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRó   Æ  s    c         C   s   t  S(   N(   R�   (   R   t
   shadowdisp(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR“   ×  s    c         C   s"  d d  l  } d } | j j d ƒ rZ |  j | j d k rZ d } |  j d | j d ƒ n  | j j d ƒ r¢ |  j | j d k r¢ d } |  j d | j d ƒ n  | j j d ƒ rê |  j | j d k rê d } |  j d | j d ƒ n  t	 | |  j
 | ƒ ƒ } | r|  j j d g ƒ n  | S(   Niÿÿÿÿi    R   i   R	   R
  RÇ   (   R@   Ró   R   R   t   set_selectionR	   RÁ   R
  t	   set_styleRý   t   update_data_status0RG   R   (   R   R¦  R@   Rš   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR—   Ü  s    ((( c         C   sP   d d  l  } | j |  j k rH |  j d | j ƒ |  j j d g ƒ d Sd Sd  S(   NiÿÿÿÿR
   RE   i   i    (   R@   RE   R„   RG   R   (   R   R¦  R@   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR©  ñ  s    c         C   s1   | j  |  j  k r) |  j d | j  ƒ d Sd Sd  S(   NR
   i   i    (   RE   R„   (   R   R¦  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR    þ  s    c         C   s   i  S(   N(    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR  
  s    c         C   s1   i  } x$ d g D] } t  |  | ƒ | | <q W| S(   NR	   (   Rm   (   R   Rn   t   colRU   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR¾     s    c         C   s
   i  } | S(   N(    (   R   Rn   Rª  (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR    s    c         K   s   d  S(   N(    (   R   Rh   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt	   centre_on!  s    c         C   s   d S(   NR   (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt	   list_data&  s    c         C   s   d |  j  j d |  j d S(   Ns   disp('s   ','s   ')(   Rò   R1   (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   name_string+  s    c         K   s   d  S(   N(    (   R   Rh   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   handle_moving_data0  s    c         C   sÔ   d } t  |  j ƒ s d } n| t  |  j j ƒ s9 d } na t |  j j ƒ  ƒ d k rš xC |  j j ƒ  D]/ \ } } | j d ƒ rd | j rd d } Pqd qd Wn  |  j rµ | |  j j	 _ n  |  j
 rÐ | |  j
 j	 _ n  | S(   sl   
    Set the visibility of the graphmod appropriately
    for the visibility of the dataobj and dispobj
    i   i    R
   (   R�   RE   Rò   R!   R   R,   R0   R   Rc  R4   Rd  (   R   Rƒ   R"   t   attlist(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_graphmod_visibility5  s    			 	 c         C   s   d S(   Ni    (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR™  P  s    c         C   s   d S(   Ni    (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   drawPickedLabelsU  s    c         C   s   d S(   s9   
    Handle translation commands from mouse movement
    N(    (   R   R{   R|   R}   R~   R   R€   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR   ^  s    c         C   s   d S(   Ni    (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   canBeTransparentg  s    g      ð¿c         K   s7   |  j  ƒ  r3 | d k r3 t | ƒ |  _ d |  _ n  d  S(   Ng        i   (   R²  R  R  R^  (   R   R  Rh   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_opacityl  s    g        c         K   sÈ   | j  j d ƒ rÄ | j  j d ƒ rÄ t | j  d ƒ t | j  d ƒ } | d k  s` | d k rÄ t |  d ƒ rÄ |  j rÄ t | j  d ƒ | | |  _ |  j j j t | j  d ƒ | | ƒ qÄ n  d  S(   NR  gü©ñÒMbP¿gü©ñÒMbP?Rc  (   Ró   R   R  R*   Rc  R  R4   t   SetAlpha(   R   R‹   RŒ   R�   RŽ   Rh   t   do(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR�   u  s
    $$0c         C   s   | |  _  |  j ƒ  d  S(   N(   t   masterCrystalt   updateCrystal(   R   t   crystal(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   setMasterCrystal€  s    	c      
   C   s£  |  j  s d  St |  d ƒ s  d  S|  j sZ d d  l } | j ƒ  |  _ t ƒ  j |  j ƒ n  |  j ru |  j  |  j _ n  |  j sÊ |  j  j d ƒ |  j  j	 j
 d ƒ |  j  j d d ƒ |  j  j d d ƒ nÌ t d |  j ƒ } |  j  j	 j | j ƒ |  j  j	 j
 | j ƒ |  j  j d | j d | j d d	 | j d
 d | j d ƒ |  j  j d | j ƒ |  j  j d | j ƒ |  j  j d | j ƒ | j |  j  _ d
 |  _ d  S(   NR¶  iÿÿÿÿi    t   draw_symmetryt   symmetry_labelsR1   t   draw_unit_cellt   xshiftt   yshifti   t   zshifti   t   symmetry_radius(   Rc  R*   Rd  t   graphicsmodelR¡  R   t   symmetry_dependentR¶  t   DrawUnitCellR4   t   SetDrawUnitCellt	   setparamsRx   t   SetDrawSymmetryColouredt   symm_diff_colourt
   cell_edgesR¼  t   unit_cell_shiftR»  Ru   t   atom_symm_radiust   draw_contactsR`  (   R   RÁ  t   xtl(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyR·  ‡  s6    	  			c         C   s   d S(   Ni    (    (   R   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   isLegendPossible¬  s    N(/   R6   R7   R    R³   R   RP   Re   Rx  Rz  Rp  R}  R~  R  R�  R†  R„   R…   R’  R“  RŠ  R—  R˜  R™  Rš  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/python/ui/dataobj.pyR   º  s`   	M																
						
											
		%t   CFontc           B   s,   e  Z i  d  „ Z d d „ Z d d „ Z RS(   c         K   sž   d } | j  | ƒ d | d <xg d d d d d g D]P } | j | ƒ r3 | | r3 | | |  j | k r3 | | |  j | <d } q3 q3 W| rš |  j ƒ  n  d  S(   Ni    t	   underlinet   familyt   sizet   weightt   slanti   (   RÇ   R   R\  t   update_font(   R   R\  Rh   t   redrawRU   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   set_fontÐ  s    
0 c         C   s  d d  l  } | r… | j |  j d ƒ | j t |  j d ƒ ƒ | j |  j d ƒ | j |  j d ƒ | j t |  j d ƒ ƒ n| |  j	 r|  j	 j
 r|  j	 j
 j t |  j d ƒ t |  j d ƒ t |  j d ƒ |  j d |  j d ƒ |  j	 j
 j ƒ  n  d  S(   NiÿÿÿÿRÐ  RÑ  RÒ  RÓ  RÏ  (   R@   t   SetFontFamilyR\  t   SetFontSizeR�   t   SetFontWeightt   SetFontSlantt   SetFontUnderlinet   boolRc  R4   t   SetTextFontR]   R�  (   R   t   label_obR@   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRÔ  á  s    ,(g      ð¿c         K   sÊ  d d d d d d d d d	 d
 d g } | d k  rš |  j  j j t |  j d ƒ t |  j d ƒ t |  j d ƒ |  j d |  j d ƒ |  j  j j ƒ  n,t |  j d ƒ | } | | d k  rÎ | d } nø | | d k rë | d } nÛ d } x4 | t | ƒ d k  r'| | | k r'| d } qô W| | | d | | | k rU| | } n | | d } |  j  j j t |  j d ƒ t |  j d ƒ t |  j d ƒ t | ƒ |  j d ƒ |  j  j j ƒ  d  S(   Ni   i
   i   i   i   i   i   i   i"   i-   i<   g        RÐ  RÒ  RÓ  RÑ  RÏ  i    iÿÿÿÿi   (   Rc  R4   RÝ  R]   R\  R�  R  R!   (   R   t   scaleRh   t
   font_sizest   scaled_sizet   new_sizeRb   (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt
   scale_fontò  s&    ',()  ,'N(   R6   R7   RÖ  R³   RÔ  Rã  (    (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRÎ  Ë  s   R   i   c         C   s÷   d d  l  } d d  l } | j |  d |  d ƒ } | sV t j j | j ƒ  d ƒ } n  t j j | t j j | ƒ d ƒ } t j j | ƒ sŸ d d | d g Sy$ | j	 | t j j | ƒ d ƒ Wn d d | g SXd d | d	 | j
 | ƒ g S(
   Niÿÿÿÿi    i   t   saved_data_filess   Backup for file s    does not exists!   Error attempting to restore file s1   *****PLEASE NOTE*****
Restoring data - data file s8    not found.
 It has being recreated from backup made on (   R@   R¦   R§   R?   RM   Rß   t
   get_CCP4MGt   splitRª   Ri  t   fileDate(   RD   R¡   t   queryR@   R¦   R°   t   backup(    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyRã     s    %$(   t   __doc__RÜ   R?   Rê   t   global_definitionsRA   t   DATAOBJ_TYPESt   PLUGIN_DATAOBJ_TYPESR   R8   R´   RÆ   RÉ   R   RÎ  Rã   (    (    (    s>   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/dataobj.pyt   <module>   s&   
Æÿ ~Jÿ ‚ÿ Šÿ ÿ J