ó
u™xTc           @   sÍ   d  d l  m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d l	 m
 Z
 d  d l Z d  d l Z d e j f d „  ƒ  YZ d	 e j f d
 „  ƒ  YZ d „  Z e d k rÉ e e j d ƒ n  d S(   iÿÿÿÿ(   t   division(   t
   simulation(   t	   wx_viewer(   t   minimum_covering_spheret	   sphere_3d(   t   flexNt   viewerc           B   s)   e  Z d  „  Z d „  Z e e d „ Z RS(   c         O   s   t  t |  ƒ j | | Ž  d  S(   N(   t   superR   t   __init__(   t   selft   argst   kwds(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyR      s    c            s–  t  ƒ  ˆ  _ t  ƒ  ˆ  _ t j ˆ  j j ƒ ˆ  _ ˆ  j j t j ˆ  j j ƒ ƒ ˆ  j j t j ˆ  j j ƒ ƒ ‡  f d †  } g  ˆ  _	 t
 ˆ  j j ƒ } d } xŠ d d f d d f d d f g D]g \ } } xN t | ƒ D]@ } | | | | | d | | ƒ ˆ  j	 j | t | ƒ ƒ qÙ W| | 7} qÀ Wt ˆ  j d d ƒ} t d	 | j ƒ  d
 | j ƒ  d ƒ ˆ  _ t ˆ  _ t ˆ  _ d ˆ  _ d GHd GHd GHd  S(   Nc            s-   |  | f } ˆ  j  j | ƒ | ˆ  j | <d  S(   N(   t   line_i_seqst   appendt   line_colors(   t   it   jt   colort   line(   R	   (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyt   add_line   s    i    t   Si   t   Ct   Wt   epsilong{®Gáz„?t   centert   radiusgÍÌÌÌÌÌô?i   s-   Press and hold Tab key to run the simulation.s"   Press Shift-Tab to increase speed.s"   Press Ctrl-Tab  to decrease speed.(   i   i    i    (   i    i    i   (   i    i   i    (   R   t   sim_ast   sim_acR   t   vec3_doublet   sites_cart_moved_F01t   pointst   extendt   sites_cart_wells_F01t   labelst   lent   sites_cart_F1t   xrangeR   t   strR   R   R   R   t   Falset!   flag_show_minimum_covering_spheret   flag_show_rotation_centert   steps_per_tab(   R	   R   t   nt   offst   prefixR   R   t   mcs(    (   R	   sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyt   set_points_and_lines   s.    	. "			c         C   s  | s | rW | r. t  d |  j d ƒ |  _ n t d |  j d ƒ |  _ d G|  j GHd  Sd } x„ |  j |  j g D]p } | |  j k } x- t |  j ƒ D] } | j d d d | ƒ q• Wx( | j D] } | |  j | <| d 7} q¿ Wqp Wd  |  _
 d  |  _ d  |  _ |  j ƒ  d  S(	   Ni   i   i   s   Steps per Tab:i    t   delta_tg{®Gáz„?t   use_classical_accel(   t   minR)   t   maxR   R   R$   t   dynamics_stepR   R   t   Nonet   labels_display_listt   lines_display_listt   points_display_listt   OnRedraw(   R	   t
   shift_downt   control_downt   ipt   simR0   t   idst   site(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyt   tab_callback*   s(    				(   t   __name__t
   __module__R   R.   R&   R?   (    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyR   	   s   		t   Appc           B   s   e  Z d  „  Z d „  Z RS(   c         C   s5   t  | ƒ d k s t ‚ t t |  ƒ j d d ƒ d  S(   Ni    t   titles   Free Motion Viewer(   R"   t   AssertionErrorR   RB   R   (   R	   R
   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyR   C   s    c         C   sw   t  j t  j ƒ } t |  j d d ƒ|  _ |  j j ƒ  | j |  j t  j t  j ƒ |  j j	 | ƒ | j
 |  j ƒ d  S(   Nt   sizeiX  (   iX  iX  (   t   wxt   BoxSizert   VERTICALR   t   framet   view_objectsR.   t   Addt   EXPANDt   SetSizert   SetSizeHints(   R	   t   box(    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyt   init_view_objectsG   s    (   R@   RA   R   RP   (    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyRB   A   s   	c         C   s   t  |  ƒ j ƒ  d  S(   N(   RB   t   MainLoop(   R
   (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyt   runO   s    t   __main__i   (   t
   __future__R    t2   scitbx.rigid_body.proto.free_motion_reference_implR   t   gltbxR   t   scitbx.mathR   R   t   scitbx.array_familyR   RF   t   syst   show_points_and_lines_mixinR   RB   RR   R@   t   argv(    (    (    sT   /public2/ftp/pub/ccp4/6.5/ccp4-6.5/lib/py2/scitbx/rigid_body/proto/wx_free_motion.pyt   <module>   s   8	