Ë
    £èh’*  ã                  óÚ   — d dl mZ d dlmZmZ d dlZd dlZd dlmZ d dl	m
Z
 h d£ZdZdZd	Zd
ZdZdZdZdZ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 G d„ d«      Z e«       Z y)"é    )Úannotations)ÚTextIOÚSequenceN)ÚPath)ÚConfigParser>   Ú1ÚOnÚonÚTrueÚtrueÚcorezbrowse-commandzview-commandzdraw-commandz	ezdxf.iniÚezdxfÚXDG_CONFIG_HOMEz.configzodafc-addonzopenscad-addonzdrawing-addonÚ
c                óÒ   — t         j                  j                  | «      }|r"t        |«      j	                  «       }|t
        z  S t        d«      j	                  «       |z  }|t
        z  S )NÚ~)ÚosÚenvironÚgetr   Ú
expanduserÚEZDXF)Úxdg_varÚ	directoryÚxdg_homeÚhomes       ú.lib/python3.12/site-packages/ezdxf/_options.pyÚxdg_pathr       sX   € Ü�z‰z�~‰~˜gÓ&€HÙä�H‹~×(Ñ(Ó*ˆð ”%‰<Ðô �C‹y×#Ñ#Ó%¨	Ñ1ˆØ”%‰<Ðó    c                 ó*   — t        t        t        «      S ©N)r   r   ÚCONFIG_DIRECTORY© r   r   Úconfig_home_pathr#   +   s   € Ü”OÔ%5Ó6Ð6r   c                 óL   — t        «       t        z  t        dt        › �«      g} | S )Nz./)r#   Ú	EZDXF_INIr   )Úconfig_pathss    r   Údefault_config_filesr'   /   s+   € äÓœYÑ&Üˆr”)�ÐÓð€Lð Ðr   c            
     ó    — t        «       } ddddddddddœ	| t        <   dddœ| t        <   d	dd
œ| t        <   ddi| t        <   ddddœ| t
        <   | S )NúOpenSansCondensed-LightÚ r   Úfalse)	ÚDEFAULT_DIMENSION_TEXT_STYLEÚ
