
    +jv                        d Z ddlmZmZmZ ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddlZddlmZ ddlmZ ddlmZmZmZmZ 	 ddlmZ ddlmZ dd	lmZ n# e$ r  e            w xY w G d
 de          Z G d de          Z G d de          Z  G d de          Z! G d de          Z" G d de          Z# G d de          Z$ G d de          Z%dS )zprotocols is a module that contains a set of VTK Web related
protocols that can be combined together to provide a flexible way to define
very specific web application.
    )absolute_importdivisionprint_functionN)vtkWebInteractionEvent)WebDependencyMissingError)serializeInstanceSynchronizationContextgetReferenceIdinitializeSerializers)schedule_callback)register)LinkProtocolc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
vtkWebProtocolc                 ,    |                      d          S )Napp)getSharedObjectselfs    R/DATA/AppData/hermes/venv/lib/python3.11/site-packages/vtkmodules/web/protocols.pygetApplicationzvtkWebProtocol.getApplication#   s    ##E***    c                     d S N )r   r   s     r   setApplicationzvtkWebProtocol.setApplication'   s    r   c                     t          |          }|dk    rdS |                                                                                     |          S )z{
        Maps global-id for a vtkObject to the vtkObject instance. May return None if the
        id is not valid.
        r   N)intr   GetObjectIdMapGetVTKObjectr   ids     r   mapIdToObjectzvtkWebProtocol.mapIdToObject*   sI    
 WW774""$$3355BB2FFFr   c                 t    |                                                                                      |          S )z5
        Return the id for a given vtkObject
        )r   r   GetGlobalIdr   objs     r   getGlobalIdzvtkWebProtocol.getGlobalId4   s0     ""$$3355AA#FFFr   c                 t    |                                                                                      |          S )zd
        Delete the given vtkObject from the objectIdMap. Returns true if delete succeeded.
        )r   r   
FreeObjectr&   s     r   
freeObjectzvtkWebProtocol.freeObject:   s0     ""$$3355@@EEEr   c                 t    |                                                                                      |          S )z
        Delete the vtkObject corresponding to the given objectId from the objectIdMap.
        Returns true if delete succeeded.
        )r   r   FreeObjectByIdr!   s     r   freeObjectByIdzvtkWebProtocol.freeObjectById@   s0    
 ""$$3355DDRHHHr   c                     |                      |          }|s9|                                                                                     d          }|st	          d|z            |S )z
        Returns the view for a given view ID, if vid is None then return the
        current active view.
        :param vid: The view ID
        :type vid: str
        VIEWzno view provided: %s)r#   r   r   GetActiveObject	Exception)r   vidvs      r   getViewzvtkWebProtocol.getViewG   sl     s## 	O##%%4466FFvNNA 	:2S8999r   c                 z    |                                                                                      d|           dS )z<
        Set a vtkRenderWindow to be the active one
        r0   N)r   r   SetActiveObject)r   views     r   setActiveViewzvtkWebProtocol.setActiveViewX   s8     	,,..>>vtLLLLLr   N)__name__
__module____qualname__r   r   r#   r(   r+   r.   r5   r9   r   r   r   r   r   "   s        + + +  G G GG G GF F FI I I  "M M M M Mr   r   c                   ^    e Zd Z ed          d             Z ed          d             ZdS )vtkWebMouseHandlerzviewport.mouse.interactionc                 b   |                      |d                   }d}|d         r|t          j        z  }|d         r|t          j        z  }|d         r|t          j        z  }d}|d         r|t          j        z  }|d         r|t          j        z  }|d         r|t          j        z  }|d	         r|t          j        z  }t                      }|	                    |           |
                    |           d
|v r|                    |d
                    d|v r|                    |d                    d|v r|                    |d                    |d         dk    r|                    d           |                                                     ||          }~|d         dk    r'|                                                     d           |d         dk    r'|                                                     d           |r'|                                                     d           |S )z6
        RPC Callback for mouse interactions.
        r8   r   
