
    ho                    T   S SK Jr  S SKJrJr  S SKJr  S SKJr  S SK	r	S SK
r
S SKJrJrJrJrJrJrJrJrJrJrJr  S SKrS SKJrJr  S SKJrJr  S S	KJr  S S
K J!r!  SSK"J#r#J$r$J%r%  SSK&J'r'J(r(J)r)J*r*J+r+  SSK,J-r-J.r.  SSK/J0r0  SSK1J2r2  S/r3Sr4\Rj                  Rl                  r6\Rj                  Ro                  \6S5      r8\9" S\Rj                  Ru                  \6S5      5      r;\\<   r=      SS jr>Sr?Sr@SrA " S S\R                  5      rCSS jrD " S S\R                  \05      rFg)     )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                    / nU R                   R                  5        H  u  p4X1;   d  M  UR                  U5        M     U$ N)sectionsitemsextend)docsearch_sectionsentitiesnamesection_entitiess        N/var/www/html/env/lib/python3.13/site-packages/ezdxf/addons/browser/browser.pysearchable_entitiesr5   8   s=     H"%,,"4"4"6"OO,- #7 O    i   i   gQ?c                    ^  \ rS rSrSSS\" S5      4       S9U 4S jjjrS rS rS rSSSS	.       S:S
 jjr	S r
