
    hJV                       S SK Jr  S SKJrJrJrJr  S SKrS SKrS SK	r	S SK
JrJrJr  S SK
JrJrJr  S SKrS SKrS SKJr  S SKJr  S SKJrJr  S S	KJr  S S
KJrJ r J!r!  S SK"J#r#J$r$J%r%J&r&  S SK'J(r(  S SK)J*r*  S SK+J,r,J-r-  S SK.J/r/  S SK0J1r1   " S S\Rd                  5      r3 " S S5      r4 " S S\35      r5 " S S\Rl                  5      r7 " S S\Rp                  5      r9SSS jjr:g)    )annotations)IterableSequenceSetOptionalN)	QtWidgetsQtCoreQtGui)SlotQActionSignal)recover)odafc)FrontendRenderContext)Configuration)is_dark_colorset_layers_stateLayerProperties)_get_x_scalePyQtBackendCorrespondingDXFEntityCorrespondingDXFParentStack)Auditor)Drawing)
DXFGraphic	DXFEntity)Layout)DXFStructureErrorc                     ^  \ rS rSr\" 5       rSSSS.     SU 4S jjjrSU 4S jjrS rS r	SS	 jr
S
 rS rSS jrSS jrSS jrSS jrSS jrSrU =r$ )CADGraphicsView'   g?T)view_bufferzoom_per_scroll_notchloading_overlayc                 > [         TU ]  5         SU l        SU l        SU l        X l        Xl        X0l        SU l        U R                  [        R                  R                  5        U R                  [        R                  R                  5        U R                  [        R                   R"                  5        U R%                  [        R                   R"                  5        U R'                  [        R                  R(                  5        U R+                  [        R,                  R.                  5        U R1                  [2        R4                  R6                  [2        R4                  R8                  -  [2        R4                  R:                  -  5        U R=                  [        R>                  " 5       5        U RA                  SS5        g )N      ?)g      ?d   F   )!super__init___zoom_default_zoom_zoom_limits_zoom_per_scroll_notch_view_buffer_loading_overlay_is_loadingsetTransformationAnchorqwQGraphicsViewAnchorUnderMousesetResizeAnchorsetVerticalScrollBarPolicyqcQtScrollBarAlwaysOffsetHorizontalScrollBarPolicysetDragModeScrollHandDragsetFrameShapeQFrameNoFramesetRenderHintsqgQPainterAntialiasingTextAntialiasingSmoothPixmapTransformsetSceneQGraphicsScenescale)selfr#   r$   r%   	__class__s       O/var/www/html/env/lib/python3.13/site-packages/ezdxf/addons/drawing/qtviewer.pyr,   CADGraphicsView.__init__*   s;    	
 &&;#' / $$R%5%5%F%FGR-->>?''(@(@A))"%%*B*BC))889299,,-KK$$kk**+kk//0	
 	b'')*

1b    c                X   > [         TU ]  U5        U R                  R                  5         g N)r+   
closeEventclosingemitrL   eventrM   s     rN   rS   CADGraphicsView.closeEventI   s     5!rP   c                    g rR    rL   s    rN   clearCADGraphicsView.clearM   s    rP   c                    SU l         U R                  5       R                  [        R                  " 5       [
        R                  R                  5        [
        R                  R                  5         g )NT)
r3   scene
invalidater:   QRectFr5   rJ   	AllLayersQApplicationprocessEventsr[   s    rN   begin_loadingCADGraphicsView.begin_loadingP   sB    

		R->->-H-HI
%%'rP   c                    U R                  U5        SU l        U R                  5         U R                  5       R	                  [
        R                  " 5       [        R                  R                  5        g )NF)
rI   r3   buffer_scene_rectr_   r`   r:   ra   r5   rJ   rb   )rL   	new_scenes     rN   end_loadingCADGraphicsView.end_loadingU   sJ    i   

		R->->-H-HIrP   c                
   U R                  5       nUR                  5       nUR                  5       U R                  -  S-  UR	                  5       U R                  -  S-  pCUR                  UR                  U* U* X45      5        g )N   )r_   	sceneRectwidthr1   heightsetSceneRectadjusted)rL   r_   rbxbys        rN   rh   !CADGraphicsView.buffer_scene_rect[   sq    

OOGGI)))A-HHJ***Q.  	1::rcB378rP   c                    U R                  U R                  5       [        R                  R                  5        [        U R                  5       5      U l        SU l        g Nr)   )		fitInViewrn   r:   r;   KeepAspectRatior   	transformr.   r-   r[   s    rN   fit_to_sceneCADGraphicsView.fit_to_scened   s<    t~~')>)>?)$..*:;
rP   c                N    [        U R                  5       5      U R                  -  $ rR   )r   r{   r.   r[   s    rN   _get_zoom_amount CADGraphicsView._get_zoom_amounti   s    DNN,-0B0BBBrP   c                   UR                  5       R                  5       S-  n[        R                  " SU5      nSU R                  U-  -   [        U5      -  nU R                  U-  nXPR                  S   :  a  U R                  S   U R                  -  nO.XPR                  S   :  a  U R                  S   U R                  -  nU R                  XD5        U =R                  U-  sl        g )Nx   r)   r'   r   )	
angleDeltaymathcopysignr0   absr-   r/   rK   )rL   rW   delta_notches	directionfactorresulting_zooms         rN   
wheelEventCADGraphicsView.wheelEventl   s     ((*,,.4MM!]3	33i??CDVVf,--a00&&q)DJJ6F//22&&q)DJJ6F

6"

f
rP   c                    [        U R                  5       U R                  U R                  U R	                  5       R                  5       U R                  5       R                  5       5      $ rR   )	SavedViewr{   r.   r-   horizontalScrollBarvalueverticalScrollBarr[   s    rN   	save_viewCADGraphicsView.save_viewz   sS    NNJJ$$&,,.""$**,
 	
rP   c                "   U R                  UR                  5        UR                  U l        UR                  U l        U R                  5       R                  UR                  5        U R                  5       R                  UR                  5        g rR   )setTransformr{   default_zoomr.   zoomr-   r   setValuexr   r   )rL   views     rN   restore_viewCADGraphicsView.restore_view   sc    $..)!..YY
  "++DFF3 ))$&&1rP   c                   U R                   (       a  U R                  (       a  UR                  5         UR                  U[        R
                  " S5      5        UR                  S5        U R                  5       R                  5       nUR                  [        R                  R                  5        UR                  [        R                  R                  5        UR                  UR!                  5       S5        UR#                  5         g g g )Nz	#aa000000Fz
Loading...)r3   r2   savefillRectrD   QColorsetWorldMatrixEnabledviewportrectsetBrushr:   r;   NoBrushsetPenwhitedrawTextcenterrestore)rL   painterr   rs   s       rN   drawForegroundCADGraphicsView.drawForeground   s     5 5LLNT299[#9:))%0$$&ARUU]]+NN255;;'QXXZ6OO !6rP   )r.   r3   r2   r1   r-   r/   r0   )r#   floatr$   r   r%   bool)rW   zqg.QCloseEventreturnNone)ri   zqw.QGraphicsScene)r   r   )rW   zqg.QWheelEventr   r   )r   r   )r   r   r   zqg.QPainterr   z	qc.QRectFr   r   )__name__
__module____qualname____firstlineno__r   rT   r,   rS   r\   re   rj   rh   r|   r   r   r   r   r   __static_attributes____classcell__rM   s   @rN   r!   r!   '   s{    hG
 !'* $   %	
  >(
J9
C
2	 	rP   r!   c                  2    \ rS rSr          SS jrSrg)r      c                @    Xl         X l        X0l        X@l        XPl        g rR   )r{   r   r   r   r   )rL   r{   r   r   r   r   s         rN   r,   SavedView.__init__   s     #(	rP   )r   r{   r   r   r   N)
r{   zqg.QTransformr   r   r   r   r   intr   r   )r   r   r   r   r,   r   rZ   rP   rN   r   r      s/    &6;CHMPUXrP   r   c                     ^  \ rS rSr\" \R                  5      r\" \\	5      r
U 4S jr\SS j5       rU 4S jrU 4S jrSU 4S jjrSU 4S jjrSU 4S jjrS	 rS
 rSrU =r$ )CADGraphicsViewWithOverlay   c                P   > [         TU ]  " S0 UD6  / U l        S U l        SU l        g )NTrZ   )r+   r,   _selected_items_selected_index_mark_selection)rL   kwargsrM   s     rN   r,   #CADGraphicsViewWithOverlay.__init__   s+    "6"79##rP   c                    U R                   (       a0  U R                   U R                     nUR                  [        5      nU$ g rR   )r   r   datar   )rL   graphics_item
dxf_entitys      rN   current_hovered_element2CADGraphicsViewWithOverlay.current_hovered_element   s;     001E1EFM&++,BCJrP   c                >   > [         TU ]  5         S U l        S U l        g rR   )r+   r\   r   r   rL   rM   s    rN   r\    CADGraphicsViewWithOverlay.clear   s    ##rP   c                B   > U R                  5         [        TU ]	  5         g rR   )r\   r+   re   r   s    rN   re   (CADGraphicsViewWithOverlay.begin_loading   s    

rP   c           	     J  > [         TU ]  X5        U R                  (       a  U R                  (       ap  U R                  U R                     nUR                  5       R                  UR                  5       5      nUR                  U[        R                  " SSSS5      5        g g g )Nr      r(   )r+   r   r   r   r   sceneTransformmapRectboundingRectr   rD   r   )rL   r   r   itemrs   rM   s        rN   r   )CADGraphicsViewWithOverlay.drawForeground   s    w-D$8$8''(<(<=D##%--d.?.?.ABAQ		!S!S 9: %9rP   c                V  > [         TU ]  U5        U R                  UR                  5       5      nU R                  R                  U5        U R                  5       R                  U5      nX0R                  :w  a1  X0l        U R                  (       a  SOS U l	        U R                  5         g g )Nr   )r+   mouseMoveEvent
mapToSceneposmouse_movedrU   r_   itemsr   r   _emit_selected)rL   rW   r   selected_itemsrM   s       rN   r   )CADGraphicsViewWithOverlay.mouseMoveEvent   s    u%ooeiik*c"++C0111#1 (,(<(<1$D ! 2rP   c                  > [         TU ]  U5        UR                  5       [        R                  R
                  :X  aM  U R                  (       a;  U R                  S-   [        U R                  5      -  U l        U R                  5         g g g rx   )
r+   mouseReleaseEventbuttonr:   r;   
LeftButtonr   r   lenr   rV   s     rN   r   ,CADGraphicsViewWithOverlay.mouseReleaseEvent   sp    !%(<<>RUU---$2F2F$($8$81$<$$A $D  !	 3G-rP   c                    U R                   R                  U R                  U R                  5        U R	                  5       R                  U R                  5       [        R                  R                  5        g rR   )
element_hoveredrU   r   r   r_   r`   rn   r5   rJ   ForegroundLayerr[   s    rN   r   )CADGraphicsViewWithOverlay._emit_selected   sM    !!$"6"68L8LM

 0"2C2C2S2STrP   c                0    U R                   (       + U l         g rR   )r   r[   s    rN   toggle_selection_marker2CADGraphicsViewWithOverlay.toggle_selection_marker   s    #'#7#77rP   )r   r   r   )r   zOptional[DXFEntity]r   )rW   zqg.QMouseEventr   r   )r   r   r   r   r   r:   QPointFr   objectr   r   r,   propertyr   r\   re   r   r   r   r   r   r   r   r   s   @rN   r   r      s_    $KVS)O$  $
 ;""U8 8rP   r   c                     ^  \ rS rSr\" 5       4SU 4S jjjrS r\SS j5       r\SS j5       r	\SS j5       r
\SS j5       rSS	S
.     SS jjrSS jrSS jr S   SS jjrSS jrSS jrSrU =r$ )	CADWidget   c                  > [         TU ]  5         [        R                  " 5       nUR	                  SSSS5        UR                  U5        U R                  U5        Xl        U R                  R                  R                  U R                  5        X l        [        R                  R                  5       U l        S U l        S U l        [%        5       U l        SU l        U R+                  5         g )Nr   Model)r+   r,   r5   QVBoxLayoutsetContentsMargins	addWidget	setLayout_viewrT   connectclose_configezdxfbboxCache_bbox_cache_doc_render_contextset_visible_layers_current_layout_reset_backend)rL   r   configlayoutrM   s       rN   r,   CADWidget.__init__   s    !!!!Q1-v


""4::. ::++-!	.2),$+rP   c                "    [        5       U l        g rR   )r   _backendr[   s    rN   r
  CADWidget._reset_backend   s    #rP   c                    U R                   $ rR   )r  r[   s    rN   docCADWidget.doc   s    yyrP   c                    U R                   $ rR   )r   r[   s    rN   r   CADWidget.view   s    zzrP   c                    U R                   $ rR   )r  r[   s    rN   render_contextCADWidget.render_context       ###rP   c                    U R                   $ rR   )r	  r[   s    rN   current_layoutCADWidget.current_layout   r  rP   r   Tr  drawc                   Xl         [        R                  R                  5       U l        U R                  U5      U l        U R                  5         [        5       U l	        S U l
        U(       a  U R                  U5        g g rR   )r  r  r  r  r  _make_render_contextr  r
  r  r  r	  draw_layout)rL   documentr  r  s       rN   set_documentCADWidget.set_document  se     	 ::++-#88B"u#V$ rP   c                D    Xl         U R                  U R                  SS9  g )NF
reset_view)r  r!  r	  )rL   layerss     rN   set_visible_layersCADWidget.set_visible_layers  s!    %--%@rP   c                P   ^  SU 4S jjn[        U5      nUR                  U5        U$ )Nc                T   > TR                   (       a  [        U TR                   SS9  g g )NT)state)r  r   )r(  rL   s    rN   update_layers_state;CADWidget._make_render_context.<locals>.update_layers_state  s#    ## )=)=TJ $rP   )r(  zSequence[LayerProperties])r   set_layer_properties_override)rL   r  r.  r  s   `   rN   r   CADWidget._make_render_context  s*    	K 's+445HIrP   c                \   Xl         U R                  R                  5         [        R                  " 5       nU R
                  R                  U5        U R                  R                  U5      nU R                  U5         U R                  5       R                  U5        U R
                  R                  5         U R                  R                  U5        U R                  R                  5         U(       a  U R                  R                  5         g g ! U R
                  R                  5         f = frR   )r	  r   re   r5   rJ   r  	set_scener  r  _update_render_context_create_frontendr!  finalizerj   rh   r|   )rL   layout_namer'  ri   r  s        rN   r!  CADWidget.draw_layout!  s    
  +

  "%%'		*!!+.##F+	%!!#//7MM""$

