
    OgJV                       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jd                        Z3 G d d      Z4 G d de3      Z5 G d dejl                        Z7 G d dejp                        Z9dddZ:y)    )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_overlayc                  t         |           d| _        d| _        d| _        || _        || _        || _        d| _        | j                  t        j                  j                         | j                  t        j                  j                         | j                  t        j                   j"                         | j%                  t        j                   j"                         | j'                  t        j                  j(                         | j+                  t        j,                  j.                         | j1                  t2        j4                  j6                  t2        j4                  j8                  z  t2        j4                  j:                  z         | j=                  t        j>                                | jA                  dd       y )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       b/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/drawing/qtviewer.pyr+   zCADGraphicsView.__init__*   sA    	
 &&;#' / $$R%5%5%F%FGR-->>?''(@(@A))"%%*B*BC))889299,,-KK$$kk**+kk//0	
 	b'')*

1b    c                X    t         |   |       | j                  j                          y N)r*   
closeEventclosingemitrK   eventrL   s     rM   rQ   zCADGraphicsView.closeEventI   s     5!rN   c                     y rP    rK   s    rM   clearzCADGraphicsView.clearM   s    rN   c                    d| _         | j                         j                  t        j                         t
        j                  j                         t
        j                  j                          y )NT)
r2   scene
invalidater9   QRectFr4   rI   	AllLayersQApplicationprocessEventsrX   s    rM   begin_loadingzCADGraphicsView.begin_loadingP   sB    

		R->->-H-HI
%%'rN   c                    | j                  |       d| _        | j                          | j                         j	                  t        j                         t        j                  j                         y )NF)
rH   r2   buffer_scene_rectr[   r\   r9   r]   r4   rI   r^   )rK   	new_scenes     rM   end_loadingzCADGraphicsView.end_loadingU   sJ    i   

		R->->-H-HIrN   c                   | j                         }|j                         }|j                         | j                  z  dz  |j	                         | j                  z  dz  }}|j                  |j                  | | ||             y )N   )r[   	sceneRectwidthr0   heightsetSceneRectadjusted)rK   r[   rbxbys        rM   rc   z!CADGraphicsView.buffer_scene_rect[   su    

OOGGI)))A-HHJ***Q.  	1::rcB3B78rN   c                    | j                  | j                         t        j                  j                         t        | j                               | _        d| _        y Nr(   )		fitInViewrh   r9   r:   KeepAspectRatior   	transformr-   r,   rX   s    rM   fit_to_scenezCADGraphicsView.fit_to_scened   s<    t~~')>)>?)$..*:;
rN   c                N    t        | j                               | j                  z  S rP   )r   rt   r-   rX   s    rM   _get_zoom_amountz CADGraphicsView._get_zoom_amounti   s    DNN,-0B0BBBrN   c                   |j                         j                         dz  }t        j                  d|      }d| j                  |z  z   t        |      z  }| j                  |z  }|| j                  d   k  r| j                  d   | j                  z  }n.|| j                  d   kD  r| j                  d   | j                  z  }| j                  ||       | xj                  |z  c_        y )Nx   r(   r&   r   )	
angleDeltaymathcopysignr/   absr,   r.   rJ   )rK   rU   delta_notches	directionfactorresulting_zooms         rM   
wheelEventzCADGraphicsView.wheelEventl   s     ((*,,.4MM!]3	33i??CDVVf,D--a00&&q)DJJ6Fd//22&&q)DJJ6F

66"

f
rN   c                    t        | j                         | j                  | j                  | j	                         j                         | j                         j                               S rP   )	SavedViewrt   r-   r,   horizontalScrollBarvalueverticalScrollBarrX   s    rM   	save_viewzCADGraphicsView.save_viewz   sS    NNJJ$$&,,.""$**,
 	
rN   c                "   | j                  |j                         |j                  | _        |j                  | _        | j                         j                  |j                         | j                         j                  |j                         y rP   )setTransformrt   default_zoomr-   zoomr,   r   setValuexr   r{   )rK   views     rM   restore_viewzCADGraphicsView.restore_view   sc    $..)!..YY
  "++DFF3 ))$&&1rN   c                   | j                   r| j                  r|j                          |j                  |t	        j
                  d             |j                  d       | j                         j                         }|j                  t        j                  j                         |j                  t        j                  j                         |j                  |j!                         d       |j#                          y y y )Nz	#aa000000Fz