S;S jrS<S jrS rS=S jrS rS rS>S jrS rS rS rS rS rS?S jrS@S jrSAS jr SB   SCS jjrSDS jrSES jrSFS jrSFS jrS  rSGS! jr SAS" jr!S# r"SHS$ jr#S% r$S& r%S' r&S( r'SIS) jr(SJS* jr)SES+ jr*SKS, jr+S- r,S. r-S/ r.S0 r/SLS1 jr0S2 r1SMS3 jr2SNS4 jr3S5 r4S6 r5S7 r6S8r7U =r8$ )Or&   G    N.c                  > [         TU ]  5         [        5       U l        X@l        [        5       U l        [        5       U l        S U l	        S U l
        [        5       U l        U R                  5       U l        [        5       U l        SU l        [%        5       U l        [)        5       U l        U R-                  5         U R/                  5         U R1                  5         U(       a  U R3                  U5        OU R5                  [6        5        U R9                  U R;                  5       5        U R=                  [>        [@        5        U RC                  5         Ub   [E        U5      nU RG                  U5        Ub4   [E        US5        U RM                  U5      (       d  [K        SU S35        g g g ! [H         a    [K        SU 35         NRf = f! [H         a    [K        SU 35         g f = f)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>   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( 4G (GGG! G!c                d   [         R                  " [        R                  5      nUR	                  U R
                  5        UR	                  U R                  5        [        [        [        -  5      n[        U-
  nUR                  X#/5        UR                  SS5        UR                  SS5        U$ )Nr   Fr   )r   	QSplitterr   
Horizontal	addWidgetr@   rA   rX   rU   TREE_WIDTH_FACTORsetSizessetCollapsible)r]   	container
tree_widthtable_widths       r4   rS   (DXFStructureBrowser.build_central_widgetx   s    ''6	D001D001)::;
#j0J45  E*  E*r6   c                   U R                   R                  R                  U R                  5        U R                  R                  R                  U R
                  5        U R                  R                  R                  U R                  5        g r+   )	r@   	activatedconnectentity_activatedrA   tag_activatedrH   fileChangedask_for_reloadingr]   s    r4   rW   !DXFStructureBrowser.connect_slots   sb    &&..t/D/DE&&..t/A/AB&&..t/E/EFr6   c                   U R                  SU R                  SS9U l        U R                  SU R                  SS9U l        U R                  SU R
                  SSS	9U l        U R                  S
U R                  SSS	9U l        U R                  SU R                  SS9U l
        U R                  SU R                  SSSS9U l        U R                  SU R                  SSSS9U l        U R                  SU R                  SSSS9U l        U R                  SU R"                  SSSS9U l        U R                  SU R&                  S S!S"S9U l        U R                  S#U R*                  S$S%S&S9U l        U R                  S'U R.                  S(S)S*S9U l        U R                  S+U R2                  S,S9U l        U R                  S-U R6                  S.S/S0S9U l        U R                  S1[;        U R<                  S2S39S4S9U l        U R                  S5[;        U R<                  S6S39S7S9U l         U R                  S8[;        U R<                  S9S39S:S9U l!        U R                  S;[;        U R<                  S<S39S=S9U l"        U R                  S>U RF                  S?S@S	9U l$        U R                  SAU RJ                  SBSCS	9U l&        U R                  SDU RN                  SES9U l(        g )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)rx   	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rx   ry   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_actionru   s    r4   rL   !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   rz   c               :   [        X5      nU(       a  UR                  U5        U(       a=  [        R                  " [	        U R
                  U-  5      5      nUR                  U5        U(       a  UR                  U5        UR                  R                  U5        U$ r+   )
r
   setShortcutr	   QIconstrr?   setIcon
setToolTip	triggeredrp   )r]   r2   slotrx   ry   r{   actionicons           r4   r   DXFStructureBrowser.make_action  sv     $x(;;s4#5#5	#ABCDNN4 c"  &r6   c                   U R                  5       nUR                  S5      nUR                  U R                  5        UR                  U R                  5        UR                  U R
                  5        UR                  5         UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  5         UR                  U R                  5        UR                  S5      nUR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  5         UR                  U R                  5        UR                  U R                  5        UR                  U R                   5        UR                  5         UR                  U R"                  5        UR                  U R$                  5        UR                  5         UR                  U R&                  5        UR                  U R(                  5        UR                  U R*                  5        UR                  U R,                  5        UR                  S5      nUR                  U R.                  5        UR                  U R0                  5        g )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   rM   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                   [         R                  " S5      nUR                  [        [        [        5      5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                  5        UR                  U R                   5        U R#                  U5        g )NMainToolbar)r   QToolBarsetIconSizer   r)   r   r   r   r   r   r   r   r   r   r   r   r   
addToolBar)r]   toolbars     r4   rN   !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   [        5       nUR                  S5        UR                  R                  R	                  U R
                  5        UR                  R                  R	                  U R                  5        UR                  R                  S5        UR                  R                  S5        U$ )NTF3F4)	
FindDialogsetModalfind_forward_buttonclickedrp   find_forwardfind_backwards_buttonfind_backwardsr   r]   dialogs     r4   rF   &DXFStructureBrowser.create_find_dialogL  s    ""**2243D3DE$$,,44T5H5HI""..t4$$006r6   c                x    [         R                  R                  U SSS9u  pU(       a  U R                  U5        g g )NzSelect DXF filezDXF Documents (*.dxf *.DXF)captionfilter)r   r   getOpenFileNamerO   )r]   path_s      r4   r   DXFStructureBrowser.open_dxfU  s>    ''77%0 8 

 MM$ r6   c                ~    U R                  U5        U R                  R                  5         U R                  5         U R	                  5         g ! [
         a+  n[        R                  " U S[        U5      5         S nAg S nAf[         a1  n[        R                  " U SSU S[        U5       35         S nAg S nAff = f)NzLoading ErrorzDXF Structure ErrorzInvalid DXF file "z": )
_loadrJ   clearview_header_sectionupdate_titleIOErrorr   criticalr   r   )r]   r   es      r4   rO   DXFStructureBrowser.load_dxf^  s    	 JJt LL $$&  	@  A??  	  %$TF#c!fX6 	s#   A 
B<!A>>B<'B77B<c                @   U R                   Gb  U R                  5       nU R                  5       nU R                  R	                  5       nU R
                  R                  X5      nU R                  U R
                  R                  5        UbK  U R
                  R                  U5      nUb-  U R                  X5        U R                  R                  U5        g U R
                  R                  U5      nU R                  X5        U R                  R                  U5        g g r+   )rB   get_current_entityget_current_entity_handlerA   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   DXFStructureBrowser.reload_dxfn  s    +,,.F335F,,??AI((226EKJJtxx(()!,,V4%99&L((99&AXX00=F11&D  11&9! ,r6   c                   U R                   R                  (       a  U R                  (       a  SU l        [        R                  " U SSU R                   R                  5        S3[        R                  [        R                  -  [        R                  S9nU[        R                  :X  a  U R                  5         SU l        g g g )NFReload"z?"

This file has been modified by another program, reload file?)buttonsdefaultButtonT)	r/   r^   rI   r   questionabsolute_filepathYesNor   )r]   oks     r4   rt   %DXFStructureBrowser.ask_for_reloading  s    88!>!> -2D)%%DHH..01 2< =#+..8)ooB [__$!,0D) "?r6   c                   U R                   R                  (       a/  U R                  R                  U R                   R                  5        U R                   R	                  U5        [        U R                   R                  R                  U R                   5      nU R                  R                  U5        U R                  R                  5         U R                  R                  U R                   R                  5        g r+   )r/   r^   rH   
removePathloadr   filepathr2   r@   set_structurerJ   r   addPath)r]   r^   models      r4   r   DXFStructureBrowser._load  s    88))$((*;*;<h!$(("3"3"8"8$((C**51""488#4#45r6   c                    U R                   c  g [        R                  " U SSS9u  pU(       a<  U R                   R                  5       nUR	                  5       nU R                  X5        g g )NzExport DXF EntityzText Files (*.txt *.TXT)r   )rA   r   getSaveFileNamer  compiled_tagsexport_tags)r]   r   r   r  tagss        r4   r   !DXFStructureBrowser.export_entity  sf    '--'-

 ((..0E&&(DT( r6   c                    U R                   c  g U R                   R                  5       nUR                  5       n[        U5        g r+   )rA   r  r  copy_dxf_to_clipboard)r]   r  r  s      r4   r   DXFStructureBrowser.copy_entity  s;    '$$**,""$d#r6   c                  ^ U R                   c  g U R                  R                  5       nU R                  R                  5       nUR	                  5       m [        U4S jU 5       5      n[        U5        g ! [         a     g f = f)Nc              3  .   >#    U  H
  nTU   v   M     g 7fr+    ).0rowr  s     r4   	<genexpr>9DXFStructureBrowser.copy_selected_tags.<locals>.<genexpr>  s     9DStCyDs   )rB   rA   selected_rowsr  r  r   
IndexErrorr
  )r]   rowsr  r  r  s       @r4   r   &DXFStructureBrowser.copy_selected_tags  s{    '##113$$**,""$	9D99K 	k*  		s   A6 6
BBc                    U R                   R                  S5      nU(       a  U R                  US   5        g U R                   R                  S5      nU(       a  U R                  US   5        g g )Nr|   r   r~   r   r/   get_sectionset_current_entity_with_history)r]   headerr1   s      r4   r   'DXFStructureBrowser.view_header_section  sY    %%h/00;xx++J7H44Xa[A r6   c                h    U R                  [         SU R                  R                  5        35        g )Nz - )rP   rQ   r/   r   ru   s    r4   r    DXFStructureBrowser.update_title  s)    xjDHH,F,F,H+IJKr6   c                t    U R                  5       nU(       a   UR                  5       $ g ! [         a     g f = fr+   )r   
get_handler   )r]   active_entitys     r4   r   -DXFStructureBrowser.get_current_entity_handle  sC    //1$//11  ! s   * 
77c                    U R                   $ r+   )rB   ru   s    r4   r   &DXFStructureBrowser.get_current_entity  s    ###r6   c                l    U R                   R                  U5      nU(       a  U R                  U5        g g r+   )r/   r   set_current_entityr]   r`   r   s      r4   set_current_entity_by_handle0DXFStructureBrowser.set_current_entity_by_handle  s,    $$V,##F+ r6   c                   U(       a  Xl         U R                  R                  U5      n[        XU R                  R                  5      nU R
                  R                  U5        Ub{  [        UR                  5       X25      nU R
                  R                  U5        U R
                  R                  5       R                  US5      nU R
                  R                  U5        g g g Nr   )rB   r/   r   r   entity_indexrA   setModelr   r  	selectRowr  indexscrollTo)r]   r   select_line_numberstart_line_numberr  r  r/  s          r4   r&  &DXFStructureBrowser.set_current_entity  s     #)  $ 8 8 @ 488+@+@E   ))%0!-.'')+< $$..s3,,224::3B$$--e4 . r6   c                \    U R                  U5        U R                  R                  U5        g r+   )r&  rJ   appendr]   r   s     r4   r  3DXFStructureBrowser.set_current_entity_with_history  s"    'F#r6   c                    U R                   R                  X5      nU R                  XS9  U R                  R	                  U5        g )N)r1  )r/   r   r&  rJ   r5  )r]   r   r/  r_   s       r4   r   4DXFStructureBrowser.set_current_entity_and_row_index  s9    xx''6@F#r6   c                    UR                  [        S9n[        U[        [        45      (       a  U R                  [        U5      5        g g )Nrole)datar   
isinstancer   listr  )r]   r/  r  s      r4   rq   $DXFStructureBrowser.entity_activated  s<    zz{z+ dT4L))00d< *r6   c                   UR                  [        S9n[        U[        5      (       a_  Uu  p4[	        U5      (       a)  U R                  U5      (       d  U R                  U5        g g US:X  a  U R                  [        U5      5        g g g )Nr;  r   )	r=  r   r>  r   r   r\   show_error_handle_not_foundopen_web_browserr   )r]   r/  tagcodevalues        r4   rr   !DXFStructureBrowser.tag_activated  sz    jjkj*c6""KDt$$''..44U; /%%&8&?@  #r6   c                    [         R                  " U SS5      u  pU(       a)  U R                  U5      (       d  U R                  U5        g g g )NGo tozGo to entity handle:)r   getTextr\   rB  )r]   r`   r   s      r4   r   "DXFStructureBrowser.ask_for_handle  sK    !))"


 ##F++008 , r6   c                l    U R                   R                  U5      nU(       a  U R                  U5        ggNTF)r/   r   r  r'  s      r4   r\   DXFStructureBrowser.goto_handle  s-    $$V,008r6   c                <    [         R                  " U SSU S35        g )NErrorr<   z not found!)r   r   )r]   r`   s     r4   rB  /DXFStructureBrowser.show_error_handle_not_found  s    T7gfX[,IJr6   c                    U R                   R                  n[        R                  " U SSU S3SSU5      u  p#U(       a  U R	                  U5        g g )NrI  zGo to line number: (max. )r   )r/   max_line_numberr   getIntrY   )r]   rT  numberr   s       r4   r   'DXFStructureBrowser.ask_for_line_number  sU    ((22!((''8:

 NN6" r6   c                ~    U R                   R                  [        U5      5      nU(       a  U R                  X!5        ggrM  )r/   r   rX   r&  )r]   rV  r   s      r4   rY   DXFStructureBrowser.goto_line%  s1    ,,S[9##F3r6   c                    S U l         U R                  nUR                  5         UR                  S5        UR                  R                  5         UR                  5         g )Nz*F3 searches forward, F4 searches backwards)rC   rG   restore_geometryshow_messagefind_text_editsetFocusshowr   s     r4   r   DXFStructureBrowser.find_text,  sK    """!HI&&(r6   c                &  ^ ^ UU 4S jnT R                   mT R                  c-  U" 5         T R                  R                  T R                  5        O'TR	                  5       nUT R
                  :w  a  U" 5         TR                  T R                  5        g )Nc                    > TR                  5       Tl        [        TR                  TR                  5      n [	        U 5      Tl        g r+   )r0   rE   r5   r/   r!   rC   )r1   r   r]   s    r4   setup_search7DXFStructureBrowser.update_search.<locals>.setup_search5  s7    $*$:$:$<D!*488T5J5JKH"-h"7Dr6   )rG   rC   r&  rB   r0   rE   update_options)r]   rc  r0   r   s   `  @r4   update_search!DXFStructureBrowser.update_search4  su    	8
 ""&N2243G3GH$446O$"7"77d112r6   c                "    U R                  SS9  g )NFbackward_findru   s    r4   r    DXFStructureBrowser.find_forwardE  s    

E
"r6   c                "    U R                  SS9  g )NTri  rk  ru   s    r4   r   "DXFStructureBrowser.find_backwardsH  s    

D
!r6   c                   U R                   R                  5       (       a  U R                  5         U R                  nUR                  (       a  UR                  US9  U(       a  UR                  5       OUR                  5       u  p4U(       a#  U R                  X45        U R                  X45        g UR                  (       a  U R                  S5        g U R                  S5        g g )Nri  zNot found and end of file!z
Not found!)rG   	isVisiblerf  rC   is_end_of_indexreset_cursorr   r   r   show_entity_found_messager\  )r]   rj  searchr   r/  s        r4   rl  DXFStructureBrowser._findK  s    &&(( ((F%%##X#6 ,4%%'9L9L9N F 55fD..v=))%%&BC%%l3# )r6   c                :    U R                   R                  U5        g r+   )rG   r\  r]   msgs     r4   r\   DXFStructureBrowser.show_message_  s    &&s+r6   c                ,   UR                  5       nUS:X  a!  SR                  UR                  S5      5      nO UR                  5       nSU SU S3nU R
                  R                  X5      nU R                  SU U 35        g ! [         a    Sn N@f = f)	NSECTIONz @ {0} Section   z @ z(#rS  r9   zFound in Line: )dxftypeformatget_first_valuer   rZ   r/   r   r\  )r]   r   r/  r~  tailr`   r_   s          r4   rt  -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                     [        USSS9 nUR                  [        U5      5        S S S 5        g ! , (       d  f       g = f! [         a+  n[        R
                  " U S[        U5      5         S nAg S nAff = f)Nwtutf8)encodingr   )openwriter   r   r   r   r   )r]   r^   r  fpr   s        r4   r  DXFStructureBrowser.export_tagso  sY    	:hv6"& 766 	:  y#a&99	:s.   A 1A 
?A A 
A7!A22A7c                    U R                   (       aE  U R                  5       nUb1  U R                  R                  U5      nUb  U R	                  U5        g g g g r+   )rA   r   r/   next_entityr  )r]   current_entityr  s      r4   r   $DXFStructureBrowser.goto_next_entityv  sV    !446N)"hh22>B*88E + *  r6   c                    U R                   (       aE  U R                  5       nUb1  U R                  R                  U5      nUb  U R	                  U5        g g g g r+   )rA   r   r/   previous_entityr  )r]   r  prev_entitys      r4   r   (DXFStructureBrowser.goto_previous_entity~  sV    !446N)"hh66~F*88E + *  r6   c                b    U R                   R                  5       nUb  U R                  U5        g g r+   )rJ   backr&  r6  s     r4   r   *DXFStructureBrowser.go_back_entity_history  s-    ""$##F+ r6   c                b    U R                   R                  5       nUb  U R                  U5        g g r+   )rJ   forwardr&  r6  s     r4   r   -DXFStructureBrowser.go_forward_entity_history  s-    %%'##F+ r6   c                    U R                   R                  U5      nU(       a  US:X  a  SOSnU R                  X#   5        g g )Nr|   r   r   r  )r]   r2   sectionr/  s       r4   r   !DXFStructureBrowser.go_to_section  s<    ((&&t,)AqE00@ r6   c                   U R                  5       nU R                  R                  U5      nU R                  (       a  U R                  R	                  5       nU(       a>  U R                  R                  5       nUS   R                  5       nUR                  U5      nU R                  [        U R                  R                  5       5      U5        g g r+  )r   r/   r   rA   selectedIndexesr  r  r   _open_text_editorr   r   )r]   r  r   indicesr  r  s         r4   r   .DXFStructureBrowser.open_entity_in_text_editor  s    002hh..~>**::<G,,224ajnn&#//4""DHH..01;  r6   c                    [         R                  UUS9n[        R                  " U5      n [        R
                  " U5        g ! [         a    [        R                  " U SSU-   5         g f = f)N)r^   numzText EditorzError calling text editor:
)	r'   r  shlexsplit
subprocessPopenFileNotFoundErrorr   r   )r]   r^   r   cmdargss        r4   r  %DXFStructureBrowser._open_text_editor  sj       ! 
 {{3	T"  	  m%Cc%I	s   A %A+*A+c                .    SS K nUR                  U5        g r+  )
webbrowserr  )r]   urlr  s      r4   rC  $DXFStructureBrowser.open_web_browser  s    r6   c                j    U R                  5       nU(       a  U R                  R                  U5        g g r+   )r   r@   r   r6  s     r4   r   4DXFStructureBrowser.show_current_entity_in_tree_view  s,    ((*  11&9 r6   c                   U R                   b  U R                  R                  5       n[        U5      S:X  a  S/n[        R
                  " U SSUSS9u  p#U(       a{  U R                   nU R                  R                  5       nU(       a  US   R                  5       nOSnU R                  R                  U5      nU R                  R                  X'U5        g g g )Nr   0zStore Bookmark	Bookmark:Teditable)rB   rK   nameslenr   getItemrA   r  r  r/   r   add)r]   rK   r2   r   r   r  offsetr`   s           r4   r   "DXFStructureBrowser.store_bookmark  s    +,,.I9~" E	#++ HD --++;;=!!W[[]FF,,V4""48  ,r6   c                   U R                   R                  5       n[        U5      S:X  a  [        R                  " U SS5        g [
        R                  " U SSU R                   R                  5       SS9u  p#U(       a  U R                   R                  U5      nUb  U R                  UR                  5        U R                  R                  UR                  5        U R                  R                  5       n[        UR                  UR                  S5      5      nU R                  R!                  U5        g ["        R                  R%                  U S['        U5      5        g g )	Nr   InfozNo Bookmarks defined!zGo to Bookmarkr  Fr  zBookmark not found!)rK   r  r  r   informationr   r  getr(  r`   rA   r.  r  r  r   r/  r0  r   r   r   )r]   rK   r2   r   bookmarkr  r/  s          r4   r   "DXFStructureBrowser.go_to_bookmark  s   NN((*	y>Q##D&2IJ''NN  "
 ~~))$/H#11(//B$$..x?,,224#EKK$CD$$--e4 %%../T r6   )!rC   r   r   rB   rA   r   r   rI   r   rH   rG   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rE   r   r   r@   rK   r/   rJ   r?   )r^   r   r_   Optional[int]r`   Optional[str]r?   r   )rx   r   ry   r   r{   r   returnr
   )r  None)r  z'FindDialog')r   r   )r^   r   )r  r  )r  zOptional[Tags])r`   r   r+   )r   r   r1  r  )r   r   )r   r   r/  rX   )r/  r   )r`   r   r  bool)rV  rX   r  r  )Fry  r   )r^   r   r  r   )r2   r   )r^   r   r   rX   r  r  )r  r   )9__name__