buttonLeftbuttonMiddlebuttonRightshiftKeyctrlKeyaltKeymetaKeyxyscrollactiondblclick   downStartInteractionEventupEndInteractionEventUpdateEvent)r5   r   LEFT_BUTTONMIDDLE_BUTTONRIGHT_BUTTON	SHIFT_KEYCTRL_KEYALT_KEYMETA_KEY
SetButtonsSetModifiersSetXSetY	SetScrollSetRepeatCountr   HandleInteractionEventInvokeEvent)r   eventr8   buttons	modifierspveventretVals          r   mouseInteractionz#vtkWebMouseHandler.mouseInteractiong   sG   
 ||E&M** 	:-99G  	<-;;G 	;-::G	 	:/99I 	9/88I? 	8/77I 	9/88I(**7###Y'''%<<LLs$$$%<<LLs$$$ueHo...?j((""1%%%$$&&==dGLL?f$$!!--.EFFF?d""!!--.CDDD 	=!!--m<<<r   zviewport.mouse.zoom.wheelc                    d|d         v r'|                                                      d           |                     |d                   }|rd|v rd|d         dz  z
  }|                                                                                                }|                                |                                fdt          d	          D             |	                    |           |                                |
                    fd
t          d	          D                        |                                 d|d         v r)|                                                      d           d S d S )NStarttyperN   r8   spinY      ?g      $@c                 2    g | ]}|         |         z
  S r   r   ).0ifpposs     r   
<listcomp>z:vtkWebMouseHandler.updateZoomFromWheel.<locals>.<listcomp>   s%    666RUSV^666r      c                 2    g | ]}|         |         z   S r   r   )rm   rn   deltapos2s     r   rq   z:vtkWebMouseHandler.updateZoomFromWheel.<locals>.<listcomp>   s&    !G!G!G$q'E!H"4!G!G!Gr   EndrP   )r   r`   r5   GetRenderersGetFirstRendererGetActiveCameraGetFocalPointGetPositionrangeZoomSetFocalPointModified)	r   ra   renderWindow
zoomFactorcamerart   ro   rp   ru   s	        @@@@r   updateZoomFromWheelz&vtkWebMouseHandler.updateZoomFromWheel   s   eFm##!!--.EFFF||E&M22 	$Gu,,uW~44J!..00AACCSSUUF%%''B$$&&C66666U1XX666EKK
###%%''D  !G!G!G!G!GeAhh!G!G!GHHH!!###E&M!!!!--.CDDDDD "!r   N)r:   r;   r<   	exportRpcrf   r   r   r   r   r>   r>   f   sf        Y+,,0 0 -,0d Y*++E E ,+E E Er   r>   c                       e Zd Z ed          d             Z ed          d             Z ed          d             Z ed          dd	            Zd
S )vtkWebViewPortzviewport.camera.resetc                    |                      |          }|                                                                }|                                 |                                                     |           |                                                     d           t          |                     |                    S )z/
        RPC callback to reset camera.
        rQ   )	r5   rw   rx   ResetCamerar   InvalidateCacher`   strr(   )r   viewIdr8   renderers       r   resetCamerazvtkWebViewPort.resetCamera   s    
 ||F##$$&&7799--d333))-8884##D))***r   z+viewport.axes.orientation.visibility.updatec                    |                      |          }|                                                     |           |                                                     d           t	          |                     |                    S )z<
        RPC callback to show/hide OrientationAxis.
        rQ   r5   r   r   r`   r   r(   r   r   showAxisr8   s       r   updateOrientationAxesVisibilityz.vtkWebViewPort.updateOrientationAxesVisibility   s    
 ||F## 	--d333))-8884##D))***r   z&viewport.axes.center.visibility.updatec                    |                      |          }|                                                     |           |                                                     d           t	          |                     |                    S )zA
        RPC callback to show/hide CenterAxesVisibility.
        rQ   r   r   s       r   updateCenterAxesVisibilityz)vtkWebViewPort.updateCenterAxesVisibility   r   r   zviewport.camera.updateTc                    |                      |          }|                                                                                                }|                    |           |                    |           |                    |           |rP|                                                     |           |                                 	                    d           d S d S )NrQ   )
