
    'jJV                       d dl mZ d dlmZmZmZmZ d dlZd dlZd dl	Z	d dl
mZmZmZ d dl
mZmZm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 d d	lmZ d d
l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,m-Z- d dl.m/Z/ d dl0m1Z1  G d dej2                  Z3 G d d          Z4 G d de3          Z5 G d dej6                  Z7 G d dej8                  Z9d"d#d!Z:dS )$    )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                       e Zd Z e            Zddddd" fd	Zd# fdZd Zd Zd$dZ	d Z
d Zd%dZd&dZd'dZd(dZd)d!Z xZS )*CADGraphicsViewg?T)view_bufferzoom_per_scroll_notchloading_overlayr"   floatr#   r$   boolc               b   t                                                       d| _        d| _        d| _        || _        || _        || _        d| _        | 	                    t          j        j                   |                     t          j        j                   |                     t          j        j                   |                     t          j        j                   |                     t          j        j                   |                     t          j        j                   |                     t2          j        j        t2          j        j        z  t2          j        j        z             |                     t          j                               |                      dd           d S )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       W/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/addons/drawing/qtviewer.pyr-   zCADGraphicsView.__init__*   s\    	
 &&;#' / $$R%5%FGGGR->???''(@AAA))"%*BCCC)899929,---K$k*+k/0	
 	
 	
 	b'))***

1b    eventqg.QCloseEventreturnNonec                |    t                                          |           | j                                         d S N)r,   
closeEventclosingemitrM   rQ   rN   s     rO   rW   zCADGraphicsView.closeEventI   s5    5!!!rP   c                    d S rV    rM   s    rO   clearzCADGraphicsView.clearM   s    rP   c                    d| _         |                                                     t          j                    t
          j        j                   t
          j        	                                 d S )NT)
r4   scene
invalidater;   QRectFr6   rK   	AllLayersQApplicationprocessEventsr]   s    rO   begin_loadingzCADGraphicsView.begin_loadingP   sN    

	R->-HIII
%%'''''rP   	new_sceneqw.QGraphicsScenec                    |                      |           d| _        |                                  |                                                     t          j                    t          j        j	                   d S )NF)
rJ   r4   buffer_scene_rectr`   ra   r;   rb   r6   rK   rc   )rM   rg   s     rO   end_loadingzCADGraphicsView.end_loadingU   s^    i       

	R->-HIIIIIrP   c                ,   |                                  }|                                }|                                | j        z  dz  |                                | j        z  dz  }}|                    |                    | | ||                     d S )N   )r`   	sceneRectwidthr2   heightsetSceneRectadjusted)rM   r`   rbxbys        rO   rj   z!CADGraphicsView.buffer_scene_rect[   s    

OOGGII))A-HHJJ**Q.  	1::rcB3B7788888rP   c                    |                      |                                 t          j        j                   t          |                                           | _        d| _        d S Nr*   )		fitInViewrn   r;   r<   KeepAspectRatior   	transformr/   r.   r]   s    rO   fit_to_scenezCADGraphicsView.fit_to_scened   sJ    t~~'')>???)$..*:*:;;


rP   c                T    t          |                                           | j        z  S rV   )r   rz   r/   r]   s    rO   _get_zoom_amountz CADGraphicsView._get_zoom_amounti   s"    DNN,,--0BBBrP   qg.QWheelEventc                   |                                                                 dz  }t          j        d|          }d| j        |z  z   t          |          z  }| j        |z  }|| j        d         k     r| j        d         | j        z  }n&|| j        d         k    r| j        d         | j        z  }|                     ||           | xj        |z  c_        d S )Nx   r*   r(   r   )	
angleDeltaymathcopysignr1   absr.   r0   rL   )rM   rQ   delta_notches	directionfactorresulting_zooms         rO   
wheelEventzCADGraphicsView.wheelEventl   s     ((**,,..4M!]33	3i??CDVDVVf,D-a000&q)DJ6FFd/222&q)DJ6F

66"""

f



rP   	SavedViewc                    t          |                                 | j        | j        |                                                                 |                                                                           S rV   )r   rz   r/   r.   horizontalScrollBarvalueverticalScrollBarr]   s    rO   	save_viewzCADGraphicsView.save_viewz   sb    NNJ$$&&,,..""$$**,,
 
 	
rP   viewc                   |                      |j                   |j        | _        |j        | _        |                                                     |j                   | 	                                                    |j
                   d S rV   )setTransformrz   default_zoomr/   zoomr.   r   setValuexr   r   )rM   r   s     rO   restore_viewzCADGraphicsView.restore_view   sv    $.)))!.Y
  ""++DF333  ))$&11111rP   painterqg.QPainterrect	qc.QRectFc                "   | j         r| j        r|                                 |                    |t	          j        d                     |                    d           |                                                                 }|	                    t          j        j                   |                    t          j        j                   |                    |                                d           |                                 d S d S d S )Nz	#aa000000Fz
Loading...)r4   r3   savefillRectrE   QColorsetWorldMatrixEnabledviewportr   setBrushr;   r<   NoBrushsetPenwhitedrawTextcenterrestore)rM   r   r   rs   s       rO   drawForegroundzCADGraphicsView.drawForeground   s     	 5 	LLNNNT29[#9#9:::))%000$$&&ARU]+++NN25;'''QXXZZ666OO	 	 	 	rP   )r"   r%   r#   r%   r$   r&   )rQ   rR   rS   rT   )rg   rh   )rS   r%   )rQ   r~   rS   rT   )rS   r   )r   r   r   r   r   r   rS   rT   )__name__
__module____qualname__r   rX   r-   rW   r^   rf   rk   rj   r{   r}   r   r   r   r   __classcell__rN   s   @rO   r!   r!   '   s7       fhhG
 !'* $       >       ( ( (
