
    Og%                        d dl mZ d dlmZmZmZ d dlZd dlmZm	Z	m
Z
mZmZmZmZ d dlmZ d dlmZ d dlmZ dd	lmZmZmZ d
ZdZdZdZdZd Z G d dej>                        Z ddZ!ddZ"y)    )annotations)IteratorIterableOptionalN)	QtWidgetsQtGuiQActionQMessageBoxQFileDialogQtQModelIndex)Drawing)Body)DXFStructureError   )AcisDataBinaryAcisDataTextAcisDatazACIS Structure Browseri   i   g?
monospacedc                     t        j                  t              } | j                  t         j                  j                         | S N)r   QFontFONT_FAMILYsetStyleHint	Monospace)fonts    e/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/acisbrowser/browser.py	make_fontr      s-    ;;{#Dekk++,K    c                       e Zd Z	 	 d	 	 	 d fdZd Zd Zd Zd Zd Zddd	 	 	 	 	 dd	Z	d
 Z
d ZddZddZddZd Zd Zd ZddZddZd dZd!dZd!dZd"dZd#dZ xZS )$AcisStructureBrowser c                P   t         |           d | _        g | _        t	               | _        | j                         | _        | j                         | _	        t        j                  |       | _        | j                          | j                          |r| j                  |       n| j!                  t"               | j%                  | j                         | j'                  | j)                                | j+                  t,        t.               | j1                          |rL	 t3        |d       | j5                  |      s-d| d}| j                  j7                  |       t9        |       y y y # t:        $ r/ d| d}| j                  j7                  |       t9        |       Y y w xY w)N   zHandle 'z' not found.z"Given handle is not a hex value: '')super__init__docacis_entitiesr   current_acis_entitymake_entity_selectorentity_selectormake_content_vieweracis_content_viewerr   
QStatusBar	statusbarsetup_actions
setup_menuload_dxfsetWindowTitleAPP_NAMEsetStatusBarsetCentralWidgetmake_central_widgetresizeBROWSER_WIDTHBROWSER_HEIGHTconnect_slotsintgoto_handleshowMessageprint
ValueError)selffilenamehandlemsg	__class__s       r   r'   zAcisStructureBrowser.__init__#   s]   
 	&*-/#+: #88:#'#;#;#= "--d3MM(#)$..)d6689M>2
FB ''/$VHL9CNN..s3#J 0   :6(!D**3/c
s   !E- -5F%$F%c                ,    t        j                  |       S r   )r   QListWidgetrB   s    r   r+   z)AcisStructureBrowser.make_entity_selectorH   s    $$T**r   c                    t        j                  |       }|j                  d       |j                  t         j                  j                         |S )NT)r   QPlainTextEditsetReadOnlysetLineWrapModeNoWrap)rB   viewers     r   r-   z(AcisStructureBrowser.make_content_viewerK   s?    ))$/4 y77>>?r   c                d   t        j                  t        j                        }|j	                  | j
                         |j	                  | j                         t        t        t        z        }t        |z
  }|j                  ||g       |j                  dd       |j                  dd       |S )Nr   Fr   )r   	QSplitterr   
Horizontal	addWidgetr,   r.   r=   r:   SELECTOR_WIDTH_FACTORsetSizessetCollapsible)rB   	containerselector_widthentity_view_widths       r   r8   z(AcisStructureBrowser.make_central_widgetQ   s    ''6	D001D445]-BBC)N:N,=>?  E*  E*r   c                    | j                   j                  j                  | j                         | j                   j                  j                  | j                         y r   )r,   clickedconnectacis_entity_activated	activatedrI   s    r   r<   z"AcisStructureBrowser.connect_slots\   sB    $$,,T-G-GH&&..t/I/IJr   c                b   | j                  d| j                  d      | _        | j                  d| j                  d      | _        | j                  d| j
                  d      | _        | j                  d| j                  d	      | _        | j                  d
| j                  d      | _
        y )Nz&Open DXF File...zCtrl+O)shortcutzReload DXF FilezCtrl+Rz&Export Current Entity View...zCtrl+Ez&Export Raw SAT/SAB Data...zCtrl+Wz&QuitzCtrl+Q)make_actionopen_dxf_open_action