r5   rw   rx   ry   r~   	SetViewUpSetPositionr   r   r`   )r   view_idfocal_pointview_uppositionforceUpdater8   r   s           r   updateCamerazvtkWebViewPort.updateCamera   s    ||G$$""$$5577GGII[)))!!!8$$$ 	=!!11$777!!--m<<<<<	= 	=r   NT)r:   r;   r<   r   r   r   r   r   r   r   r   r   r      s        Y&''+ + ('+ Y<==
+ 
+ >=
+ Y788
+ 
+ 98
+ Y'((
= 
= 
= )(
= 
= 
=r   r   c                   6    e Zd Z ed          d             ZdS )vtkWebViewPortImageDeliveryzviewport.image.renderc                 v   t          t          t          j                    dz                      }|                     |d                   }|                                d         |                                d         g}||                    d|          k    }|r5|d         }|d         dk    r!|d         dk    r|                    |           d}|rd|v r|d         }d}|rd|v r|d         }d}|rd	|v r|d	         }i }	|                                 }
|dk    r|
                    |           |
	                    |||          |	d
<   d}|rt          |                                          |k    rw|ddgk    ro|dk    ri|
                    |           |
	                    |||          |	d
<   |dz  }|r3t          |                                          |k    r|ddgk    r|dk    i|
                    |          |	d<   |
                                |	d<   |                                d         |                                d         g|	d<   d|	d<   t          |                     |                    |	d<   ||	d	<   t          t          t          j                    dz                      }||z
  |	d<   |	S )N
        RPC Callback to render a view and obtain the rendered image.
          r8   r      sizemtimed   quality	localTimeimage
   stalejpeg;base64format	global_idworkTime)r   roundtimer5   GetSizegetSetSizer   r   StillRenderToStringlistGetHasImagesBeingProcessedGetLastStillRenderToMTimer   r(   )r   options	beginTimer8   r   resizetr   r   replyr   triesendTimes                r   stillRenderz'vtkWebViewPortImageDelivery.stillRender   s   
 dikkD01122	||GFO,,q!4<<>>!#45VT222 	#6?DAw{{tAw{{T""" 	!w')) A 	)yG++i(G	 	-{g--,I!!##66%%%00q'BBg  	dllnn--55$1a&..UUVYY%%% 44T1gFFE'NQJE  	dllnn--55$1a&..UUVYY
 77==g6688g*DLLNN1,=>f'h !1!1$!7!788k&keDIKK$.//00#i/jr   N)r:   r;   r<   r   r   r   r   r   r   r      s9        Y&''- - ('- - -r   r   c                       e Zd Zd! fd	Zd"dZd Zd Z ed          d#d	            Z ed
          d             Z	 ed          d$d            Z
 ed          d$d            Z ed          d             Zd Z ed          d             Z ed          d             Z ed          d%d            Z ed          d             Z ed          d             Z ed          d              Z xZS )&vtkWebPublishImageDeliveryTc                     t          t          |                                            i | _        d| _        d| _        d| _        || _        g | _        d| _	        d| _
        d| _        d S )Nr   g      ?g      >@g      (@)superr   __init__trackingViewslastStaleTimestaleHandlerCountdeltaStaleTimeBeforeRenderdecodeviewsInAnimationstargetFrameRateminFrameRatemaxFrameRate)r   r   	__class__s     r   r   z#vtkWebPublishImageDelivery.__init__0  sm    ($//88:::!"*-'!##  r   Fc                    	  j         vrd S  j                  d         sd S |st           j                  dk    rd S d j                  vrD                               }t	          |                                           j                  d<   d j                  vrd j                  d<    j                  d         	 j                  d         } j                  d         }	fd j                  d         D             }                     |||d	          }|d
         }|d         rx j        rt          j	        |d                   |d<    
                    |d                   |d<   d|d<   |d          j                  d<   |d<                        d|           |rPt          j                     _         j        dk    r+ xj        dz  c_        t           j         fd           d S d S d _        d S )Nenabledr   originalSizeratior   r   r   c                 4    g | ]}t          |z            S r   r   rm   sr   s     r   rq   z9vtkWebPublishImageDelivery.pushRender.<locals>.<listcomp>P  s#    PPP1AIPPPr   )r8   r   r   r   r   r   jpegr   r"   z viewport.image.push.subscriptionc                  .                                    S r   renderStaleImager   vIds   r   <lambda>z7vtkWebPublishImageDelivery.pushRender.<locals>.<lambda>g  s    T=R=RSV=W=W r   )r   lenr   r5   r   r   r   r   base64standard_b64decodeaddAttachmentpublishr   r   r   r   r   )
r   r   ignoreAnimationr8   r   r   r   r   r   r   s
   ``       @r   
pushRenderz%vtkWebPublishImageDelivery.pushRender<  sS   d(((F!#&y1 	F 	3t'=#>#>#B#BF!3C!888<<$$D6:4<<>>6J6JDs#N3$,S111/0Ds#G,"3'0"3'0$S))4PPPP(:3(?(OPPP  5WdKK
 
 g> 	D{ K!'!:5>!J!Jg!//g??E'N$E(O/4W~Ds#G,E$KLL;UCCC 	#!%D%**&&!+&&!35W5W5W5W5W     +* "#Dr   c                      xj         dz  c_          j        dk    rnt          j                     j        z
  }| j        k    r                                d S  xj         dz  c_         t           j        |z
  dz    fd           d S d S )Nr   r   MbP?c                  .                                    S r   r   r   s   r   r   z=vtkWebPublishImageDelivery.renderStaleImage.<locals>.<lambda>w  s    D11#66 r   )r   r   r   r   r   r   )r   r   rt   s   `` r   r   z+vtkWebPublishImageDelivery.renderStaleImagel  s    !#""IKK$"44E777$$$$$&&!+&&!3e;eC66666     #"r   c                     t           j                  dk    rd S t          j                    d j        z  z   } j        D ]}                     |d           |t          j                    z  } j         j        k    r j         _        |dk     rB|dk     rd _         j         j        k    r xj        dz  c_        t          d fd           d S  j         j        k     r|dk    r xj        dz  c_        t          | fd	           d S )
Nr   rk   Tg      r   r   c                  ,                                      S r   animater   s   r   r   z4vtkWebPublishImageDelivery.animate.<locals>.<lambda>  s    T\\^^ r   g{Gzt?c                  ,                                      S r   r   r   s   r   r   z4vtkWebPublishImageDelivery.animate.<locals>.<lambda>  s    t||~~ r   )r   r   r   r   r   r   r   r   )r   nextAnimateTimer   s   `  r   r   z"vtkWebPublishImageDelivery.animatez  s=   t%&&!++F)++d.B(BB) 	' 	'COOC&&&&49;;&$"333#'#4D Q%%'($#d&777$$+$$e%;%;%;%;<<<<<#d&777Oe<S<S$$+$$o/E/E/E/EFFFFFr   z viewport.image.animation.fps.max   c                     || _         d S r   )r   )r   fpss     r   setMaxFrameRatez*vtkWebPublishImageDelivery.setMaxFrameRate  s    r   z viewport.image.animation.fps.getc                     | j         S r   )r   r   s    r   getCurrentFrameRatez.vtkWebPublishImageDelivery.getCurrentFrameRate  s    ##r   zviewport.image.animation.start-1c                    |                      |          }t          |                     |                    }| j                            |           t          | j                  dk    r|                                  d S d S Nr   )r5   r   r(   r   appendr   r   r   r   sView
realViewIds       r   startViewAnimationz-vtkWebPublishImageDelivery.startViewAnimation  st    V$$))%0011
%%j111t%&&!++LLNNNNN ,+r   zviewport.image.animation.stopc                     |                      |          }t          |                     |                    }|| j        v r| j                            |           d S d S r   )r5   r   r(   r   remover   s       r   stopViewAnimationz,vtkWebPublishImageDelivery.stopViewAnimation  sa    V$$))%0011
///"))*55555 0/r   zviewport.image.pushc                     |                      |d                   }t          |                     |                    }|                                                     |           |                     |           d S )Nr8   )r5   r   r(   r   r   r   )r   r   r   r   s       r   	imagePushz$vtkWebPublishImageDelivery.imagePush  sj    WV_--))%0011
--e444
#####r   c                 $   t          t          t          j                    dz                      }|                     |d                   }|                                dd         }||                    d|          k    }|r5|d         }|d         dk    r!|d         dk    r|                    |           d}|rd|v r|d         }d	}|rd
|v r|d
         }d}|rd|v r|d         }i }	|                                 }