y)

$$&JJ##%  MM""$s   >D D+c                j    [        U R                  U R                  U R                  U R                  S9$ )N)ctxoutr  
bbox_cache)r   r  r  r   r  r[   s    rN   r5  CADWidget._create_frontend5  s/    $$<<''	
 	
rP   c                X    U R                   c   eU R                   R                  U5        g rR   )r  set_current_layout)rL   r  s     rN   r4   CADWidget._update_render_context=  s(    ##/////7rP   )r  r  r   r	  r  r  r   r  )r   r!   r  r   )r   r   )r   r!   )r   r   )r   str)r"  r   r  rA  r  r   )r(  zSet[str]r   r   )r  r   r   r   Tr7  rA  r'  r   )r   r   )r  r   r   r   )r   r   r   r   r   r,   r
  r   r  r   r  r  r#  r)  r   r!  r5  r4  r   r   r   s   @rN   r   r      s    FSo   &     $ $ $ $ %% 	%
 %"A  && &(
8 8rP   r   c                    ^  \ rS rSrSSU 4S jjjr\SS j5       rS rSSS jjrS r	SSS	.       SS
 jjr
S rS r S    S!S jjrS"S jrS#S jr\" \5      S$S j5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" 5       S 5       r\" \R2                  5      S%S j5       r\" \\5      S&S j5       rS'S jrSrU =r$ )(	CADVieweriB  c                  > [         TU ]  5         S U l        Uc   [        [	        5       [        5       S9U l        OXl        U R                  R                  U l        [        U R                  [        5      (       a^  U R                  R                  R                  U R                  5        U R                  R                  R                  U R                  5        U R                  5       n[!        SU 5      nUR"                  R                  U R$                  5        UR'                  U5        UR)                  S5      U l        [!        SU 5      nUR"                  R                  U R,                  5        UR'                  U5        [!        SU 5      nUR"                  R                  U R.                  5        UR'                  U5        UR)                  S5      U l        [!        SU 5      nUR3                  [4        R6                  " S5      5        UR"                  R                  U R8                  5        U R0                  R'                  U5        [!        SU 5      U l        U R:                  R=                  S	5        U R:                  R?                  S	5        U R0                  R'                  U R:                  5        [!        S
U 5      nUR=                  S	5        UR@                  R                  U RB                  5        U R0                  R'                  U5        [D        RF                  " 5       U l$        U RH                  RK                  S5        U RH                  RL                  R                  U RN                  5        S U l(        [R        RT                  " [D        RV                  RX                  5      U l-        [R        R\                  " 5       U l/        U R^                  Ra                  S5        U RZ                  Rc                  U R^                  5        [R        Rd                  " 5       n[R        Rf                  " 5       n	U	Ri                  SSSS5        [R        Rj                  " 5       U l6        U Rl                  Ro                  S	5        U	Rc                  U Rl                  5        [R        Rp                  " 5       U l9        U	Rc                  U Rr                  5        URu                  U	5        U RZ                  Rc                  U5        [R        RT                  " 5       n
U Rw                  U
5        U
Rc                  U R                  5        U
Rc                  U RZ                  5        U
Ry                  SS5        U
Ry                  SS	5        U
R{                  5       nU
R}                  [        SU-  S-  5      [        US-  5      /5        U R                  S5        U R                  SS5        U R                  5         g )Nr  zSelect DocumentzSelect LayoutzToggle SidebarzToggle Entity MarkerReloadF5z	Keep ViewTWatch2   zNQListWidget {font-size: 12pt;} QCheckBox {font-size: 12pt; padding-left: 5px;}r   Fr)         z
CAD Vieweri@  i  )Cr+   r,   r  r   r   r   _cadr   r   
isinstancer   r   _on_element_hoveredr   _on_mouse_movedmenuBarr   	triggered_select_doc	addActionaddMenuselect_layout_menu_toggle_sidebar_toggle_selection_markerreload_menusetShortcutrD   QKeySequence_reloadkeep_view_actionsetCheckable
setCheckedtoggled_toggle_watchr:   QTimer_watch_timersetIntervaltimeout_check_watch_watch_mtimer5   	QSplitterr;   VerticalsidebarQListWidgetr(  setStyleSheetr   QWidgetr   r   QPlainTextEditselected_infosetReadOnlyQLabel	mouse_posr   setCentralWidgetsetCollapsiblero   setSizesr   setWindowTitleresizeshow)rL   cadmenuselect_doc_actiontoggle_sidebar_actiontoggle_selection_marker_actionreload_actionwatch_actioninfo_containerinfo_layout	containerwrM   s               rN   r,   CADViewer.__init__C  s;   '+	;!"<">}WDIIYY^^
djj"<==JJ&&..t/G/GHJJ""**4+?+?@||~#$5t<##++D,<,<=()"&,,"? '(8$ ?''//0D0DE,-)01G)N&&00889V9VW56<<1$/!!"//$"78''5""=1 'T :**40((.""4#8#89w-!!$'$$T%7%78""<0IIK%%b)!!))$*;*;< ||BEENN3nn&!!>	
 	t{{+nn&&&q!Q2..0&&t,d001dnn-  -~.LLN	i(DII&DLL)  E*  D)OOCA	NCAJ78L)D#		rP   c                4    [        [        [        5       U S9S9$ )NrG  )rz  )rE  r   r   rG  s    rN   from_configCADViewer.from_config  s    Y'A'CFSTTrP   c                V    [        5       U l        [        U R                  5      U l        g rR   )r   r   r   rN  r[   s    rN   _create_cad_widgetCADViewer._create_cad_widget  s    /1
djj)	rP   r   c                    [         R                  R                  U5      S   R                  5       S:X  a'  [        R
                  " U5      nUR                  5       nO' [        R
                  " U5      nUR                  5       nU R                  X4US9  g ! [        R                   a    [        R
                  " U5      u  p4 N?f = f! [         a4  n[        R                  R                  U S[        U5      5         S nAg S nAf[          a:  n[        R                  R                  U SSU S[        U5       35         S nAg S nAff = f)Nr)   z.dwgr  zLoading ErrorDXF Structure ErrorzInvalid DXF file "": )ospathsplitextlowerr   readfileauditr  DXFErrorr   r#  IOErrorr5   QMessageBoxcriticalrA  r   )rL   r  r  r  auditores         rN   	load_fileCADViewer.load_file  s
   	ww%a(..0F:nnT*))+*...C "iikGc6:	 ~~ :#*#3#3D#9LC:
  	CNN##D/3q6BB  	NN##%$TF#c!fX6 	sH   AC B 4 C ,CC CC 
