
    Ogo                    P   d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	Z	d dl
Z
d dlmZmZmZmZmZmZmZmZmZmZmZ d dlZd dlmZmZ d dlmZmZ d d	l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*m+Z+ ddl,m-Z-m.Z. ddl/m0Z0 ddl1m2Z2 dgZ3dZ4ejj                  jl                  Z6ejj                  jo                  e6d      Z8 e9dejj                  ju                  e6d            Z;ee<   Z=	 	 	 	 	 	 ddZ>dZ?dZ@dZA G d dej                        ZCddZD G d dej                  e0      ZFy)     )annotations)OptionalSet)partial)PathN)	QtWidgetsQtGuiQActionQMessageBoxQFileDialogQInputDialogQtQModelIndex	QSettingsQFileSystemWatcherQSize)DXFStructureErrorDXFValueError)DXFTagis_pointer_code)Tags)get_reference_link   )DXFStructureModelDXFTagsModelDXFTagsRole)DXFDocumentget_row_from_line_numberdxfstrEntityHistorySearchIndex)StructureTreeDXFTagsTable)Ui_FindDialog)	BookmarksDXFStructureBrowserzDXF Structure BrowserTEXT_EDITOR   	ICON_SIZEc                z    g }| j                   j                         D ]  \  }}||v s|j                  |        |S N)sectionsitemsextend)docsearch_sectionsentitiesnamesection_entitiess        a/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/addons/browser/browser.pysearchable_entitiesr5   8   sG     H"%,,"4"4"6 .?"OO,-. O    i   i   gQ?c                      e Zd Zddd ed      f	 	 	 	 	 	 	 d7 fdZd Zd Zd Zdddd	 	 	 	 	 	 	 d8d	Zd
 Z	d9dZ
d:dZd Zd;dZd Zd Zd<dZd Zd Zd Zd Zd Zd=dZd>dZd?dZ	 d@	 	 	 dAdZdBdZdCdZdDdZdDdZd ZdEd Zd?d!Z d" Z!dFd#Z"d$ Z#d% Z$d& Z%d' Z&dGd(Z'dHd)Z(dCd*Z)dId+Z*d, Z+d- Z,d. Z-d/ Z.dJd0Z/d1 Z0dKd2Z1dLd3Z2d4 Z3d5 Z4d6 Z5 xZ6S )Mr&    N.c                   t         |           t               | _        || _        t               | _        t               | _        d | _	        d | _
        t               | _        | j                         | _        t               | _        d| _        t%               | _        t)               | _        | j-                          | j/                          | j1                          |r| j3                  |       n| j5                  t6               | j9                  | j;                                | j=                  t>        t@               | jC                          |	 tE        |      }| jG                  |       |/	 tE        |d       | jM                  |      stK        d| d       y y y # tH        $ r tK        d|        Y Kw xY w# tH        $ r tK        d|        Y y w xY w)NTzInvalid line number: r(   Handle z not found.z!Given handle is not a hex value: )'super__init__r   r/   resource_pathr"   _structure_treer#   _dxf_tags_table_current_entity_active_searchset_search_sectionscreate_find_dialog_find_dialogr   _file_watcher_exclusive_reload_dialogr    historyr%   	bookmarkssetup_actions