|dk    r|
                    |           | j	        r|
j
        }n|
j        } ||||          }d}|rt          |                                          |k    rj|ddgk    rb|dk    r\|
                    |            ||||          }|dz  }|r3t          |                                          |k    r|ddgk    r|dk    \|s0|r.d|v r*|d         r"|
                    |            ||||          }|
                    |          |	d<   |
                                |	d<   |                                dd         |	d<   |r|                                nd|	d<   | j	        rdnd|	d<   t!          |                     |                    |	d<   ||	d<   | j	        r||	d<   n(|r!t%          |                                          nd|	d<   t          t          t          j                    dz                      }||z
  |	d<   |	S )r   r   r8   r   rL   r   r   r   r   r   r   r   
clearCacher   memsizer   r   r   r   r   Nr   )r   r   r   r5   r   r   r   r   r   r   r   StillRenderToBufferr   r   r   GetDataSizer   r(   
memoryviewtobytes)r   r   r   r8   r   r   r   r   r   r   r   r   reply_imager   r   s                  r   r   z&vtkWebPublishImageDelivery.stillRender  s~    dikkD01122	||GFO,,||~~ac"VT222 	#6?DAw||Q"T""" 	!w')) A 	)yG++i(G	 	-{g--,I!!##66%%%; 	21KK1K!k$733  	dllnn--55$1a&..UUVYY%%%%+dAw77KQJE  	dllnn--55$1a&..UUVYY 	8	8 ((% ) %%%%+dAw77K77==g6688gqs+f8CJ;22444i+/;B--Fh !1!1$!7!788k&k; 	X(E'NN CNWZ44<<>>>SWE'NeDIKK$.//00#i/jr   z viewport.image.push.observer.addc                 >   	                       |          }|sdd|z  iS t                               |                    		 j        vr	 fd}	 fd}	 fd}                                                     d|          }                                                     d|          }                                                     d|          }|||gd	d
ddd j        	<   n j        	         dxx         d	z  cc<                        	           d	dS )NerrorUnable to get view with id %sc                  .                                   S r   )r   argskwargsr   r   s     r   r   z>vtkWebPublishImageDelivery.addRenderObserver.<locals>.<lambda>   s    tz7R7R r   c                  .                                   S r   )r   r  s     r   r   z>vtkWebPublishImageDelivery.addRenderObserver.<locals>.<lambda>  s    D4K4KJ4W4W r   c                  .                                   S r   )r  r  s     r   r   z>vtkWebPublishImageDelivery.addRenderObserver.<locals>.<lambda>  s    43I3I*3U3U r   rQ   rN   rP   r   r   Tr   )tagsobserverCountr   r   r   r  successr   )r5   r   r(   r   r   AddObserverr   )
r   r   r   observerCallbackstartCallbackstopCallbacktagtagStarttagStopr   s
   `        @r   addRenderObserverz,vtkWebPublishImageDelivery.addRenderObserver  sq   V$$ 	G<vEFF))%0011
T///RRRRRWWWWWMUUUUUL%%''33MCSTTC**,,88' H ))++77%| G
 h0!". .Dz** z*?;;;q@;;;
###:666r   z#viewport.image.push.observer.removec                 x   |                      |          }|sdd|z  iS t          |                     |                    }d }|| j        v r| j        |         }|sdd|z  iS |dxx         dz  cc<   |d         dk    r:|d         D ])}|                                                     |           *| j        |= dd	iS 
Nr  r  'Unable to find subscription for view %sr  r   r   r  resultr  )r5   r   r(   r   r   RemoveObserverr   r   r   r   observerInfor  s         r   removeRenderObserverz/vtkWebPublishImageDelivery.removeRenderObserver  s    V$$ 	G<vEFF))%0011
+++-j9L 	UFSTT_%%%*%%%(A--#F+ : :##%%44S9999":.)$$r   zviewport.image.push.qualityr   c                    |                      |          }|sdd|z  iS t          |                     |                    }d }|| j        v r| j        |         }|sdd|z  iS ||d<   |d<   d| j        |         v rLfd| j        |         d         D             }t	          |d          r|                    |           n||_        d	d
iS )Nr  r  r#  r   r   r   c                 4    g | ]}t          |z            S r   r   r   s     r   rq   z=vtkWebPublishImageDelivery.setViewQuality.<locals>.<listcomp>D  s0       #$AI  r   r   r$  r  )r5   r   r(   r   hasattrr   ViewSize)r   r   r   r   r   r   r'  r   s      `    r   setViewQualityz)vtkWebPublishImageDelivery.setViewQuality1  s   V$$ 	G<vEFF))%0011
+++-j9L 	UFSTT")Y %W T/
;;;   (,(::(F~(V  D ui(( &d####!%)$$r   z!viewport.image.push.original.sizec                     |                      |          }|sdd|z  iS t          |                     |                    }d }|| j        v r| j        |         }|sdd|z  iS ||g|d<   ddiS )Nr  r  r#  r   r$  r  r5   r   r(   r   )r   r   widthheightr   r   r'  s          r   setViewSizez&vtkWebPublishImageDelivery.setViewSizeN  s    V$$ 	G<vEFF))%0011
+++-j9L 	UFSTT(-v^$)$$r   zviewport.image.push.enabledc                     |                      |          }|sdd|z  iS t          |                     |                    }d }|| j        v r| j        |         }|sdd|z  iS ||d<   ddiS )Nr  r  r#  r   r$  r  r/  )r   r   r   r   r   r'  s         r   
enableViewz%vtkWebPublishImageDelivery.enableView`  s    V$$ 	G<vEFF))%0011
+++-j9L 	UFSTT")Y)$$r   z$viewport.image.push.invalidate.cachec                     |                      |          }|sdd|z  iS |                                                     |           |                                                     d           ddiS )Nr  r  rQ   r$  r  )r5   r   r   r`   )r   r   r   s      r   invalidateCachez*vtkWebPublishImageDelivery.invalidateCacher  sx    V$$ 	G<vEFF--e444))-888)$$r   r   F)r   )r   )r   )r:   r;   r<   r   r   r   r   r   r   r   r   r  r  r   r   r(  r-  r2  r4  r6  __classcell__r   s   @r   r   r   /  sH       
! 
! 
! 
! 
! 
!.# .# .# .#`  G G G0 Y122      32  Y122$ $ 32$ Y/00   10 Y.//6 6 6 0/6 Y$%%$ $ &%$@ @ @D Y1227 7 327B Y455% % 65%. Y,--% % % .-%8 Y233% % 43%" Y,--% % .-%" Y566% % 76% % % % %r   r   c                   ^    e Zd Z ed          d             Z ed          d             ZdS )vtkWebViewPortGeometryDeliveryzviewport.webgl.metadatac                 ~    |                      |          }|                                                     |          }|S r   )r5   r   GetWebGLSceneMetaData)r   r   r8   datas       r   getSceneMetaDataz/vtkWebViewPortGeometryDelivery.getSceneMetaData  s7    ||G$$""$$::4@@r   zviewport.webgl.datac                     |                      |          }|                                                     |t          |          |dz
            }|S r   )r5   r   GetWebGLBinaryDatar   )r   r   	object_idpartr8   r>  s         r   getWebGLDataz+vtkWebViewPortGeometryDelivery.getWebGLData  sF    ||G$$""$$77c)nndUVhWWr   N)r:   r;   r<   r   r?  rD  r   r   r   r;  r;    s`        Y())  *)
 Y$%%  &%  r   r;  c                   B    e Zd Z	 ddZ ed          d	d            ZdS )
vtkWebFileBrowser
^\.|~$|^\$[0-9]+\.c                     || _         || _        t          j        |          | _        t          j        |          | _        dS )aU  
        Configure the way the WebFile browser will expose the server content.
         - basePath: specify the base directory that we should start with
         - name: Name of that base directory that will show up on the web
         - excludeRegex: Regular expression of what should be excluded from the list of files/directories
        N)baseDirectoryrootNamerecompilepatterngPattern)r   basePathnameexcludeRegex
groupRegexs        r   r   zvtkWebFileBrowser.__init__  s9     &z,//
:..r   zfile.server.directory.list.c                 >   | j         g}t          |          t          | j                   k    rK|t          | j                   dz   d         }||                    dd                              d          z  }t          j                            | j        |          }|g g g |d}|dk    r
| j         |d<   t	          j        |          D ]}t          j        	                    t          j                            ||                    r9t          j        | j        |          s|d                             |d	d
           xt          j                            t          j                            ||                    r5t          j        | j        |          s|d                             |           |d         }|                                 |d         }i }g }	|D ]}t          j        | j        |d                   }
t          |
          dk    r|	                    |           d                    |
          }||v r(||         d                             |d                    |d         g|d||<   |                    ||                    |	D ]}d                    t          j        | j        |d                             }t          ||         d                   dk    r|                    |           j|                    ||                    |S )zp
        RPC Callback to list a server directory relative to the basePath
        provided at start-up.
        r   N\/)labelfilesdirsgroupspathrT  rX  rY  )rX  r   rZ  r[  rL   z*.)rY  rX  )rK  r   replacesplitosr\  joinrJ  listdirisfilerL  searchrN  r   isdirsortrO  r   )r   relativeDirr\  currentPathr$  filerY  r[  groupIdxfilesToRemove	fileSplitgNames               r   listServerDirectoryz%vtkWebFileBrowser.listServerDirectory  s    {c$-0000%c$-&8&81&<&>&>?KK''c2288===Dgll4#5{CC 
 
 #"mF7OJ{++ 	, 	,Dw~~bgll;==>> ,rydH H , w&&r'B'BCCCCrw||K>>?? ,	dI I , v%%d+++ w

! 		3 		3DW>>I9~~""$$T***		),,H$$UOG,33DMBBBB15g%&P&PHUOMM(5/222! 	/ 	/DIIbht}d7mDDEEE8E?7+,,q00T""""huo....r   N)rG  rH  )rT  )r:   r;   r<   r   r   rn  r   r   r   rF  rF    sW        EP/ / / / Y+,,5 5 5 -,5 5 5r   rF  c                        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 xZ	S )vtkWebLocalRenderingc                     t          t          |                                            t                       t	                      | _        i | _        d| _        d S )Nr   )r   rp  r   r   r	   contextr   r   )r   r  r   s     r   r   zvtkWebLocalRendering.__init__  sL    "D))22444-//


