ó
ÉÝ{Tc           @   s˜   d  Z  d d l Z d d l Z d d l Z d d l m Z d d l Td Z d Z d d d d „ Z	 d	 d
 „ Z
 d f  d „  ƒ  YZ d f  d „  ƒ  YZ d S(   sœ  
     python/ui/presentation.py: CCP4MG Molecular Graphics Program
     Copyright (C) 2001-2008 University of York, CCLRC
     Copyright (C) 2009-2010 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   QtCore(   t   *t   ccp4mg_presentationiÈ   t    c         K   se  t  j j |  ƒ d d k rx t  j j t j | |  ƒ ƒ }  t j |  ƒ } | d rk t ƒ  j d |  ƒ d  S| d }  n  |  rat  j j t j | |  ƒ ƒ } t  j j
 | d ƒ } t  j j | ƒ rÞ t  j j | ƒ rÞ d } n7 t  j j | ƒ d d t k r| d t } n  d } t j rHx' t j D] } | j | k r(| Sq(Wn  | d k r´t d	 | ƒ }	 |	 j d
 | ƒ }
 |
 r�t ƒ  j d | ƒ |	 j ƒ  d  S|	 j d | ƒ |	 Sqa| d k rt | ƒ } | rõt d	 | ƒ }	 |	 j |	 j ƒ |	 St ƒ  j d | ƒ d  Sqat j d k rCd d  l } | j d d | ƒ } n  t ƒ  j d | ƒ ~	 d  Sn  d  S(   Ni   s   .zipi    s   Error unpacking presentation s   preferences.pklt   opent   .t   createt
   master_dirt   files   Error attempting to open movie t   modes+   Error attempting to create movie directory t   win32iÿÿÿÿt   /s   \s7   Error attempting to open presentation preferences file (   t   ost   patht   splitextt   abspatht   utilst   get_filenamet   unzipt   MGGUIt   WarningMessaget   Nonet   joint   existst   directory_extt   presentationt   instsR   t   unpickle_moviet   deleteR   t   create_presentation_dirt   pickle_moviet
   movie_filet   syst   platformt   ret   sub(   t   presentation_dirt   DIR_presentation_dirR	   t   keywordst   rvt   dirt	   pref_filet   actiont   objt   new_presentationt   statusR"   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   open_presentation   sT    
$	 	
t   moviec         C   só   t  j j |  ƒ \ } } t  j j | ƒ \ } } | sC |  t }  n  t  j j |  ƒ r} t ƒ  j d | d |  d | ƒ d St  j j | ƒ s£ t  j j | ƒ r¿ t ƒ  j d |  d ƒ d Sy t  j	 |  ƒ Wn t ƒ  j d |  ƒ d SX|  S(   Ns   Attempting to create a s    file.
A directory s@    already exists.
 Please give an alternative NEW name for a new R   s   Can not create directory s    
Parent directory does not exists%   Error attempting to create directory
(
   R   R   t   splitR   R   R   R   R   t   isdirt   mkdir(   R$   R	   t   parentt   tailt   namet   ext(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR   \   s"     $&R   c        	   B   si  e  Z g  Z ds Z i d  d  d  d  d  d  d  g d 6d d 6d d 6d d 6d d	 6d
 d 6d d 6d
 d 6d
 d 6d d 6d d 6Z d d g Z d d g Z d Z d d g Z	 d d g Z
 d d d d g Z i d d 6d d  6d d 6Z i d! d" g d 6d! d" g d  6g  d 6Z i dt d 6du d  6dv d 6Z i d# d$ 6d# d% 6d! d& 6d' d( 6d) d* g d+ 6d
 d, 6d d- 6d d. 6d/ d0 6d# d# d# g d1 6d
 d2 6d
 d3 6d
 d4 6g  d5 6i  d6 6i  d7 6i  d8 6d9 d: 6d
 d; 6d
 d< 6d
 d= 6Z d# i  d> „ Z d# d? „ Z d# d# d# d# d# d# d# d# d@ „ Z dA „  Z g  dB „ Z dC „  Z dD d# dE „ Z dF „  Z dG dH „ Z dI „  Z d# d
 dJ „ Z dK „  Z g  d
 d dL „ Z d# i  dM „ Z d# dN „ Z d# dO dP „ Z dO d
 dQ „ Z  d# dR „ Z! d# dS „ Z" g  d d dT d i  dU „ Z# g  d dT d i  d
 dV „ Z$ dW „  Z% i  dX „ Z& dY „  Z' dZ „  Z( d# d[ „ Z) d\ „  Z* d] „  Z+ i  d^ „ Z, d# d ds d# d_ „ Z- d# d` d# da „ Z. d d db „ Z/ dc „  Z0 d dd „ Z1 d
 i  de „ Z2 d# d# d
 df „ Z3 d# d# d# d# g  d dg „ Z4 d# d# dh „ Z5 di „  Z6 g  d# d# d
 d# dj „ Z7 dk „  Z8 dl „  Z9 d d
 d
 d
 d# d
 d
 dm „ Z: d dn „ Z; d# do „ Z< dp d
 dq „ Z= dr „  Z> RS(w   g        t	   transformi   t
   rock_anglet   yt	   rock_axisg       @t   rock_periodi   t   interpolate_timei    t   interpolate_rockt   interpolate_repeatst
   ramp_startt   ramp_endi   t   timet   fixedt   viewt   0t   1t   fastt   goodR   t   ffmpegs   ImageMagick convertt   converts   .gifs   .mpgs   .mp4s   .avii   t   mencoderi   i   R   t   titlet
   identifiert
   frame_rateid   t   encoder_qualityi€  ià  t
   frame_sizet	   antialiast   movie_encodert	   movie_extR-   t   save_file_formatt   html_templatet   render_qualityt
   last_scenet   last_movie_snapshot_idt   snapshot_listt   snapshot_detailst   recorded_detailst   notesR   t   gui_modet   true_transparencyt	   do_rendert   scale_fonts_and_imagesc         K   s‚  d |  _  d |  _ d |  _ d |  _ d |  _ d |  _ t | d ƒ |  _ t j	 j
 |  j d ƒ |  _ t j |  j ƒ |  _ i  |  _ x- t j j ƒ  D] \ } } t |  | | ƒ q‘ W| rç x- | j ƒ  D] \ } } t |  | | ƒ qÄ Wn  |  j r2|  j r2d d  l } | j t j	 j | ƒ d d ƒ d |  _ n  |  j sJ|  j |  _ n  t j j |  ƒ d |  _ i  |  _ d |  _ d	 |  _ d  S(
   Ni    iÿÿÿÿR-   g      à?s   utf-8s   preferences.pkli   R   s   .ppm(   t
   last_framet   current_scenet   make_frame_modet   animation_ont   animation_time_delayt   animation_rockt   unicodeR   R   R   R   R   R   t   fileRoott   movie_file_roott   pending_jobsR   t   initialisationt   itemst   setattrRL   t   stringR0   RK   R   t   appendt   last_restoredt   snapshot_changest   interruptablet   snapshot_ext(   t   selfR   t   paramsR&   t   keyt   valueRm   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   __init__¹   s2    							 ,	 			c         C   s   | r | |  _  n  d  S(   N(   R\   (   Rs   R	   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR   â   s     c	         K   s³  | r | |  _  n  | d k rG |  j ƒ  \ }
 } |  j d |  j ƒ |
 S| d k rÙ |  j d rƒ t j |  j d |  j d ƒ } n d } |  j d | ƒ } | d r¼ t ƒ  j	 | d ƒ q¯t
 ƒ  j | d d d ƒnÖ| d	 k r8|	 j d
 ƒ r|	 d
 |  _ n  t |	 j d d ƒ ƒ } |  j d |  j d | ƒ nw| d k rXd d  l } d d  l } | j t j j |  j d |  j ƒ ƒ } xt | D]l } | d d !}
 |  j j |
 ƒ s‹t j | ƒ | j d d | ƒ } t j j | ƒ r÷t j | ƒ q÷q‹q‹Wx±d d g D]I } | j t j j |  j | d ƒ ƒ } x | D] } t j | ƒ q:WqWnW| d k sp| d k rd d  l } d d  l } xp |  j D]e } x\ | D]T } | j t j j |  j d | | d d ƒ ƒ } x | D] } t j | ƒ qÜWqŸWq’W|  ` |  j d d ƒ n›| d k rwd d  l } | j t j j |  j d ƒ ƒ } x | D] } t j | ƒ qTWg  |  _ n8| r€|  j j | ƒ rA|  j d d d d ƒ \ }
 } d d  l  } yT | j! |  j" | ƒ |  j" |
 ƒ ƒ | j! |  j" | d d ƒ|  j" |
 d d ƒƒ Wqpt ƒ  j	 d  | d! |  j# d" d# ƒ qpXn/ | }
 |  j d |
 d d ƒ |  j d |  j ƒ |  j$ |
 ƒ n/| d$ k r˜g  |  _% n| rª| |  _% nd% d& d' g j | ƒ rØ|  j& d( | d | ƒ Sd) g j | ƒ r'|  j d | d* d+ ƒ \ }
 } |
 d k r¯|  j$ |
 ƒ q¯nˆd, g j | ƒ rd|  j' d- d d. d ƒ } |  j( d | ƒ nKd/ d0 g j | ƒ rŽt) |  j ƒ d k r6t* |  d1 ƒ r6|  j j |  j+ ƒ r6| d/ k rø|  j j, |  j+ ƒ d } | t) |  j ƒ k r3d } q3q^|  j j, |  j+ ƒ d } | d k  r^t) |  j ƒ d } q^n( | d/ k rKd } n t) |  j ƒ d } |  j | |  _+ |  j& d( d% d |  j | ƒ n!| r§|  j- d | ƒ n| r| } |  j. j | ƒ sÕi  |  j. | <n  |  j. | j d2 ƒ sÿd3 |  j. | d2 <n  |  j. | d2 } nœ| r-| |  j. | d2 <n‚| d4 k rF|  j/ ƒ  ni| d5 k r{|  j  d6 k rn|  j0 ƒ  q¯|  j1 ƒ  n4d7 d8 d9 g j | ƒ r¸| d8 k r¨d7 } n  |  j2 | ƒ n÷ | d: k rÑ|  j3 ƒ  nÞ | d; k rö|  j3 d; d d: d ƒ n¹ | d< k r|  j2 d9 d: d ƒ} n• | d= k r¯|  j4 | j d> ƒ r¯|  j& d( d% d | ƒ } | r^d  St5 d? |  j4 | d> d ƒ } | r¬t* | d d> ƒ r¬| d j6 j7 ƒ  q¬q¯n  d S(@   Nt   current_statusR   t
   write_htmli   i    R   t   template_filet   internalt   backupRL   t   compresst   projectt   cleanupiÿÿÿÿs
   snapshot_*i÷ÿÿÿiüÿÿÿt   snapshotR-   s   _*.*.pklt   delete_moviet   delete_framet   scene_i   R   t
   update_guit
   delete_alls   scene_*t   indexR   R	   s	   Snapshot s    already in s    so attempting to make copy
s   Error attempting to make copiest   undo_selectiont   restoret   restore_viewt   restore_displayR*   t   replacet   save_changest   replacedt   replace_propagatet   default_allt   group_interp_rangest   nextt   previousRo   R[   t    t   quitt   preferencesR/   t   previewt   run_autot   recordt   compilet   merget   maket   run_animationt	   animationR5   (8   R\   t   add_movie_snapshotR   R   RT   R   R   Ry   R   R   t   WEBt   launch_browsert   has_keyRL   t   intt   gett   do_backup_data_filest   globR"   R   R   R   R   Rr   RX   t   countt   remove_fileR#   R   t   tmp_delete_ranget   get_movie_filest   remove_directoryt   shutilt   copyt   snapshot_fileRh   t   update_gui_detailst   snapshot_selectt   restore_statust   get_play_listt   handle_copy_changest   lent   hasattrRo   R†   t   handle_movie_detailsR[   R   t   define_movie_paramst   define_presentation_paramst   make_movie_framest   run_compileRY   t   get_dataobjR�   Rœ   (   Rs   R*   R[   t	   load_filet   selectR\   R†   t
   show_notest   show_detailsR&   t   indxR|   Rz   R'   R}   R¥   R"   t	   filn_listt   filnt   filn0R	   t
   scene_listt   sceneR«   t   targetsR‘   t
   notes_textt   rett   molobj_list(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   applyë   s   #
( % 0 ! 	   	  	 c         C   sõ   |  j  j | ƒ rÏ |  j d d d d ƒ \ } } d d  l } yT | j |  j | ƒ |  j | ƒ ƒ | j |  j | d d ƒ|  j | d d ƒƒ Wqë t ƒ  j d | d	 |  j d
 d ƒ d d | g SXn | } |  j d | d d ƒ d | g S(   NR†   R   R   i    iÿÿÿÿR	   R-   s	   Snapshot s    already in s    so attempting to make copy
s   Error attempting to make copiesi   s!   Error attempting to make copy of (	   RX   R¦   Rž   R«   R¬   R­   R   R   Rh   (   Rs   t	   copy_fromR¿   R|   R«   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   makeCopy¤  s     	c         C   só   | s |  j  } n  g  } i  } x´ |  j  D]© } |  j | d d ƒ} | r( t ƒ  j | ƒ } | d d k  ru d | g S| d d k rÑ xF | d D]7 } | j | ƒ s� | j | ƒ | d | | | <q� q� WqÑ q( q( W| sâ d g Sd | | g Sd  S(   NR	   R-   i    i   i   (   RX   R­   t   HISTORYt   get_status_data_filesR¦   Rn   (   Rs   RX   t   objListt   fileDefR€   RÁ   R'   t   item(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   check_status_files¿  s$      
#c         C   s‚   g  } xu |  j  D]j } |  j | d d ƒ} | r t ƒ  j | d | | ƒ } t ƒ  j | | ƒ } | rz | j | ƒ qz q q W| S(   NR	   R-   i   (   RX   R­   RÌ   t   edit_status_data_filest   write_pickle_fileRn   (   Rs   RÎ   t   fileDefnt   failedR€   RÁ   R-   R'   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRÒ   Ö  s     Rˆ   c         C   sõ  t  j | d ƒ d k  r& d d | g S| |  _ |  j | d |  j ƒ} t j j | ƒ re |  j } n_ d d g d d d g j |  j ƒ } |  j t d | ƒ} t j j | ƒ sÄ d d | d	 g S| d k r@d } d
 d g j	 | ƒ rt
 ƒ  j d | ƒ } n  d
 d g j	 | ƒ r)t
 ƒ  j d | ƒ } | d d k  rNd d | g Sq)| d rüg  } t r„| j t j j | ƒ d ƒ n  t
 ƒ  j | | ƒ \ } } }	 }
 | |
 k r&t
 ƒ  j | d | |	 ƒ } t
 ƒ  j d | d d d d g d d ƒ } q&q)t
 ƒ  j d | d d d d g d d ƒ } n  | rëd d | g Sn« g  } d } d
 d g j	 | ƒ rz| j d d d g ƒ n  d
 d g j	 | ƒ rŸ| j d ƒ n  d g j	 | ƒ rºd } n  t ƒ  j d | d d d d d | d | d d ƒ d d g S(   Niÿÿÿÿi    i   s   Unrecognised snapshot idR	   R-   t   mgpics	   Snapshot s    not found Rˆ   R‰   t   filenameRŠ   s'   Unable to restore status from snapshot t   override_visiblet   exclude_listt   screenshot_preferencest   delay_deletet   colourst   displayRt   RC   t   trap_errorst   testt   restore_listt   keep_currentR   (   R   t   safeIntRo   R­   RS   R   R   R   R†   R¦   RÌ   R‰   RÍ   R   Rn   R0   RÒ   t   update_data_statust   extendt   PDt   restore_picture_definition(   Rs   R*   t   idRÁ   t   formatR'   t   hintst   nLostRÎ   RÏ   t   nFoundt
   status_newRà   Rá   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR°   ä  s\     	&
 ! 	c         C   s   |  j  |  j ƒ d  S(   N(   R   R   (   Rs   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   Exit!  s    iÿÿÿÿc         C   s   | d k  r d |  j  } n  | s> t ƒ  j d ƒ d |  _  nÞ |  j ƒ  } g  |  _ xS | D]K } xB | D]: } t ƒ  j d |  j | d d ƒƒ } |  j j | ƒ qg WqZ Wt	 |  j ƒ d k  rØ t
 ƒ  j d ƒ |  ` d  Sd	 |  _ d |  _ d
 |  _ |  j ƒ  t ƒ  j d |  j ƒ d |  _  d  S(   Ni    i   t	   AnimationR×   R	   R-   i   s/   Need at least two scenes selected for animationiÿÿÿÿi
   (   Rc   t
   MAINWINDOWt   removeAnimationHandlerR±   t   animate_scene_listRÌ   t   load_pickle_fileR­   Rn   R³   R   R   t   animate_scene_positiont   animate_scene_incrt   animation_countt   handle_animatet   addAnimationHandler(   Rs   R	   t	   play_listRÐ   RÄ   R-   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   animate'  s*    	$			
c         C   sT  |  j  d |  _  |  j  |  j d k  r* d  Sd |  _  |  j |  j |  _ |  j r° |  j d k  rs d |  _ d |  _ qÔ |  j t |  j ƒ k rÔ d |  _ t |  j ƒ d |  _ qÔ n$ |  j t |  j ƒ k rÔ d |  _ n  |  j |  j } xS | d D]G } | j | ƒ rï t d | ƒ } | r6| d j	 | | ƒ } q6qï qï Wd d  l
 } | j ƒ  d  S(   Ni   i
   i    iÿÿÿÿi   t	   Data_listR5   (   Rõ   Rd   Ró   Rô   Re   R³   Rñ   R¡   Rº   Rù   t   rebuildt   UpdateDisplay(   Rs   R-   t	   data_namet   d_objR'   Rû   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRö   F  s,    				!c         C   s;  |  j  ƒ  } | s d S| |  _ |  j d k r{ |  j r{ t ƒ  j d |  j d d |  j d d d ƒ t ƒ  j ƒ  d } nR |  j d k rÀ d d  l } | j |  j d |  j d d	 ƒ d } n d
 |  j	 } x| D]} | d } xK | D]C } t
 j j |  j | d d ƒƒ së t ƒ  j d | d ƒ d Sqë W|  j d k rÔ d d  l }	 t
 j j |  j d | ƒ }
 t
 j j |
 ƒ rØxg d d d d d g D]@ } x7 |	 j t
 j j |
 d | ƒ ƒ D] } t j | ƒ qºWq‘Wqèt
 j |
 ƒ qÔ qÔ W|  j d | d d |  j d |  j d |  j i | d 6| d 6g d d ƒ } d S(   Ni   R˜   t   widthi    t   heightt   saveR{   iÿÿÿÿs   test.movg      ð?R	   R-   s   Status file for snapshot s
    not foundRƒ   t   pngt   gift   mpgt   mp4t   avis   *.Rø   t   interrupt_labels   Movie:t   update_methodt   finish_methodR™   t   label(   R±   Rb   R^   Rï   t	   setGLSizeRO   t   hideWindowst   ffmpeg_wrappert	   OpenMovieRM   R   R   R   R­   R   R   R¥   R   R   R   R§   R2   R7   RL   t
   make_framet   end_transform(   Rs   R*   R™   Rø   t   sleep_periodR  t	   snap_listRÄ   t   snapR¥   t	   scene_dirR6   R   t	   interrupt(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR¸   l  sD     	-	!	
!)			c         C   s‚   d d  l  } t ƒ  j d t d d g d d ƒ | j ƒ  t j d ƒ rX t d j ƒ  n& t j d ƒ r~ t ƒ  j t d ƒ n  d  S(	   NiÿÿÿÿR-   RÙ   RÚ   t   restore_all_visiblei   RC   t   view2(	   Rû   RÌ   Rã   t   initial_statusRü   R¡   Rˆ   Rï   t   setViewParams(   Rs   R-   Rû   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   restore_status_0¢  s    
c         K   s‚  | sž d d  l  } |  j ƒ  } g  } xw | D]l } | d } t j j |  j d | ƒ }	 t j j |	 ƒ r+ | j  t j j |	 d ƒ ƒ r+ | j | ƒ q+ q+ Wn  | r)|  j d d d | ƒ }
 |
 d d k rú d d  l	 } t
 j | j |
 d ƒ d ƒ d  S|
 d d k  r)t ƒ  j d	 |
 d ƒ d  Sn  y´ |  j |  j |  j k rvd
 G|  j |  j d GH|  j |  j d |  _ n  t |  j |  j ƒ d k rÜ|  j |  j |  j k rÜd G|  j |  j d GH|  j |  j d |  _ n  Wn d GHn X| rQ| rQ|  j d | d d d |  j d |  j d d ƒ }
 |
 d rQt ƒ  j d |
 d ƒ qQn  |  j d |  j ƒ d |  j j d ƒ d |  j j d ƒ d g } x | D] } | j | ƒ q˜W| j d |  j d |  j g ƒ t d ƒ } x8 |  j d g D]& } | j d | | j | ƒ g ƒ qëWx— |  j d g D]… } | j | ƒ } |  j d k r”| d t |  j ƒ 7} | d t |  j d ƒ d  t |  j d ƒ 7} n  | j d | | g ƒ q&Wx8 |  j d! g D]& } | j d | | j | ƒ g ƒ qÀW| r | j d" ƒ n  | s| j d# ƒ n  d$ |  j d d% !d& } | rG| rG| d' } n& | rZ| d( } n | rm| d) } n  | r»t | ƒ d k r»t j j |  j d* | d d+ | d |  j ƒ } n* t j j |  j d | d d, |  j ƒ } t ƒ  j  d- d. d/ t j j t j! d0 d1 d. ƒ d2 | d3 d4 d5 |  j" i | d, 6g d6 d d7 i d8 d9 6d: d; 6| d< 6ƒ }
 |
 d r~t ƒ  j |
 d ƒ d  Sd  S(=   Niÿÿÿÿi    Rƒ   s   frame*R™   RÃ   iýÿÿÿi   s   Aborting compiling movie..
s   RESETTING SUFFIX tos   RESETTING FRAME RATE tos   problem setting suffixt	   overwriteR6   t   encoderRß   s   Aborting merging movie..
R   s   -dirs   utf-8s   -masters   -scenes   -encoders   -extt   movie_preferencest   _exet   -t   _commandRH   s    -r s    -s t   xt   _merge_commands   -merges   -no_compiles
   For movie i   s   
s9   Converting frames to scene movie
and merging scene moviess!   Converting frames to scene moviess   Merging scene moviest   movie_t   _R/   R5   t   compile_moviet   commandt   CCP4MGt   bint   argst   interpretert   pythont   handlert
   add_job_idt   progresss   Compile moviet   TITLEt   moviest   HELPt   LABEL(#   R¥   R±   R   R   R   R   R   Rn   R™   Rm   R   R§   R0   R   R   RR   t   movie_encoder_formatsRQ   R³   t   movie_encoder_fpsRM   t   merge_moviesR   R   t   encodeRä   t   PMR£   t   strRO   RL   t
   JOBCONTROLt   start_processt   environt   review_compiled_scene(   Rs   RÃ   Rš   R™   R&   R¥   Rø   R  R  R  R'   Rm   R)  RÄ   t   pmRÐ   t   cmd_argsR
  R   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR¹   °  s–    
5	0
- $3$  6*

c         K   s<  | s
 d  S|  j  | } | j | ƒ | j d ƒ sC |  j | d <n  x9 |  j j ƒ  D]( \ } } | j | ƒ sS | | | <qS qS W| j d ƒ rŸ | d | d <n  xF d d d d d d g D], } | j | ƒ r¸ t | | ƒ | | <q¸ q¸ Wx: d d	 g D], } | j | ƒ rõ t | | ƒ | | <qõ qõ W|  j d
 |  j	 ƒ d  S(   NRU   R7   t   raytraceR=   R>   R?   R@   R;   R8   R   (
   RY   t   updateR¡   RU   t   default_detailsRk   R¢   t   floatR   R   (   Rs   R†   Rt   R&   t   detailsRu   Rv   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRµ     s$         c         K   sÏ   d } t  ƒ  j | ƒ } | j d ƒ rM | d rM | d d k rM d } qM n  | j d ƒ se d } n/ t j j | d ƒ s” | d | d d } n  | r· | d } t ƒ  j | ƒ n |  j d	 | d ƒ d  S(
   NR   R-   t   FINISHEDs   Error compiling movie.R/   s   Movie file s    not found.s3    Look in Tools->Review jobs for further informationR×   (	   R9  t   read_log_fileR¡   R   R   R   R   R   t
   play_movie(   Rs   Rç   t   kwt   messR-   t   messs(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR<  9  s    	
R   c   
      C   s´   d d l  } d d l } d d l } | j  t j j | d | ƒ ƒ } d } xa | D]Y } | j | j | j t j j | ƒ d ƒ d d ƒ d d ƒ }	 |	 | k rS |	 } qS qS W| S(   s8   
    Initialise setup at start of recording a movie
    iÿÿÿÿNs   frame_*.i    R$  R   (	   R¥   Rm   R   R   R   R   Râ   R0   t   basename(
   Rs   R  R6   R¥   Rm   R   t   existing_filest   lastR   t   i(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   get_last_frameQ  s    $"2 c   
      C   s  d d l  } d d l } g  } | d k rP | j  t j j |  j d | d ƒ ƒ SxB | j  t j j |  j d ƒ ƒ D] } | j t j j | ƒ ƒ qr W| j  t j j |  j d | d ƒ ƒ } xS | D]K } t j j | ƒ } t j j | d ƒ }	 | j |	 d d | d ƒ qÄ W| Sd S(	   s#   
    Get a list of movie files
    iÿÿÿÿNR   Rƒ   s   movie*.*i    i   R   (	   R¥   Rm   R   R   R   R   Rn   RJ  R0   (
   Rs   RÄ   R„   R¥   Rm   t
   movie_listR   t	   path_listt   split1t   split2(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR©   d  s    &((!c         C   sš   d d  l  } | s |  j } n  yK d } t | d ƒ } d } |  j ƒ  } | j | | ƒ d } | j ƒ  Wn* t ƒ  j d | d t | ƒ ƒ | SXd S(	   Niÿÿÿÿi   t   wi   i   s    Error saving movie control file s   
Error code is i    (	   t   pickleR   R   t	   getparamst   dumpt   closeR   R   R8  (   Rs   R   RT  t   errcodet   ft   pars(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR     s     "c   	      C   sF  d d  l  } i  } t j j | ƒ s@ t ƒ  j d | d ƒ d SyM d } t | d ƒ } | r† d } | j | ƒ } d } | j ƒ  n t	 ‚ Wn5 t
 j ƒ  GHt ƒ  j d | d	 t | ƒ ƒ d SXx* | j ƒ  D] \ } } t |  | | ƒ qÒ W|  j rBd d  l } |  j sB| j t j j |  j ƒ d d
 ƒ d |  _ qBn  d S(   Niÿÿÿÿs$   Error presentation preferences file s
    not foundi   t   rUi   i   s,   Error reading presentation preferences file s   
Error code=R   i    (   RT  R   R   R   R   R   R   t   loadRW  t   IOErrorR    t   exc_infoR8  Rk   Rl   R   Rm   RL   R0   (	   Rs   R   RT  RZ  t   errRY  Ru   Rv   Rm   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR   –  s4    
" 		 ,R  c   #      C   sá  y´ |  j  |  j |  j k rM d G|  j |  j d GH|  j |  j d |  _  n  t |  j |  j ƒ d k r³ |  j |  j |  j k r³ d G|  j |  j d GH|  j |  j d |  _ n  Wn d GHn Xd d l } d d l } d }	 t j	 }
 t | ƒ d k  rd d g S| j
 d	 k r0| j d
 d |  j ƒ } n	 |  j } xÁ | D]¹ } d } t j j | d t | ƒ ƒ } t j j | ƒ s‘t j j | ƒ rŸd d | g S|  j | ƒ } | d k rÏ| d | d } n  |  j | ƒ d k r@| d | d } q@q@W| rd | g St j j | d t | d ƒ ƒ } t j j | d> | j d ƒ ƒ } t j j | ƒ r‹| rzt j | ƒ q‹d d | g Sn  | s›d | g S| j
 d	 k r¼t j | ƒ } n  | d k r–| j d d ƒ } d t t |  j ƒ ƒ } d t |  j ƒ d | d } xÂ| D]v} d } | g } t j j | d | ƒ } d } |  j | d d ƒ} x‚ t | | d ƒ D]m } t j j | d d t | ƒ d d  ƒ } | j | ƒ | j
 d	 k rÕt j | ƒ } n  | d | } qvWt j j | d | ƒ } | j | ƒ | j
 d	 k r.t j | ƒ } n  | d | } d d l } y6 | j
 d	 k rp| j | d! t ƒn | j | ƒ Wqd" d# g SXqWnA| d$ k r\| j d% d$ ƒ } d& } x| D]”} x‹| g D]€} | rÑd } t j j | d | ƒ } | d' t j j | d( ƒ d) } | d* | d+ t j j | d |  j  ƒ } | j
 d	 k r#d d l  } y" | j! | j" d, d | j# ƒ } Wn d } n X| s¦d d- g S| j% | d. ƒ d } | j& | ƒ d/ Gt j j | d0 ƒ GHy) t j' |
 t j j | d0 ƒ d1 | ƒ WqNd2 GHd d3 g SXqQt j( | d | ƒ } | d4 rQd d3 g SqÑqÑWqÁWn{| d5 k r×d6 GH| j d7 d5 ƒ } d8 t d9 t |  j ƒ ƒ d: } | GHd d l) } d d l } d d l* }  d d l } xÿ | D]ô } t j j | d | ƒ } | j) t j j | d( ƒ ƒ }! |! j+ ƒ  | d; t j j, t j j | d< ƒ ƒ g }" |" j- | j. ƒ  j/ ƒ  ƒ |" j t j j | d |  j  ƒ ƒ y6 | j
 d	 k r±| j |" d! t ƒn | j |" ƒ WqÜd" d= g SXqÜWn  d | g S(?   sI   
    Compile the image files in one scene directory into a movie gif
    s   RESETTING SUFFIX toi    s   RESETTING FRAME RATE tos   problem setting suffixiÿÿÿÿNi   R   R
   R   s   \\Rƒ   iþÿÿÿs   Directory does not exist s   No frames recorded for scene s   