reload_dxf_reload_actionexport_entity_export_entity_actionexport_raw_entity_export_raw_data_actionclose_quit_actionrI   s    r   r1   z"AcisStructureBrowser.setup_actionsa   s     ,, - 
 #..OO / 

 &*%5%5, &6 &
"
 (,'7'7)"" (8 (
$
 !,,TZZ( - 
r   )r`   tipc                   t        ||       }|r|j                  |       |r|j                  |       |j                  j	                  |       |S r   )r	   setShortcut
setToolTip	triggeredr\   )rB   nameslotr`   rl   actions         r   ra   z AcisStructureBrowser.make_actionx   sK     t$x(c"  &r   c                   | j                         }|j                  d      }|j                  | j                         |j                  | j                         |j                          |j                  | j                         |j                  | j                         |j                          |j                  | j                         y )Nz&File)	menuBaraddMenu	addActionrc   re   addSeparatorrg   ri   rk   )rB   menu	file_menus      r   r2   zAcisStructureBrowser.setup_menu   s    ||~LL)	D--.D//0 D667D889 D--.r   c                v    t         j                  j                  | dd      \  }}|r| j                  |       y y )NzSelect DXF filezDXF Documents (*.dxf *.DXF))captionfilter)r   r   getOpenFileNamer3   )rB   path_s      r   rb   zAcisStructureBrowser.open_dxf   s@    ''77%0 8 
a
 MM$ r   c                (   	 t        j                  |      }t        t        |            }t        |      rS|| _
        | j                  |       | j                  |       | j                  j                  | j                                y d| d}t        j                   | d|       y # t        $ r*}t        j                  | dt        |             Y d }~y d }~wt        $ r0}t        j                  | dd| dt        |              Y d }~y d }~ww xY w)NzLoading ErrorzDXF Structure ErrorzInvalid DXF file "z": z
DXF file 'z' contains no ACIS data)ezdxfreadfileIOErrorr
   criticalstrr   listget_acis_entitieslenr(   set_acis_entitiesupdate_titler0   r?   make_loading_messageinformation)rB   r   r(   eentitiesrE   s         r   r3   zAcisStructureBrowser.load_dxf   s    	..&C )#./x=DH""8,d#NN&&t'@'@'BCtf$;<C##D/3?%  	  A?  	  %$TF#c!fX6
 	s#   B' '	D0 CD!&DDc                    | j                   J | j                   j                  }|dk\  rdnd}d| j                   j                   d| d| dS )NAC1027SABSATzLoaded DXF file has version /z and contains z data)r(   
dxfversionacad_release)rB   r   	acis_types      r   r   z)AcisStructureBrowser.make_loading_message   sZ    xx###XX((
'83E	-dhh.C.C-DAj\	{%1 	1r   c                \    || _         | j                  |       | j                  |d          y Nr   )r)   update_entity_selectorset_current_acis_entity)rB   r   s     r   r   z&AcisStructureBrowser.set_acis_entities   s*    %##H-$$Xa[1r   c                   	 | j                   j                  | j                        }| j	                  | j
                  j                         |dkD  r| j                  | j                   |          y y # t        $ r d}Y Ww xY w)Nr   )r)   indexr*   
IndexErrorr3   r(   rC   r   rB   r   s     r   rd   zAcisStructureBrowser.reload_dxf   sv    	&&,,T-E-EFE 	dhh''(19((););E)BC   	E	s   %A1 1A?>A?c                    | j                         }|y t        j                  | d|j                          d|j                  j
                   dd      \  }}|rt        | j                  |       y y )NzExport Current Entity View-z.txtzText Files (*.txt *.TXT)r|   dirr}   )get_current_dxf_entityr   getSaveFileNamedxftypedxfrD   