r   zviewport.geometry.array.getFc                     |r.|                      | j                            ||                    S | j                            ||          S r   )r   rr  getCachedDataArray)r   dataHashbinarys      r   getArrayzvtkWebLocalRendering.getArray  sJ     	Y%%dl&E&EhPV&W&WXXX|..x@@@r   z#viewport.geometry.view.observer.addc                                           |          }|sdd|z  iS                                                                                      |          d fd	 j        vr= fd}                                                     d|          }|gdd j        <   n j                 d	xx         dz  cc<                        d
 d                     ddS )Nr  r  Fc                 p                         |           }| rdnj        |d<   xj        dz  c_        |S )Nr   r   r   )getViewStater   )newSubscriptionstateToReturnr   r   s     r   pushGeometryz:vtkWebLocalRendering.addViewObserver.<locals>.pushGeometry  sB     --j/JJM*9%IQQtzM'"JJ!OJJ  r   c                  @                         d                       S )N#viewport.geometry.view.subscription)r   )r  r  r}  r   s     r   r   z6vtkWebLocalRendering.addViewObserver.<locals>.<lambda>  s     t||5||~~8 8 r   rQ   r   )r  r  r  r  Tr  r7  )r5   r   r   r%   r   r  r   )r   r   r   r  r  r}  r   s   `    @@r   addViewObserverz$vtkWebLocalRendering.addViewObserver  s;   V$$ 	G<vEFF((**99;;GGNN
	! 	! 	! 	! 	! 	! 	! T///          %%''33MCSTTC7:ea-P-PDz** z*?;;;q@;;;:LL<N<NOOO:666r   z&viewport.geometry.view.observer.removec                    |                      |          }|sdd|z  iS |                                                                                     |          }d }|| j        v r| j        |         }|sdd|z  iS |dxx         dz  cc<   |d         dk    r:|d         D ])}|                                                     |           *| j        |= dd	iS r"  )r5   r   r   r%   r   r%  r&  s         r   removeViewObserverz'vtkWebLocalRendering.removeViewObserver  s   V$$ 	G<vEFF((**99;;GGNN