E*D  E0EEc                x    [         R                  R                  U SSS9u  pU(       a  U R                  U5        g g )NzSelect CAD Documentz'CAD Documents (*.dxf *.DXF *.dwg *.DWG))captionfilter)r5   QFileDialoggetOpenFileNamer  )rL   r  _s      rN   rT  CADViewer._select_doc  s<    ..00)< 1 

 NN4  rP   Tr  c          	        [        UR                  5      nUS:  al  [        R                  R	                  U SSU SUR
                   S35      nU[        R                  R                  :X  a  UR                  UR                  5        g UR
                  (       a1   [        R                  " UR
                  5      R                  U l        OS U l        U R                  R                  XUS9  Xl        U R!                  5         U R#                  5         U R%                  S['        UR
                  5      -   5        g ! [         a
    S U l         N{f = f)Nr   zFound DXF ErrorszFound z errors in file "z"
Load file anyway? r  zCAD Viewer - )r   errorsr5   r  questionfilenameNoprint_error_reportr  statst_mtimerh  OSErrorrN  r#  r  _populate_layouts_populate_layer_listrw  rA  )rL   r"  r  r  r  error_countrets          rN   r#  CADViewer.set_document  s    '..)?..))"%6x7H7H6I J% &C bnn'''**7>>:)$&GGH,=,=$>$G$G! !%D		xTB	 !!#Oc(2C2C.DDE  )$(!)s   /D9 9EEc                ^   U R                   R                  S5        U R                   R                  5         U R                  R                  R                   R                  5        GH*  nUR                  n[        R                  " 5       nU R                   R                  U5        [        R                  " U5      nUR                  UR                  (       a  [        R                  R                  O[        R                  R                   5        UR"                  R%                  U R&                  5        [)        UR*                  S5      (       a  SOSnUR-                  SU SUR*                   35        U R                   R/                  X45        GM-     U R                   R                  S5        g )NTg?z#FFFFFFz#000000zcolor: z; background-color: F)r(  blockSignalsr\   rN  r  valueslayerr5   QListWidgetItemaddItem	QCheckBoxsetCheckState
is_visibler:   r;   Checked	UncheckedstateChangedr   _layers_updatedr   colorrm  setItemWidget)rL   r  namer   checkbox
text_colors         rN   r  CADViewer._populate_layer_list  s'     &YY--44;;=E;;D%%'DKK%||D)H""!&!1!1ruu !!))$*>*>?&3EKK&E&E9J""*%9%++G KK%%d5 > 	  'rP   c                0  ^  SU 4S jjnT R                   R                  5         T R                  R                  R	                  5        HK  n[        UT 5      nUR                  R                  U" U5      5        T R                   R                  U5        MM     g )Nc                   >^  U U4S jnU$ )Nc                 &   > TR                  T SS9  g )NTr&  )r!  )r  rL   s   rN   run=CADViewer._populate_layouts.<locals>.draw_layout.<locals>.run  s      $ 7rP   rZ   )r  r  rL   s   ` rN   r!  0CADViewer._populate_layouts.<locals>.draw_layout  s    8 JrP   )r  rA  )	rW  r\   rN  r  layout_names_in_taborderr   rS  r   rU  )rL   r!  r7  actions   `   rN   r  CADViewer._populate_layouts  sq    	 	%%'99==AACK[$/F$$[%=>##--f5 DrP   c                \   [        SU 35         [        R                  " 5       nU R                  R	                  XS9  [        R                  " 5       U-
  n[        SUS S35        g ! [
         a:  n[        R                  R                  U SSU S[        U5       35         S nAg S nAff = f)	Nzdrawing r&  ztook .4fz secondsr  zAbort rendering of layout "r  )
printtimeperf_counterrN  r!  r   r5   r  r  rA  )rL   r7  r'  startdurationr  s         rN   r!  CADViewer.draw_layout  s    
 	&'
	%%'EII!!+!E((*U2HE(3x01  	NN##%-k]#c!fXF 	s   AA' '
B+10B&&B+c                8    U R                   R                  5         g rR   )r   r|   )rL   rW   s     rN   resizeEventCADViewer.resizeEvent  s    

!rP   c              #     #    [        U R                  R                  5       5       H<  nU R                  R                  U R                  R	                  U5      5      nX4v   M>     g 7frR   )ranger(  count
itemWidgetr   )rL   ir   s      rN   _layer_checkboxesCADViewer._layer_checkboxes  sK     t{{((*+A;;))$++*:*:1*=>D'M ,s   A%A'c                2   [         R                  R                  5       [        R                  R
                  -  nU(       aL  U R                  5        H8  u  p4UR                  S5        UR                  U5        UR                  S5        M:     [        5       nU R                  5        HR  u  p6UR                  5       [        R                  R                  :X  d  M3  UR                  UR                  5       5        MT     U R                  R                  U5        g )NTF)r5   rc   keyboardModifiersr:   r;   ShiftModifierr  r  r  r  
checkStater  addtextrN  r)  )rL   
item_state
shift_heldr  r   visible_layersr  s          rN   r  CADViewer._layers_updated  s    __668255;N;NN
113!!$'"":.!!%( 4
 ..0HA!RUU]]2""5::<0 1 			$$^4rP   c                t    U R                   R                  U R                   R                  5       (       + 5        g rR   )rk  	setHiddenisHiddenr[   s    rN   rX  CADViewer._toggle_sidebar  s$    4<<#8#8#::;rP   c                8    U R                   R                  5         g rR   )r   r   r[   s    rN   rY  "CADViewer._toggle_selection_marker#  s    

**,rP   c                   U R                   R                  b  U R                   R                  R                  (       a  U R                  R	                  5       nU(       a  U R
                  R                  5       OS nU R                  U R                   R                  R                  U R                   R                  S9  U(       a  U R
                  R                  U5        g g g g )Nr  )
rN  r  r  r^  	isCheckedr   r   r  r  r   )rL   	keep_viewr   s      rN   r]  CADViewer._reload'  s    99==$)?)?--779I-64::'')DDNN499==11$)):R:RNS

''- 	 *@$rP   c                    U R                   R                  5       (       a  U R                   R                  5         g U R                   R                  5         g rR   )rd  isActivestopr  r[   s    rN   rb  CADViewer._toggle_watch0  s;    %%''""$##%rP   c                @   U R                   b  U R                  R                  c  g U R                  R                  R                  nU(       aB   [        R
                  " U5      R                  nX R                   :w  a  U R                  5         g g g ! [         a     g f = frR   )	rh  rN  r  r  r  r  r  r  r]  )rL   r  mtimes      rN   rg  CADViewer._check_watch7  s    $		(=99==)))22 ))) *   s    B 
BBc                    U R                   R                  SUR                  5       S SUR                  5       S S35        g )Nzmouse position: r  z, 
)rs  setTextr   r   )rL   rs  s     rN   rQ  CADViewer._on_mouse_movedD  s8    y{{}S1IKKM#3FbI	
rP   c                   U(       d  SnOSUS-    S[        U5       S3nX   nUR                  [        5      n[        U[        5      (       a  U R                  U5      nUc  US-  nOwUSU SUR                  R                   S	3-  nU[        U5      -  nUR                  [        5      nU(       a-  US
-  n[        U5       H  nUSU S3-  nU[        USS9-  nM     U R                  R                  U5        g )NzNo element selectedz
Selected: r)   z / z    (click to cycle)
zNo datazSelected Entity: z
Layer: z

DXF Attributes:
z

Parents:
- r  z    )indent)r   r   r   rO  rA  load_dxf_entitydxfr  _entity_attribs_stringr   reversedrp  setPlainText)rL   elementsindexr  elementr   dxf_parent_stackentitys           rN   rP  CADViewer._on_element_hoveredJ  s   (D	{#c(m_<RSDoG29,,?U2VJ*c**!11*=
!	!'
| 4(nn2233HJ .z::#*<<0K#L #N*D"*+;"<"VHB/ 6vf MM #= 	''-rP   c                h    U R                   b%  U R                   R                  R                  U5      $ g rR   )r  entitydbget)rL   entity_handles     rN   r  CADViewer.load_dxf_entitye  s*    99 99%%))-88rP   )rN  r  r   rh  rd  r^  r(  rs  rZ  rW  rp  rk  rR   )rz  zOptional[CADWidget])r  r   r   rE  )r   )r  rA  r  rA  )r"  r   r  r   r  rA  r  r   rB  rC  )rW   zqg.QResizeEventr   r   )r   z"Iterable[tuple[int, qw.QCheckBox]])r  zqc.Qt.CheckState)rs  z
qc.QPointF)r  zlist[qw.QGraphicsItem]r	  r   )r  rA  r   zDXFGraphic | None) r   r   r   r   r,   staticmethodr  r  r  rT  r#  r  r  r!  r  r  r   r   r  rX  rY  r]  rb  rg  r:   r   rQ  r   rP  r  r   r   r   s   @rN   rE  rE  B  sf   I IV U U*,! FF F
 F FB(&6    $"
 
#Y5 5 
V< < 
V- - 
V. . 
V& & 
V
 
 
"**
 

 
&#. .4 rP   rE  c                    SnU R                   R                  5       R                  5        H  u  p4X! SU SU S3-  nM     U$ )N r  z: r  )r  all_existing_dxf_attribsr   )r   r  r  keyr   s        rN   r  r  k  sJ    D nn==?EEG
("SEE7"-- HKrP   )r  )r   r   r  rA  r   rA  );
__future__r   typingr   r   r   r   r   r  r  ezdxf.addons.xqtr   r5   r	   r:   r
   rD   r   r   r   r  
ezdxf.bboxr   ezdxf.addonsr   ezdxf.addons.drawingr   r   ezdxf.addons.drawing.configr   ezdxf.addons.drawing.propertiesr   r   r   ezdxf.addons.drawing.pyqtr   r   r   r   ezdxf.auditr   ezdxf.documentr   ezdxf.entitiesr   r   ezdxf.layoutsr   ezdxf.lldxf.constr   r6   r!   r   r   rn  r   QMainWindowrE  r  rZ   rP   rN   <module>r'     s   
 # 4 4  	  G G 2 2     8 5 
    " 0   /lb&& l^ :8 :8za8

 a8Hf fR	rP   