Loading...)r2   r1   savefillRectrC   QColorsetWorldMatrixEnabledviewportrectsetBrushr9   r:   NoBrushsetPenwhitedrawTextcenterrestore)rK   painterr   rm   s       rM   drawForegroundzCADGraphicsView.drawForeground   s     5 5LLNT299[#9:))%0$$&ARUU]]+NN255;;'QXXZ6OO !6rN   )r"   floatr#   r   r$   bool)rU   zqg.QCloseEventreturnNone)rd   zqw.QGraphicsScene)r   r   )rU   zqg.QWheelEventr   r   )r   r   )r   r   r   zqg.QPainterr   z	qc.QRectFr   r   )__name__
__module____qualname__r   rR   r+   rQ   rY   ra   re   rc   ru   rw   r   r   r   r   __classcell__rL   s   @rM   r!   r!   '   sq    hG
 !'* $   %	
 >(
J9
C
2	rN   r!   c                  (    e Zd Z	 	 	 	 	 	 	 	 	 	 ddZy)r   c                J    || _         || _        || _        || _        || _        y rP   )rt   r   r   r   r{   )rK   rt   r   r   r   r{   s         rM   r+   zSavedView.__init__   s(     #(	rN   N)
rt   zqg.QTransformr   r   r   r   r   intr{   r   )r   r   r   r+   rW   rN   rM   r   r      s/    &6;CHMPUXrN   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                N    t        |   di | g | _        d | _        d| _        y )NTrW   )r*   r+   _selected_items_selected_index_mark_selection)rK   kwargsrL   s     rM   r+   z#CADGraphicsViewWithOverlay.__init__   s+    "6"79##rN   c                |    | j                   r0| j                   | j                     }|j                  t              }|S y rP   )r   r   datar   )rK   graphics_item
dxf_entitys      rM   current_hovered_elementz2CADGraphicsViewWithOverlay.current_hovered_element   s;     001E1EFM&++,BCJrN   c                >    t         |           d | _        d | _        y rP   )r*   rY   r   r   rK   rL   s    rM   rY   z CADGraphicsViewWithOverlay.clear   s    ##rN   c                B    | j                          t        | 	          y rP   )rY   r*   ra   r   s    rM   ra   z(CADGraphicsViewWithOverlay.begin_loading   s    

rN   c           	     6   t         |   ||       | j                  r|| j                  ro| j                  | j                     }|j                         j                  |j                               }|j                  |t        j                  dddd             y y y )Nr      r'   )r*   r   r   r   r   sceneTransformmapRectboundingRectr   rC   r   )rK   r   r   itemrm   rL   s        rM   r   z)CADGraphicsViewWithOverlay.drawForeground   s    w-D$8$8''(<(<=D##%--d.?.?.ABAQ		!S!S 9: %9rN   c                N   t         |   |       | j                  |j                               }| j                  j                  |       | j                         j                  |      }|| j                  k7  r-|| _        | j                  rdnd | _	        | j                          y y )Nr   )r*   mouseMoveEvent
mapToSceneposmouse_movedrS   r[   itemsr   r   _emit_selected)rK   rU   r   selected_itemsrL   s       rM   r   z)CADGraphicsViewWithOverlay.mouseMoveEvent   s    u%ooeiik*c"++C0T111#1D (,(<(<1$D ! 2rN   c                
   t         |   |       |j                         t        j                  j
                  k(  rH| j                  r;| j                  dz   t        | j                        z  | _        | j                          y y y rq   )