+++-j9L 	UFSTT_%%%*%%%(A--#F+ : :##%%44S9999":.)$$r   z viewport.geometry.view.get.statec                 h   |                      |          }|sdd|z  iS | j                            |           |}|                                                                }|                                }|                                                                                     |          }t          d ||| j        d          }t          |          |                                t          |          d|d<   | j                            d           | j                                         |r|S d S )Nr  r  r   )vtkRefIdcenterOfRotationr   extraF)r5   rr  setIgnoreLastDependenciesrw   rx   ry   r   r   r%   r   r
   rz   checkForArraysToRelease)	r   r   r{  r   r   r   r   renderWindowIdviewInstances	            r   rz  z!vtkWebLocalRendering.getViewState.  s6   V$$ 	G<vEFF..??? ,,..??AA))++,,..==??KKERR(,a
 
 '|44 & 4 4 6 6$V,,!
 !
W 	..u555,,... 	 tr   r7  )
r:   r;   r<   r   r   rw  r  r  rz  r8  r9  s   @r   rp  rp    s             Y,--A A A .-A Y4557 7 6576 Y788% % 98%0 Y122   32    r   rp  )&__doc__
__future__r   r   r   r`  sysloggingtypesinspect	tracebackrL  r   r   vtkmodules.vtkWebCorer   vtkmodules.web.errorsr   'vtkmodules.web.render_window_serializerr   r	   r
   r   wslinkr   r   r   wslink.websocketr   ImportErrorr   r>   r   r   r   r;  rF  rp  r   r   r   <module>r     s   
 A @ @ @ @ @ @ @ @ @ D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D D 8 8 8 8 8 8 ; ; ; ; ; ;           &((((((,,,,,,------- & & &
#
#
%
%%&:M :M :M :M :M\ :M :M :MHHE HE HE HE HE HE HE HEd4= 4= 4= 4= 4=^ 4= 4= 4=|/ / / / /. / / /rK% K% K% K% K% K% K% K%j
    ^   *E E E E E E E E`a a a a a> a a a a as   
A A-