J J J J9 9 9  
C C C C   
 
 
 
2 2 2 2	 	 	 	 	 	 	 	rP   r!   c                      e Zd Zdd	Zd
S )r   rz   qg.QTransformr   r%   r   r   intr   c                L    || _         || _        || _        || _        || _        d S rV   )rz   r   r   r   r   )rM   rz   r   r   r   r   s         rO   r-   zSavedView.__init__   s,     #(	rP   N)
rz   r   r   r%   r   r%   r   r   r   r   )r   r   r   r-   r\   rP   rO   r   r      s(             rP   r   c                       e Zd Z eej                  Z eee          Z	 fdZ
edd            Z fdZ fdZd fdZd fdZd fdZd Zd Z xZS )CADGraphicsViewWithOverlayc                d     t                      j        di | g | _        d | _        d| _        d S )NTr\   )r,   r-   _selected_items_selected_index_mark_selection)rM   kwargsrN   s     rO   r-   z#CADGraphicsViewWithOverlay.__init__   s>    ""6"""79##rP   rS   Optional[DXFEntity]c                p    | j         r.| j         | j                 }|                    t                    }|S d S rV   )r   r   datar   )rM   graphics_item
dxf_entitys      rO   current_hovered_elementz2CADGraphicsViewWithOverlay.current_hovered_element   s<     	 01EFM&++,BCCJ4rP   c                d    t                                                       d | _        d | _        d S rV   )r,   r^   r   r   rM   rN   s    rO   r^   z CADGraphicsViewWithOverlay.clear   s*    ##rP   c                p    |                                   t                                                       d S rV   )r^   r,   rf   r   s    rO   rf   z(CADGraphicsViewWithOverlay.begin_loading   s,    

rP   r   r   r   r   rT   c           	     \   t                                          ||           | j        r| j        rz| j        | j                 }|                                                    |                                          }|                    |t          j
        dddd                     d S d S d S )Nr      r)   )r,   r   r   r   r   sceneTransformmapRectboundingRectr   rE   r   )rM   r   r   itemrs   rN   s        rO   r   z)CADGraphicsViewWithOverlay.drawForeground   s    w--- 	;D$8 	;'(<=D##%%--d.?.?.A.ABBAQ	!S!S 9 9:::::	; 	; 	; 	;rP   rQ   qg.QMouseEventc                   t                                          |           |                     |                                          }| j                            |           |                                                     |          }|| j        k    r-|| _        | j        rdnd | _	        | 
                                 d S d S )Nr   )r,   mouseMoveEvent