r*   mouseReleaseEventbuttonr9   r:   
LeftButtonr   r   lenr   rT   s     rM   r   z,CADGraphicsViewWithOverlay.mouseReleaseEvent   sp    !%(<<>RUU---$2F2F$($8$81$<$$A $D  !	 3G-rN   c                    | j                   j                  | j                  | j                         | j	                         j                  | j                         t        j                  j                         y rP   )
element_hoveredrS   r   r   r[   r\   rh   r4   rI   ForegroundLayerrX   s    rM   r   z)CADGraphicsViewWithOverlay._emit_selected   sM    !!$"6"68L8LM

 0"2C2C2S2STrN   c                (    | j                    | _         y rP   )r   rX   s    rM   toggle_selection_markerz2CADGraphicsViewWithOverlay.toggle_selection_marker   s    #'#7#77rN   )r   zOptional[DXFEntity]r   )rU   zqg.QMouseEventr   r   )r   r   r   r   r9   QPointFr   objectr   r   r+   propertyr   rY   ra   r   r   r   r   r   r   r   s   @rM   r   r      sZ    $KVS)O$  $
 ;""U8rN   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 )	CADWidgetc                   t         |           t        j                         }|j	                  dddd       |j                  |       | j                  |       || _        | j                  j                  j                  | j                         || _        t        j                  j                         | _        d | _        d | _        t%               | _        d| _        | j+                          y )Nr   Model)r*   r+   r4   QVBoxLayoutsetContentsMargins	addWidget	setLayout_viewrR   connectclose_configezdxfbboxCache_bbox_cache_doc_render_contextset_visible_layers_current_layout_reset_backend)rK   r   configlayoutrL   s       rM   r+   zCADWidget.__init__   s    !!!!Q1-v


""4::. ::++-!	.2),$+rN   c                "    t               | _        y rP   )r   _backendrX   s    rM   r   zCADWidget._reset_backend   s    #rN   c                    | j                   S rP   )r   rX   s    rM   doczCADWidget.doc   s    yyrN   c                    | j                   S rP   )r   rX   s    rM   r   zCADWidget.view   s    zzrN   c                    | j                   S rP   )r   rX   s    rM   render_contextzCADWidget.render_context       ###rN   c                    | j                   S rP   )r   rX   s    rM   current_layoutzCADWidget.current_layout   r   rN   r   Tr   drawc                   || _         t        j                  j                         | _        | j                  |      | _        | j                          t               | _	        d | _
        |r| j                  |       y y rP   )r   r   r   r   r   _make_render_contextr   r   r   r   r   draw_layout)rK   documentr   r   s       rM   set_documentzCADWidget.set_document  sg     	 ::++-#88B"u#V$ rN   c                L    || _         | j                  | j                  d       y )NF