TEST_FILESÚSUPPORT_DIRSÚLOAD_PROXY_GRAPHICSÚSTORE_PROXY_GRAPHICSÚLOG_UNPROCESSED_TAGSÚ FILTER_INVALID_XDATA_GROUP_CODESÚ!WRITE_FIXED_META_DATA_FOR_TESTINGÚDISABLE_C_EXTz?"C:\Program Files\Notepad++\notepad++.exe" "{filename}" -n{num}Ú32)ÚTEXT_EDITORÚ	ICON_SIZEz<"C:\Program Files\ODA\ODAFileConverter\ODAFileConverter.exe")ÚWIN_EXEC_PATHÚUNIX_EXEC_PATHr8   z("C:\Program Files\OpenSCAD\openscad.exe"Útsl)ÚTRY_PYSIDE6Ú	TRY_PYQT5ÚSHX_RESOLVE_ORDER)r   ÚCOREÚBROWSE_COMMANDÚODAFC_ADDONÚOPENSCAD_ADDONÚDRAWING_ADDON)Úconfigs    r   Údefault_configrD   7   sŠ   € Ü‹^€Fà(AØØØ%Ø &Ø 'Ø,2Ø-4Ø ñ
€FŒ4�Lð àñ€FŒ>Ñð YØñ€FŒ;Ñð
 	ÐDð€FŒ>Ñð
 Øà"ñ€FŒ=Ñð €Mr   c                 ó~   — t        «       } t        j                  dd«      }|r| j                  t	        |«      «       | S )NÚEZDXF_CONFIG_FILEr*   )r'   r   ÚgetenvÚappendr   )ÚpathsÚenv_cfgs     r   Úconfig_filesrK   Z   s5   € ô !Ó"€EÜ�i‰iÐ+¨RÓ0€GÙØ�‰”T˜'“]Ô#Ø€Lr   c                óP  — t        «       }	 |j                  | d¬«       dD ]4  \  }}t        j                  j                  |d«      }|sŒ)||t           |<   Œ6 |S # t        $ rB}t        t	        |«      «       t        d| › �«       t        d«       t        d«       Y d }~Œ�d }~ww xY w)NÚutf8©ÚencodingzPaths: z8Maybe a file with UTF16 LE-BOM encoding. (Powershell!!!)é   ))r-   ÚEZDXF_TEST_FILES)r4   ÚEZDXF_DISABLE_C_EXTr*   )
rD   ÚreadÚUnicodeDecodeErrorÚprintÚstrÚexitr   r   r   r>   )rI   rC   ÚeÚnameÚenv_nameÚvalues         r   Úload_config_filesr\   i   s›   € ÜÓ€FðØ�‰�E FˆÔ+ó‰ˆˆhô —
‘
—‘˜x¨Ó,ˆÚØ!&ˆF”4‰L˜Òðð €Møô ò ÜŒc�!‹fŒÜ�˜�wÐÔ ÜÐHÔIÜˆQ�‰ûð	ús   ŒA Á	B%Á#8B Â B%c                ó4   — t        | «      j                  «       S r    )rV   Úlower)r[   s    r   Úboolstrr_   }   s   € Üˆu‹:×ÑÓÐr   c                  óH  — e Zd ZeZeZeZeZg d¢Zd$d„Zd%d„Z	d&d'd„Z
d(d)d„Zd*d+d„Zd,d-d„Zd$d„Zd	„ Zed.d
„«       Zd/d„Zd0d„Zefd/d„Zed1d„«       Zed2d„«       Zej0                  d3d„«       Zed4d„«       Zej0                  d5d„«       Zed2d„«       Zed6d„«       Zed1d„«       Zej0                  d7d„«       Zed1d„«       Zej0                  d7d„«       Zed1d„«       Zej0                  d8d„«       Zed1d„«       Zed1d„«       Z d9d8d„Z!d„ Z"d„ Z#d „ Z$e%d!„ «       Z&e%d:d"„«       Z'y#);ÚOptions)rR   rQ   rF   c                óØ   — t        «       }|D �cg c]  }|j                  «       sŒ|‘Œ c}| _        t        |«      | _        d| _        d| _        d| _        | j                  «        y c c}w )NTF)	rK   ÚexistsÚ_loaded_pathsr\   Ú_configÚlog_unprocessed_tagsÚ
_use_c_extÚdebugÚupdate_cached_options)ÚselfrI   Úps      r   Ú__init__zOptions.__init__�   s\   € Ü“ˆÙ5:Ó)I±U°¸a¿h¹h½jª!°UÑ)IˆÔÜ(¨Ó/ˆŒà$(ˆÔ!àˆŒØˆŒ
Ø×"Ñ"Õ$ùò *Js
   �A'¥A'c                ó>   — | j                   j                  |||«       y r    )re   Úset)rj   ÚsectionÚkeyr[   s       r   rn   zOptions.set˜   s   € Ø�‰×Ñ˜ # uÕ-r   c                ó>   — | j                   j                  |||¬«      S ©N)Úfallback)re   r   ©rj   ro   rp   Údefaults       r   r   zOptions.get›   s   € Ø�|‰|×Ñ ¨°wÐÓ?Ð?r   c                ó>   — | j                   j                  |||¬«      S rr   )re   Ú
getbooleanrt   s       r   Úget_boolzOptions.get_boolž   s   € Ø�|‰|×&Ñ& w°¸gÐ&ÓFÐFr   c                ó>   — | j                   j                  |||¬«      S rr   )re   Úgetintrt   s       r   Úget_intzOptions.get_int¡   s   € Ø�|‰|×"Ñ" 7¨C¸'Ð"ÓBÐBr   c                ó>   — | j                   j                  |||¬«      S rr   )re   Úgetfloatrt   s       r   Ú	get_floatzOptions.get_float¤   s   € Ø�|‰|×$Ñ$ W¨c¸GÐ$ÓDÐDr   c                óR   — | j                  t        j                  dd¬«      | _        y )Nr1   T©ru   )rx   ra   r>   rf   ©rj   s    r   ri   zOptions.update_cached_options§   s$   € Ø$(§M¡MÜ�L‰LÐ0¸$ð %2ó %
ˆÕ!r   c                ó€   — | j                   j                  t        j                  dt	        | j
                  «      «       y )Nr1   )re   rn   ra   r>   r_   rf   r�   s    r   Úrewrite_cached_optionszOptions.rewrite_cached_options¬   s,   € à�‰×ÑÜ�L‰LØ"Ü�D×-Ñ-Ó.õ	