s#   Recorded frames not up to date for R/   R   iýÿÿÿs   Output movie file exists: RI   t   convert_exes	   -quality s    -delay R“   R6   R  t   frame_t   00000iúÿÿÿs   .pngt   shelliüÿÿÿs6   Failed to run ImageMagick program convert successfullyRJ   t   mencoder_exes2   -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=1800s   "mf://s   *.pngs   " s    -mf type=png s    -o s   SOFTWARE\mencoder\Currents   Can not find mencoder programt   BinPaths#   Attempting to run mencoder program:s   mencoder.exes   --s   ERROR starting mencoders   Can not start mencoder programi   RH   s2   --------------------------------------------------t
   ffmpeg_exes(   -f mpeg -vcodec mpeg1video -ar 48000 -b i ¡ s    -ab 192000 -ys   -is   frame_%06d.pngs!   Failed to run ffmpeg successfullys   movie.(0   RR   R3  RQ   R³   R4  RM   R"   R    R   t   P_WAITR!   R#   R   R   R   R8  R   R1   RN  t   is_recording_donet   lstripR   R§   t
   msvcescapeR£   R¢   RN   t   rangeRn   t
   subprocesst   callt   Truet   _winregt	   OpenKeyExt   HKEY_LOCAL_MACHINEt   KEY_READR   t   QueryValueExt   CloseKeyt   spawnlt   systemR¥   R«   t   sortt   normpathRä   t   stripR0   (#   Rs   RÃ   R  R™   R6   R  R•   R"   R    t   logt
   spawn_modet   masterRÄ   R_  R  R`   R×   t   encoder_exet   encoder_argsR&  t   command_listt   first_frameRM  t   ppmfilet   outputRl  t   comRo  t   reg_keyt   binpathRÇ   R¥   R«   t	   file_listt   clist(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR™   ¹  sê    5		 
	&  
#"
 	+  !,"
 
)
!$
*#c         C   s  d d  l  } d d  l } | j }	 t j d k rW d d  l }
 |
 j d d |  j ƒ } n	 |  j } t | ƒ d k rš d | j	 j
 | d | d d | ƒ g St | ƒ d k r¶ d	 d
 g S| j	 j | j	 j
 | d | d d | d | ƒ ƒ } | j	 j | ƒ r(| rt j | ƒ q(d d | g Sn  d } d } g  } x¯ | D]§ } | j	 j | j	 j
 | d | d | ƒ ƒ rA| d } | j	 j
 | d | d | ƒ } | j | j	 j | ƒ ƒ t j d k r×t j | ƒ } n  | | d } qAqAW| d k rd	 d g S| d k rd	 d g S| r(d | g S| d k rÖ| j d d ƒ } | g } x | D] } | j | ƒ qVW| j | ƒ y6 t j d k r¢| j | d t ƒn | j | ƒ Wqd GHt j j ƒ  d d g SXn7| d k r!t j d k rt j | ƒ } n  | j d d ƒ } d } | d | d | } t j d k ród d  l } y" | j | j d d | j ƒ } Wn d  } n X| sŽd d g S| j | d ƒ d } | j | ƒ y) | j |	 | j	 j
 | d ƒ d  | ƒ Wqd! GHd d" g SXq| j | d | ƒ } | d# rd d" g Snì | d$ k rd d  l } | j  d% d& d' t! ƒ } x: | D]2 } t" | d( ƒ } | j# | j$ ƒ  ƒ | j% ƒ  qXW| j% ƒ  yZ t j d k rÒ| j d$ d) | j& d* | g d t ƒn | j d$ d) | j& d* | g ƒ Wn d+ d, g SXd | g Sd | g S(-   NiÿÿÿÿR
   R   s   \\i   i    Rƒ   s   movie.i   s   No scenes selected for mergingR#  R$  iýÿÿÿs   Output movie file exists: R   R/   R“   s5   Only one movie file in selected scene - can not merges1   No movie files in selected scenes - can not mergeRI   R`  Rc  s)   Can not start ImageMagick program convertRJ   Rd  s	   -ovc copys    -o s   SOFTWARE\mencoder\Currents   Can not find mencoder programRe  s   mencoder.exes   --s   ERROR starting mencoders   Can not start mencoder programi   RH   t   suffixs   .mpgR   t   rbs   -is   -sameqiüÿÿÿs!   Failed to run ffmpeg successfully('   R   Rl  Rg  R    R!   R"   R#   R   R³   R   R   Rx  R   R   R§   Rn   Rj  R£   Rm  Rn  t   stdoutt   flushRo  Rp  Rq  Rr  R   Rs  Rt  Ru  Rv  t   tempfilet   NamedTemporaryFilet   FalseR   t   writet   readRW  R5   (   Rs   RÃ   R  R6   R  R•   Rß   R   Rl  R{  R"   R|  t   merged_fileR&  t   nmerget   input_filesRÄ   R   R}  R‡  RY  t   encoder_mergeRo  R„  R…  RÇ   RŒ  t   ftmpt   fin(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR5  [  s®    		(
9,
  


	  "
 
)

(#
c         C   s
   i  } d  S(   N(    (   Rs   RZ  (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   get_movie_paramsË  s    c      	   K   sv   | j  | ƒ xO d d d d d d d d d	 g	 D], } | j | ƒ r/ t |  | | | ƒ q/ q/ W|  j d
 |  j ƒ d  S(   NRO   RM   RR   RQ   RN   RU   R]   R^   R_   R   (   R@  R¡   Rl   R   R   (   Rs   Rt   R&   Ru   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   set_movie_paramsÏ  s
    (c         C   s+   g  } x |  j  D] } | j | ƒ q W| S(   N(   RX   Rn   (   Rs   R  RÐ   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   get_snapshot_listÝ  s     c         C   s.   g  |  _  x | D] } |  j  j | ƒ q Wd  S(   N(   RX   Rn   (   Rs   t   new_listRÐ   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   set_snapshot_listä  s    	c         C   s‹   i  } | r | g } n |  j  j ƒ  } x] | D]U } i  | | <| | j |  j  | ƒ |  j  | j d ƒ s. | | j t j ƒ q. q. W| S(   NR7   (   RY   t   keysR@  R¡   R   RA  (   Rs   R†   RZ  t
   index_listt   idx(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   get_snapshot_detailsí  s    
c         C   ss   |  j  j | ƒ rd |  j  | j | ƒ rd d d g j | ƒ rR t |  j  | | ƒ S|  j  | | Sn t j | Sd  S(   NRA   R<   (   RY   R¡   R¦   RB  R   RA  (   Rs   R†   Ru   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   snapshot_detailü  s
    (c         C   sI   i  } x< t  j j ƒ  D]+ } t |  | ƒ r t |  | ƒ | | <q q W| S(   N(   R   Rj   Rœ  R´   t   getattr(   Rs   RZ  RÐ   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRU    s
     c   
      K   sh  d d  l  } d d  l } | j | ƒ | j d ƒ rƒ g  |  _ xC | d D]4 } |  j j | ƒ |  j j | ƒ sH d G| GHqH qH Wn  xŽ d d d d d g D]w } | j | ƒ r™ d } xY |  j D]K } | d	 } |  j j | ƒ sð i  |  j | <n  | | | |  j | | <q¾ Wq™ q™ WxC | j ƒ  D]5 \ } }	 |  j j | ƒ r!|  j | j |	 ƒ q!q!W|  j ƒ  d  S(
   NiÿÿÿÿRX   s3   WARNING snapshot_list contains item without detailsRA   t   to_snapshotRC   RÝ   R<   i   (	   Rm   R"   R@  R¡   RX   Rn   RY   Rk   R   (
   Rs   Rt   R&   Rm   R"   RÐ   Ru   t   nnRç   Rv   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt	   setparams  s(    	
 $c         C   s]  d d  l  } d } | r� | r� xl d d g D][ } |  j | d | ƒ} t j j | ƒ r+ |  j | d | d | ƒ} | j | | ƒ q+ q+ Wn  | sÐ |  j d |  _ t |  j ƒ } d d	 d
 t | ƒ !| } n  d g }	 | rß|  j | ƒ }
 t j j |
 ƒ rt	 j
 |
 ƒ n  t } d d  l } | j d |
 j d ƒ d | | g d d d d	 ƒ |  j | d |  j ƒ} |  j d k rÃt j j | ƒ } t ƒ  j d | d d d d d d d d g d | ƒ qßt ƒ  j d | d d	 ƒ n  | rù|  j | d }	 nb d d  l } xS | j d d ƒ D]? } t | d ƒ r| j | j j d	 | j j d g }	 PqqW|  j j | ƒ si  |  j | <|  j | j t j ƒ |	 |  j | d <| |  j | d <|	 d g k rt  |	 d ƒ t  |	 d ƒ d t  |  j! ƒ |  j | d <qn |	 |  j | d <|  j" j | ƒ sCi d  d! 6d  d" 6|  j" | <n  |  j# |  j$ ƒ | | f S(#   NiÿÿÿÿR   R€   R-   R	   t   versioni   Rb  i    i   R×   s   utf-8t   sizet   clear_labelsRU   R  t	   save_listRC   t   datat   COLOURRt   t   view_optionst   copy_to_dirt   limited_saveR�   t   object_typet   MolDataR¢  i   g      ð?RA   R“   RK   R[   (%   R«   R­   R   R   R   t   copyfileRW   R8  R³   R   R§   t   SNAPSHOT_SIZEt
   screenshott   makeScreenshotR6  RS   t   dirnameRÌ   t   save_statusRå   t   save_picture_definitionRY   t   global_definitionsRº   R´   R5   R�   t   frame_rangeR¡   R@  R   RA  RB  RM   R[   R   R   (   Rs   R†   R   RÊ   RŒ   R«   R|   R	   RÂ   R�   RÁ   R¦  R²  R¬  R·  t   moldata(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRž   5  sb    	 1%!R€   c         C   sI  | d k r |  j  } n | d k r- d } n d } t j j |  j | d t | ƒ ƒ } d d d g j | ƒ rd	 d
 l } d	 d
 l } d	 d
 l	 } | j
 | j | j ƒ  ƒ ƒ }	 |	 d d |	 d d |	 d d | j d d |	 d ƒ }
 | d |
 } | d k r;| d | } q;n | r;| d t | ƒ } n  | | } | S(   sR   
    Return path for file containing status or snapshot image for given index
    R€   RÖ   s   .pys   .pklR$  t   newR�   t   editediÿÿÿÿNi    i   i   t   :i   R   (   Rr   R   R   R   R   R8  R¦   RA   Rm   R"   R0   t   ctimeR#   (   Rs   R†   R	   R¥  R6   RÁ   RA   Rm   R"   t   t0t   t1(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR­   €  s"    	&$= 
c   	      C   sÇ  g  } |  j  } t |  d ƒ r™ |  j r™ |  j j |  j d ƒ r’ |  j j |  j d ƒ r’ |  j j |  j d ƒ } |  j j |  j d ƒ d } q¸ g  Sn | s£ g  Sd } t |  j ƒ } | sï xt | | ƒ D] } | j |  j | ƒ qÎ WnÔ xÑ | | k  rÂ|  j | } | | d | k r¥|  j j | | d ƒ r¥|  j j | | d ƒ | k r¥| j |  j | |  j j | | d ƒ d !ƒ |  j j | | d ƒ } n | j | g ƒ | d } qò W| S(   NR¯   i    i   R¢  (	   RY   R´   R¯   RX   R¦   R†   R³   Rk  Rn   (	   Rs   R�   R�   Rø   RC  t   isnapRL  t   iiR  (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR±   ž  s2    	  /c         C   s˜   d d  l  } t j j |  j d | ƒ } t j j | ƒ s> d S| j  t j j | d ƒ ƒ s` d S|  j j | ƒ sv d S|  j | |  j | k r” d Sd S(   NiÿÿÿÿRƒ   s   frame*iþÿÿÿi   i    (	   R¥   R   R   R   R   R   RZ   R¡   RY   (   Rs   R  R¥   R  (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRh  Æ  s    c          K   sô  d d l  m } | j d ƒ } |  j d |  _ |  j d k rB d S|  j d k ré d d l } d d l } d d l } | j | j	 ƒ  ƒ } | j
 | ƒ | d k rå d }	 x9 |	 | k  rá |	 d }	 | j | j | j | j ƒ q¬ Wn  d St j j |  j d	 t | ƒ d
 d t |  j ƒ d ƒ d }
 |  j | j d ƒ rQ|  j | d } n	 |  j } |  j sÇd d l } d d l  m } m } d d l } d d l } t } yt d d l m } | j  ƒ  } |  j! r| j" j# } | j" j$ } | j" j% } t& | j" _# t& | j" _$ t& | j" _% n  Wn t& } n Xt& r{| j' d |
 j( d ƒ d d d d d d d t d |  j) d |  j) d g ƒ n+ | j' d |
 j( d ƒ d d d d d d ƒ |  j! rl| rl| | j" _# | | j" _$ | | j" _% d } t* | d ƒ rt+ |  j) d ƒ | j, d } n  | ƒ  } | j  ƒ  } | j" j- | j" j. d d | _/ | j0 | j" d |
 d t& d |  j) d | j" j1 ƒ  d t& d t& d  t& d! t& d" t& d# | ƒ	} | j2 | |
 d$ d$ d$ g d t& ƒqln¥d d l } d d l  m } m } d d l } d d l m } | ƒ  } |
 } | j3 d% ƒ d k rC| | j3 d% ƒ  d& } n
 | d& } | j4 d' d( d) t t j5 ƒ  ƒ ƒ} | d } t j6 | d ƒ | j  ƒ  } | j" j- | j" j. d d | _/ | j0 | j" | | d t& d |  j) d | j" j1 ƒ  d t& d t& d  t& d! t& ƒ} | j7 | | | d t& ƒ| j2 | | d$ d$ d$ g d t& ƒ| j8 | ƒ } | j9 |
 ƒ t j: | ƒ | d k rìd }	 xk |	 | k  rè|	 d }	 |  j d |  _ t j j |  j d	 t | ƒ d
 d t |  j ƒ d ƒ d } q�Wn  d Sd S(*   s$   
    Make one frame  of a movie
    iÿÿÿÿ(   t   QtOpenGLRÄ   i   R–   i    R{   NRƒ   Ra  Rb  iúÿÿÿs   .pngRU   (   t   QtGuiR    (   t   RendererCoreR×   s   utf-8R§  R  t   use_pbufferR¦  g      ð?t   savedGLSizei   g      N@s
   dummy.tifft
   getGLScalet   current_size_int   transparentR?  t   smoothRibbonst
   darkInsidet   createInputFilet   fontScalingiÿ   R   s   .ribs   .tifft   prefixt   ccp4mg(;   t   PyQt4RÂ  R£   R`   Rb   t   openglt
   image_infoR  t   image_info_yuv_tPtrt   get_yuvdatat   AddYUVMovieFramet   AddMovieFrameR9   t   ut   vR   R   R   R   R8  RY   R¡   RU   R^   RŒ  RÃ  R    R²  t   MGApplicationRn  t   PixieDialogRÄ  t   GetMainWindowR_   t   glWidgett
   drawImagest   drawTextt   drawTextSeparatelyRŽ  R³  R6  RO   R´   RB  RÆ  t   viewsizet   RADIUSt   glScalet
   renderFileR¦  t"   applyTextLabelsFromLabelsAndImagest   rfindt   mkstempt   getpidRW  t   runPixiet   QImageR  t   unlink(    Rs   t   repeatR&   RÂ  Ra   RÑ  RÒ  R  t   yuvt   nRÁ   RU   RŒ  RÃ  R    R²  RÙ  t   havePixiePluginRÄ  t   mainwint   oldDrawImagest   oldDrawTextt   oldDrawTextSeparatelyRÍ  t   renderert   labelsAndImagesRY  t   fribt   ftiff_t   ftiffR–  t   fr(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR  Ú  s¤    $
#"			N+!	!Z(	
%
!N"
)c         K   s°   |  j  d k r t j ƒ  n  xB | D]: } i  |  j | d <|  j | d j |  j | d ƒ q# W|  j s€ t ƒ  j d d ƒ n  t ƒ  j	 d d ƒ | r¬ |  j
 d d ƒ n  d  S(   NR{   i    Rˆ   i   R   Rš   (   Rb   R  t
   CloseMovieRZ   R@  RY   R^   Rï   R  R  R¹   (   Rs   R™   Rø   RG  RÄ   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR  N  s    '	c         C   sœ  d d  l  } d d  l } d d  l } d d  l } d d  l } | sZ t j j |  j ƒ } n] t j j	 | ƒ r| | j
 | ƒ n  t j j	 | ƒ s· y t j | ƒ Wq· d d | f SXn  g  }	 x |  j D]}
 |  j d |
 d d ƒ } t ƒ  j d | ƒ } | rªd G| d	 GHxš | d	 D]‹ } | j | ƒ r| | j j d ƒ r| | j d
 | d | ƒ } | d r£x4 | d D]% } |	 j | ƒ st|	 j | ƒ qtqtWq£qqWn  | j | d d d ƒ} | j | | ƒ | j ƒ  qÇ W|	 r|	 d } x  |	 d D] } | d | } qûWd | g S| r‡d d  l } | j d |  j g d |  j d ƒ } | d rod | d g g Sd d |  j d g Sn d d |  j g Sd  S(   Niÿÿÿÿi   s   Error creating directoryR†   R	   R-   R×   s6    Presentation.do_backup_data_files status['Data_list']Rú   R(   R~   i    RS  R  s   
t   filelistt   zip_files   .zips   Saved presentation to s   All data files copied to (   R«   R¥   RT  t   dataobjR   R   R   R   R   R   t   rmtreeR2   RX   R­   RÌ   Rò   R¡   t
   dataparamst   copy_data_filesR¦   Rn   t   openFileRV  RW  t   ZipAFile(   Rs   R(   R~   R}   R«   R¥   RT  Rü  R   t   errorsR¿   RÁ   R-   t   objnameR'   t   errorRY  t   textRÐ   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR¤   e  sP    $ 
 !
 
%
c         C   s§  d d  l  } d d  l } t ƒ  j d | ƒ }	 | s< | } n  |  j | d d d | ƒ}
 t ƒ  j d |
 ƒ } |	 d j | d j ƒ } t ƒ  j |	 | ƒ } | sÚ t ƒ  j	 d | d t
 t ƒ d	 | d | d
 ƒ n  | j | ƒ rù | j | ƒ n  x§| D]Ÿ} |  j | d d ƒ}
 t ƒ  j d |
 ƒ } t ƒ  j | | d | d | d ƒ | ro| d j | ƒ n  |  j | d d d d ƒ} yR | j |
 | ƒ | j t j j |
 ƒ d |  j t j j | ƒ d |  j ƒ Wn n Xt j |
 d d d ƒ} | r!| j | | ƒ | j ƒ  n t ƒ  j	 d |
 ƒ | rœ|  j d d d | ƒ |  j d | ƒ \ } } | d k r…|  j | ƒ qœt ƒ  j	 d | ƒ n  ~ q Wd  S(   NiÿÿÿÿR×   R	   R-   R¥  Rt   s   No differences between s	    version s   \n and s   \n No changes appliedi    i   i   R»  RS  R  s   Error saving updated status to R*   Rˆ   R†   s"   Error saving updated snapshot for (   R«   RT  RÌ   Rò   R­   t
   differenceR©  t   status_differenceR   R   R8  R¥  R¦   t   removet
   status_addt   addR¬   R   R   R   Rr   R   R   RV  RW  R°   Rž   R®   (   Rs   R†   t   oldfilet	   new_indext   new_versionRÅ   t   recreate_snapshotR«   RT  t
   old_statusR×   t
   new_statust   param_diffst   diffsR¿   R-   R|   RY  t   indx0(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   copy_changes   sJ     	9 %  "c      	   C   s�  d d  l  } d d  l } d d  l } d } | sK | j j |  j d ƒ } n  | j j | ƒ rÃ | j j | ƒ \ } } xK | d k s– | j j |	 ƒ r¿ | d } | d t | ƒ d | }	 qx Wn  | së | j j | j	 d d d	 ƒ } n  | j j | ƒ sd d
 | d g S| j
 | d ƒ }
 |
 r@|
 j ƒ  } |
 j ƒ  n d d | g S| j d | | j ƒ } | s…t | j ƒ  ƒ d k r“d d | g S| j ƒ  \ } } } | j d |  j | ƒ } x< |  j D]1 } | | j d |  j | j d | | ƒ ƒ } qÊW| | } | d k r4d d  l } | j | |	 ƒ n  | j
 | d d d ƒ}
 |
 r…y |
 j | ƒ |
 j ƒ  Wq“d d | g SXn d d | g Sd | g S(   Niÿÿÿÿi    s
   index.htmli   R$  R   R'  R©  s   presentation_template.htmls   Template file s    does not existt   rs   Error reading template file s3   (.*)<CCP4MG_INDEX_LOOP>(.*)</CCP4MG_INDEX_LOOP>(.*)i   sT   Error could not find \n<CCP4MG_INDEX_LOOP>..</CCP4MG_INDEX_LOOP> in template file \ns   %TITLE%s   %REFERENCE%s   %INDEX%RS  R  s   Error writing to file s   Error opening file (   R   R   R"   R   R   R   R   R   R8  R;  R   R�  RW  t   searcht   DOTALLR³   t   groupsR#   RK   RX   RL   R«   R°  R�  (   Rs   R   Rz   R   R   R"   R|   t   rootR6   t   backup_fileRY  t   templatet   rxt   headt   loopR4   t   contentR¿   R«   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRy   Ü  sL    $ !
#"/
c         C   s   d |  _  d  S(   Ni   (   t   interruptSet(   Rs   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   setInterrupt  s    c         K   s�   | |  _  | |  _ | |  _ | r- | |  _ n	 d |  _ | |  _ d |  _ d |  _ |  j ƒ  t ƒ  j	 |  j |  j
 ƒ d |  _ d  S(   Nt	   Transformi    i   (   t   do_labelR  R	  R  t   transform_play_listt   transform_sceneR   t   setup_scene_transformRï   R÷   t   next_transformRq   (   Rs   Rø   R  R	  R
  R  R&   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR7     s    							
c   $      C   sK	  d } |  j  |  j } | d } d |  _ t ƒ  j d |  j | d d ƒƒ } |  j d | ƒ d d  l } | j ƒ  |  j	 | d ƒ } |  j	 | d	 ƒ } |  j	 | d
 ƒ } |  j	 | d ƒ }	 |  j	 | d ƒ }
 d d d d d d d g g } d } g  } g  } |  j
 | j d ƒ rP|  j
 | d d rP| j t d |  j
 | d d ƒ ƒ n  t ƒ  j | ƒ } | d | g g |  _ xs | d D]g } t ƒ  j d |  j | d d ƒƒ } |  j	 | d ƒ } t ƒ  j | ƒ } |  j j | | | g ƒ q‚W|  j	 | d ƒ d k r&d d d d d d d g g } n8|  j	 | d ƒ d k r |  j	 | d ƒ } t | t | ƒ d ƒ } |  j	 | d ƒ } d | d d d d d d g g } n¾ |  j	 | d ƒ d k rÖ|  j	 | d ƒ g } |
 } nˆ |  j	 | d ƒ d k r^g  } xg | D]\ } |  j d |  j | d d ƒƒ \ } } |  j	 | d ƒ } | rDd S| j | | g ƒ qûWn  | rmd } n d } t d | |  j ƒ } | d k rŸd } n  | rÆ| rÆd t | d d ƒ } n! | rçd t | d d ƒ } n  | d k rÿd |  _ n | | |  _ g  |  _ g  |  _ g  |  _ t | ƒ d k rût ƒ  j | d d ƒ d } x  | d D] } | | d } qbWxÕ t d t | ƒ d ƒ D]º } | | | d d | d t |
 d ƒ } d } d } | d k rç| } n  | t | ƒ d k r|	 } n  |  j j | | d | | d d g |  j d | d
 | d | ƒ g ƒ q”W|
 ræx‹ t t | ƒ d d d ƒ D]j } | | | d | d t |
 d ƒ } |  j j | | d | | d d g |  j d | ƒ g ƒ quWn  d |  _ d |  _ n‘ | s%d d d d d d d d g g } n  | t | ƒ } xB | D]: } |  j j | |  j d | d | d d d  d ƒ g ƒ q<Wd |  _  d |  _! g  }  t |  j ƒ d k rÎd } x# |  j d D] } | | d } q»Wxõ t d t |  j ƒ d ƒ D]× }! | |  j |! d d | d t |
 d ƒ } |  j" |  j |! d |  j |! d d d! | ƒ}  x6 | D]. }" |  j# |" ƒ s^|  j |" d  d  g ƒ q^q^W|  rð|  j d | d d ƒ }# |  j j |  |# g ƒ qðqðW|
 r,	x÷ t t |  j ƒ d d d ƒ D]Ó }! | |  j |! d | d t |
 d ƒ } |  j" |  j |! d |  j |! d d d! | ƒ}  x6 | D]. }" |  j# |" ƒ s[|  j |" d  d  g ƒ q[q[W|  rñ|  j d | d d ƒ }# |  j j |  |# g ƒ qñqñWq,	n^ | } x$ | D] }" |  j |" d  d  g ƒ qÛW|  r,	|  j j |  |  j d | d |
 ƒ g ƒ n  d |  _% d |  _& d |  _' d S("   Ni   i    R×   R	   R-   Rç   iÿÿÿÿR>   RA   R?   R@   R=   g        R�   R5   R<   RC   t   rotateg     €v@t   rockR;   g      à?R8   R7   t   glidei   i   i   g      ð?t   nstepst   deltat   centre_rockt   interpolate_status((   R$  R%  R`   RÌ   Rò   R­   R°   Rû   Rü   R   RY   R¡   Rä   Rº   t   get_status_transparencyt   status_listRn   R¢   RB  t	   read_viewRM   t	   maxframest   vpatternt   tpatternt   spatternR³   Rï   R  Rk  t	   get_stepst   vshott   vframet   tshott   tframet   get_changed_objectsR¦   R   t   sshott   sframet   iframe($   Rs   R.  R  RÄ   R  Rû   t
   max_repeatt   periodR?   R@   R=   t   transft   transform_rockt   interpolate_viewt   update_objectst   ntransparentR  t   statt	   frac_timeR;   R8   R-   RC   t   rock_centreR+  t   time_frac_totalt   ivt   vwt   nst   r_startt   r_endt   trt   update_dataobj_listt   stRÐ   t   pattern(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR&  4  sþ    
	$
($!$	'	 				  , 	 	&&#(&	 $8		 #/#	 &+#	 #+			c      
   C   sÏ  d d  l  } d d  l } |  j rJ t ƒ  j |  j ƒ d |  _ d |  _ d  St ƒ  d } d } |  j d |  _ |  j	 r– |  j
 d t |  j d ƒ ƒ n  |  j ræ|  j d |  _ |  j t |  j |  j d ƒ k r6d |  _ |  j d |  _ |  j t |  j ƒ k r6d |  _ t ƒ  j d |  j d d d d ƒ q6n  |  j |  j d |  j } x’ |  j |  j d D]y } | d r�| | d j ƒ  } n  | d r®| | d j ƒ  } n  | d j d | d d	 | d d
 | d |  j ƒ qfWn  |  j oø| d k } |  j s|  j	 s| r^| r5| j ƒ  } | j d ƒ n  | j d d ƒ | r^| j | ƒ q^n  |  j rŽd d  l }	 |	 j d ƒ }
 |	 j ƒ  } |	 j ƒ  } |  j d |  _ |  j t |  j |  j d ƒ k rd |  _ |  j d |  _ |  j t |  j ƒ k rd |  _ qn  |  j |  j d d } |  j |  j d d } |  j |  j d |  j } x) t d d ƒ D] } | d | |
 | <qhW| j  |
 ƒ x) t d d ƒ D] } | d | |
 | <q¡W| j  |
 ƒ |	 j j! | | ƒ |	 j j! | | ƒ } } t" | ƒ d k  rd  } nF | | k r;|	 j ƒ  j$ | | | ƒ } n |	 j ƒ  j$ | | | ƒ } | rm| j% | ƒ n  | j& d ƒ rÙg  } xD t d d ƒ D]3 } | j' d | | d | | | d | ƒ q’W| j( | ƒ n  | j& d ƒ r| j) d | | d | | d ƒ n  | j& d ƒ r|g  } xD t d d ƒ D]3 } | j' d | | d | | | d | ƒ q5W| j( | ƒ n  | j& d ƒ r³| j) d | | d | | d ƒ n  | j& d ƒ r| j& d ƒ r| j* d | | d | | d d | | d | | d ƒ n  | j& d ƒ rŽ| j& d ƒ rŽ| j& d ƒ rŽ| j+ | d d | | d | | d d | | d | | d ƒ qŽn  |  j, rg|  j- d |  _- |  j- t |  j, |  j. d ƒ k r