__module____qualname____firstlineno__r   r>   rS   rW   rL   r   rM   rN   rF   r   rO   r   rt   r   r   r   r   r   r   r   r   r(  r&  r  r   rq   rr   r   r\   rB  r   rY   r   rf  r   r   rl  r\  rt  r  r   r   r   r   r   r   r  rC  r   r   r   __static_attributes____classcell__ra   s   @r4   r&   r&   G   s    " $"3i.9.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                    [         R                  R                  5       n UR                  R                  nUR                  [        U 5      US9  g ! [
         a    UR                  n N2f = f)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                  X   ^  \ rS rSrU 4S jrS rS	S jrS
S jrU 4S jrSS jr	Sr
U =r$ )r   i  c                   >^  [         TT ]  5         T R                  T 5        T R                  R                  R                  U 4S j5        [        SS5      T l        g )Nc                 $   > T R                  5       $ r+   )r   ru   s   r4   <lambda>%FindDialog.__init__.<locals>.<lambda>  s    $**,r6   ezdxf
DXFBrowser)r=   r>   setupUiclose_buttonr   rp   r   settings)r]   ra   s   `r4   r>   FindDialog.__init__  sC    T!!))*>?!'<8r6   c                d    U R                   R                  S5      nUb  U R                  U5        g g Nzfind.dialog.geometry)r  rF  restoreGeometry)r]   geometrys     r4   r[  FindDialog.restore_geometry  s0    ==&&'=>  *  r6   c                Z   [        5       nU R                  R                  5       (       a  UR                  S5        U R                  R                  5       (       a  UR                  S5        U R
                  R                  5       (       a  UR                  S5        U R                  R                  5       (       a  UR                  S5        U R                  R                  5       (       a  UR                  S5        U R                  R                  5       (       a  UR                  S5        U$ )Nr|   CLASSESTABLESr}   r~   r   )	rD   header_check_box	isCheckedr  classes_check_boxtables_check_boxblocks_check_boxentities_check_boxobjects_check_box)r]   r,   s     r4   r0   FindDialog.search_sections  s    5  **,,LL"!!++--LL#  **,,LL"  **,,LL""",,..LL$!!++--LL#r6   c                   UR                  U R                  R                  5       5        U R                  R	                  5       (       + Ul        U R                  R	                  5       Ul        U R                  R	                  5       Ul	        g r+   )
reset_search_termr]  textmatch_case_check_boxr  case_insensitivewhole_words_check_boxwhole_wordsnumber_tags_check_boxnumbers)r]   ru  s     r4   re  FindDialog.update_options  sf      !4!4!9!9!;<&*&?&?&I&I&K"K!77AAC33==?r6   c                x   > U R                   R                  SU R                  5       5        [        TU ]  U5        g r  )r  setValuesaveGeometryr=   
closeEvent)r]   eventra   s     r4   r  FindDialog.closeEvent  s.    5t7H7H7JK5!r6   c                :    U R                   R                  U5        g r+   )messager  rx  s     r4   r\  FindDialog.show_message  s    S!r6   )r  )r  SearchSections)ru  r!   r  r  r  )r  r  r  r  r>   r[  r0   re  r  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   r  r  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$   rK   r%   __all__rQ   optionsBROWSE_COMMANDr  r'   maxget_intr)   r   r  r5   rU   rV   rg   QMainWindowr&   r
  QDialogr   r  r6   r4   <module>r     s   #           > 5 ! < 
  / &   
!"--mm>EMM)).+FG	S	'5  b
)// b
J/'"""M '"r6   