
    pj%                         d dl Z ddlmZ ddlmZ  e j                  e      Zej                  e j                         d Z G d d      Zi ad Zd	 Zy)
    N   )
HybridView)meshc                       y N )featuress    P/DATA/.local/lib/python3.12/site-packages/trame_vtk/modules/paraview/__init__.pyhas_capabilitiesr   
   s        c                       e Zd Zd Zd Zd Zd ZddZ	 	 	 	 ddZddZ	dd	Z
d
 Zd ZddZd Zd Zd ZddZd Z	 	 	 	 	 	 ddZd Zy)Helperc                 8   d | _         || _        i | _        	 ddlm} ddlm}  |       | _        | j                  j                  d       || _	        t        | _        |j                  | j                         y # t        $ r t        j!                  d       Y y w xY w)Nr   )servermanager)vtkPVWebApplicationz%*** ERROR: ParaView is not available!)_root_protocol_trame_server_hybrid_viewsparaviewr   paraview.modules.vtkPVClientWebr   _pv_coreSetImageEncoding_servermanagermesh_vtk	_mesh_vtkadd_protocol_to_configureconfigure_protocolImportErrorlogger	exception)selftrame_serverr   r   s       r
   __init__zHelper.__init__   s    ")	L.K 01DMMM**1-"/D%DN 2243J3JK  	FDE	Fs   A8 8BBc                     t        |  y r   )r   )r!   r	   s     r
   r   zHelper.has_capabilities"   s
    (#r   c                 (    |r|j                         S y)N )GetGlobalIDAsString)r!   pv_proxys     r
   idz	Helper.id%   s    //11r   c                     	 t        |      }|dk  ry | j                  j                  | j                  j                  j
                  j                  |            S # t        $ r Y y w xY wNr   )int
ValueErrorr   _getPyProxyActiveConnectionSessionGetRemoteObject)r!   pv_ids     r
   objectzHelper.object*   si    	JE A:""..0088HHO
 	
	  		s   A 	A'&A'Nc                     |j                          |j                         }|j                         }| j                  ||||      S )N)field_to_keeppoint_arrayscell_arrays)UpdatePipelineGetClientSideObject	GetOutputr   )r!   proxyr5   r6   r7   sourcedatasets          r
   r   zHelper.mesh5   sL    **,""$~~'%#	  
 	
r   c                     |j                   }d|_         	 |j                          ||_         | j                  j                  d| j	                  |      |||      }|rd|j                  di       d<   |S # ||_         w xY w)N   z viewport.geometry.view.get.statewidgetsorientation_axisextraresetCamera)SuppressRenderingStillRenderr   protocol_callr)   
setdefault)	r!   
view_proxyreset_camera	new_staterA   rB   kwargstmpscene_states	            r
   scenezHelper.scene@   s     **'(
$	/""$+.J(((66.GGJ- 7 
 ABK""7B/> ,/J(s   A4 4	A=c                 ^    | j                   j                  d| j                  |      ||      S )Nz!viewport.geometry.view.get.exportr@   r   rG   r)   )r!   render_windowrA   rB   rL   s        r
   exportzHelper.export\   s5    !!///GGM"-	 0 
 	
r   c                     |j                  d      rd|_        |r+| j                  j                  d| j	                  |             | j                  j                  dd| j	                  |      i      S )NEnableRenderOnInteractionr   zviewport.camera.resetzviewport.image.pushview)GetPropertyValuerU   r   rG   r)   )r!   rI   rJ   s      r
   
push_imagezHelper.push_imaged   sl    &&'BC34J0,,')< !!//!FDGGJ,?#@
 	
r   c                 X    | j                   j                  d| j                  |            S )Nzviewport.image.push.quality.getrQ   r!   rR   s     r
   get_current_image_qualityz Helper.get_current_image_qualityq   s)    !!//-tww}/E
 	