mapToSceneposmouse_movedrY   r`   itemsr   r   _emit_selected)rM   rQ   r   selected_itemsrN   s       rO   r   z)CADGraphicsViewWithOverlay.mouseMoveEvent   s    u%%%ooeiikk**c"""++C00T111#1D (,(<#F11$D !!!!! 21rP   c                   t                                          |           |                                t          j        j        k    rA| j        r<| j        dz   t          | j                  z  | _        | 	                                 d S d S d S rw   )
r,   mouseReleaseEventbuttonr;   r<   
LeftButtonr   r   lenr   rZ   s     rO   r   z,CADGraphicsViewWithOverlay.mouseReleaseEvent   s    !!%(((<<>>RU---$2F-$($81$<$A A $D  !!!!!	 .---rP   c                    | j                             | j        | j                   |                                                     |                                 t          j        j	                   d S rV   )
element_hoveredrY   r   r   r`   ra   rn   r6   rK   ForegroundLayerr]   s    rO   r   z)CADGraphicsViewWithOverlay._emit_selected   sU    !!$"68LMMM

 0 0"2C2STTTTTrP   c                     | j          | _         d S rV   )r   r]   s    rO   toggle_selection_markerz2CADGraphicsViewWithOverlay.toggle_selection_marker   s    #'#77rP   )rS   r   r   )rQ   r   rS   rT   )r   r   r   r   r;   QPointFr   objectr   r   r-   propertyr   r^   rf   r   r   r   r   r   r   r   s   @rO   r   r      s'       &$$KfVS))O$ $ $ $ $    X$ $ $ $ $
         ; ; ; ; ; ;" " " " " "" " " " " "U U U8 8 8 8 8 8 8rP   r   c                       e Zd Z e            fd$ fdZd Zed%d	            Zed&d
            Zed'd            Z	ed(d            Z
dddd)dZd*dZd+dZ	 d,d-dZd.d!Zd/d#Z xZS )0	CADWidgetr   r!   configr   c                   t                                                       t          j                    }|                    dddd           |                    |           |                     |           || _        | j        j        	                    | j
                   || _        t          j                                        | _        d | _        d | _        t%                      | _        d| _        |                                  d S )Nr   Model)r,   r-   r6   QVBoxLayoutsetContentsMargins	addWidget	setLayout_viewrX   connectclose_configezdxfbboxCache_bbox_cache_doc_render_contextset_visible_layers_current_layout_reset_backend)rM   r   r   layoutrN   s       rO   r-   zCADWidget.__init__   s    !!!!!Q1---v

""4:... :++--!	.2),$+rP   c                ,    t                      | _        d S rV   )r   _backendr]   s    rO   r   zCADWidget._reset_backend   s    #rP   rS   r   c                    | j         S rV   )r   r]   s    rO   doczCADWidget.doc   s
    yrP   c                    | j         S rV   )r   r]   s    rO   r   zCADWidget.view   s
    zrP   r   c                    | j         S rV   )r   r]   s    rO   render_contextzCADWidget.render_context       ##rP   strc                    | j         S rV   )r   r]   s    rO   current_layoutzCADWidget.current_layout   r   rP   r   Tr   drawdocumentr   r  r&   c                  || _         t          j                                        | _        |                     |          | _        |                                  t                      | _	        d | _
        |r|                     |           d S d S rV   )r   r   r   r   r   _make_render_contextr   r   r   r   r   draw_layout)rM   r  r   r  s       rO   set_documentzCADWidget.set_document  s     	 :++--#88BB"uu# 	%V$$$$$	% 	%rP   layersSet[str]rT   c                L    || _         |                     | j        d           d S )NF
