
    OgC)                        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       S/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/ezdxf/_options.pyxdg_pathr       sX    zz~~g&HH~((* %< Cy##%	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 
F4L 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ii+R0G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EF+ 'h 

x,!&F4L' 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__   sX    5:)Iahhj!)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    ||""7C'"BBr   c                >    | j                   j                  |||      S rr   )re   getfloatrt   s       r   	get_floatzOptions.get_float   s    ||$$WcG$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$    $(MMLL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,    LL"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^    	)LLh' %%d8n5&&(	  	#a&MM	s   A 	A9A44A9c                    | j                          	 | j                  j                  |       y# t        $ r}t	        t        |             Y d}~yd}~ww xY w)zWrite 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     	##%	LLr" 	#a&MM	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   s?    "''$$X.vF 	"JJrN	 	 	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#Et}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!    xx*-  
 	
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   s1    88D."=CCMRXaVW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"    ww!!$((4">??r   c                ,    t        | j                        S r    )r   r   r   s    r   test_files_pathzOptions.test_files_path   s    DOO$$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    ,gen=r   c                2    | j                  t        dd      S )Nr0   Tr   r   r   s    r   store_proxy_graphicszOptions.store_proxy_graphics   s    }}T#94}HHr   c                D    | j                  t        dt        |             y )Nr0   r   r   s     r   r   zOptions.store_proxy_graphics  s    -wu~>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#FPU}VVr   c                D    | j                  t        dt        |             y )Nr   r   )rj   states     r   r   z)Options.write_fixed_meta_data_for_testing  s    :GEN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    
 %&	!-
 y9,-	8OOH% *8*A67  c!f  	#a&MM	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?  s\    (* 	"D{{}"KKM24&:;		"
  "#a&MM"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   