r   c                 ^    | j                   j                  d| j                  |      ||       y )Nzviewport.image.push.qualityrQ   )r!   rR   qualityratios       r
   set_image_qualityzHelper.set_image_qualityv   s+    (()GGM"		
r   c                     | j                   j                  d|       | j                  |||       | j                   j                  d| j                  |             y )Nz viewport.image.animation.fps.maxzviewport.image.animation.start)r   rG   r_   r)   )r!   rR   fpsr]   r^   s        r
   start_animationzHelper.start_animation~   sM    (()KSQ}gu=((,dggm.D	
r   c                 Z    | j                   j                  d| j                  |             y )Nzviewport.image.animation.stoprQ   rZ   s     r
   stop_animationzHelper.stop_animation   s$    ((+TWW]-C	
r   c           	      
   |j                          t        |j                        |j                  |j                  t        |j
                        |j                  t        |j                        t        |j                        dS )N
focalPointparallelProjectionparallelScaleposition	viewAngleviewUpcenterOfRotation)	UpdatePropertyInformationlistCameraFocalPointCameraParallelProjectionCameraParallelScaleCameraPositionCameraViewAngleCameraViewUpCenterOfRotation)r!   rI   s     r
   camerazHelper.camera   sk    ,,.z::;","E"E';;Z667#33:223 $Z%@%@ A
 	
r   c                 r    dddddddd}|j                         D ]  \  }}||v st        ||||           y )	Nrp   rq   rr   rs   rt   ru   rv   rf   )itemssetattr)r!   rI   rL   key_to_attrkeyattrs         r
   
set_camerazHelper.set_camera   sN    ,"<2(*$ 2
 %**,ICf}
D&+6 -r   c                 *     | j                   ||fi |S r   )add_hybrid_view)r!   rI   namerL   s       r
   rV   zHelper.view   s    #t##D*???r   c                    || _         ddlm}m}m}m} | j                   j                  d| j                         | j                   j                   |              | j                   j                   |              | j                   j                   |d             | j                   j                   |              ddl	m
}  |        y )Nr?   )ParaViewWebLocalRenderingParaViewWebMouseHandlerParaViewWebPublishImageDeliveryParaViewWebViewPortappF)decode)"apply_default_interaction_settings)r   	protocolsr   r   r   r   setSharedObjectr   registerLinkProtocolcorer   )r!   protocolr   r   r   r   r   s          r
   r   zHelper.configure_protocol   s    &	
 	
 	++E4==A 	001H1JK001D1FG00+59	

 	001J1LM 	=*,r   c	           
          || j                   v rJ|r| j                   |   j                  |       nt        d| d       t        d       | j                   |   S t        | |||||||      }
|
| j                   |<   |
S )NzA view with name (z) is already registeredz => returning previous one)r   replace_viewprintr   )r!   r   rV   modeinteractive_ratiointeractive_qualitystill_ratiostill_qualityforce_replacerL   view_helpers              r
   r   zHelper.add_hybrid_view   s     4%%%""4(55d;*4&0GHI23%%d++ 	
 $/4 r   c                 X    || j                   v r| j                   j                  |       y y r   )r   pop)r!   r   s     r
   remove_hybrid_viewzHelper.remove_hybrid_view   s)    4%%%""4( &r   )NNN)FFNr   r+   )F)   d   r?   )rV   )localr?   <   r?   b   F)__name__
__module____qualname__r#   r   r)   r3   r   rO   rS   rX   r[   r_   rb   rd   rw   r~   rV   r   r   r   r   r   r
   r   r      s    L&$
	
	
 8









7@-@ B)r   r   c                 <    t        |       t        | j                  <   y r   )r   HELPERS_PER_SERVERr   )r"   rL   s     r
   setupr      s    ,2<,@|(()r   c                 @    t         j                  | j                        S r   )r   getr   )servers    r
   
get_helperr      s    !!&++..r   )loggingvtk.corer   vtk.serializers.meshr   r   	getLoggerr   r   setLevelDEBUGr   r   r   r   r   r   r   r
   <module>r      sU     ! 3			8	$  	Y) Y)~  A
/r   