r   c                ó,   — t        | j                  «      S r    )Útuplerd   r�   s    r   Úloaded_config_fileszOptions.loaded_config_files´   s   € ä�T×'Ñ'Ó(Ð(r   c                óø   — 	 | j                   j                  |«       | j                  j                  t	        |«      «       | j                  «        y# t        $ r}t        t        |«      «       Y d}~yd}~ww xY w)zbAppend content from config file `filename`, but does not reset the
        configuration.
        N)	re   rS   rd   rH   r   ri   ÚIOErrorrU   rV   )rj   ÚfilenamerX   s      r   Ú	read_filezOptions.read_file¸   s^   € ð	)Ø�L‰L×Ñ˜hÔ'ð ×Ñ×%Ñ%¤d¨8£nÔ5Ø×&Ñ&Õ(øô	 ò 	Ü”#�a“&�M‰Mûð	ús   ‚A Á	A9ÁA4Á4A9c                ó°   — | j                  «        	 | j                  j                  |«       y# t        $ r}t	        t        |«      «       Y d}~yd}~ww xY w)zˆWrite current configuration into given file object, the file object
        must be a writeable text file with 'utf8' encoding.
        N)rƒ   re   Úwriterˆ   rU   rV   )rj   ÚfprX   s      r   rŒ   zOptions.writeÄ   sD   € ð 	×#Ñ#Ô%ð	Ø�L‰L×Ñ˜rÕ"øÜò 	Ü”#�a“&�M‰Mûð	ús   ’. ®	A·AÁAc                ó¦   — t        t        j                  j                  |«      dd¬«      5 }| j	                  |«       ddd«       y# 1 sw Y   yxY w)z1Write current configuration into file `filename`.ÚwtrM   rN   N)Úopenr   Úpathr   rŒ   )rj   r‰   r�   s      r   Ú