write_datar*   )rB   
dxf_entityr   r   s       r   rf   z"AcisStructureBrowser.export_entity   su    002
--0%%'(*..*?*?)@E-	
a t//6 r   c                   | j                         }|y |j                          d|j                  j                   }|j                  }|rd}|dz  }nd}|dz  }t        j                  | d||      \  }}|rs|r1t        |d      5 }|j                  |j                         d d d        y t        |d	      5 }|j                  d
j                  |j                               d d d        y y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr   z(Standard ACIS Binary Files (*.sab *.SAB)z.sabz&Standard ACIS Text Files (*.sat *.SAT)z.satzExport ACIS Raw Datar   wbwt
)r   r   r   rD   has_binary_datar   r   openwritesabjoinsat)rB   r   rC   r   filter_r   r   fps           r   rh   z&AcisStructureBrowser.export_raw_entity   s   002
 ((*+1Z^^-B-B,CD((@GH>GH--*	
a $% -HHZ^^,- - $% 8HHTYYz~~678 8 - -8 8s   C,7+C8,C58Dc                    | j                   }|j                  r| j                  y | j                  j                  j	                  |j                        S r   )r*   rD   r(   entitydbget)rB   currents     r   r   z+AcisStructureBrowser.get_current_dxf_entity   s?    **~~!1xx  $$W^^44r   c                8    | j                  t         d|        y )Nz - )r4   r5   )rB   r   s     r   r   z!AcisStructureBrowser.update_title   s    xjD623r   c                    t        | j                        dk(  ry 	 | j                  | j                  |j                                   y # t        $ r! | j                  | j                  d          Y y w xY wr   )r   r)   r   rowr   r   s     r   r]   z*AcisStructureBrowser.acis_entity_activated   sg    t!!"a'	@((););EIIK)HI 	@((););A)>?	@s   ,A 'A21A2c                :    |r|| _         | j                  |       y y r   )r*   update_acis_content_viewer)rB   entitys     r   r   z,AcisStructureBrowser.set_current_acis_entity  s     '-D$++F3 r   c                    | j                   }|j                          |j                  dj                  |j                               y )Nr   )r.   clearsetPlainTextr   lines)rB   r   rO   s      r   r   z/AcisStructureBrowser.update_acis_content_viewer  s1    ))DIIfll34r   c                    | j                   }|j                          |j                  |D cg c]  }|j                   c}       y c c}w r   )r,   r   addItemsrq   )rB   r   rO   r   s       r   r   z+AcisStructureBrowser.update_entity_selector  s4    %%2A232s   Ac                j    | j                   D ]$  }|j                  |k(  s| j                  |        y y)NTF)r)   rD   r   )rB   rD   r   s      r   r>   z AcisStructureBrowser.goto_handle  s9    (( 	F}}&,,V4	 r   )r"   r"   )rC   r   rD   r   )r`   r   rl   r   returnr	   )r   r   )r   r   )r   zlist[AcisData])r   zOptional[Body])r   r   )r   r   )r   zIterable[AcisData])rD   r   r   bool)__name__
__module____qualname__r'   r+   r-   r8   r<   r1   ra   r2   rb   r3   r   r   rd   rf   rh   r   r   r]   r   r   r   r>   __classcell__)rF   s   @r   r!   r!   "   s     ## #J+	K

8 
   
 	/ @.12
D78654@4
5
4
r   r!   c              #  B  K   | j                   j                         D ]~  }t        |t              s|j                  j
                  }d| d|j                          }|j                  rt        |j                  ||       ft        |j                  ||        y w)N<z> )r   values
isinstancer   r   rD   r   r   r   r   r   r   )r(   r   rD   rq   s       r   r   r     s     \\  " 8aUU\\Fvhb.D  $QUUD&99"155$778s   .BA.Bc                    	 t        |d      5 }|j                  dj                  | j                               d d d        y # 1 sw Y   y xY w# t        $ r Y y w xY w)Nr   r   )r   r   r   r   r   )r   r   r   s      r   r   r   #  sR    $ 	.HHTYYv||,-	. 	. 	. s-   A +AA AA A 	AA)r(   r   r   zIterator[AcisData])r   r   r   r   )#
__future__r   typingr   r   r   r   ezdxf.addons.xqtr   r   r	   r
   r   r   r   ezdxf.documentr   ezdxf.entitiesr   ezdxf.lldxf.constr   datar   r   r   r5   r:   r;   rT   r   r   QMainWindowr!   r   r    r   r   <module>r      ss    # / /    #  / 8 8 $ s900 sl8r   