
    'jC)                        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 dS ),    )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
xdg_varstr	directoryreturnr   c                    t           j                            |           }|r"t          |                                          }n$t          d                                          |z  }|t
          z  S )N~)osenvirongetr   
expanduserEZDXF)r   r   xdg_homehomes       H/DATA/AppData/hermes/venv/lib/python3.11/site-packages/ezdxf/_options.pyxdg_pathr       s^    z~~g&&H 2H~~((** Cyy##%%	1%<    c                 6    t          t          t                    S N)r   r   CONFIG_DIRECTORY r    r   config_home_pathr%   +   s    O%5666r    
list[Path]c                 `    t                      t          z  t          dt                     g} | S )Nz./)r%   	EZDXF_INIr   )config_pathss    r   default_config_filesr*   /   s3    Y&)L r    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_PATHr;   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_configrG   7   s    ^^F(A% & ',2-4 
 
F4L  F> Y F;
 	DF>
 " F= Mr    c                     t                      } t          j        dd          }|r"|                     t	          |                     | S )NEZDXF_CONFIG_FILEr-   )r*   r   getenvappendr   )pathsenv_cfgs     r   config_filesrN   Z   sF     !""Ei+R00G $T']]###Lr    rL   c                   t                      }	 |                    | d           nc# t          $ rV}t          t	          |                     t          d|             t          d           t          d           Y d }~nd }~ww xY wdD ]7\  }}t          j                            |d          }|r||t                   |<   8|S )Nutf8encodingzPaths: z8Maybe a file with UTF16 LE-BOM encoding. (Powershell!!!)   ))r0   EZDXF_TEST_FILES)r7   EZDXF_DISABLE_C_EXTr-   )
rG   readUnicodeDecodeErrorprintr   exitr   r   r   rA   )rL   rF   enameenv_namevalues         r   load_config_filesr^   i   s    FEF++++   c!ff   HIIIQ	 ' 'h 
x,, 	'!&F4LMs   ( 
BABBr]   boolc                D    t          |                                           S r"   )r   lower)r]   s    r   boolstrrb   }   s    u::r    c                     e Zd ZeZeZeZeZg dZd?dZd@d	Z	dAdBdZ
dCdDdZdEdFdZdGdHdZd?dZd ZedId            ZdJdZdKdZefdJdZedLd             ZedMd!            Zej        dNd#            ZedOd%            Zej        dPd(            ZedMd)            ZedQd+            ZedLd,            Zej        dRd-            ZedLd.            Zej        dRd/            ZedLd0            Zej        dSd2            ZedLd3            ZedLd4            Z dTdSd6Z!d7 Z"d8 Z#d9 Z$e%d:             Z&e%dUd=            Z'd>S )VOptions)rU   rT   rI   r   Nonec                    t                      }d |D             | _        t          |          | _        d| _        d| _        d| _        |                                  d S )Nc                :    g | ]}|                                 |S r$   )exists).0ps     r   
<listcomp>z$Options.__init__.<locals>.<listcomp>   s%    )I)I)Iahhjj)I!)I)I)Ir    TF)rN   _loaded_pathsr^   _configlog_unprocessed_tags
_use_c_extdebugupdate_cached_options)selfrL   s     r   __init__zOptions.__init__   s^    )I)IU)I)I)I(//$(!
""$$$$$r    sectionr   keyr]   c                >    | j                             |||           d S r"   )rm   set)rr   rt   ru   r]   s       r   rw   zOptions.set   s"    #u-----r    r-   defaultc                <    | j                             |||          S N)fallback)rm   r   rr   rt   ru   rx   s       r   r   zOptions.get   s    |w???r    Fr_   c                <    | j                             |||          S rz   )rm   
getbooleanr|   s       r   get_boolzOptions.get_bool   s    |&&wg&FFFr    r   intc                <    | j                             |||          S rz   )rm   getintr|   s       r   get_intzOptions.get_int   s    |""7C'"BBBr            floatc                <    | j                             |||          S rz   )rm   getfloatr|   s       r   	get_floatzOptions.get_float   s    |$$WcG$DDDr    c                T    |                      t          j        dd          | _        d S )Nr4   Trx   )r   rd   rA   rn   rr   s    r   rq   zOptions.update_cached_options   s-    $(MML0$ %2 %
 %
!!!r    c                v    | j                             t          j        dt	          | j                             d S )Nr4   )rm   rw   rd   rA   rb   rn   r   s    r   rewrite_cached_optionszOptions.rewrite_cached_options   s<    L"D-..	
 	
 	
 	
 	
r    tuple[Path, ...]c                *    t          | j                  S r"   )tuplerl   r   s    r   loaded_config_fileszOptions.loaded_config_files   s    T'(((r    filenamec                   	 | j                             |           | j                            t	          |                     |                                  dS # t          $ r'}t          t          |                     Y d}~dS d}~ww xY w)zbAppend content from config file `filename`, but does not reset the
        configuration.
        N)	rm   rV   rl   rK   r   rq   IOErrorrX   r   )rr   r   rZ   s      r   	read_filezOptions.read_file   s    	)Lh''' %%d8nn555&&(((((	  	 	 	#a&&MMMMMMMMM	s   A 
B
#BB
fpr   c                    |                                   	 | j                            |           dS # t          $ r'}t	          t          |                     Y d}~dS 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   rm   writer   rX   r   )rr   r   rZ   s      r   r   zOptions.write   ss     	##%%%	Lr""""" 	 	 	#a&&MMMMMMMMM	s   2 
A#AA#c                    t          t          j                            |          dd          5 }|                     |           ddd           dS # 1 swxY w Y   dS )z1Write current configuration into file `filename`.wtrP   rQ   N)openr   pathr   r   )rr   r   r   s      r   
write_filezOptions.write_file   s    "'$$X..vFFF 	"JJrNNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAAc                <    |                      t          dd          S )Nr5   Tr   r   rA   r   s    r    filter_invalid_xdata_group_codesz(Options.filter_invalid_xdata_group_codes   s    }}T#Et}TTTr    c                <    |                      t          dd          S )Nr/   r,   r   )r   rA   r   s    r   default_dimension_text_stylez$Options.default_dimension_text_style   s&    xx*-  
 
 	
r    stylec                >    |                      t          d|           d S )Nr/   )rw   rA   )rr   r   s     r   r   z$Options.default_dimension_text_style   s+    *	
 	
 	
 	
 	
r    	list[str]c                ~    d |                      t          dd                              t                    D             S )Nc                    g | ]}||S r$   r$   )ri   ds     r   rk   z(Options.support_dirs.<locals>.<listcomp>   s    XXXaVWXXXXr    r1   r-   )r   rA   splitDIR_SEPARATORr   s    r   support_dirszOptions.support_dirs   s4    XX488D."==CCMRRXXXXr    r   Sequence[str]c                n    |                      t          dt                              |                     d S )Nr1   )rw   rA   r   join)rr   r   s     r   r   zOptions.support_dirs   s,    ~}'9'9,'G'GHHHHHr    c                r    t           j                            |                     t          d                    S )Nr0   )r   r   r   r   rA   r   s    r   
test_fileszOptions.test_files   s&    w!!$((4">">???r    r   c                *    t          | j                  S r"   )r   r   r   s    r   test_files_pathzOptions.test_files_path   s    DO$$$r    c                <    |                      t          dd          S )Nr2   Tr   r   r   s    r   load_proxy_graphicszOptions.load_proxy_graphics   s    }}T#8$}GGGr    c                X    |                      t          dt          |                     d S )Nr2   rw   rA   rb   rr   r]   s     r   r   zOptions.load_proxy_graphics   s%    ,genn=====r    c                <    |                      t          dd          S )Nr3   Tr   r   r   s    r   store_proxy_graphicszOptions.store_proxy_graphics   s    }}T#94}HHHr    c                X    |                      t          dt          |                     d S )Nr3   r   r   s     r   r   zOptions.store_proxy_graphics  s%    -wu~~>>>>>r    c                <    |                      t          dd          S )Nr6   Fr   r   r   s    r   !write_fixed_meta_data_for_testingz)Options.write_fixed_meta_data_for_testing  s     }}T#FPU}VVVr    statec                X    |                      t          dt          |                     d S )Nr   r   )rr   r   s     r   r   z)Options.write_fixed_meta_data_for_testing  s%    :GENNKKKKKr    c                <    |                      t          dd          S )z!Disable C-extensions if ``True``.r7   Fr   r   r   s    r   disable_c_extzOptions.disable_c_ext  s     }}T?E}BBBr    c                    | j         S )z0Returns ``True`` if the C-extensions are in use.)ro   r   s    r   	use_c_extzOptions.use_c_ext  s     r    Tc                    t          |          }|                     t          d|           |                     t          d|           dS )z0Enable/disable proxy graphic load/store support.r2   r3   N)rb   rw   rA   )rr   r   r]   s      r   preserve_proxy_graphicszOptions.preserve_proxy_graphics  sA    ,e444-u55555r    c                N    | j                             t          j                   dS )z(Print current configuration to `stdout`.N)rm   r   sysstdoutr   s    r   rX   zOptions.print!  s     3:&&&&&r    c                   t                      }|                                sL	 |                    d           n4# t          $ r'}t	          t          |                     Y d}~dS d}~ww xY wt          |t          z            }	 |                     |           t	          d| d           dS # t          $ r'}t	          t          |                     Y d}~dS 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%   rh   mkdirr   rX   r   r(   r   )rr   	home_pathrZ   r   s       r   write_home_configzOptions.write_home_config%  s   
 %&&	!! 	----   c!ff y9,--	8OOH%%% 6866677777  	 	 	#a&&MMMMMMMMM	s-   ; 
A,A''A,B1 1
C";CC"c                b    g | _         t                      | _        |                                  d S r"   )rl   rG   rm   rq   r   s    r   resetzOptions.reset:  s/    %''""$$$$$r    c                    t                      D ]r} |                                 r\	 |                                  t          d|  d           ?# t          $ r&}t          t          |                     Y d }~jd }~ww xY wsd S )Nzdeleted config file: 'r   )r*   rh   unlinkrX   r   r   )filerZ   s     r   delete_default_config_filesz#Options.delete_default_config_files?  s    (** 	" 	"D{{}} ""KKMMM:4:::;;;; " " "#a&&MMMMMMMM"	"	" 	"s   'A
A>A99A>r   r   c                "    t          | |          S r"   )r   )r   r   s     r   r   zOptions.xdg_pathI  s    +++r    N)r   re   )rt   r   ru   r   r]   r   r   re   )r-   )rt   r   ru   r   rx   r   r   r   )F)rt   r   ru   r   rx   r_   r   r_   )r   )rt   r   ru   r   rx   r   r   r   )r   )rt   r   ru   r   rx   r   r   r   )r   r   )r   r   r   re   )r   r   r   re   )r   r_   )r   r   )r   r   r   re   )r   r   )r   r   r   re   r   r   )r]   r_   r   re   )r   r_   r   re   )Tr   r   r   r   r   r   )(__name__
__module____qualname__rA   rB   VIEW_COMMANDDRAW_COMMANDCONFIG_VARSrs   rw   r   r   r   r   rq   r   propertyr   r   r   r(   r   r   r   setterr   r   r   r   r   r   r   r   r   rX   r   r   staticmethodr   r   r$   r    r   rd   rd      s       D#NLL  K	% 	% 	% 	%. . . .@ @ @ @ @G G G G GC C C C CE E E E E
 
 
 


 
 
 ) ) ) X)
) 
) 
) 
)    *3     
 U U U XU 
 
 
 X
 "(
 
 
 )(
 Y Y Y XY I I I I @ @ @ X@ % % % X% H H H XH > > >  > I I I XI  ? ? ? ! ? W W W XW
 '-L L L .-L C C C XC    X6 6 6 6 6' ' '8 8 8*% % %
 " " \" , , , \, , ,r    rd   r   r   )r   r&   )r   r   )rL   r&   r   r   )r]   r_   r   r   )!
__future__r   typingr   r   r   r   pathlibr   configparserr   
TRUE_STATErA   rB   r   r   r(   r   r   r#   rC   rD   rE   r   r   r%   r*   rG   rN   r^   rb   rd   optionsr$   r    r   <module>r      s   # " " " " " # # # # # # # # 				 



       % % % % % % /..
!	# !   7 7 7 7          F      (   J, J, J, J, J, J, J, J,\ '))r    