write_filezOptions.write_fileÎ   s7   € ä”"—'‘'×$Ñ$ XÓ.°¸vÕFÈ"Ø�J‰J�rŒN÷ G×FÑFús   ¬AÁAc                ó2   — | j                  t        dd¬«      S )Nr2   Tr€   ©rx   r>   r�   s    r   Ú filter_invalid_xdata_group_codesz(Options.filter_invalid_xdata_group_codesÓ   s   € à�}‰}œTÐ#EÈtˆ}ÓTÐTr   c                ó2   — | j                  t        dd¬«      S )Nr,   r)   r€   )r   r>   r�   s    r   Údefault_dimension_text_stylez$Options.default_dimension_text_style×   s!   € à�x‰xÜØ*Ø-ð ó 
ð 	
r   c                ó2   — | j                  t        d|«       y )Nr,   )rn   r>   )rj   Ústyles     r   r—   z$Options.default_dimension_text_styleß   s   € à�‰ÜØ*Øõ	
r   c                ó‚   — | j                  t        dd«      j                  t        «      D �cg c]  }|sŒ|‘Œ	 c}S c c}w )Nr.   r*   )r   r>   ÚsplitÚDIR_SEPARATOR)rj   Úds     r   Úsupport_dirszOptions.support_dirsç   s7   € àŸ8™8¤D¨.¸"Ó=×CÑCÄMÔRÓXÑR�aÒVW’ÐRÑXÐXùÒXs   ­<µ<c                óX   — | j                  t        dt        j                  |«      «       y )Nr.   )rn   r>   rœ   Újoin)rj   rž   s     r   rž   zOptions.support_dirsë   s   € à�‰”�~¤}×'9Ñ'9¸,Ó'GÕHr   c                óh   — t         j                  j                  | j                  t        d«      «      S )Nr-   )r   r‘   r   r   r>   r�   s    r   Ú
test_fileszOptions.test_filesï   s"   € ä�w‰w×!Ñ! $§(¡(¬4°Ó">Ó?Ð?r   c                ó,   — t        | j                  «      S r    )r   r¢   r�   s    r   Útest_files_pathzOptions.test_files_pathó   s   € ä�D—O‘OÓ$Ð$r   c                ó2   — | j                  t        dd¬«      S )Nr/   Tr€   r”   r�   s    r   Úload_proxy_graphicszOptions.load_proxy_graphics÷   s   € à�}‰}œTÐ#8À$ˆ}ÓGÐGr   c                óD   — | j                  t        dt        |«      «       y )Nr/   ©rn   r>   r_   ©rj   r[   s     r   r¦   zOptions.load_proxy_graphicsû   s   € à�‰”Ð,¬g°e«nÕ=r   c                ó2   — | j                  t        dd¬«      S )Nr0   Tr€   r”   r�   s    r   Ústore_proxy_graphicszOptions.store_proxy_graphicsÿ   s   € à�}‰}œTÐ#9À4ˆ}ÓHÐHr   c                óD   — | j                  t        dt        |«      «       y )Nr0   r¨   r©   s     r   r«   zOptions.store_proxy_graphics  s   € à�‰”Ð-¬w°u«~Õ>r   c                ó2   — | j                  t        dd¬«      S )Nr3   Fr€   r”   r�   s    r   Ú!write_fixed_meta_data_for_testingz)Options.write_fixed_meta_data_for_testing  s   € ð �}‰}œTÐ#FÐPUˆ}ÓVÐVr   c                óD   — | j                  t        dt        |«      «       y )Nr®   r¨   )rj   Ústates     r   r®   z)Options.write_fixed_meta_data_for_testing  s   € à�‰”Ð:¼GÀE»NÕKr   c                ó2   — | j                  t        dd¬«      S )z!Disable C-extensions if ``True``.r4   Fr€   r”   r�   s    r   Údisable_c_extzOptions.disable_c_ext  s   € ð �}‰}œT ?¸Eˆ}ÓBÐBr   c                ó   — | j                   S )z0Returns ``True`` if the C-extensions are in use.)rg   r�   s    r   Ú	use_c_extzOptions.use_c_ext  s   € ð �‰Ðr   c                óv   — t        |«      }| j                  t        d|«       | j                  t        d|«       y)z0Enable/disable proxy graphic load/store support.r/   r0   N)r_   rn   r>   )rj   r°   r[   s      r   Úpreserve_proxy_graphicszOptions.preserve_proxy_graphics  s-   € ä˜“ˆØ�‰”Ð,¨eÔ4Ø�‰”Ð-¨uÕ5r   c                óV   — | j                   j                  t        j                  «       y)z(Print current configuration to `stdout`.N)re   rŒ   ÚsysÚstdoutr�   s    r   rU   zOptions.print!  s   € à�‰×Ñœ3Ÿ:™:Õ&r   c                ól  — t        «       }|j                  «       s	 |j                  d¬«       t        |t        z  «      }	 | j                  |«       t	        d|› d�«       y# t        $ r}t	        t        |«      «       Y d}~yd}~ww xY w# t        $ r}t	        t        |«      «       Y d}~yd}~ww xY w)zxWrite current configuration into file "~/.config/ezdxf/ezdxf.ini" or
        "XDG_CONFIG_HOME/ezdxf/ezdxf.ini".
        T)ÚparentsNzcreated config file: 'Ú')r#   rc   Úmkdirrˆ   rU   rV   r%   r’   )rj   Ú	home_pathrX   r‰   s       r   Úwrite_home_configzOptions.write_home_config%  sŸ   € ô
 %Ó&ˆ	Ø×ÑÔ!ðØ—‘¨�Ô-ô
 �y¤9Ñ,Ó-ˆð	8Ø�O‰O˜HÔ%ô Ð*¨8¨*°AÐ6Õ7øô ò Ü”c˜!“f”Üûðûô ò 	Ü”#�a“&�M‰Mûð	ús/   œA" ÁB Á"	B	Á+BÂB	Â	B3ÂB.Â.B3c                óP   — g | _         t        «       | _        | j                  «        y r    )rd   rD   re   ri   r�   s    r   ÚresetzOptions.reset:  s    € ØˆÔÜ%Ó'ˆŒØ×"Ñ"Õ$r   c                 óØ   — t        «       D ]3  } | j                  «       sŒ	 | j                  «        t        d| › d�«       Œ5 y # t        $ r}t        t        |«      «       Y d }~ŒYd }~ww xY w)Nzdeleted config file: 'r¼   )r'   rc   ÚunlinkrU   rˆ   rV   )ÚfilerX   s     r   Údelete_default_config_filesz#Options.delete_default_config_files?  sW   € ä(Ö*ˆDØ�{‰{�}ð"Ø—K‘K”MÜÐ2°4°&¸Ð:Õ;ñ	 +øô
 ò "Üœ#˜a›&—M‘Mûð"ús    AÁ	A)ÁA$Á$A)c                ó   — t        | |«      S r    )r   )r   r   s     r   r   zOptions.xdg_pathI  s   € ä˜ Ó+Ð+r   N)ÚreturnÚNone)ro   rV   rp   rV   r[   rV   rÇ   rÈ   )r*   )ro   rV   rp   rV   ru   rV   rÇ   rV   )F)ro   rV   rp   rV   ru   ÚboolrÇ   rÉ   )r   )ro   rV   rp   rV   ru   ÚintrÇ   rÊ   )g        )ro   rV   rp   rV   ru   ÚfloatrÇ   rË   )rÇ   ztuple[Path, ...])r‰   rV   rÇ   rÈ   )r�   r   rÇ   rÈ   )rÇ   rÉ   )rÇ   rV   )r™   rV   rÇ   rÈ   )rÇ   z	list[str])rž   zSequence[str]rÇ   rÈ   ©rÇ   r   )r[   rÉ   rÇ   rÈ   )r°   rÉ   rÇ   rÈ   )T©r   rV   r   rV   rÇ   r   )(Ú__name__Ú
__module__Ú__qualname__r>   r?   ÚVIEW_COMMANDÚDRAW_COMMANDÚCONFIG_VARSrl   rn   r   rx   r{   r~   ri   rƒ   Úpropertyr†   rŠ   rŒ   r%   r’   r•   r—   Úsetterrž   r¢   r¤   r¦   r«   r®   r²   r´   r¶   rU   r¿   rÁ   ÚstaticmethodrÅ   r   r"   r   r   ra   ra   �   s	  „ Ø€DØ#€NØ€LØ€Lò€Kó	%ó.ô@ôGôCôEó
ò

ð ò)ó ð)ó
)óð *3ô ð
 òUó ðUð ò
ó ð
ð "×(Ñ(ò
ó )ð
ð òYó ðYð ×ÑòIó ðIð ò@ó ð@ð ò%ó ð%ð òHó ðHð ×Ñò>ó  ð>ð òIó ðIð × Ñ ò?ó !ð?ð òWó ðWð
 '×-Ñ-òLó .ðLð òCó ðCð òó ðô6ò'ò8ò*%ð
 ñ"ó ð"ð ò,ó ñ,r   ra   rÍ   rÌ   )rÇ   ú
list[Path])rÇ   r   )rI   r×   rÇ   r   )r[   rÉ   rÇ   rV   )!Ú
__future__r   Útypingr   r   r   r¸   Úpathlibr   Úconfigparserr   Ú
TRUE_STATEr>   r?   rÑ   rÒ   r%   r   r   r!   r@   rA   rB   rœ   r   r#   r'   rD   rK   r\   r_   ra   Úoptionsr"   r   r   Ú<module>rÞ      s—   ðõ #ß #Û 	Û 
Ý Ý %ò /€
Ø€Ø!€Ø€Ø€Ø€	Ø€Ø#€ØÐ Ø€Ø!€Ø€Ø€óó7óó óFóó(÷J,ñ J,ñ\ ‹)�r   