
    vjZ0                     (   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
 d dlmZ d dlmZ d dlm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!m"Z"m#Z#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/ ddl0m1Z1m2Z2 dZ3 G d d      Z4y)    )new_event_loopset_event_looprun_coroutine_threadsafeAbstractEventLoop)Future)Optional)Thread)chain)open_new_tab)uuid1)
get_server)Server)vtkclienttramevuetify3)SinglePageWithDrawerLayout   )Shape)styleShowable	ShapeLike_split_showables)vtkRenderervtkRenderWindowvtkRenderWindowInteractor	vtkProp3D)vtkOrientationMarkerWidget)vtkAxesActor)!vtkInteractorStyleTrackballCamera)instance_ofBiDictz<position:absolute; left:0; top:0; width:100vw; height:100vh;c                      e Zd ZU eed<   eed<   eed<   ej                  ed<   e	e
ef   ed<   e	e
eedf   f   ed<   eed<   eed	<   eed
<   ee
   ed<   eeee   ee   eee      ee   f      ed<   dZdZeed<   d Zd(defdZdefdZde
fdZdddeez  ee   z  dee
   fdZd Zd Zd Zd Z d Z!d Z"d  Z#d! Z$de%ez  fd"Z&d# Z'd$ Z(d%e)fd&Z*d%ee
   fd'Z+y))Figureserverwinrenviewshapes.actorsloopthreademptyactivelastNF_initializedc                 f    | j                   st        j                  |       | _         | j                   S N)	_instanceobject__new__)clsargskwargss      9/DATA/.local/lib/python3.12/site-packages/cadquery/fig.pyr5   zFigure.__new__<   s#    }}"NN3/CM}}    portc           	      	     j                   ry t                _        t         j                         t	               }t               }|j                         \  }}|j                  ||       |j                  |       |j                          t               }|j                  t                      |j                  |       |j                  ddd       |j                          t!               }|j#                  d       t%               }|j'                  |       |j)                  dddd       |j+                  d       |j-                  |       |j/                  |       |j1                          |j3                          | _        | _        | _        | _        t=                _        t=                _         d  _!        tE        dd	
      }	|	 _#         jF                  jH                   _$         jH                  jK                  dg        tM        |	d       _'         jN                  5 }
tQ        jR                  d       |
jT                  jW                  d       |
jX                  j[                          |
j\                  5  d}t_        j`                   fdddd|       t_        j`                   fdddd|       t_        j`                   fdddd|       t_        j`                   fdddd|       t_        j`                   fdddd|       t_        j`                   fdddd|       t_        j`                   fd ddd!|       d d d        |
jb                  5  t_        jd                  dd"#      5  tg        jh                  |dd$%       _5        d d d        d d d        |
jl                  5  to        jp                  dg f jr                  d&f jt                  d&f'       _;        d d d        d d d        |	jH                  jy                          t                _         fd(}t{        |d)       _>         j|                  j                          |	j                  dd*|dd+      }|r j                  |       d _         d _A        d  _B        t        d,|        y # 1 sw Y   WxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)-Nr   r   g?g        g      ?g?g?z	CQ-servervue3)client_typer*   F)show_drawerzbody { margin: 0; }z	CQ viewerzdisplay: block;c                  $     j                         S r2   )_fitselfs   r9   <lambda>z!Figure.__init__.<locals>.<lambda>       $))+r:   Tcompactzmdi-crop-free)clickflatdensityiconr   c                  *     j                  ddd      S Nr   r   r   )r   r   r   r   r   r   _viewrB   s   r9   rD   z!Figure.__init__.<locals>.<lambda>       $**Y	9"Mr:   zmdi-axis-arrowc                  *     j                  ddd      S NrM   )r   r   r   rN   rO   rB   s   r9   rD   z!Figure.__init__.<locals>.<lambda>   rQ   r:   zmdi-axis-x-arrowc                  *     j                  ddd      S NrM   r   r   r   rN   rO   rB   s   r9   rD   z!Figure.__init__.<locals>.<lambda>   rQ   r:   zmdi-axis-y-arrowc                  *     j                  ddd      S NrM   rN   rV   rO   rB   s   r9   rD   z!Figure.__init__.<locals>.<lambda>   rQ   r:   zmdi-axis-z-arrowc                  $     j                         S r2   )_poprB   s   r9   rD   z!Figure.__init__.<locals>.<lambda>   rE   r:   z mdi-file-document-remove-outlinec                  &     j                  g       S r2   )_clearrB   s   r9   rD   z!Figure.__init__.<locals>.<lambda>   s    $++b/r:   zmdi-delete-outlinezpa-0 fill-height)fluidclassesd   )interactive_ratiointeractive_qualityz[$event])sourcesvisibility_changeactives_changec                  d    t         j                          j                  j                          y r2   )r   r+   run_foreverrB   s   r9   	_run_loopz"Figure.__init__.<locals>._run_loop   s    499%II!!#r:   )targetdaemon	coroutine)r,   	exec_moder;   open_browsershow_connection_infozhttp://localhost:)Dr0   r   r+   r   r   r   GetScreenSizeSetSizeAddRendererOffScreenRenderingOnr   SetInteractorStyler    SetRenderWindowSetBackgroundGradientBackgroundOnr   SetDragabler   SetOrientationMarkerSetViewportSetZoomSetInteractorSetCurrentRenderer	EnabledOnInteractiveOffaxesorient_widgetr&   r'   r"   r)   r*   r.   r   r%   state
setdefaultr   layoutr   Styletitleset_textfooterhidetoolbarv3VBtncontent
VContainervtk_widgetsVtkRemoteViewr(   drawerr   GitTreeonVisibilityonSelectiontreeflushr	   r,   start_runr-   r/   r   )rC   r;   rendererr&   whinterr~   r   r%   r   BSTYLErg   coros   `             r9   __init__zFigure.__init__C   s$   "$	tyy! =  "1Aq!  ")+  !B!DEc" 	q!Q'%%' ~24**40!!#sC5c"##E*((2!$$&	*hh KV< [[&&


