
    pj                     ^    d dl mZ d dlmZ d dlmZmZmZm	Z	m
Z
mZ ddlmZ  G d de      Zy)	    )simple)register)reference_idinitialize_serializers	serializeserialize_widgetextract_array_hashSynchronizationContext   )ParaViewWebProtocolc                        e Zd Z fdZ ed      dd       Z ed      d        Z ed      d        Z ed      	 	 	 dd	       Z ed
      dd       Z	 xZ
S )ParaViewWebLocalRenderingc                 p    t         |           t                t               | _        i | _        d| _        y Nr   )super__init__r   r
   contexttracking_viewsmtime)selfkwargs	__class__s     a/DATA/.local/lib/python3.12/site-packages/trame_vtk/modules/paraview/protocols/local_rendering.pyr   z"ParaViewWebLocalRendering.__init__   s-     -/ 
    zviewport.geometry.array.getc                     |r+| j                  | j                  j                  ||            S | j                  j                  ||      S )N)addAttachmentr   get_cached_data_array)r   	data_hashbinarys      r   	get_arrayz#ParaViewWebLocalRendering.get_array   sE    %%229fE  ||11)VDDr   z#viewport.geometry.view.observer.addc                 d     j                  |      sdd|z  iS j                         d fd	 j                  vr6 fd} j                  j	                  d|      }|gdd j                  <   n j                     dxx   dz  cc<    j                  d	 d
             d
dS )NerrorUnable to get view with id %sc                     t        j                         j                  |       }| rdnj                  |d<   xj                  dz  c_        |S )Nr   r   r   )r   Renderget_view_stater   )new_subscriptionstate_to_returnreal_view_ids_viewr   s     r   push_geometryzBParaViewWebLocalRendering.add_view_observer.<locals>.push_geometry*   sG    MM&!"11,@PQO,<q$**OG$JJ!OJ""r   c                  2    j                  d              S )N#viewport.geometry.view.subscription)publish)___r+   r   s     r   observer_callbackzFParaViewWebLocalRendering.add_view_observer.<locals>.observer_callback3   s    ||9!O r   UpdateEventr   )tagsobserverCountr4   r-   T)successviewIdF)get_viewGetGlobalIDAsStringr   appAddObserverr.   )r   view_idr1   tagr+   r)   r*   s   `   @@@r   add_view_observerz+ParaViewWebLocalRendering.add_view_observer"   s    w'<wFGG113	# t222 ((&&}6GHC:=QR0SD- -o>!C>:M$<OP<88r   z&viewport.geometry.view.observer.removec                 <   | j                  |      }|sdd|z  iS |j                         }d }|| j                  v r| j                  |   }|sdd|z  iS |dxx   dz  cc<   |d   dk  r2|d   D ]  }| j                  j	                  |        | j                  |= dd	iS )
Nr"   r#   z'Unable to find subscription for view %sr4   r   r   r3   resultr5   )r8   r9   r   r:   RemoveObserver)r   r<   r*   r)   observer_infor=   s         r   remove_view_observerz.ParaViewWebLocalRendering.remove_view_observerC   s    w'<wFGG1134... //=MFUVVo&!+&)Q.$V,'', -##L1)$$r   z viewport.geometry.view.get.statec                     | j                  |      }|sdd|z  iS | j                  j                  |       |j                         }|j	                         }t        d ||| j                  d      }	t        |      |j                  j                         t        |j                               d|	d<   |ri }
|
|	d<   |D ]  }t        |
|        n	|rddi|	d<   | j                  j                  d       | j                  j                          |	r|	S y )	Nr"   r#   r   )vtkRefIdcenterOfRotationcameraextra	behaviorsautoOrientationF)r8   r   set_ignore_last_dependenciesGetRenderWindowr9   r   r   CenterOfRotationGetDataGetActiveCamerar   check_for_arrays_to_release)r   r<   r'   widgetsorientation_axisr   r*   render_windowrender_window_idview_instancerI   widgets               r   r&   z(ParaViewWebLocalRendering.get_view_state\   s    w'<wFGG112BC ..0!557!-!14<<
 %]3 & 7 7 ? ? A"6#9#9#;<"
g I)2M+&! F3 "!1*M+& 	11%8002  r   z!viewport.geometry.view.get.exportc           
           | j                   |fd||d|}i }t        |      D ]?  }|j                  d      }t        di |d| j                  j                  |d      i||<   A t        ||      S )NT)r'   rQ   rR   hashcontentF)hashesscene )r&   r	   getdictr   r   )	r   r<   rQ   rR   r   scene_descriptionrZ   entryr   s	            r   get_standalone_statez.ParaViewWebLocalRendering.get_standalone_state   s    /D//
!-	

 
 '(9:E		&)I $ !!!%!C!CIu!U!F9 ; 6):;;r   r7   )FNr   r   )__name__
__module____qualname__r   
export_rpcr    r>   rC   r&   ra   __classcell__)r   s   @r   r   r      s     -.E /E 569 79@ 89% :%0 23 + 4+Z 34< 5<r   r   N)paraviewr   wslinkr   re   !trame_vtk.modules.vtk.serializersr   r   r   r   r	   r
   web_protocolr   r   r\   r   r   <module>rk      s)     )  .J< 3 J<r   