reset_view)r   r   r   )rK   layerss     rM   set_visible_layerszCADWidget.set_visible_layers  s#    %--%@rN   c                L     d fd}t        |      }|j                  |       |S )Nc                P    j                   rt        | j                   d       y y )NT)state)r   r   )r  rK   s    rM   update_layers_statez;CADWidget._make_render_context.<locals>.update_layers_state  s#    ## )=)=TJ $rN   )r  zSequence[LayerProperties])r   set_layer_properties_override)rK   r   r
  r   s   `   rM   r   zCADWidget._make_render_context  s*    	K 's+445HIrN   c                R   || _         | j                  j                          t        j                         }| j
                  j                  |       | j                  j                  |      }| j                  |       	 | j                         j                  |       | j
                  j                          | j                  j                  |       | j                  j                          |r| j                  j                          y y # | j
                  j                          w xY wrP   )r   r   ra   r4   rI   r   	set_scener   r   _update_render_context_create_frontendr   finalizere   rc   ru   )rK   layout_namer  rd   r   s        rM   r   zCADWidget.draw_layout!  s    
  +

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

y)

$$&JJ##%  MM""$s   >D
 
D&c                p    t        | j                  | j                  | j                  | j                        S )N)ctxoutr   
bbox_cache)r   r   r   r   r   rX   s    rM   r  zCADWidget._create_frontend5  s/    $$<<''	
 	
rN   c                V    | j                   J | j                   j                  |       y rP   )r   set_current_layout)rK   r   s     rM   r  z CADWidget._update_render_context=  s(    ##/////7rN   )r   r!   r   r   )r   r   )r   r!   )r   r   )r   str)r   r   r   r  r   r   )r  zSet[str]r   r   )r   r   r   r   Tr  r  r  r   )r   r   )r   r   r   r   )r   r   r   r   r+   r   r   r   r   r   r   r  r  r   r   r  r  r   r   s   @rM   r   r      s    FSo  &     $ $ $ $ %% 	%
 %"A  && &(
8rN   r   c                      e Zd Zdd fdZedd       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      d"d       Z e       d        Z e       d        Z e       d        Z e       d        Z e       d        Z eej0                        d#d       Z eee      d$d       Zd%dZ xZS )&	CADViewerc                   t         |           d | _        |#t        t	               t                     | _        n|| _        | j                  j                  | _        t        | j                  t              r^| j                  j                  j                  | j                         | j                  j                  j                  | j                         | j                         }t!        d|       }|j"                  j                  | j$                         |j'                  |       |j)                  d      | _        t!        d|       }|j"                  j                  | j,                         |j'                  |       t!        d|       }|j"                  j                  | j.                         |j'                  |       |j)                  d      | _        t!        d|       }|j3                  t5        j6                  d             |j"                  j                  | j8                         | j0                  j'                  |       t!        d|       | _        | j:                  j=                  d	       | j:                  j?                  d	       | j0                  j'                  | j:                         t!        d
|       }|j=                  d	       |j@                  j                  | jB                         | j0                  j'                  |       tE        jF                         | _$        | jH                  jK                  d       | jH                  jL                  j                  | jN                         d | _(        tS        jT                  tD        jV                  jX                        | _-        tS        j\                         | _/        | j^                  ja                  d       | jZ                  jc                  | j^                         tS        jd                         }tS        jf                         }	|	ji                  dddd       tS        jj                         | _6        | jl                  jo                  d	       |	jc                  | jl                         tS        jp                         | _9        |	jc                  | jr                         |ju                  |	       | jZ                  jc                  |       tS        jT                         }
| jw                  |
       |
jc                  | j                         |
jc                  | jZ                         |
jy                  dd       |
jy                  dd	       |
j{                         }|
j}                  t        d|z  dz        t        |dz        g       | j                  d       | j                  dd       | j                          y )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setShortcutrC   QKeySequence_reloadkeep_view_actionsetCheckable
setCheckedtoggled_toggle_watchr9   QTimer_watch_timersetIntervaltimeout_check_watch_watch_mtimer4   	QSplitterr:   VerticalsidebarQListWidgetr  setStyleSheetr   QWidgetr   r   QPlainTextEditselected_infosetReadOnlyQLabel	mouse_posr   setCentralWidgetsetCollapsibleri   setSizesr   setWindowTitleresizeshow)rK   cadmenuselect_doc_actiontoggle_sidebar_actiontoggle_selection_marker_actionreload_actionwatch_actioninfo_containerinfo_layout	containerwrL   s               rM   r+   zCADViewer.__init__C  s:   '+	;!"<">}WDIDI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#		rN   c                @    t        t        t               |             S )Nr  )rQ  )r  r   r   r  s    rM   from_configzCADViewer.from_config  s    Y'A'CFSTTrN   c                V    t               | _        t        | j                        | _        y rP   )r   r   r   r%  rX   s    rM   _create_cad_widgetzCADViewer._create_cad_widget  s    /1
djj)	rN   r   c                   	 t         j                  j                  |      d   j                         dk(  r&t	        j
                  |      }|j                         }n&	 t        j
                  |      }|j                         }| j                  |||       y # t        j                  $ r t        j
                  |      \  }}Y Bw xY w# t        $ r4}t        j                  j                  | dt        |             Y d }~y d }~wt         $ r:}t        j                  j                  | dd| dt        |              Y d }~y d }~ww xY w)Nr(   z.dwgr   zLoading ErrorDXF Structure ErrorzInvalid DXF file "": )ospathsplitextlowerr   readfileauditr   DXFErrorr   r  IOErrorr4   QMessageBoxcriticalr  r   )rK   re  r   r   auditores         rM   	load_filezCADViewer.load_file  s   	ww%a(..0F:nnT*))+*...C "iikGc76:	 ~~ :#*#3#3D#9LC:
  	CNN##D/3q6BB  	NN##%$TF#c!fX6 	sH   AC B 1$C +CC CC 	E*C??E0E  Ec                v    t         j                  j                  | dd      \  }}|r| j                  |       y y )NzSelect CAD Documentz'CAD Documents (*.dxf *.DXF *.dwg *.DWG))captionfilter)r4   QFileDialoggetOpenFileNamerp  )rK   re  _s      rM   r+  zCADViewer._select_doc  s>    ..00)< 1 
a
 NN4  rN   Tr   c          	        t        |j                        }|dkD  rkt        j                  j	                  | dd| d|j
                   d      }|t        j                  j                  k(  r|j                  |j                         y |j
                  r0	 t        j                  |j
                        j                  | _        nd | _        | j                  j                  |||       || _        | j!                          | j#                          | j%                  dt'        |j
                        z          y # t        $ r
 d | _        Y w xY w)Nr   zFound DXF ErrorszFound z errors in file "z"
Load file anyway? r   zCAD Viewer - )r   errorsr4   rl  questionfilenameNoprint_error_reportrd  statst_mtimer?  OSErrorr%  r  r   _populate_layouts_populate_layer_listrN  r  )rK   r   rn  r   r   error_countrets          rM   r  zCADViewer.set_document  s     '..)?..))"%6x7H7H6I J% &C bnn'''**7>>:)$&GGH,=,=$>$G$G! !%D		xTB	 !!#Oc(2C2C.DDE  )$(!)s   .D6 6E	E	c                D   | j                   j                  d       | j                   j                          | j                  j                  j                   j                         D ]  }|j                  }t        j                         }| j                   j                  |       t        j                  |      }|j                  |j                  rt        j                  j                  nt        j                  j                          |j"                  j%                  | j&                         t)        |j*                  d      rdnd}|j-                  d| d|j*                          | j                   j/                  ||       ! | j                   j                  d       y )NTg?z#FFFFFFz#000000zcolor: z; background-color: F)r  blockSignalsrY   r%  r   valueslayerr4   QListWidgetItemaddItem	QCheckBoxsetCheckState
is_visibler9   r:   Checked	UncheckedstateChangedr   _layers_updatedr   colorrD  setItemWidget)rK   r  namer   checkbox
text_colors         rM   r  zCADViewer._populate_layer_list  s+     &YY--44;;= 	6E;;D%%'DKK%||D)H""!&!1!1ruu !!))$*>*>?&3EKK&E9J""*%9%++G KK%%dH5	6 	  'rN   c                (    d fd} j                   j                           j                  j                  j	                         D ]J  }t        |       }|j                  j                   ||              j                   j                  |       L y )Nc                      fd}|S )Nc                 ,    j                   d       y )NTr  )r   )r  rK   s   rM   runz=CADViewer._populate_layouts.<locals>.draw_layout.<locals>.run  s      $ 7rN   rW   )r  r  rK   s   ` rM   r   z0CADViewer._populate_layouts.<locals>.draw_layout  s    8 JrN   )r  r  )	r.  rY   r%  r   layout_names_in_taborderr   r*  r   r,  )rK   r   r  actions   `   rM   r  zCADViewer._populate_layouts  su    	 	%%'99==AAC 	6K[$/F$$[%=>##--f5	6rN   c                ^   t        d|        	 t        j                         }| j                  j	                  ||       t        j                         |z
  }t        d|dd       y # t
        $ r:}t        j                  j                  | dd| dt        |              Y d }~y d }~ww xY w)	Nzdrawing r  ztook .4fz secondsrb  zAbort rendering of layout "rc  )
printtimeperf_counterr%  r   r   r4   rl  rm  r  )rK   r  r  startdurationro  s         rM   r   zCADViewer.draw_layout  s    
 	&'
	%%'EII!!+*!E((*U2HE(3x01  	NN##%-k]#c!fXF 	s   AA) )	B,20B''B,c                8    | j                   j                          y rP   )r   ru   )rK   rU   s     rM   resizeEventzCADViewer.resizeEvent  s    

!rN   c              #     K   t        | j                  j                               D ]<  }| j                  j                  | j                  j	                  |            }||f > y wrP   )ranger  count
itemWidgetr   )rK   ir   s      rM   _layer_checkboxeszCADViewer._layer_checkboxes  sS     t{{((*+ 	A;;))$++*:*:1*=>DT'M	s   A$A&c                    t         j                  j                         t        j                  j
                  z  }|rK| j                         D ]8  \  }}|j                  d       |j                  |       |j                  d       : t               }| j                         D ]P  \  }}|j                         t        j                  j                  k(  s2|j                  |j                                R | j                  j                  |       y )NTF)r4   r_   keyboardModifiersr9   r:   ShiftModifierr  r  r  r   
checkStater  addtextr%  r  )rK   
item_state
shift_heldr  r   visible_layersr  s          rM   r  zCADViewer._layers_updated  s    __668255;N;NN
113 )4!!$'"":.!!%()
 ..0 	1HAu!RUU]]2""5::<0	1 			$$^4rN   c                l    | j                   j                  | j                   j                                 y rP   )rB  	setHiddenisHiddenrX   s    rM   r/  zCADViewer._toggle_sidebar  s$    4<<#8#8#::;rN   c                8    | j                   j                          y rP   )r   r   rX   s    rM   r0  z"CADViewer._toggle_selection_marker#  s    

**,rN   c                   | j                   j                  | j                   j                  j                  r| j                  j	                         }|r| j
                  j                         nd }| j                  | j                   j                  j                  | j                   j                         |r| j
                  j                  |       y y y y )Nra  )
r%  r   rz  r5  	isCheckedr   r   rp  r   r   )rK   	keep_viewr   s      rM   r4  zCADViewer._reload'  s    99==$)?)?--779I-64::'')DDNN499==11$)):R:RNS

''- 	 *@$rN   c                    | j                   j                         r| j                   j                          y | j                   j                          y rP   )r;  isActivestopr  rX   s    rM   r9  zCADViewer._toggle_watch0  s8    %%'""$##%rN   c                .   | j                   | j                  j                  y | j                  j                  j                  }|rA	 t	        j
                  |      j                  }|| j                   k7  r| j                          y y y # t        $ r Y y w xY wrP   )	r?  r%  r   rz  rd  r}  r~  r  r4  )rK   rz  mtimes      rM   r>  zCADViewer._check_watch7  s    $		(=99==)))22 ))) *   s   B 	BBc                    | j                   j                  d|j                         dd|j                         dd       y )Nzmouse position: r  z, 
)rJ  setTextr   r{   )rK   rJ  s     rM   r(  zCADViewer._on_mouse_movedD  s8    y{{}S1IKKM#3FbI	
rN   c                   |sd}nd|dz    dt        |       d}||   }|j                  t              }t        |t              r| j                  |      }||dz  }ns|d| d|j                  j                   d	z  }|t        |      z  }|j                  t              }|r.|d
z  }t        |      D ]  }|d| dz  }|t        |d      z  } | j                  j                  |       y )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   r&  r  load_dxf_entitydxfr  _entity_attribs_stringr   reversedrG  setPlainText)rK   elementsindexr  elementr   dxf_parent_stackentitys           rM   r'  zCADViewer._on_element_hoveredJ  s   (D	{#c(m_<RSDuoG29,,?U2VJ*c*!11*=
!	!'
| 4(nn2233HJ .z::#*<<0K#L #N*D"*+;"< N"VHB/ 6vf MMN 	''-rN   c                f    | j                   %| j                   j                  j                  |      S y rP   )r   entitydbget)rK   entity_handles     rM   r  zCADViewer.load_dxf_entitye  s*    99 99%%))-88rN   rP   )rQ  zOptional[CADWidget])r   r   r   r  )r   )re  r  r   r  )r   r   rn  r   r   r  r   r   r  r  )rU   zqg.QResizeEventr   r   )r   z"Iterable[tuple[int, qw.QCheckBox]])r  zqc.Qt.CheckState)rJ  z
qc.QPointF)r  zlist[qw.QGraphicsItem]r  r   )r  r  r   zDXFGraphic | None)r   r   r   r+   staticmethodr]  r_  rp  r+  r  r  r  r   r  r  r   r   r  r/  r0  r4  r9  r>  r9   r   r(  r   r'  r  r   r   s   @rM   r  r  B  s[   IV U U*,! FF F
 F FB(&6    $"
 
#Y5 5 
V< < 
V- - 
V. . 
V& & 
V
 
 
"**
 

 
&#. .4rN   r  c                    d}| j                   j                         j                         D ]  \  }}|| d| d| dz  } |S )N r  z: r  )r  all_existing_dxf_attribsr   )r   r  r  keyr   s        rM   r  r  k  sR    D nn==?EEG .
U6("SEE7"--.KrN   )r  )r   r   r  r  r   r  );
__future__r   typingr   r   r   r   r|   rd  r  ezdxf.addons.xqtr   r4   r	   r9   r
   rC   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   r5   r!   r   r   rE  r   QMainWindowr  r  rW   rN   rM   <module>r     s   
 # 4 4  	  G G 2 2     8 5 
    " 0   /lb&& l^ :8 :8za8

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