h+ 1UK[[FLL./LL!!+.MM *-%(  M%)  M%+  M%+  M%+  -%;  1%- i  x ]](: !, 9 9qc!DI   !MM%rN'+'8'8*&E$($4$4j#A	 U b 	"$		$ Id;||!!&  
 IIdO ! 
	 	(/0S  z    U [sn   +ASCR%S$R?<R2R?"S68S.S%R/	*S2R<7R??S		SS	SS!returnc                 .    t        || j                        S r2   )r   r+   )rC   r   s     r9   r   zFigure._run   s    'dii88r:   namec                 @      fd} j                   |              y )Nc                  x   K   j                   j                          j                   j                          y wr2   )r   dirtyr   )r   rC   s   r9   _zFigure._update_state.<locals>._   s)     JJT"JJs   7:)r   )rC   r   r   s   `` r9   _update_statezFigure._update_state   s    	
 			!#r:   )r   	showablesc                    t        t                     }t        |      \  }}}}t        |fi |}	t        |fi |}
g }|D ]Y  }d|vrd|d<   t        |fi |}| j                  |<   |D ]  } j
                  j                  |        |j                  |       [ t        ||
      D ].  } j
                  j                  |       |j                  |       0 |r(  j
                  j                  |	   |j                  |	  |s S ||
|r|	nd|f _
         fd} j                   |               j                  r j                          d _         j                  j                  j                  |dd|r|nt!        |d         j"                   dt%        |d         d	d
        j'                  d       t)        |       j                  |<    S )z
        Show objects.
        
markersizer   Nc                  B   K    j                   j                          y wr2   )r(   updaterB   s   r9   _showzFigure.show.<locals>._show.  s     IIs   F0r   z at x)idparentvisibler   r*   )strr   r   r   r)   r'   AddActorextendr
   appendr/   r   r-   fitr   r*   type__name__r   r   tuple)rC   r   r   r8   uuidr)   vecslocspropsptsaxs
new_actorssr*   actorpropr   s   `                r9   showzFigure.show   s    57| %5Y$?!dED#F#D#F# 
A6)'(|$1''F !DKK!!%(   f%  %%DHHd#d# &
 DHHs#Js# K S#4?		 			%' ::HHJDJ 	

  #'4T)A,-?-H-HIbQZ[\Q]N^_`Mab		
 	8$!*-Dr:   c                 t   K   | j                   j                          | j                  j                          y wr2   )r'   ResetCamerar(   r   rB   s    r9   rA   zFigure._fitG  s&     		s   68c                 D    | j                  | j                                | S )z1
        Update view to fit all objects.
        )r   rA   rB   s    r9   r   z