d |  _- |  j. d |  _. |  j. t |  j, ƒ k r
d |  _. q
n  |  j, |  j. d } |  j, |  j. d |  j- } | j/ | d | | d | | d | ƒ n  | j0 ƒ  | j1 t2 j3 d ƒ | ƒ | j1 t2 j3 d ƒ | ƒ | j1 t2 j3 d ƒ | ƒ |  j4 rè|  j4 d |  j5 |  j6 d ƒ } n  |  j7 rË|  j |  j7 d k rË|  j	 r#|  j
 d d ƒ n  t ƒ  j |  j ƒ d |  _ |  j6 t |  j5 ƒ d k  r‘|  j6 d |  _6 |  j8 ƒ  t ƒ  j9 |  j |  j: ƒ qË|  j; rËt< ƒ  j= ƒ  t> |  j; d g  |  j; d ƒ qËn  d  S(    Niÿÿÿÿi    i   R  R-   R  i   R  t   final_statust   fractiont   stept	   auto_savei   t   quatg{®Gáz„?t   rposi   g      ð?Rá  t   post   scalet   fog_neart   fog_fart
   slab_widtht   slab_offsett   slab_enabledt   PositionChangedt   QuatChangedt   ZoomChangedRÄ   R   (?   RA   Rû   R   Rï   Rð   R  Rq   t	   GLWIDGETSR>  R#  R
  R8  R5  R=  R³   R<  RÌ   Rã   R0  t   nofTransparentObjectst   movie_interpolationR]   t   transparencyt   setTransparencyRü   R3  t
   pygl_coordt   doubleat   QuatR8  R7  Rk  t   Setdvalt   Distancet   absR   t   Slerpt   setQuatNoUpdateR¡   Rn   t   setPositionNoUpdatet   setZoomNoUpdatet   setFogNearAndFart   setSlabR4  R:  R9  t   setRotationNoUpdatet   updateGLt   emitR    t   SIGNALR  R$  R%  R2  R&  R÷   R'  R	  t   DISPLAYTABLER@  RÉ   (   Rs   RA   Rû   RÜ  RE  t   fracRÐ   t   update_transparencyt   saved_transparencyRh  t   qPtrt
   start_quatt   end_quatt   startt   endRÁ  t   l1t   l2RW  RX  t   jRY  RA  R'   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR'  ç  sâ    				  	#		
 
 ! 	#	   ,	  +( +(C-M	#	 .
	#	 	
	c         C   s‚  d | d } d | d } g  } | d k rÜ d d  l  }	 d d  l }
 d } | r[ d } n d } xÂt d | d ƒ D]` } |	 j t | ƒ |	 j | | ƒ } | r¹ | j | | ƒ n | j | ƒ |
 j | ƒ } qu WnJt | | d ƒ } | rJ| rJ| r”d t | ƒ } x) t d | d ƒ D] } | j | ƒ q&Wx$ t d | ƒ D] } | j | ƒ qNWxß t d | d ƒ D] } | j | ƒ qyWq&x; t | d d d ƒ D]# } | j t | ƒ t | ƒ ƒ q«Wx4 t d | ƒ D]# } | j t | ƒ t | ƒ ƒ qâWxt | | d d ƒ D]# } | j t | ƒ t | ƒ ƒ q WnÜ| | d k r‡d t | | | ƒ d	 t | | ƒ } n d t | ƒ } | røx$ t d | ƒ D] } | j | ƒ q­W| r&x( t d | ƒ D] } | j | ƒ qÚWq&n.d } | rPxI t d | d ƒ D]1 } | j | ƒ | | t | ƒ t | ƒ } qWn  x: t | d | | d ƒ D] } | | } | j | ƒ qlW| rëxU t | | d | d ƒ D]5 } | | t | | ƒ t | ƒ } | j | ƒ q¯Wn  | r&x2 t | d d d ƒ D] } | j | | ƒ qWn  | d k r~xI t d | d ƒ D]1 } x( t d | ƒ D] } | j | | ƒ q\WqFWn  | S(
   Ni   t   sineiÿÿÿÿg        g       @g      ð?i   i    g      à?(	   t   mathR¬   Rk  t   sinRB  t   piRn   t   deepcopyR¢   (   Rs   R+  R)  R-  R,  R	   R?   R@   t   tmpR…  R¬   t
   last_phaseRY  RU  t   phaseRL  Ry  RM  t   incR£  (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR6  u  sz    	$    ! ! $  %"
"" c         C   s	  g  } | rt  ƒ  j | | ƒ d } g  } x | D] } | j | j ƒ q2 Wd d  l } xc | j ƒ  D]U } | j | j ƒ r¤ | j | | | j | | j g ƒ qe | j | d  d  g ƒ qe W| j d ƒ r*| j d ƒ r*t	 ƒ  j
 | d | d ƒ }	 |	 d r*| j t	 ƒ  |	 d |	 d g ƒ q*n  | j d ƒ r| j d ƒ rd d  l }
 x« | d j j ƒ  D]“ } | d j j | ƒ rh|
 j | ƒ rh|
 j | ƒ j
 | d j | | d j | ƒ }	 |	 d rû| j |
 j | ƒ |	 d |	 d g ƒ qûqhqhWqn  | S(   Ni    iÿÿÿÿRª  i   Rt   (   RÌ   R  Rn   R5   Rü  Rº   R¦   R   R¡   t   MGCOLOURt   compare_objectst   servicesR©  Rœ  R7  (   Rs   R  RS  R.  t   changed_listt   difobj_listt   difobj_name_listRÐ   Rü  R  R�  Ru   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR;  Á  s4     '	
'%
7c         C   s)  d d l  } i  } t j j | ƒ s. d | g Sy t | d ƒ } Wn d | g SXy | j | ƒ } Wn d | g SX| j d ƒ rÆ x4 d d d	 d
 d g D] } t | d | ƒ | | <q› Wd | g S| j d ƒ rx= d d d d d d d d g D] } | d j | ƒ | | <qô Wd | g Sd | g S(   s*   
    Read the view from a status file
    iÿÿÿÿNi   R  i   RC   RX  Rá  t   NEARt   FARRW  i    R  RY  RZ  R\  R[  R]  R^  R_  i   (	   RT  R   R   R   R   R\  R¡   R¡  R£   (   Rs   R×   RT  Rt   RY  R-   Ru   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR1  	  s*     

%
s   transform labelc         C   s·  d d  l  } d d  l } d d  l } d d  l } | r: d  St |  d ƒ sT |  j rˆ d d  l  } | j ƒ  |  _ | j  j j |  j ƒ n  t |  d ƒ rß t |  j	 ƒ d k rß x0 |  j	 D]" } | j
 |  j j | j ƒ  ƒ q¶ Wn  g  |  _	 d \ } }	 | j | j | |	 d ƒ | | j | |	 d ƒ ƒ }
 d |
 _ |  j j j |
 ƒ |  j	 j |
 ƒ |  j j j ƒ  t ƒ  j j } |  j j j t | d ƒ t | d	 ƒ t | d
 ƒ d | d ƒ d  S(   Niÿÿÿÿt   label_graphmodt   label_graphmod_obji    gš™™™™™¹?gÍÌÌÌÌÌì?g        t   familyt   weightt   slantt   24t	   underline(   gš™™™™™¹?gÍÌÌÌÌÌì?(   t   buildt   cprimRh  t   graphicsmodelR´   R•  R   Rn   R³   R–  t   DeleteTextLabelR+   t   GetIDt   BillBoardTextt	   Cartesiant   thisownt   add_text_primitiveRû   t   DTt   viewmenut   default_fontt   SetTextFontR8  (   Rs   R  R   Rœ  R�  Rh  Rž  R+   R!  R9   t   label_obt   font(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR
   	  s,    0$#		&c   
      C   s^  d d  l  } d d l m } m } | j j ƒ  } g  } x? | D]7 } | j t | ƒ j ƒ  ƒ s> | j	 t | ƒ ƒ q> q> W| j
 j | ƒ rZ| j
 j | ƒ } t | ƒ d k rd | d k r| j | d d ƒ rt |  j ƒ }	 |	 j | d d d | ƒqZt j d k r;t |  j ƒ }	 |	 j | d d	 d | ƒqZ| j j | j j | ƒ ƒ n  d  S(
   Niÿÿÿÿ(   RÃ  R    i   R   Rè   R/   RK   t   linux2t   movie_phonon(   R   RÐ  RÃ  R    t   QMoviet   supportedFormatsR¦   R8  t   lowerRn   R   R   R   R³   t
   FILEVIEWERRL   R   R    R!   t   QDesktopServicest   openUrlt   QUrlt   fromLocalFile(
   Rs   R×   R   RÃ  R    t   image_formats_ct   image_formatst   imt
   name_splitt   viewer(    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRF  J	  s     9N(   s   .mpgs   .mp4s   .avi(   s   .mpgs   .mp4s   .avi(   s   .gifs   .mpgs   .mp4s   .avi(?   t   __name__t
   __module__R   R   t   saved_program_statusRA  t   render_quality_menut   render_quality_aliasR   t   movie_encoder_menut   movie_encoder_aliast   movie_ext_menut   movie_encoder_size_multipleR4  R3  Rj   Rw   R   RÉ   RË   RÑ   RÒ   R°   Rí   Rù   Rö   R¸   R  R¹   Rµ   R<  RN  R©   R   R   R™   R5  R—  R˜  R™  R›  RŸ  R   RU  R¤  Rž   R­   R±   Rh  R  R  R¤   R  Ry   R!  R7   R&  R'  R6  R;  R1  R
  RF  (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR   v   sÄ   
'
)		·		=		&6	o#¡p					
		&	J(	t;;>		³	ŽL@*R  c           B   s)   e  Z d Z d  „  Z d „  Z d „  Z RS(   c         C   s   |  t  _ |  j ƒ  |  _ d  S(   N(   R  R   t   create_movie_preferencesR7  (   Rs   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRw   k	  s    	c         C   s   |  j  S(   N(   R7  (   Rs   (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR  q	  s    c         C   sq  d d  l  } | j 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 i
 t d t d  d! ƒ d	 6t d t d  d" ƒ d 6t d t d  d# ƒ d
 6t d t d  d$ ƒ d 6t d t d  d% ƒ d 6t d t d  d& ƒ d 6t d t d  d' ƒ d 6t d t d  d( ƒ d 6t d t d  d) ƒ d 6t d d* d  d+ d, d- ƒ d 6ƒ S(.   NiÿÿÿÿR5   R  t   helps   movies#moviesRK   s   Movie Compilet   guiR`  Rf  Rd  t
   player_exet   show_progresst   defaults   -quality 100t   convert_commands=   -f mpeg -vcodec mpeg1video -ar 48000 -b 7000000 -ab 192000 -yt   ffmpeg_commands2   -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=1800t   mencoder_commands	   -ovc copyt   mencoder_merge_commands   -loop 0t   player_commandRI   RH   RJ   t   mplayeri   t
   definitiont   typeR
  s   Convert executable(Imagemagick)s   Convert argumentss   Ffmpeg executables   Ffmpeg argumentss   mencoder executables   Mencoder argumentss   Mencoder merge argumentss   mpeg player executables   mpeg player argumentst   bools   Show progresst   stylet   checkbox(   R�  t   ParamsManagert   dictR8  (   Rs   R�  (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyRÃ  v	  s8    	
N(   Rº  R»  R   R   Rw   R  RÃ  (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyR  c	  s   		(   t   __doc__R   R    R   RÐ  R    R·  R   R±  R.   R   R   R  (    (    (    sC   /opt/xtal/ccp4-6.5-linux32/lib/py2/ccp4mg/python/ui/presentation.pyt   <module>   s$   $
>ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ õ