reset_view)r   r	  r   )rM   r  s     rO   set_visible_layerszCADWidget.set_visible_layers  s,    %-%@@@@@rP   r   c                \     d fd}t          |          }|                    |           |S )Nr  Sequence[LayerProperties]c                H    j         rt          | j         d           d S d S )NT)state)r   r   )r  rM   s    rO   update_layers_statez;CADWidget._make_render_context.<locals>.update_layers_state  s9    # K )=TJJJJJJK KrP   )r  r  )r   set_layer_properties_override)rM   r   r  r   s   `   rO   r  zCADWidget._make_render_context  sQ    	K 	K 	K 	K 	K 	K 's++445HIIIrP   layout_namer  c                ^   || _         | j                                         t          j                    }| j                            |           | j                            |          }| 	                    |           	 | 
                                                    |           | j                                         n# | j                                         w xY w| j                            |           | j                                         |r| j                                         d S d S rV   )r   r   rf   r6   rK   r   	set_scener   r   _update_render_context_create_frontendr	  finalizerk   rj   r{   )rM   r  r  rg   r   s        rO   r	  zCADWidget.draw_layout!  s   
  +
  """%''		***!!+..##F+++	%!!##//777M""$$$$DM""$$$$
y)))
$$&&& 	&J##%%%%%	& 	&s   >'B? ?Cr   c                P    t          | j        | j        | j        | j                  S )N)ctxoutr   
bbox_cache)r   r   r   r   r   r]   s    rO   r  zCADWidget._create_frontend5  s/    $<'	
 
 
 	
rP   r   c                L    | j         J | j                             |           d S rV   )r   set_current_layout)rM   r   s     rO   r  z CADWidget._update_render_context=  s.    #/////77777rP   )r   r!   r   r   )rS   r   )rS   r!   )rS   r   )rS   r  )r  r   r   r  r  r&   )r  r  rS   rT   )r   r   rS   r   Tr  r  r  r&   )rS   r   )r   r   rS   rT   )r   r   r   r   r-   r   r   r   r   r   r  r
  r  r  r	  r  r  r   r   s   @rO   r   r      sr       FSmoo        & & &    X    X $ $ $ X$ $ $ $ X$ % % % % % %"A A A A     & & & & &(
 
 
 
8 8 8 8 8 8 8 8rP   r   c                      e Zd Zd7d8 fdZed9d            Zd	 Zd:d;dZd Zd
ddd<dZ	d Z
d Z	 d=d>dZd?d!Zd@d#Z ee          dAd&            Z e            d'             Z e            d(             Z e            d)             Z e            d*             Z e            d+             Z eej                  dBd.            Z eee          dCd3            ZdDd6Z xZS )E	CADViewerNcadOptional[CADWidget]c                   t                                                       d | _        |/t          t	                      t                                | _        n|| _        | j        j        | _        t          | j        t                    rH| j        j
                            | j                   | j        j                            | j                   |                                 }t!          d|           }|j                            | j                   |                    |           |                    d          | _        t!          d|           }|j                            | j                   |                    |           t!          d|           }|j                            | j                   |                    |           |                    d          | _        t!          d|           }|                    t5          j        d                     |j                            | j                   | j                            |           t!          d|           | _        | j                            d	           | j                            d	           | j                            | j                   t!          d
|           }|                    d	           |j                             | j!                   | j                            |           tE          j#                    | _$        | j$        %                    d           | j$        j&                            | j'                   d | _(        tS          j*        tD          j+        j,                  | _-        tS          j.                    | _/        | j/        0                    d           | j-        1                    | j/                   tS          j2                    }tS          j3                    }	|	4                    dddd           tS          j5                    | _6        | j6        7                    d	           |	1                    | j6                   tS          j8                    | _9        |	1                    | j9                   |:                    |	           | j-        1                    |           tS          j*                    }
| ;                    |
           |
1                    | j                   |
1                    | j-                   |
<                    dd           |
<                    dd	           |
=                                }|
>                    t          d|z  dz            t          |dz            g           | @                    d           | A                    dd           | B                                 d S )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setShortcutrE   QKeySequence_reloadkeep_view_actionsetCheckable
setCheckedtoggled_toggle_watchr;   QTimer_watch_timersetIntervaltimeout_check_watch_watch_mtimer6   	QSplitterr<   VerticalsidebarQListWidgetr  setStyleSheetr   QWidgetr   r   QPlainTextEditselected_infosetReadOnlyQLabel	mouse_posr   setCentralWidgetsetCollapsiblero   setSizesr   setWindowTitleresizeshow)rM   r'  menuselect_doc_actiontoggle_sidebar_actiontoggle_selection_marker_actionreload_actionwatch_actioninfo_containerinfo_layout	containerwrN   s               rO   r-   zCADViewer.__init__C  s   '+	;!"<">">}WWWDIIDIY^
dj"<== 	AJ&..t/GHHHJ"**4+?@@@||~~#$5t<<#++D,<===()))"&,,"?"? '(8$ ? ?'//0DEEE,---)01G)N)N&&0889VWWW5666<<11$//!!"/$"7"7888''555""=111 'T : :**4000((...""4#8999w--!!$'''$$T%7888""<000IKK%%b)))!))$*;<<< |BEN33n&&!!>	
 	
 	
 	t{+++n&&&&q!Q222.00&&t,,,d0111dn---  ---~...LNN	i(((DI&&&DL)))  E***  D)))OOCA	NNCAJJ7888L)))D#		rP   r   r   rS   c                X    t          t          t                      |                     S )Nr*  )r'  )r&  r   r   r*  s    rO   from_configzCADViewer.from_config  s'    Y'A'C'CFSSSTTTTrP   c                ^    t                      | _        t          | j                  | _        d S rV   )r   r   r   r1  r]   s    rO   _create_cad_widgetzCADViewer._create_cad_widget  s$    /11
dj))			rP   r   pathr  r   c                   	 t           j                            |          d                                         dk    r)t	          j        |          }|                                }nV	 t          j        |          }|                                }n,# t          j        $ r t          j        |          \  }}Y nw xY w| 
                    |||           d S # t          $ r9}t          j                            | dt          |                     Y d }~d S d }~wt           $ r?}t          j                            | dd| dt          |                      Y d }~d S d }~ww xY w)Nr*   z.dwgr   zLoading ErrorDXF Structure ErrorzInvalid DXF file "": )osrk  splitextlowerr   readfileauditr   DXFErrorr   r
  IOErrorr6   QMessageBoxcriticalr  r   )rM   rk  r   r   auditores         rO   	load_filezCADViewer.load_file  s   	w%%a(..00F::nT**))++*...C "iikkGG ~ : : :#*#3D#9#9LC: c76::::: 	C 	C 	CN##D/3q66BBBBBBBBB  	 	 	N##%6T66c!ff66        	sH   A$C 'B ;C &B96C 8B99C 
E  .DE !4EE c                    t           j                            | dd          \  }}|r|                     |           d S d S )NzSelect CAD Documentz'CAD Documents (*.dxf *.DXF *.dwg *.DWG))captionfilter)r6   QFileDialoggetOpenFileNamer{  )rM   rk  _s      rO   r7  zCADViewer._select_doc  sW    .00)< 1 
 
a
  	!NN4     	! 	!rP   Tr  r  r   ry  r   r  r&   c          	     v   t          |j                  }|dk    r^t          j                            | dd| d|j         d          }|t          j        j        k    r|                    |j                   d S |j        r<	 t          j	        |j                  j
        | _        n# t          $ r
 d | _        Y nw xY wd | _        | j                            |||           || _        |                                  |                                  |                     dt'          |j                  z              d S )Nr   zFound DXF ErrorszFound z errors in file "z"
Load file anyway? r  zCAD Viewer - )r   errorsr6   rw  questionfilenameNoprint_error_reportrp  statst_mtimerK  OSErrorr1  r
  r   _populate_layouts_populate_layer_listrZ  r  )rM   r  ry  r   r  error_countrets          rO   r
  zCADViewer.set_document  s[    '.))??.))"& & &x7H & & & C bn'''**7>::: 	%)$&GH,=$>$>$G!! ) ) )$(!!!) !%D	xTBBB	   !!###Oc(2C.D.DDEEEEEs   #B% %B98B9c                   | j                             d           | j                                          | j        j        j                                         D ]}|j        }t          j                    }| j         	                    |           t          j
        |          }|                    |j        rt          j        j        nt          j        j                   |j                            | j                   t)          |j        d          rdnd}|                    d| d|j                    | j                             ||           | j                             d           d S )NTg?z#FFFFFFz#000000zcolor: z; background-color: F)r  blockSignalsr^   r1  r   valueslayerr6   QListWidgetItemaddItem	QCheckBoxsetCheckState
is_visibler;   r<   Checked	UncheckedstateChangedr   _layers_updatedr   colorrP  setItemWidget)rM   r  namer   checkbox
text_colors         rO   r  zCADViewer._populate_layer_list  sT     &&&Y-4;;== 	6 	6E;D%''DK%%%|D))H""!&!1Fru   !))$*>???&3EK&E&ET9J""G*GG%+GG   K%%dH5555  '''''rP   c                "    d fd} j                                           j        j                                        D ]O}t          |           }|j                             ||                      j                             |           Pd S )Nr  r  c                      fd}|S )Nc                 6                          d           d S )NTr  )r	  )r  rM   s   rO   runz=CADViewer._populate_layouts.<locals>.draw_layout.<locals>.run  s"      $ 77777rP   r\   )r  r  rM   s   ` rO   r	  z0CADViewer._populate_layouts.<locals>.draw_layout  s)    8 8 8 8 8 8 JrP   )r  r  )	r:  r^   r1  r   layout_names_in_taborderr   r6  r   r8  )rM   r	  r  actions   `   rO   r  zCADViewer._populate_layouts  s    	 	 	 	 	 	 	%%'''9=AACC 	6 	6K[$//F$$[[%=%=>>>#--f5555	6 	6rP   r  r  c                v   t          d|            	 t          j                    }| j                            ||           t          j                    |z
  }t          d|dd           d S # t
          $ r?}t          j                            | dd| dt          |                      Y d }~d S d }~ww xY w)	Nzdrawing r  ztook .4fz secondsrn  zAbort rendering of layout "ro  )
printtimeperf_counterr1  r	  r   r6   rw  rx  r  )rM   r  r  startdurationrz  s         rO   r	  zCADViewer.draw_layout  s    
 	&&&'''
	%''EI!!+*!EEE(**U2H0(000011111  	 	 	N##%FkFFc!ffFF        	s   AA/ /
B894B33B8rQ   qg.QResizeEventrT   c                8    | j                                          d S rV   )r   r{   )rM   rQ   s     rO   resizeEventzCADViewer.resizeEvent  s    
!!!!!rP   "Iterable[tuple[int, qw.QCheckBox]]c              #     K   t          | j                                                  D ]:}| j                            | j                            |                    }||fV  ;d S rV   )ranger  count
itemWidgetr   )rM   ir   s      rO   _layer_checkboxeszCADViewer._layer_checkboxes  si      t{((**++ 	 	A;))$+*:*:1*=*=>>DT'MMMM	 	rP   
item_stateqc.Qt.CheckStatec                <   t           j                                        t          j        j        z  }|rY|                                 D ]D\  }}|                    d           |                    |           |                    d           Et                      }|                                 D ]S\  }}|
                                t          j        j        k    r'|                    |                                           T| j                            |           d S )NTF)r6   rd   keyboardModifiersr;   r<   ShiftModifierr  r  r  r   
checkStater  addtextr1  r  )rM   r  
shift_heldr  r   visible_layersr  s          rO   r  zCADViewer._layers_updated  s   _668825;NN
 	)1133 ) )4!!$'''"":...!!%((((..00 	1 	1HAu!!RU]22""5::<<000	$$^44444rP   c                j    | j                             | j                                                     d S rV   )rN  	setHiddenisHiddenr]   s    rO   r;  zCADViewer._toggle_sidebar  s/    4<#8#8#:#::;;;;;rP   c                8    | j                                          d S rV   )r   r   r]   s    rO   r<  z"CADViewer._toggle_selection_marker#  s    
**,,,,,rP   c                P   | j         j        | j         j        j        r| j                                        }|r| j                                        nd }|                     | j         j        j        | j         j                   |r | j        	                    |           d S d S d S d S )Nrm  )
r1  r   r  rA  	isCheckedr   r   r{  r  r   )rM   	keep_viewr   s      rO   r@  zCADViewer._reload'  s    9=$)?$-7799I-6@4:'')))DDNN49=1$):RNSSS .
''----- %$$$. .rP   c                    | j                                         r| j                                          d S | j                                          d S rV   )rG  isActivestopr  r]   s    rO   rE  zCADViewer._toggle_watch0  sO    %%'' 	&""$$$$$##%%%%%rP   c                    | j         | j        j        d S | j        j        j        }|rM	 t	          j        |          j        }n# t          $ r Y d S w xY w|| j         k    r|                                  d S d S d S rV   )	rK  r1  r   r  rp  r  r  r  r@  )rM   r  mtimes      rO   rJ  zCADViewer._check_watch7  s    $	(=F9=) 	))2   )))	 	
 *)s   A 
AArV  
qc.QPointFc                    | j                             d|                                dd|                                dd           d S )Nzmouse position: r  z, 
)rV  setTextr   r   )rM   rV  s     rO   r4  zCADViewer._on_mouse_movedD  sR    Iy{{}}IIIIKKMMIIII	
 	
 	
 	
 	
rP   elementslist[qw.QGraphicsItem]indexr   c                   |sd}nd|dz    dt          |           d}||         }|                    t                    }t          |t                    r|                     |          }||dz  }nx|d| d|j        j         d	z  }|t          |          z  }|                    t                    }|r4|d
z  }t          |          D ]}|d| dz  }|t          |d          z  } | j                            |           d S )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   r2  r  load_dxf_entitydxfr  _entity_attribs_stringr   reversedrS  setPlainText)rM   r  r  r  elementr   dxf_parent_stackentitys           rO   r3  zCADViewer._on_element_hoveredJ  s\    	N(DDS	SSc(mmSSSDuoG29,,?U2V2VJ*c** >!11*==
!	!J
 J J(n2J J J .z:::#*<<0K#L#L # NN*D"*+;"<"< N NV/ 6vf M M MM''-----rP   entity_handleDXFGraphic | Nonec                R    | j         | j         j                            |          S d S rV   )r   entitydbget)rM   r  s     rO   r  zCADViewer.load_dxf_entitye  s(    9 9%))-888trP   rV   )r'  r(  )r   r   rS   r&  )r   )rk  r  r   r  )r  r   ry  r   r   r  r  r&   r#  r$  )rQ   r  rS   rT   )rS   r  )r  r  )rV  r  )r  r  r  r   )r  r  rS   r  )r   r   r   r-   staticmethodrh  rj  r{  r7  r
  r  r  r	  r  r  r   r   r  r;  r<  r@  rE  rJ  r;   r   r4  r   r3  r  r   r   s   @rO   r&  r&  B  sq       I I I I I I IV U U U \U* * *    ,! ! ! F F F F F FB( ( (&6 6 6       $" " " "   
 
T#YY5 5 5 Y5 
TVV< < V< 
TVV- - V- 
TVV. . V. 
TVV& & V& 
TVV
 
 V
 
T"*
 
 
 

 
T&#. . . .4       rP   r&   r   r   r  r  rS   c                    d}| j                                                                         D ]\  }}|| d| d| dz  }|S )Nr  r  z: r  )r  all_existing_dxf_attribsr   )r   r  r  keyr   s        rO   r  r  k  s^    D n==??EEGG . .
U6--S--E----KrP   )r  )r   r   r  r  rS   r  );
__future__r   typingr   r   r   r   r   rp  r  ezdxf.addons.xqtr   r6   r	   r;   r
   rE   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   r7   r!   r   r   rQ  r   QMainWindowr&  r  r\   rP   rO   <module>r     s  
 # " " " " " 4 4 4 4 4 4 4 4 4 4 4 4  				  G G G G G G G G G G 2 2 2 2 2 2 2 2 2 2                  8 8 8 8 8 8 8 8 5 5 5 5 5 5         
                   " " " " " " 0 0 0 0 0 0 0 0             / / / / / /l l l l lb& l l l^       :8 :8 :8 :8 :8 :8 :8 :8za8 a8 a8 a8 a8
 a8 a8 a8Hf f f f f f f fR	      rP   