Figure.fitK      
 			$))+r:   c                   K   | j                   j                         } |j                  |   |j                  |   |j                  |  | j                   j                          | j                  j                          y wr2   )r'   GetActiveCamera	SetViewUpSetFocalPointSetPositionr   r(   r   )rC   focposupcams        r9   rP   zFigure._viewT  sd     hh&&(r3		s   A=A?c                 J    | j                  | j                  ddd             | S rL   r   rP   rB   s    r9   isoz
Figure.iso`       		$**Y	9=>r:   c                 J    | j                  | j                  ddd             | S rX   r   rB   s    r9   r   z	Figure.upf  r   r:   c                 J    | j                  | j                  ddd             | S rS   r   rB   s    r9   frontzFigure.frontn  r   r:   c                 J    | j                  | j                  ddd             | S rU   r   rB   s    r9   sidezFigure.sidet  r   r:   c                   K   t        |      dk(  rf| j                  j                          | j                  j	                          | j
                  j	                          g | j                  _        d | _        |D ]2  }t        |t              rrt        | j
                  j                  |         }|D ]J  }| j                  j                  |      D ]  }| j                  j                  |        | j
                  |= L nf| j                  j                         D ]I  \  }}||v s| j                  j                  |      D ]  }| j                  j                  |        |g} n g }| j                  j                  D ]  }|d   vs|j                  |        || j                  _        5 | j!                  d       | j"                  j%                          y w)Nr   r   r*   )lenr'   RemoveAllViewPropsr*   clearr)   r   r.   r!   r   r   invpopRemoveActoritemsr   r   r(   r   )	rC   r)   r   uuidsr   aactsel	new_states	            r9   r\   zFigure._clearz  s    v;!HH'')KKKK "DJJDKA1i(dkkooa01!D![[__T2,,Q/ 3 	 " #'++"3"3"5JD$Dy"&++//$"7B HH004 #8 "& #6 Ijj''d85($$R( ( !*DJJ= @ 	8$		s   D!G$A#GAGc                 t    d| _         | j                  | j                  |            }|j                          | S )zZ
        Clear specified objects. If no arguments are passed, clears all objects.
        N)r/   r   r\   result)rC   r)   futures      r9   r   zFigure.clear  s0     	4;;v./r:   c                   K   | j                   !| j                  j                  d   d   | _         | j                   | j                  v r| j                  | j                      D ]  }| j                  j	                  |        | j                  j                  | j                          | j                  j                  | j                          t        | j                  j                        D ]O  \  }}|d   | j                   k(  s| j                  j                  j                  |       | j                  d        n d | _         | j                  j                          y w)Nr   r*   )r.   r   r*   r'   r   r   r)   	enumerater   r(   r   )rC   actir   s       r9   rZ   zFigure._pop  s    ;;**++B/5DK;;$++%{{4;;/$$S) 0 KKOODKK( KKOODKK( #4::#4#452d8t{{*JJ%%))!,&&x0	 6 DK		s   D EAEc                 D    | j                  | j                                | S )z.
        Clear the selected showable.
        )r   rZ   rB   s    r9   r   z
Figure.pop  r   r:   eventc                     | j                   |d      }|D ]  }|j                  |d           | j                  j                          y )Nr   r   )r*   SetVisibilityr(   r   )rC   r   r*   r   s       r9   r   zFigure.onVisibility  sC    U4[)CeI./  			r:   c                     |d   | _         y )Nr   )r.   )rC   r   s     r9   r   zFigure.onSelection  s    Ahr:   )iF  ),r   
__module____qualname__r   __annotations__r   r   r   r   r"   r   r   r   r   r   r	   boolr   listr3   r0   r5   intr   r   r   r   r   r   rA   r   rP   r   r   r   r   r\   r   r   rZ   r   dictr   r    r:   r9   r$   r$   '   sf   N		

#
##3	>""3in--..
NKSM
OT)_htI.GiX	
  IL$i1S i1V9F 9#  #Ky(4	?:K smKZ
,\
UY. 
2$ c r:   r$   N)5asyncior   r   r   r   concurrent.futuresr   typingr   	threadingr	   	itertoolsr
   
webbrowserr   r   r   	trame.appr   trame.app.corer   trame.widgetsr   r   r   r   r   r   trame.ui.vuetify3r    r   visr   r   r   r   vtkmodules.vtkRenderingCorer   r   r   r    vtkmodules.vtkInteractionWidgetsr   !vtkmodules.vtkRenderingAnnotationr   vtkmodules.vtkInteractionStyler    utilsr!   r"   FULL_SCREENr$   r   r:   r9   <module>r     se     &    #    ! K K 8  = =  H : L &Lz zr:   