setup_menusetup_toolbarload_dxfsetWindowTitleAPP_NAMEsetCentralWidgetbuild_central_widgetresizeBROWSER_WIDTHBROWSER_HEIGHTconnect_slotsint	goto_line
ValueErrorprintgoto_handle)selffilenamelinehandler>   	__class__s        r4   r=   zDXFStructureBrowser.__init__H   s    	=*,+~/359*-%(,(?(?(A/1(,%$"MM(#)d779:M>2%4y t$9FB ''/GF8;78 0 	  6-dV456  D9&BCDs$   F .F: F76F7:GG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@   rW   rT   TREE_WIDTH_FACTORsetSizessetCollapsible)r\   	container
tree_widthtable_widths       r4   rR   z(DXFStructureBrowser.build_central_widgetx   s    ''6	D001D001)::;
#j0J45  E*  E*r6   c                   | j                   j                  j                  | j                         | j                  j                  j                  | j
                         | j                  j                  j                  | j                         y r+   )	r?   	activatedconnectentity_activatedr@   tag_activatedrG   fileChangedask_for_reloadingr\   s    r4   rV   z!DXFStructureBrowser.connect_slots   sb    &&..t/D/DE&&..t/A/AB&&..t/E/EFr6   c                B   | j                  d| j                  d      | _        | j                  d| j                  d      | _        | j                  d| j
                  dd	      | _        | j                  d
| j                  dd	      | _        | j                  d| j                  d      | _
        | j                  d| j                  ddd      | _        | j                  d| j                  ddd      | _        | j                  d| j                  ddd      | _        | j                  d| j"                  ddd      | _        | j                  d| j&                  d d!d"      | _        | j                  d#| j*                  d$d%d&      | _        | j                  d'| j.                  d(d)d*      | _        | j                  d+| j2                  d,      | _        | j                  d-| j6                  d.d/d0      | _        | j                  d1t;        | j<                  d23      d4      | _        | j                  d5t;        | j<                  d63      d7      | _         | j                  d8t;        | j<                  d93      d:      | _!        | j                  d;t;        | j<                  d<3      d=      | _"        | j                  d>| jF                  d?d@	      | _$        | j                  dA| jJ                  dBdC	      | _&        | j                  dD| jN                  dE      | _(        y )FNz&Open DXF File...zCtrl+O)shortcutz&Export DXF Entity...zCtrl+Ez&Copy DXF Entity to ClipboardzShift+Ctrl+Czicon-copy-64px.png)rt   	icon_namez$&Copy selected DXF Tags to ClipboardzCtrl+Cz&QuitzCtrl+Qz&Go to Handle...zCtrl+Gzicon-goto-handle-64px.pngzGo to Entity Handlert   ru   tipzGo to &Line...zCtrl+Lzicon-goto-line-64px.pngzGo to Line NumberzFind &Text...zCtrl+Fzicon-find-64px.pngzFind Text in Entitiesz&Previous Entityz	Ctrl+Leftzicon-prev-entity-64px.pngz#Go to Previous Entity in File Orderz&Next Entityz
Ctrl+Rightzicon-next-entity-64px.pngzGo to Next Entity in File OrderzEntity History &BackzAlt+Leftzicon-left-arrow-64px.pngz(Go to Previous Entity in Browser HistoryzEntity History &Forwardz	Alt+Rightzicon-right-arrow-64px.pngz$Go to Next Entity in Browser Historyz&Open in Text EditorzCtrl+TzShow Entity in Structure &Treez	Ctrl+Downzicon-show-in-tree-64px.pngz%Show Current Entity in Structure TreezGo to HEADER SectionHEADER)r2   zShift+HzGo to BLOCKS SectionBLOCKSzShift+BzGo to ENTITIES SectionENTITIESzShift+EzGo to OBJECTS SectionOBJECTSzShift+OzStore Bookmark...zShift+Ctrl+Bzicon-store-bookmark-64px.pngzGo to Bookmark...zCtrl+Bzicon-goto-bookmark-64px.pngzReload DXF FilezCtrl+R))make_actionopen_dxf_open_actionexport_entity_export_entity_actioncopy_entity_copy_entity_actioncopy_selected_tags_copy_selected_tags_actionclose_quit_actionask_for_handle_goto_handle_actionask_for_line_number_goto_line_action	find_text_find_text_actiongoto_previous_entity_goto_predecessor_entity_actiongoto_next_entity_goto_next_entity_actiongo_back_entity_history_entity_history_back_actiongo_forward_entity_history_entity_history_forward_actionopen_entity_in_text_editor"_open_entity_in_text_editor_action show_current_entity_in_tree_view _show_entity_in_tree_view_actionr   go_to_section_goto_header_action_goto_blocks_action_goto_entities_action_goto_objects_actionstore_bookmark_store_bookmarkgo_to_bookmark_go_to_bookmark
reload_dxf_reload_actionrr   s    r4   rK   z!DXFStructureBrowser.setup_actions   s    ,, - 
 &*%5%5#T%7%7( &6 &
" $(#3#3+#*	 $4 $
  +/*:*:2##*	 +; +
' !,,TZZ( - 
 $(#3#31% $4 $
  "&!1!1$$/# "2 "
 "&!1!1NN*' "2 "
 04/?/?%% 15 0@ 0
, )-(8(8!!!11 )9 )
% ,0+;+;"''0: ,< ,
( /3.>.>%** 16 /? /
+ 372B2B"++ 3C 3
/
 150@0@,11 27 1A 1
- $(#3#3"D&&X6 $4 $
 
 $(#3#3"D&&X6 $4 $
 
 &*%5%5$D&&Z8 &6 &
"
 %)$4$4#D&&Y7 %5 %
!
  $//#4	  0  
  $//3	  0  
 #..OO / 
r6   rv   c                  t        ||       }|r|j                  |       |r<t        j                  t	        | j
                  |z              }|j                  |       |r|j                  |       |j                  j                  |       |S r+   )
r
   setShortcutr	   QIconstrr>   setIcon
setToolTip	triggeredrm   )r\   r2   slotrt   ru   rw   actionicons           r4   r|   zDXFStructureBrowser.make_action  sx     t$x(;;s4#5#5	#ABCDNN4 c"  &r6   c                   | j                         }|j                  d      }|j                  | j                         |j                  | j                         |j                  | j
                         |j                          |j                  | j                         |j                  | j                         |j                  | j                         |j                          |j                  | j                         |j                  d      }|j                  | j                         |j                  | j                         |j                  | j                         |j                          |j                  | j                         |j                  | j                         |j                  | j                          |j                          |j                  | j"                         |j                  | j$                         |j                          |j                  | j&                         |j                  | j(                         |j                  | j*                         |j                  | j,                         |j                  d      }|j                  | j.                         |j                  | j0                         y )Nz&Filez	&Navigatez
&Bookmarks)menuBaraddMenu	addActionr~   r   r   addSeparatorr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r\   menu	file_menunavigate_menubookmarks_menus        r4   rL   zDXFStructureBrowser.setup_menu  s   ||~LL)	D--.D//0DCCD D;;<D445D667 D--.[1 8 89 6 67 6 67""$ = => D DE E EF""$ @ @A C CD""$ 8 89 8 89 : :; 9 9:l3  !5!56  !5!56r6   c                   t        j                  d      }|j                  t        t        t                     |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                         |j                  | j                          | j#                  |       y )NMainToolbar)r   QToolBarsetIconSizer   r)   r   r   r   r   r   r   r   r   r   r   r   r   
addToolBar)r\   toolbars     r4   rM   z!DXFStructureBrowser.setup_toolbar<  s   $$]3E)Y78$::;$==>$>>?$778$??@$001$001$223$../$../$99: r6   c                d   t               }|j                  d       |j                  j                  j	                  | j
                         |j                  j                  j	                  | j                         |j                  j                  d       |j                  j                  d       |S )NTF3F4)	
FindDialogsetModalfind_forward_buttonclickedrm   find_forwardfind_backwards_buttonfind_backwardsr   r\   dialogs     r4   rE   z&DXFStructureBrowser.create_find_dialogL  s    ""**2243D3DE$$,,44T5H5HI""..t4$$006r6   c                v    t         j                  j                  | dd      \  }}|r| j                  |       y y )NzSelect DXF filezDXF Documents (*.dxf *.DXF)captionfilter)r   r   getOpenFileNamerN   )r\   path_s      r4   r}   zDXFStructureBrowser.open_dxfU  s@    ''77%0 8 
a
 MM$ r6   c                v   	 | j                  |       | j                  j                          | j                          | j	                          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": )
_loadrI   clearview_header_sectionupdate_titleIOErrorr   criticalr   r   )r\   r   es      r4   rN   zDXFStructureBrowser.load_dxf^  s    	 JJt LL $$&  	@  A??  	  %$TF#c!fX6 	s#   A 	B8 A<<B8&B33B8c                @   | j                   | j                         }| j                         }| j                  j	                         }| j
                  j                  ||      }| j                  | j
                  j                         |K| j
                  j                  |      }|.| j                  ||       | j                  j                  |       y | j
                  j                  |      }| j                  ||       | j                  j                  |       y y r+   )rA   get_current_entityget_current_entity_handler@   first_selected_rowr/   get_line_numberr   r]   
get_entity set_current_entity_and_row_indexr?   expand_to_entityget_entity_at_line)r\   entityr_   	first_rowline_numbers        r4   r   zDXFStructureBrowser.reload_dxfn  s    +,,.F335F,,??AI((2269EKJJtxx(()!,,V4%99&)L((99&AXX00=F11&)D  11&9! ,r6   c                t   | j                   j                  r| j                  rd| _        t        j                  | dd| j                   j                          dt        j                  t        j                  z  t        j                        }|t        j                  k(  r| j                          d| _        y y y )NFReload"z?"

This file has been modified by another program, reload file?)buttonsdefaultButtonT)	r/   r]   rH   r   questionabsolute_filepathYesNor   )r\   oks     r4   rq   z%DXFStructureBrowser.ask_for_reloading  s    88!>!> -2D)%%DHH..01 2< =#+..8)ooB [__$!,0D) "?r6   c                   | j                   j                  r/| j                  j                  | j                   j                         | j                   j	                  |       t        | j                   j                  j                  | j                         }| j                  j                  |       | j                  j                          | j                  j                  | j                   j                         y r+   )r/   r]   rG   
removePathloadr   filepathr2   r?   set_structurerI   r   addPath)r\   r]   models      r4   r   zDXFStructureBrowser._load  s    88))$((*;*;<h!$(("3"3"8"8$((C**51""488#4#45r6   c                    | j                   y t        j                  | dd      \  }}|r=| j                   j                         }|j	                         }| j                  ||       y y )NzExport DXF EntityzText Files (*.txt *.TXT)r   )r@   r   getSaveFileNamer   compiled_tagsexport_tags)r\   r   r   r   tagss        r4   r   z!DXFStructureBrowser.export_entity  sj    '--'-
a
 ((..0E&&(DT4( r6   c                    | j                   y | j                   j                         }|j                         }t        |       y r+   )r@   r   r   copy_dxf_to_clipboard)r\   r   r   s      r4   r   zDXFStructureBrowser.copy_entity  s;    '$$**,""$d#r6   c                   | j                   y | j                  j                         }| j                  j                         }|j	                         	 t        fd|D              }t        |       y # t        $ r Y y w xY w)Nc              3  (   K   | ]	  }|     y wr+    ).0rowr   s     r4   	<genexpr>z9DXFStructureBrowser.copy_selected_tags.<locals>.<genexpr>  s     9StCy9s   )rA   r@   selected_rowsr   r   r   
IndexErrorr   )r\   rowsr   r   r   s       @r4   r   z&DXFStructureBrowser.copy_selected_tags  s{    '##113$$**,""$	9D99K 	k*  		s   A4 4	B ?B c                    | j                   j                  d      }|r| j                  |d          y | j                   j                  d      }|r| j                  |d          y y )Nrx   r   rz   r   r/   get_sectionset_current_entity_with_history)r\   headerr1   s      r4   r   z'DXFStructureBrowser.view_header_section  sY    %%h/00;xx++J7H44Xa[A r6   c                h    | j                  t         d| j                  j                                 y )Nz - )rO   rP   r/   r   rr   s    r4   r   z DXFStructureBrowser.update_title  s)    xjDHH,F,F,H+IJKr6   c                h    | j                         }|r	 |j                         S y # t        $ r Y y w xY wr+   )r   
get_handler   )r\   active_entitys     r4   r   z-DXFStructureBrowser.get_current_entity_handle  sC    //1$//11  ! s   % 	11c                    | j                   S r+   )rA   rr   s    r4   r   z&DXFStructureBrowser.get_current_entity  s    ###r6   c                b    | j                   j                  |      }|r| j                  |       y y r+   )r/   r   set_current_entityr\   r_   r   s      r4   set_current_entity_by_handlez0DXFStructureBrowser.set_current_entity_by_handle  s,    $$V,##F+ r6   c                   |r|| _         | j                  j                  |      }t        ||| j                  j                        }| j
                  j                  |       ||t        |j                         ||      }| j
                  j                  |       | j
                  j                         j                  |d      }| j
                  j                  |       y y y Nr   )rA   r/   r   r   entity_indexr@   setModelr   r   	selectRowr   indexscrollTo)r\   r   select_line_numberstart_line_numberr   r   r  s          r4   r  z&DXFStructureBrowser.set_current_entity  s     #)D  $ 8 8 @ )488+@+@E   ))%0!-.'')+<>P $$..s3,,224::3B$$--e4 . r6   c                \    | j                  |       | j                  j                  |       y r+   )r  rI   appendr\   r   s     r4   r  z3DXFStructureBrowser.set_current_entity_with_history  s"    'F#r6   c                    | j                   j                  ||      }| j                  ||       | j                  j	                  |       y )N)r  )r/   r   r  rI   r  )r\   r   r  r^   s       r4   r   z4DXFStructureBrowser.set_current_entity_and_row_index  s=    xx''64@F#r6   c                    |j                  t              }t        |t        t        f      r| j                  t        |             y y )Nrole)datar   
isinstancer   listr  )r\   r  r   s      r4   rn   z$DXFStructureBrowser.entity_activated  s9    zz{z+ dT4L)00d< *r6   c                    |j                  t              }t        |t              rU|\  }}t	        |      r$| j                  |      s| j                  |       y y |dk(  r| j                  t        |             y y y )Nr!  r   )	r#  r   r$  r   r   r[   show_error_handle_not_foundopen_web_browserr   )r\   r  tagcodevalues        r4   ro   z!DXFStructureBrowser.tag_activated  ss    jjkj*c6"KD%t$''.44U; /%%&8&?@  #r6   c                    t        j                  | dd      \  }}|r$| j                  |      s| j                  |       y y y )NGo tozGo to entity handle:)r   getTextr[   r'  )r\   r_   r   s      r4   r   z"DXFStructureBrowser.ask_for_handle  sJ    !))"


 ##F+008 , r6   c                b    | j                   j                  |      }|r| j                  |       yyNTF)r/   r   r  r  s      r4   r[   zDXFStructureBrowser.goto_handle  s-    $$V,008r6   c                :    t        j                  | dd| d       y )NErrorr;   z not found!)r   r   )r\   r_   s     r4   r'  z/DXFStructureBrowser.show_error_handle_not_found  s    T7gfX[,IJr6   c                    | j                   j                  }t        j                  | dd| ddd|      \  }}|r| j	                  |       y y )Nr-  zGo to line number: (max. )r   )r/   max_line_numberr   getIntrX   )r\   r5  numberr   s       r4   r   z'DXFStructureBrowser.ask_for_line_number  sW    ((22!((''8:

 NN6" r6   c                v    | j                   j                  t        |            }|r| j                  ||       yyr0  )r/   r   rW   r  )r\   r7  r   s      r4   rX   zDXFStructureBrowser.goto_line%  s3    ,,S[9##FF3r6   c                    d | _         | j                  }|j                          |j                  d       |j                  j                          |j                          y )Nz*F3 searches forward, F4 searches backwards)rB   rF   restore_geometryshow_messagefind_text_editsetFocusshowr   s     r4   r   zDXFStructureBrowser.find_text,  sK    """!HI&&(r6   c                      fd} j                    j                  - |         j                  j                   j                         n&j	                         }| j
                  k7  r |        j                   j                         y )Nc                     j                         _        t        j                  j                        } t	        |       _        y r+   )r0   rD   r5   r/   r!   rB   )r1   r   r\   s    r4   setup_searchz7DXFStructureBrowser.update_search.<locals>.setup_search5  s7    $*$:$:$<D!*488T5J5JKH"-h"7Dr6   )rF   rB   r  rA   r0   rD   update_options)r\   rA  r0   r   s   `  @r4   update_searchz!DXFStructureBrowser.update_search4  su    	8
 ""&N2243G3GH$446O$"7"77d112r6   c                (    | j                  d       y )NFbackward_findrr   s    r4   r   z DXFStructureBrowser.find_forwardE  s    

E
"r6   c                (    | j                  d       y )NTrE  rG  rr   s    r4   r   z"DXFStructureBrowser.find_backwardsH  s    

D
!r6   c                   | j                   j                         r| j                          | j                  }|j                  r|j                  |       |r|j                         n|j                         \  }}|r%| j                  ||       | j                  ||       y |j                  r| j                  d       y | j                  d       y y )NrE  zNot found and end of file!z
Not found!)rF   	isVisiblerC  rB   is_end_of_indexreset_cursorr   r   r   show_entity_found_messager;  )r\   rF  searchr   r  s        r4   rH  zDXFStructureBrowser._findK  s    &&( ((F%%##X#6 ,4%%'9L9L9N FE 55feD..vu=))%%&BC%%l3# )r6   c                :    | j                   j                  |       y r+   )rF   r;  r\   msgs     r4   r;  z DXFStructureBrowser.show_message_  s    &&s+r6   c                *   |j                         }|dk(  r!dj                  |j                  d            }n	 |j                         }d| d| d}| j
                  j                  ||      }| j                  d| |        y # t        $ r d}Y @w xY w)	NSECTIONz @ {0} Section   z @ z(#r4  r8   zFound in Line: )dxftypeformatget_first_valuer  rY   r/   r   r;  )r\   r   r  rV  tailr_   r^   s          r4   rN  z-DXFStructureBrowser.show_entity_found_messageb  s    .."i#**6+A+A!+DED**,WIRxq1 xx''6OD6$89  s   B BBc                    	 t        |dd      5 }|j                  t        |             d d d        y # 1 sw Y   y xY w# t        $ r*}t	        j
                  | dt        |             Y d }~y d }~ww xY w)Nwtutf8)encodingr   )openwriter   r   r   r   r   )r\   r]   r   fpr   s        r4   r   zDXFStructureBrowser.export_tagso  sb    	:hv6 '"&' ' ' 	:  y#a&99	:s.   A  4A  =A  A   	A3	 A..A3c                    | j                   rC| j                         }|0| j                  j                  |      }|| j	                  |       y y y y r+   )r@   r   r/   next_entityr  )r\   current_entityrb  s      r4   r   z$DXFStructureBrowser.goto_next_entityv  sV    !446N)"hh22>B*88E + *  r6   c                    | j                   rC| j                         }|0| j                  j                  |      }|| j	                  |       y y y y r+   )r@   r   r/   previous_entityr  )r\   rc  prev_entitys      r4   r   z(DXFStructureBrowser.goto_previous_entity~  sV    !446N)"hh66~F*88E + *  r6   c                `    | j                   j                         }|| j                  |       y y r+   )rI   backr  r  s     r4   r   z*DXFStructureBrowser.go_back_entity_history  s-    ""$##F+ r6   c                `    | j                   j                         }|| j                  |       y y r+   )rI   forwardr  r  s     r4   r   z-DXFStructureBrowser.go_forward_entity_history  s-    %%'##F+ r6   c                z    | j                   j                  |      }|r|dk(  rdnd}| j                  ||          y y )Nrx   r   r   r  )r\   r2   sectionr  s       r4   r   z!DXFStructureBrowser.go_to_section  s>    ((&&t,)AqE00@ r6   c                   | j                         }| j                  j                  |      }| j                  r| j                  j	                         }|r>| j                  j                         }|d   j                         }|j                  |      }| j                  t        | j                  j                               |       y y r  )r   r/   r   r@   selectedIndexesr   r   r   _open_text_editorr   r   )r\   rc  r   indicesr   r   s         r4   r   z.DXFStructureBrowser.open_entity_in_text_editor  s    002hh..~>**::<G,,224ajnn&#//4""DHH..01;  r6   c                    t         j                  ||      }t        j                  |      }	 t	        j
                  |       y # t        $ r t        j                  | dd|z          Y y w xY w)N)r]   numzText EditorzError calling text editor:
)	r'   rW  shlexsplit
subprocessPopenFileNotFoundErrorr   r   )r\   r]   r   cmdargss        r4   ro  z%DXFStructureBrowser._open_text_editor  sj       ! 
 {{3	T"  	  m%Cc%I	s   A #A*)A*c                .    dd l }|j                  |       y r  )
webbrowserr^  )r\   urlr{  s      r4   r(  z$DXFStructureBrowser.open_web_browser  s    r6   c                `    | j                         }|r| j                  j                  |       y y r+   )r   r?   r   r  s     r4   r   z4DXFStructureBrowser.show_current_entity_in_tree_view  s,    ((*  11&9 r6   c                   | j                   | j                  j                         }t        |      dk(  rdg}t	        j
                  | dd|d      \  }}|rw| j                   }| j                  j                         }|r|d   j                         }nd}| j                  j                  |      }| j                  j                  |||       y y y )Nr   0zStore Bookmark	Bookmark:Teditable)rA   rJ   nameslenr   getItemr@   rn  r   r/   r  add)r\   rJ   r2   r   r   r  offsetr_   s           r4   r   z"DXFStructureBrowser.store_bookmark  s    +,,.I9~" E	#++ HD" --++;;=!!W[[]FF,,V4""48  ,r6   c                   | j                   j                         }t        |      dk(  rt        j                  | dd       y t        j                  | dd| j                   j                         d      \  }}|r| j                   j                  |      }|| j                  |j                         | j                  j                  |j                         | j                  j                         }t        |j                  |j                  d            }| j                  j!                  |       y t"        j                  j%                  | dt'        |             y y )	Nr   InfozNo Bookmarks defined!zGo to Bookmarkr  Fr  zBookmark not found!)rJ   r  r  r   informationr   r  getr  r_   r@   r  r  r   r   r  r  r   r   r   )r\   rJ   r2   r   bookmarkr   r  s          r4   r   z"DXFStructureBrowser.go_to_bookmark  s   NN((*	y>Q##D&2IJ''NN  "
b ~~))$/H#11(//B$$..x?,,224#EKK$CD$$--e4 %%../T r6   )r]   r   r^   Optional[int]r_   Optional[str]r>   r   )rt   r   ru   r   rw   r   returnr
   )r  None)r  z'FindDialog')r   r   )r]   r   )r  r  )r  zOptional[Tags])r_   r   r+   )r   r   r  r  )r   r   )r   r   r  rW   )r  r   )r_   r   r  bool)r7  rW   r  r  )FrR  r   )r]   r   r   r   )r2   r   )r]   r   r   rW   r  r  )r|  r   )7__name__
__module____qualname__r   r=   rR   rV   rK   r|   rL   rM   rE   r}   rN   r   rq   r   r   r   r   r   r   r   r   r  r  r  r   rn   ro   r   r[   r'  r   rX   r   rC  r   r   rH  r;  rN  r   r   r   r   r   r   r   ro  r(  r   r   r   __classcell__r`   s   @r4   r&   r&   G   s    " $"3i.9.9 .9 	.9
 .9`	Gz
B 
    
( 7D!    :&1"6)$
+BL$, AE550=5$$$
=A9K#3"#"4(,::FF,
,
A
:
9,r6   c                    t         j                  j                         }	 |j                  j                  }|j                  t        |       |       y # t
        $ r |j                  }Y 4w xY w)N)mode)r   QApplication	clipboardMode	ClipboardAttributeErrorsetTextr   )r   r  r  s      r4   r   r     s_    &&002I#~~'' fTl.  #""#s   A A+*A+c                  F     e Zd Z fdZd ZddZddZ fdZd	dZ xZ	S )
r   c                     t                     j                           j                  j                  j                   fd       t        dd       _        y )Nc                 $     j                         S r+   )r   rr   s   r4   <lambda>z%FindDialog.__init__.<locals>.<lambda>  s    $**, r6   ezdxf
DXFBrowser)r<   r=   setupUiclose_buttonr   rm   r   settings)r\   r`   s   `r4   r=   zFindDialog.__init__  sC    T!!))*>?!'<8r6   c                b    | j                   j                  d      }|| j                  |       y y Nzfind.dialog.geometry)r  r+  restoreGeometry)r\   geometrys     r4   r:  zFindDialog.restore_geometry  s0    ==&&'=>  *  r6   c                   t               }| j                  j                         r|j                  d       | j                  j                         r|j                  d       | j
                  j                         r|j                  d       | j                  j                         r|j                  d       | j                  j                         r|j                  d       | j                  j                         r|j                  d       |S )Nrx   CLASSESTABLESry   rz   r{   )	rC   header_check_box	isCheckedr  classes_check_boxtables_check_boxblocks_check_boxentities_check_boxobjects_check_box)r\   r,   s     r4   r0   zFindDialog.search_sections  s    5  **,LL"!!++-LL#  **,LL"  **,LL""",,.LL$!!++-LL#r6   c                   |j                  | j                  j                                | j                  j	                          |_        | j                  j	                         |_        | j                  j	                         |_	        y r+   )
reset_search_termr<  textmatch_case_check_boxr  case_insensitivewhole_words_check_boxwhole_wordsnumber_tags_check_boxnumbers)r\   rO  s     r4   rB  zFindDialog.update_options  sf      !4!4!9!9!;<&*&?&?&I&I&K"K!77AAC33==?r6   c                x    | j                   j                  d| j                                t        |   |       y r  )r  setValuesaveGeometryr<   
closeEvent)r\   eventr`   s     r4   r  zFindDialog.closeEvent  s.    5t7H7H7JK5!r6   c                :    | j                   j                  |       y r+   )messager  rQ  s     r4   r;  zFindDialog.show_message  s    S!r6   )r  SearchSections)rO  r!   r  r  r  )
r  r  r  r=   r:  r0   rB  r  r;  r  r  s   @r4   r   r     s"    9+
 @""r6   r   )r/   r   r0   r  r  z
list[Tags])r   r   )G
__future__r   typingr   r   	functoolsr   pathlibr   ru  rs  ezdxf.addons.xqtr   r	   r
   r   r   r   r   r   r   r   r   r  ezdxf.lldxf.constr   r   ezdxf.lldxf.typesr   r   ezdxf.lldxf.tagsr   ezdxf.addons.browser.reflinksr   r   r   r   r   r#  r   r   r   r    r!   viewsr"   r#   find_dialogr$   rJ   r%   __all__rP   optionsBROWSE_COMMANDr  r'   maxget_intr)   r   r  r5   rT   rU   re   QMainWindowr&   r   QDialogr   r   r6   r4   <module>r     s   #           > 5 ! < 
  / &   
!"--mm>EMM)).+FG	S	'5  b
)// b
J/'"""M '"r6   