ó
‘™xTc           @   sf   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z d  d l Z d e	 f d „  ƒ  YZ
 d S(   iÿÿÿÿ(   t   division(   t   file_reader(   t   hashlib_md5(   t   adopt_init_argsNt   managerc           B   s  e  Z d Z d Z d d e e e d  „ Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z d „  Z d d d	 „ Z d
 „  Z d „  Z d „  Z d „  Z d d d „ Z d „  Z d „  Z d e d „ Z e d „ Z d „  Z d „  Z d d d „ Z d „  Z RS(   c         C   si   t  |  t ƒ  ƒ | d  k s1 t | t ƒ s1 t ‚ | d  k sR t | t ƒ sR t ‚ |  j ƒ  i  |  _ d  S(   N(   R   t   localst   Nonet
   isinstancet   listt   AssertionErrort   clear_cachet   _param_callbacks(   t   selft   allowed_param_namest   allowed_multiple_paramst   debugt   auto_reload_filest   use_md5_sum(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   __init__   s    
c         C   s2   i  |  _  i  |  _ i  |  _ i  |  _ |  j ƒ  d  S(   N(   t   _file_mtimest   _file_md5sumst   _cached_input_filest   _param_filest   clear_format_specific_cache(   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyR
      s
    				c         C   s   t  |  j ƒ S(   N(   t   lenR   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_file_count&   s    c         C   s   d  S(   N(    (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyR   )   s    c         C   s&   t  | d ƒ s t ‚ | |  j | <d  S(   Nt   __call__(   t   hasattrR	   R   (   R   t   file_param_namet   callback_handler(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   set_param_callback,   s    c         C   s   d  S(   N(    (   R   t	   file_name(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   add_file_callback0   s    c         C   s   d  S(   N(    (   R   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   remove_file_callback3   s    c         c   s/   x( |  j  j ƒ  D] \ } } | | f Vq Wd  S(   N(   R   t	   iteritems(   R   R   t   file_object(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   input_files6   s    c         C   s   t  j | ƒ } | S(   N(   R   t   any_file(   R   R   t
   input_file(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt	   open_file:   s    c         C   s´   | d  k r |  j | ƒ } n  | j |  j ƒ | j } | |  j | <|  j | ƒ |  j rˆ t | ƒ j	 ƒ  } t
 | ƒ } | |  j | <n t j j | ƒ } | |  j | <|  j | ƒ S(   N(   R   R'   t   check_file_typet	   file_typeR   R   R    R   t   opent   readR   R   t   ost   patht   getmtimeR   t   save_other_file_data(   R   R&   R   t   file_recordst   mt   mtime(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt	   save_file>   s    		c         O   s   |  j  | | Ž  S(   N(   R3   (   R   t   argst   kwds(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   add_fileN   s    c         C   s   d  S(   N(   R   (   R   R&   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyR/   Q   s    c         C   sÜ   |  j  s t S| |  j k r  t S|  j rˆ t | ƒ j ƒ  } t | ƒ } |  j j	 | d  ƒ } | d  k st | | k rØ | |  j | <t SnP t j j | ƒ } |  j j	 | d  ƒ } | d  k sÇ | | k  rØ | |  j | <t St S(   N(   R   t   FalseR   t   TrueR   R*   R+   R   R   t   getR   R,   R-   R.   R   (   R   R   R0   R1   t
   old_md5sumR2   t	   old_mtime(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   file_is_modifiedT   s"    		c         C   s  | |  j  k r|  j  j | ƒ |  j r; |  j j | ƒ n |  j j | ƒ |  j d  k	 rñ x” |  j j ƒ  D]€ \ } } |  j	 | ƒ rÊ | | k rê | j
 | ƒ t | ƒ d k rÃ |  j j | ƒ n  Pqê qj | | k rj |  j j | ƒ Pqj qj Wn  |  j | ƒ n  d  S(   Ni    (   R   t   popR   R   R   R   R   R   R"   t   allow_multiplet   removeR   R!   (   R   R   t
   param_namet
   param_file(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   remove_fileh   s"    	c         C   sÃ   | d  k r@ | d  k	 r@ |  j j | ƒ } t | t ƒ r@ | Sn  | d  k rP d  St j j | ƒ sw t d d | ƒ ‚ n  | |  j	 k r¿ |  j
 | ƒ r´ |  j | ƒ } |  j | ƒ n  |  j	 | Sd  S(   NiÑ  s   failed os.path.isfile(   R   R   R9   R   R   R,   R-   t   isfilet   IOErrorR   R<   R'   R3   (   R   R   R   R&   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_file|   s    c         C   s    |  j  d  k	 r | |  j  k St S(   N(   R   R   R7   (   R   R@   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyR>   Œ   s    c         C   s   |  j  j ƒ  } | j ƒ  | S(   N(   R   t   keyst   sort(   R   t
   file_names(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_current_file_names‘   s    
c         C   s  |  j  d  k	 rF | |  j  k rF t d | d j |  j  ƒ f ƒ ‚ qF n  t } | d  k sp | d k sp | d k r† |  j j | d  ƒ n¾ | d  k	 r¢ |  j | ƒ n: |  j | ƒ d  k rÜ |  j	 | ƒ } t
 } |  j | ƒ n  |  j | ƒ r7| |  j k r
g  |  j | <n  | |  j | k rD|  j | j | ƒ qDn | |  j | <| r{|  j j | d  ƒ } | d  k	 r{| | ƒ q{n  | S(   Ns3   Unrecognized input file parameter %s (allowed: %s).s   , t    R   (   R   R   t   KeyErrort   joinR7   R   R=   R3   RE   R'   R8   R>   t   appendR   R9   (   R   R   R   R&   t   run_callbackt   opened_filet   callback(    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   set_param_file–   s0    "$c         C   sÕ   |  j  | ƒ rt | |  j k rt |  j j | ƒ } | | k rL | j | ƒ n  t | ƒ d k rš |  j j | ƒ qš n& |  j | | k rš |  j j | ƒ n  | rÑ |  j j | d  ƒ } | d  k	 rÑ | d  ƒ qÑ n  d  S(   Ni    (   R>   R   R9   R?   R   R=   R   R   (   R   R   R   RN   t   param_filesRP   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   unset_param_file³   s    c         C   sr   g  } xe |  j  D]Z } |  j  | } t | t ƒ rN | | k rN | j | ƒ q | | k r | j | ƒ q q W| S(   N(   R   R   R   RM   (   R   R   t   paramsR   RR   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_file_paramsÃ   s    c         C   s@   |  j  j | ƒ } | d  k r" g  St | t ƒ r5 | S| g Sd  S(   N(   R   R9   R   R   R   (   R   R   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_param_filesÍ   s    c         C   s   |  j  S(   N(   t   file_type_label(   R   R   R&   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_file_type_labelÖ   s    c         C   s   |  j  S(   N(   R   (   R   (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   get_files_dictÙ   s    N(   t   __name__t
   __module__R   R)   RW   R7   R8   R   R
   R   R   R   R    R!   R$   R'   R3   R6   R/   R<   RB   RE   R>   RI   RQ   RS   RU   RV   RX   RY   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyR      s<   																
		(   t
   __future__R    t   iotbxR   t   libtbx.utilsR   t   libtbxR   R,   t   objectR   (    (    (    sF   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/iotbx/gui_tools/__init__.pyt   <module>   s
   