Ë
    £èh'  ã                  óÜ   — 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    ú@lib/python3.12/site-packages/ezdxf/addons/acisbrowser/browser.pyÚ	make_fontr      s-   € Ü�;‰;”{Ó#€DØ×Ñ”e—k‘k×+Ñ+Ô,Ø€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ˆŒØ×ÑÔØ�‰ÔáØ�M‰M˜(Õ#à×Ñ¤Ô)à×Ñ˜$Ÿ.™.Ô)Ø×Ñ˜d×6Ñ6Ó8Ô9Ø�‰”M¤>Ô2Ø×ÑÔÙð
Ü�F˜B”ð ×'Ñ'¨Ô/Ø$ V H¨LÐ9�CØ—N‘N×.Ñ.¨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Ã   € Ø ×,Ñ,Ø §¡¸ð -ó 
ˆÔð #×.Ñ.ØØ�O‰OØð /ó 
ˆÔð
 &*×%5Ñ%5Ø,Ø×ÑØð &6ó &
ˆÔ"ð
 (,×'7Ñ'7Ø)Ø×"Ñ"Øð (8ó (
ˆÔ$ð
 !×,Ñ,Ø�T—Z‘Z¨(ð -ó 
ˆÕ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—   € Ø�|‰|‹~ˆØ—L‘L Ó)ˆ	Ø×Ñ˜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ñ
 Ø�M‰M˜$Õð 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Œ=ØˆDŒHØ×"Ñ" 8Ô,Ø×Ñ˜dÔ#Ø�N‰N×&Ñ& t×'@Ñ'@Ó'BÕCà˜t˜fÐ$;Ð<ˆCÜ×#Ñ# D¨/¸3Õ?øô% ò 	Ü× Ñ   ¼¸A»Ô?ÜûÜ ò 	Ü× Ñ ØØ%Ø$ T F¨#¬c°!«f¨XÐ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   € Ø�x‰xÐ#Ð#Ð#Ø—X‘X×(Ñ(ˆ
Ø'¨8Ò3‘E¸ˆ	Ø-¨d¯h©h×.CÑ.CÐ-DÀAÀjÀ\Ø 	˜{¨%ð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Ô-Ø×$Ñ$ X¨a¡[Õ1r   c                ó  — 	 | j                   j                  | j                  «      }| j	                  | j
                  j                  «       |dkD  r| j                  | j                   |   «       y y # t        $ r d}Y ŒWw xY w)Néÿÿÿÿr   )r)   Úindexr*   Ú
IndexErrorr3   r(   rC   r›   ©rB   rž   s     r   rd   zAcisStructureBrowser.reload_dxf¿   sv   € ð	Ø×&Ñ&×,Ñ,¨T×-EÑ-EÓFˆEð 	�‰�d—h‘h×'Ñ'Ô(Ø�1Š9Ø×(Ñ(¨×);Ñ);¸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ˆ
ØÐØØ ×(Ñ(Ó*Ð+¨1¨Z¯^©^×-BÑ-BÐ,CÐDˆØ×(Ñ(ˆÙØ@ˆGØ˜Ñ‰Hà>ˆGØ˜ÑˆHä×-Ñ-ØØ*ØØô	
‰ˆˆañ ÙÜ˜$ Ô%¨Ø—H‘H˜ZŸ^™^Ô,÷ &Ð%ô ˜$ Ô%¨Ø—H‘H˜TŸY™Y z§~¡~Ó6Ô7÷ &Ð%ð ç%Ð%ú÷ &Ð%ús   Â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ØØ�x‰x× Ñ ×$Ñ$ W§^¡^Ó4Ð4r   c                ó8   — | j                  t        › d|› �«       y )Nz - )r4   r5   )rB   r   s     r   r‹   z!AcisStructureBrowser.update_titleö   s   € Ø×Ñœx˜j¨¨D¨6Ð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Ò'Øð	@Ø×(Ñ(¨×);Ñ);¸E¿I¹I»KÑ)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   € Ø×)Ñ)ˆØ�‰ŒØ×Ñ˜DŸI™I f§l¡lÓ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  s8   € Ø×%Ñ%ˆØ�‰ŒØ�‰©Ó2© A˜Ÿ›¨Ñ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  s4   € Ø×(Ô(ˆ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ò8ó6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{   è ø€ Ø�\‰\× Ñ Ö"ˆÜ�aœÕØ—U‘U—\‘\ˆFØ�v�h˜b §¡£ Ð.ˆDØ× Ò Ü$ Q§U¡U¨D°&Ó9Ó9ä" 1§5¡5¨$°Ó7Ó7ñ #ùs   ‚.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©   #  sI   € ðÜ�$˜Ô Ø�H‰H�T—Y‘Y˜vŸ|™|Ó,Ô-÷ ×Ñûäò Ùðú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   