
    ai                        S SK r S SK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 rS rS r " S S	\5      r " S
 S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r " S  S!\5      r " S" S#\5      r " S$ S%\5      r  " S& S'\5      r! " S( S)\5      r" " S* S+\5      r# " S, S-\5      r$ " S. S/\5      r% " S0 S1\5      r& " S2 S3\5      r' " S4 S5\5      r( " S6 S7\5      r) " S8 S9\5      r*\\\"\ \\!\#\$\\\\\\\\\\\\%\&\'\(\)\*4r+g):    N)OperatorOperatorFileListElement)BoolPropertyEnumPropertyIntPropertyStringPropertyCollectionProperty)pgettext_ifacepgettext_tipc                     SS K n/ nU R                  5        HA  nUR                  R                  U5      nUR                  U;  d  M0  UR                  U5        MC     U$ Nr   )osnamelistpathnormpathsepappend)file_to_extractr   
root_pathsfs       ]/home/wildlama/Downloads/blender-5.1.2-linux-x64/5.1/scripts/startup/bl_operators/userpref.py_zipfile_root_namelistr      sT    J%%' GGQ66?a  (     c                    SS K nSS KnU Vs1 s H:  nUR                  R                  U5      S   =nR	                  5       (       d  M8  UiM<     nn/ nUR                  U 5       H  nUR                  R                  U5      S   n	X;   d  M(  UR                  R                  X5      n
UR                  R                  U
5      (       a1  UR                  R                  U
5      (       d  UR                  U
SS9  O UR                  U
5        UR                  R                  U
5      (       d  M  UR                  U
5        M     U(       a  SS KnUR                  X5        g g s  snf ! [         a     Nff = f)Nr   Tignore_errors)r   shutilr   splitextisidentifierlistdirjoinisdirislinkrmtreeremove	Exceptionexistsr   addon_utilsstale_pending_stage_paths)	path_base	filenamesr   r   filenamefilename_onlymodule_namespaths_staler   f_basef_fullr(   s               r   _module_filesystem_remover2   )   s6    &/&/(WW--h7::MHHJ 	i   KZZ	"!!!$Q'!WW\\)/Fww}}V$$bggnnV.D.DfD9IIf% ww~~f%%""6* # --iE -  ! s   7EE8E##
E0/E0c                     [         R                  R                   H@  nUR                   H-  nU (       a  UR	                  S5        M  UR                  5         M/     MB     g )NWAIT)bpydatawindow_managerswindowscursor_modal_setcursor_modal_restore)valuewmwindows      r   _wm_wait_cursorr>   J   sA    hh&&jjF''/++-	 ! 'r   c                   6    \ rS rSr% SrSr\" SS9\S'   S rSr	g	)
!PREFERENCES_OT_keyconfig_activateS   zpreferences.keyconfig_activatezActivate Keyconfig	FILE_PATHsubtypefilepathc                 |    [         R                  R                  U R                  U R                  S9(       a  S1$ S1$ )NreportFINISHED	CANCELLED)r5   utilskeyconfig_setrE   rH   )self_contexts     r   execute)PREFERENCES_OT_keyconfig_activate.execute[   s1    99""4=="E<= r    N)
__name__
__module____qualname____firstlineno__	bl_idnamebl_labelr   __annotations__rO   __static_attributes__rQ   r   r   r@   r@   S   s!    0I#H !r   r@   c                   v    \ rS rSrSrSrSr\S 5       r\S 5       r	\S 5       r
\S 5       r\S	 5       rS
 rSrg)PREFERENCES_OT_copy_prevb   z#Copy settings from previous versionzpreferences.copy_prevzCopy Previous Settingsc                 L    [         R                  R                  SUS   US   S9$ )NUSERr      )majorminorr5   rK   resource_path)clsversions     r   _old_version_path*PREFERENCES_OT_copy_prev._old_version_pathg   s&    yy&&vWQZwqz&RRr   c                 ^   SS K nSn[        R                  R                  S S nUS   US   S-
  /n US   S:  aR  UR                  R                  U R                  U5      5      (       a  [        U5      $ US==   S-  ss'   US   S:  a  MR  US   US   :X  a  US==   S-  ss'   X$S'   O g M}  )Nr   
      r_   )r   r5   appre   r   r"   rf   tuple)rd   r   +MAX_MINOR_VERSION_FOR_PREVIOUS_MAJOR_LOOKUPversion_newversion_olds        r   previous_version)PREFERENCES_OT_copy_prev.previous_versionk   s     793ggoobq)"1~{1~'9:a.A%77==!6!6{!CDD --A!# a.A% 1~Q/A!#!LA r   c                 V    U R                  5       nU(       a  U R                  U5      $ S $ N)rp   rf   )rd   ro   s     r   	_old_path"PREFERENCES_OT_copy_prev._old_path   s(    **,5@s$$[1JdJr   c                 @    [         R                  R                  S5      $ )Nr^   rb   )rd   s    r   	_new_path"PREFERENCES_OT_copy_prev._new_path   s    yy&&v..r   c                    SS K nU R                  5       nU R                  5       nU(       d  gUR                  R	                  [
        R                  R                  S5      5      nUR                  R	                  UR                  R                  US5      5      nXV:w  a  gUR                  R                  U5      (       a!  UR                  R                  U5      (       d  gUR                  R                  USS5      nUR                  R                  USS5      nUR                  R                  U5      =(       a     UR                  R                  U5      (       + $ )Nr   FCONFIGconfigTzuserpref.blend)r   rt   rw   r   r   r5   rK   user_resourcer!   r"   isfile)	rd   rN   r   oldnewuserconfig_pathnew_userconfig_pathold_userprefnew_userprefs	            r   pollPREFERENCES_OT_copy_prev.poll   s    mmommo ''**399+B+B8+LM gg..rww||C/JK1 77==bggmmC&8&8 ww||C3CDww||C3CDww~~l+PBGGNN<4P0PPr   c                 T   SS K nUR                  U R                  5       U R                  5       SSS9  [        R
                  R                  R                  5         [        R
                  R                  R                  5         [        R
                  R                  R                  5         [        R                  R                  [        R                  R                  s=L a  SL a.  O  O+[        R
                  R                  R                  5         S1$ U R                  S1S5        S1$ )Nr   T)dirs_exist_oksymlinksFINFOz(Reload Start-Up file to restore settingsrI   )r   copytreert   rw   r5   opsr<   read_userprefread_historyoperator_presets_cleanupr6   is_savedis_dirtyread_homefilerH   )rM   rN   r   s      r   rO    PREFERENCES_OT_copy_prev.execute   s    ($..*:$Y]^ 	

  "

!

++- 88 1 1:U:GGJJ$$& | KK"LM|r   rQ   N)rR   rS   rT   rU   __doc__rV   rW   classmethodrf   rp   rt   rw   r   rO   rY   rQ   r   r   r[   r[   b   s|    -'I'HS S  8 K K / / Q Q0r   r[   c                   &    \ rS rSrSrSrSrS rSrg)PREFERENCES_OT_keyconfig_test   z$Test key configuration for conflictszpreferences.keyconfig_testz$Test Key Configuration for Conflictsc                     SSK Jn  UR                  nUR                  R                  nUR                  U5      (       a  [        S5        S1$ )Nr   )keyconfig_utilsCONFLICTrI   )
bpy_extrasr   window_manager
keyconfigsdefaultkeyconfig_testprint)rM   contextr   r<   kcs        r   rO   %PREFERENCES_OT_keyconfig_test.execute   s@    .##]]""))"--*|r   rQ   N	rR   rS   rT   rU   r   rV   rW   rO   rY   rQ   r   r   r   r      s    .,I5H	r   r   c                       \ rS rSr% SrSrSr\" SSS9\S'   \	" S	S
S1S9\S'   \	" SS
S1S9\S'   \	" SS
S1S9\S'   \	" SSS
S9\S'   \
S 5       rS rS rSrg)PREFERENCES_OT_keyconfig_import   z-Import key configuration from a Python scriptzpreferences.keyconfig_importzImport Key Configuration...rB   z	keymap.pyrD   r   rE   Filter foldersTHIDDENnamer   optionsfilter_folderFilter textfilter_textFilter Pythonfilter_pythonzKeep Originalz8Keep original file after copying to configuration folderr   descriptionr   keep_originalc                 |   SS K nSSKJn  [        R                  R                  SUR                  R                  SS5      SS9nUnUR                  R                  U5      u  pg[        R                  R                  USSS	9nUb  U" U5      (       a  S
R                  Xg5      nUR                  R                  XE5      $ )Nr   )is_path_builtinSCRIPTSpresets	keyconfigTr   create.py)extz{:s} (User){:s})r   	bpy.utilsr   r5   rK   r|   r   r!   r   preset_findformat)	rd   config_namer   r   r   config_name_finalconfig_name_noextconfig_name_extpreset_paths	            r   _preset_prevent_name_collision>PREFERENCES_OT_keyconfig_import._preset_prevent_name_collision   s    -yy&&i5 ' 
 (-/WW-=-=k-J*ii++,={PU+V"{'C'C 1 8 89J \ww||D44r   c           	      B   SS K nSSKJn  U R                  (       d  U R	                  S1S5        S1$ U" U R                  5      nU R                  U5      n U R                  (       a  UR                  U R                  U5        OUR                  U R                  U5         [        R                  R                  XPR                  S9(       a  S1$ S1$ ! [         aA  nU R	                  S1[        S5      R                  [        U5      5      5        S1s S nA$ S nAff = f)	Nr   )basenameERRORFilepath not setrJ   zInstalling keymap failed: {:s}rG   rI   )r   os.pathr   rE   rH   r   r   copymover&   rpt_r   strr5   rK   rL   )rM   rN   r   r   r   r   exs          r   rO   'PREFERENCES_OT_keyconfig_import.execute  s    $}}KK	#56= t}}-22;?	!!!DMM40DMM40 99""4"<<=   	!KK	4(H#I#P#PQTUWQX#YZ= 	!s$   -C C 
D6DDDc                 B    UR                   nUR                  U 5        S1$ NRUNNING_MODALr   fileselect_addrM   r   _eventr<   s       r   invoke&PREFERENCES_OT_keyconfig_import.invoke  $    ##
$  r   rQ   N)rR   rS   rT   rU   r   rV   rW   r   rX   r   r   r   rO   r   rY   rQ   r   r   r   r      s    7.I,H   
 
 
 
  
 
  N  5 5$!6!r   r   c                       \ rS rSr% SrSrSr\" SSSS9\S	'   \	" S
SS9\S'   \" SSS1S9\S'   \" SSS1S9\S'   \" SSS1S9\S'   S r
S rSrg)PREFERENCES_OT_keyconfig_exporti&  z+Export key configuration to a Python scriptzpreferences.keyconfig_exportzExport Key Configuration...All KeymapsFz*Write all keymaps (not just user modified))r   r   r   allrB    r   rE   r   Tr   r   r   r   r   r   r   c                 0   SSK Jn  U R                  (       d  [        S5      eU R                  R	                  S5      (       d  U =R                  S-  sl        UR
                  nU" UUR                  R                  U R                  U R                  S9  S1$ )Nr   )keyconfig_export_as_datar   r   )all_keymapsrI   )	bl_keymap_utils.ior   rE   r&   endswithr   r   activer   )rM   r   r   r<   s       r   rO   'PREFERENCES_OT_keyconfig_export.executeD  sv    ?}}.//}}%%e,,MMU"M## MM  MM		
 |r   c                 \   SS K nUR                  nU R                  (       dx  UR                  R	                  UR                  R                  S5      [        R                  R                  UR                  R                  R                  5      S-   5      U l        UR                  U 5        S1$ )Nr   ~r   r   )r   r   rE   r   r!   
expanduserr5   display_name_to_filepathr   r   r   r   )rM   r   r   r   r<   s        r   r   &PREFERENCES_OT_keyconfig_export.invokeX  s}    ##}}GGLL""3'11"--2F2F2K2KLuTDM 	$  r   )rE   NrR   rS   rT   rU   r   rV   rW   r   rX   r   rO   r   rY   rQ   r   r   r   r   &  s    5.I,H	@
 
    
 
 
 
  
 (	!r   r   c                   <    \ rS rSr% SrSrSr\" SSS9\S'   S	 r	S
r
g)PREFERENCES_OT_keymap_restoreid  zRestore key map(s)zpreferences.keymap_restorezRestore Key Map(s)r   zRestore all keymaps to defaultr   r   r   c                    UR                   nU R                  (       a8  UR                  R                  R                   H  nUR                  5         M     OUR                  nUR                  5         SUR                  l        S1$ NTrI   )	r   r   r   userkeymapsrestore_to_defaultkeymappreferencesr   )rM   r   r<   kms       r   rO   %PREFERENCES_OT_keymap_restore.executen  sg    ##88mm((00%%' 1 B!!#'+$|r   rQ   N)rR   rS   rT   rU   r   rV   rW   r   rX   rO   rY   rQ   r   r   r   r   d  s'    ,I#H	4
 
r   r   c                   L    \ rS rSr% SrSrSr\" SSS9\S'   \	S	 5       r
S
 rSrg)PREFERENCES_OT_keyitem_restorei|  zRestore key map itemzpreferences.keyitem_restorezRestore Key Map ItemItem Identifierz!Identifier of the item to restorer   item_idc                      [        USS 5      nU$ Nr   )getattr)rd   r   r   s      r   r   #PREFERENCES_OT_keyitem_restore.poll  s    (D1r   c                     UR                   nUR                  R                  U R                  5      nUR                  (       d3  UR
                  (       a"  UR                  U5        SUR                  l        S1$ r   )	r   keymap_itemsfrom_idr   is_user_definedis_user_modifiedrestore_item_to_defaultr   r   rM   r   r   kmis       r   rO   &PREFERENCES_OT_keyitem_restore.execute  sX    ^^oo%%dll3##)=)=&&s++/G(|r   rQ   NrR   rS   rT   rU   r   rV   rW   r   rX   r   r   rO   rY   rQ   r   r   r   r   |  s;    -I%H7 
  r   r   c                   &    \ rS rSrSrSrSrS rSrg)PREFERENCES_OT_keyitem_addi  zAdd key map itemzpreferences.keyitem_addzAdd Key Map Itemc                 L   UR                   nUR                  (       a  UR                  R                  SSS5        OUR                  R	                  SSS5        UR
                  R                  S:w  a  SUR
                  l        SUl        SUl        SUR                  l
        S1$ )Nr   APRESSnoneTrI   )r   is_modalr  	new_modalr   
space_datar   show_expanded_itemsshow_expanded_childrenr   r   )rM   r   r   s      r   rO   "PREFERENCES_OT_keyitem_add.execute  s    ^^;;OO%%b#w7OOW5 ))R/-/G*%)B"(,B%'+$|r   rQ   Nr   rQ   r   r   r  r    s    )I!Hr   r  c                   L    \ rS rSr% SrSrSr\" SSS9\S'   \	S	 5       r
S
 rSrg)PREFERENCES_OT_keyitem_removei  zRemove key map itemzpreferences.keyitem_removezRemove Key Map Itemr   z Identifier of the item to remover   r   c                     [        US5      $ r  )hasattr)rd   r   s     r   r   "PREFERENCES_OT_keyitem_remove.poll  s    w))r   c                     UR                   nUR                  R                  U R                  5      nUR                  R	                  U5        SUR
                  l        S1$ r   )r   r  r  r   r%   r   r   r
  s       r   rO   %PREFERENCES_OT_keyitem_remove.execute  sK    ^^oo%%dll3
s#'+$|r   rQ   Nr  rQ   r   r   r  r    s;    ,I$H6 
 * *r   r  c                   6    \ rS rSrSrSrSr\S 5       rS r	Sr
g)	PREFERENCES_OT_keyconfig_removei  zRemove key configzpreferences.keyconfig_removezRemove Key Configc                 p    UR                   nUR                  R                  nU=(       a    UR                  $ rs   )r   r   r   r  )rd   r   r<   keyconfs       r   r   $PREFERENCES_OT_keyconfig_remove.poll  s-    ##--&&27222r   c                     UR                   nUR                  R                  nUR                  R                  U5        S1$ )NrI   )r   r   r   r%   )rM   r   r<   r   s       r   rO   'PREFERENCES_OT_keyconfig_remove.execute  s6    ##MM((	
Y'|r   rQ   N)rR   rS   rT   rU   r   rV   rW   r   r   rO   rY   rQ   r   r   r"  r"    s&    .I"H3 3
r   r"  c                   <    \ rS rSr% SrSrSr\" SSS9\S'   S	 r	S
r
g)PREFERENCES_OT_addon_enablei  zTurn on this add-onzpreferences.addon_enablezEnable Add-onModulez#Module name of the add-on to enabler   modulec                   ^
 SS K nSm
U
4S jnU R                  R                  nU(       a  [        S5        U R                  nUR                  USUS9nU(       an  UR                  U5      nUR                  SS5      nU[        R                  R                  :  a)  U R                  S1[        S	5      R                  " U6 5        S
1n	OT
(       a  U R                  S1T
5        S1n	U(       a  [        S5        U	$ )Nr   r   c                 D   > SS K nUR                  5         [        U 5      mg r   )	traceback	print_excr   r   r.  err_strs     r   err_cb3PREFERENCES_OT_addon_enable.execute.<locals>.err_cb  s    ! "gGr   Tdefault_sethandle_errorblender)r   r   r   WARNINGzsThis script was written for Blender version {:d}.{:d}.{:d} and might not function (correctly), though it is enabledrI   r   rJ   F)r(   r   	is_invoker>   r+  enablemodule_bl_infogetr5   rk   re   rH   r   r   )rM   rN   r(   r2  
cursor_setmodule_namemodbl_infoinfo_verresultr1  s             @r   rO   #PREFERENCES_OT_addon_enable.execute  s    	 \\++
D! kk  $V T!005G{{9i8H#''//)K/
 f
 '( !\F WIw/!]FE"r   rQ   NrR   rS   rT   rU   r   rV   rW   r   rX   rO   rY   rQ   r   r   r)  r)    s'    *IH9 
3r   r)  c                   <    \ rS rSr% SrSrSr\" SSS9\S'   S	 r	S
r
g)PREFERENCES_OT_addon_disablei  zTurn off this add-onzpreferences.addon_disablezDisable Add-onr*  z$Module name of the add-on to disabler   r+  c                   ^ SS K nSmU4S jnU R                  R                  nU(       a  [        S5        U R                  nUR                  USUS9  T(       a  U R                  S1T5        U(       a  [        S5        S1$ )	Nr   r   c                 D   > SS K nUR                  5       m[        T5        g r   )r.  
format_excr   r0  s     r   r2  4PREFERENCES_OT_addon_disable.execute.<locals>.err_cb(  s    **,G'Nr   Tr4  r   FrI   )r(   r   r9  r>   r+  disablerH   )rM   rN   r(   r2  r=  r>  r1  s         @r   rO   $PREFERENCES_OT_addon_disable.execute#  sp    	 \\++
D!kkKTOKK	7+E"|r   rQ   NrD  rQ   r   r   rF  rF    s'    +IH: 
r   rF  c                       \ rS rSr% SrSrSr\" SSSS9\S	'   \	" S
S9\S'   \" SSS1S9\S'   \	" SS1S9\S'   S r
S rSrg)PREFERENCES_OT_theme_installi?  z'Load and apply a Blender XML theme filezpreferences.theme_installzInstall Theme...	Overwritez$Remove existing theme file if existsTr   	overwriterB   rC   rE   r   r   r   r   z*.xmlr   r   filter_globc                    SS K nSS KnSS KnU R                  n[        R
                  R                  SUR                  R                  SS5      SS9nU(       d  U R                  S1S5        S	1$ UR                  R                  XbR                  R                  U5      5      nU R                  (       dN  UR                  R                  U5      (       a.  U R                  S
1[        S5      R                  U5      5        S	1$  UR                  XW5        [        R                   R"                  R%                  USS9  S1$ ! [&         a    UR)                  5         S	1s $ f = f)Nr   r   r   interface_themeTr   r   zFailed to get themes pathrJ   r8  File already installed to {!r}#USERPREF_MT_interface_theme_presets)rE   menu_idnamerI   )r   r   r.  rE   r5   rK   r|   r   r!   rH   r   rP  r'   r   r   copyfiler   scriptexecute_presetr&   r/  )rM   rN   r   r   r.  xmlfilepath_themes	path_dests           r   rO   $PREFERENCES_OT_theme_install.executeV  s*   --ii--i):; . 
 KK	#>?= GGLLgg.>.>w.GH	~~ww~~i((YK.N)O)V)VW`)ab#}$	!OOG/GGNN))"A *  |	  	!!= 	!s   9D? ?EEc                 B    UR                   nUR                  U 5        S1$ r   r   r   s       r   r   #PREFERENCES_OT_theme_install.invokez  r   r   rQ   Nr   rQ   r   r   rN  rN  ?  ss    1+I!H: 
    
 
  
 
"H!r   rN  c                   &    \ rS rSrSrSrSrS rSrg)PREFERENCES_OT_addon_refreshi  z'Scan add-on directories for new moduleszpreferences.addon_refreshRefreshc                 0    SS K nUR                  5         S1$ )Nr   rI   )r(   modules_refresh)rM   rN   r(   s      r   rO   $PREFERENCES_OT_addon_refresh.execute  s    ##%|r   rQ   Nr   rQ   r   r   rb  rb    s    1+IHr   rb  c                       \ rS rSr% SrSrSr\" SSSS9\S	'   \" S
SSS9\S'   S r	\
" S\	S9\S'   \" SS9\S'   \" SSS1S9\S'   \" SSS1S9\S'   \" SS1S9\S'   S rS rS rg!)"PREFERENCES_OT_addon_installi  zInstall an add-onzpreferences.addon_installzInstall Add-onrO  z(Remove existing add-ons with the same IDTr   rP  zEnable on InstallzEnable after installingFenable_on_installc                    SnUc  U4$ UR                   R                  n[        UR                  5       VVs/ s H1  u  pEUR                  (       d  M  UR
                  UR
                  S4PM3     nnnU(       a  US /UQ7$ U4$ s  snnf )N)DEFAULTDefaultr   r   )r   	filepaths	enumeratescript_directories	directoryr   )_selfr   default_itempathsindexitemscript_directories_itemss          r   _target_path_items/PREFERENCES_OT_addon_install._target_path_items  s    1?  ##--:CED\D\:]$
:];5~~ 'TYY		2&:] 	! $

 @X\4;":;	
O	
	$
s   BBzTarget Pathr   itemstargetrB   rC   rE   r   r   r   r   r   r   z
*.py;*.ziprQ  rR  c                    SS K nSS KnSS KnSS KnSS KnU R
                  nU R                  S:X  a   [        R                  R                  SSSS9nOkUR                  R                  n	U	R                   HE  n
U
R                  U R                  :X  d  M  UR                  R                  U
R                   S5      n  O   W(       d  U R#                  S1S5        S	1$ UR                  R%                  U5      (       d   UR'                  USS
9  SnUR                  R-                  U5      nUR/                  5        HS  nUR                  R1                  X5      (       d  M%  U R#                  S1[3        S5      R5                  U5      5        S	1s  $    AAUR7                  5        Vs1 s H  oR8                  iM     nnUR;                  U5      (       Ga   UR=                  US5      n[?        U5      nSU;   a  U R#                  S1[3        S5      5        S	1$ U R@                  (       a  [C        UU5        OU H  nUR                  R                  XR                  RE                  U5      5      nUR                  RG                  U5      (       d  MY  U R#                  S1[3        S5      R5                  U5      5        S	1s  $     URI                  U5        OUR                  R                  XR                  RE                  U5      5      nU R@                  (       a&  [C        XR                  RE                  U5      /5        ONUR                  RG                  U5      (       a.  U R#                  S1[3        S5      R5                  U5      5        S	1$  URK                  UU5        UR7                  5        Vs1 s H  oR8                  iM     snU-
  nURM                  S5        U H  nURO                  USS9  M     UR7                  SS9 Hf  nUR8                  U;   d  M  URQ                  U5      nSUR                  RR                  l*        SURV                  l,        US   URV                  l-          O   [        R                  R]                  5         U R^                  (       aY  UR7                  SS9 HF  nUR8                  U;   d  M  [        R`                  R                  Rc                  UR8                  S9  MH     [3        S5      R5                  SR                  [e        U5      5      Xx5      n[g        U5        U R#                  S1U5        S1$ ! [(         a    UR+                  5          GN\f = fs  snf ! [(         a    UR+                  5         S	1s $ f = f! [(         a    UR+                  5         S	1s $ f = f! [(         a    UR+                  5         S	1s $ f = fs  snf )Nr   rk  r   addonsTr   r   Failed to get add-ons pathrJ   exist_okr   z.Source file is in the add-on search path: {!r}rz__init__.pyzPZIP packaged incorrectly; __init__.py should be in a directory, not at top-levelr8  rU  modulesr5  FrefreshAllr   )r+  z,Modules Installed ({:s}) from {!r} into {!r}, r   rI   )4r(   r.  zipfiler   r   rE   r{  r5   rK   r|   r   rm  ro  r   r   r!   rp  rH   r"   makedirsr&   r/  dirnamers  samefiler   r   r  rR   
is_zipfileZipFiler   rP  r2   r   r'   
extractallrX  discardrK  r;  viewshow_addons_enabled_onlyr   addon_filteraddon_searchrefresh_script_pathsri  r   addon_enablesortedr   )rM   r   r(   r.  r  r   r   pyfilepath_addonsrs  script_directory
addon_path
pyfile_dirr?  
addons_oldr   file_to_extract_rootr   r]  
addons_new	new_addonr@  msgs                          r   rO   $PREFERENCES_OT_addon_install.execute  s   ;;)#))11)(SW1XK''11E$)$<$< #((DKK7"$'',,/?/I/I8"TK %=
 KK	#?@= ww}}[))&K$7 
WW__V,
%++-Jww
77WIt,\']'d'deo'pq#}$ .  /:.A.A.CD.Csll.C
D f%%%")//&#">
 $:/#J  44WItf(  $}$~~)+7KL-A "['':J:J1:M NIww~~i00YK6V1W1^1^_h1ij +},	 .%**;7 [''2B2B62JKI~~)+8H8H8P7QR	**YK.N)O)V)VW`)ab#}$%	2
 /:.A.A.CD.Csll.CDzQ
9% $I	t< $
 &&u&5C||z)%44S9 EJ##((A6;&&36=fo&&3 6 			&&( !!"**5*9<<:-GG''44CLL4I :
 ABIIIIfZ()6
 	c
VHc"|M  &##%&  E  %##%#}$%.  %##%#}$%   %##%#}$% EsT   :U	 "U*U/ ?V V5 /W	U'&U'/VVV21V25WWc                 B    UR                   nUR                  U 5        S1$ r   r   r   s       r   r   #PREFERENCES_OT_addon_install.invokeJ  r   r   rQ   N)rR   rS   rT   rU   r   rV   rW   r   rX   rw  r   r   rO   r   rY   rQ   r   r   rh  rh    s    +IH>  $ - 
"   
    
 
  
 
  
 
@D!r   rh  c                   X    \ rS rSr% SrSrSr\" SSS9\S'   \	S	 5       r
S
 rS rS rSrg)PREFERENCES_OT_addon_removeiP  z&Delete the add-on from the file systemzpreferences.addon_removezRemove Add-onr*  z#Module name of the add-on to remover   r+  c                 ~   SS K nSS KnUR                  5        H  nUR                  U :X  d  M  UR                  nUR
                  R                  U5      (       d  MC  UR
                  R                  UR
                  R                  U5      5      S   S:X  a  UR
                  R                  U5      S4s  $ US4s  $    g)Nr   __init__TF)NF)
r   r(   r  rR   __file__r   r'   r   r   r  )r+  r   r(   r?  rE   s        r   path_from_addon+PREFERENCES_OT_addon_remove.path_from_addonZ  s    &&(C||v%<<77>>(++ww''(8(8(BCAF*T!wwx8$>>'. ) r   c                    SS K nSS Kn[        R                  U R                  5      u  pEUc.  U R                  S1[        S5      R                  U5      5        S1$ UR                  U R                  SS9  SS K	nU(       a1  UR                  R                  U5      (       d  UR                  USS9  O UR                  U5        UR                  R                  U5      (       a,  UR!                  UR                  R#                  U5      U/5        UR%                  5         UR&                  R)                  5         S1$ ! [         a     Nf = f)	Nr   r8  z#Add-on path {!r} could not be foundrJ   Tr  r   rI   )r(   r   r  r  r+  rH   r   r   rK  r   r   r#   r$   r%   r&   r'   r)   r  re  area
tag_redraw)rM   r   r(   r   r   r"   r   s          r   rO   #PREFERENCES_OT_addon_remove.executei  s
   1AA$++N<KKT*O%P%W%WX\%]^=  	DKKT:"''....MM$dM3		$ 77>>$11"''//$2G$P##%!|  s   2D< <
E	E	c                 "   U R                   R                  [        S5      R                  U R                  5      SS9  [
        R                  U R                  5      u  p#U R                   R                  [        S5      R                  U5      SS9  g )NzRemove Add-on: {!r}?F)text	translatez
Path: {!r})layoutlabeliface_r   r+  r  r  )rM   rN   r   _isdirs       r   draw PREFERENCES_OT_addon_remove.draw  sl    v&<=DDT[[Q]bc2BB4;;Ovl3::4@ERr   c                 :    UR                   nUR                  U SS9$ )NiX  widthr   invoke_props_dialogr   s       r   r   "PREFERENCES_OT_addon_remove.invoke  #    ##%%d#%66r   rQ   N)rR   rS   rT   rU   r   rV   rW   r   rX   staticmethodr  rO   r  r   rY   rQ   r   r   r  r  P  sF    0*IH9 
  <S
7r   r  c                   B    \ rS rSr% SrSrSrS1r\" SSS9\	S	'   S
 r
Srg)PREFERENCES_OT_addon_expandi  z3Display information and preferences for this add-onzpreferences.addon_expandr   INTERNALr*  #Module name of the add-on to expandr   r+  c                     SS K nU R                  nUR                  SS9nUR                  R	                  U5      nUb  UR                  U5      nUS   (       + US'   S1$ )Nr   Fr  show_expandedrI   )r(   r+  r  addons_fake_modulesr<  r;  )rM   rN   r(   addon_module_name_modulesr?  r@  s          r   rO   #PREFERENCES_OT_addon_expand.execute  sj     KK &&u&5--112CD?!005G+2?+C'CGO$|r   rQ   NrR   rS   rT   rU   r   rV   rW   
bl_optionsr   rX   rO   rY   rQ   r   r   r  r    s.    =*IHJ9 
r   r  c                   B    \ rS rSr% SrSrSrS1r\" SSS9\	S	'   S
 r
Srg)PREFERENCES_OT_addon_showi  zShow add-on preferenceszpreferences.addon_showr   r  r*  r  r   r+  c                    SS K nU R                  nUR                  SS9nUR                  R	                  U5      nUb  UR                  U5      nSUS'   SUR                  l        SUR                  R                  l	        SUR                  l        US   UR                  l        S	S
 UR                  R                   5       ;  a)  [        R                   R                  R#                  S5        S1$ )Nr   Fr  Tr  ADDONSr  r   PREFERENCESc              3   8   #    U  H  oR                   v   M     g 7frs   )type).0r  s     r   	<genexpr>4PREFERENCES_OT_addon_show.execute.<locals>.<genexpr>  s     $P;O4YY;O   INVOKE_DEFAULTrI   )r(   r+  r  r  r<  r;  r   active_sectionr  r  r   r  r  screenareasr5   r   userpref_show)rM   r   r(   r  r  r?  r@  s          r   rO   !PREFERENCES_OT_addon_show.execute  s     KK &&u&5--112CD?!005G'+GO$19G.@EG$$=27G""/29&/G""/ $P7>>;O;O$PP,,-=>|r   rQ   Nr  rQ   r   r   r  r    s.    !(IHJ9 
r   r  c                       \ rS rSr% SrSrSr\" SSSS9\S	'   \	" S
S9\S'   \" SSS1S9\S'   \	" SS1S9\S'   S r
S rSrg)#PREFERENCES_OT_app_template_installi  zInstall an application templatez preferences.app_template_installzInstall Template from File...rO  z)Remove existing template with the same IDTr   rP  rB   rC   rE   r   r   r   r   z*.ziprQ  rR  c                    SS K nSS KnSS KnU R                  n[        R
                  R                  SUR                  R                  SS5      SS9nU(       d  U R                  S1S5        S	1$ UR                  R                  U5      (       d   UR                  USS
9  [        UR                  U5      5      nUR!                  U5      (       a   UR#                  US5      n[%        U5      n	U R&                  (       a  [)        Xi5        OU	 H  n
UR                  R                  XdR                  R+                  U
5      5      nUR                  R-                  U5      (       d  MY  U R                  S1[/        S5      R1                  U5      5        S	1s  $     UR3                  U5        O.U R                  S1[/        S5      R1                  U5      5        S	1$ [        UR                  U5      5      U-
  n[        R
                  R5                  5         [/        S5      R1                  SR                  [7        U5      5      UU5      n[9        U5        U R                  S1U5        S1$ ! [         a    UR                  5          GNf = f! [         a    UR                  5         S	1s $ f = f! [         a    UR                  5         S	1s $ f = f)Nr   r   startupbl_app_templates_userTr   r   r~  rJ   r  r  r8  rU  zExpected a zip-file {!r}z-Template Installed ({:s}) from {!r} into {!r}r  r   rI   )r.  r  r   rE   r5   rK   r|   r   r!   rH   r"   r  r&   r/  setr    r  r  r   rP  r2   r   r'   r   r   r  r  r  r   )rM   rN   r.  r  r   rE   path_app_templatesapp_templates_oldr   r  r   r]  app_templates_newr  s                 r   rO   +PREFERENCES_OT_app_template_install.execute  sx   == YY44i)@A 5 
 "KK	#?@= ww}}/00&.>  

+= >? h''%")//(C"@
 $:/#J ~~)*<S-A "-?AQAQRSAT UIww~~i00YK6V1W1^1^_h1ij +},	 .%**+=> KKT*D%E%L%LX%VW= 

+= >?BSS 			&&( BCJJIIf./0
 	c
VHc"|c  &##%&  %##%#}$%   %##%#}$%s6   I) J
 J- )JJ
J*)J*-KKc                 B    UR                   nUR                  U 5        S1$ r   r   r   s       r   r   *PREFERENCES_OT_app_template_install.invoke/  r   r   rQ   Nr   rQ   r   r   r  r    st    )2I.H?     
 
  
 
EN!r   r  c                       \ rS rSr% SrSrSr\" S\S9\	S'   \
" SS	9\	S
'   \" SSS1S9\	S'   \
" SS1S9\	S'   \" SSS9\	S'   S rS rSrg)"PREFERENCES_OT_studiolight_installi8  zInstall a user defined lightzpreferences.studiolight_installzInstall Lightz	File Path)r   r  filesDIR_PATHrC   rp  Filter FoldersTr   r   r   z*.png;*.jpg;*.hdr;*.exrrQ  rR  Type))MATCAPMatCapzInstall custom MatCaps)WORLDWorldzInstall custom HDRIs)STUDIOStudiozInstall custom Studio Lightsry  r  c                    SS K nSS KnUR                  nUR                  R	                  SU R
                  R                  5       5      n[        R                  R                  SUSS9nU(       d  U R                  S1S5        S1$ U R                   H  nUR                  UR                  R	                  U R                  UR                  5      U5        UR                  R!                  UR                  R	                  XVR                  5      U R
                  5        M     [#        S	5      R%                  S
R	                  S U R                   5       5      U5      n['        U5        U R                  S1U5        S1$ )Nr   studiolights	DATAFILESTr   r   z"Failed to create Studio Light pathrJ   $StudioLight Installed {!r} into {!r}r  c              3   8   #    U  H  oR                   v   M     g 7frs   )r   )r  es     r   r  =PREFERENCES_OT_studiolight_install.execute.<locals>.<genexpr>g  s     1jffjr  r   rI   )r   r   r   r   r!   r  lowerr5   rK   r|   rH   r  r   rp  r   studio_lightsloadr   r   r   )rM   r   r   r   prefspath_studiolightsr  r  s           r   rO   *PREFERENCES_OT_studiolight_install.executeV  s   ##GGLL9JKII33KFW`d3e KK	#GH= AKKT^^QVV<>OP$$RWW\\2CVV%LdiiX 
 9:AAII1djj11
 	c
VHc"|r   c                 p    UR                   nU R                  S:X  a  SU l        UR                  U 5        S1$ )Nr  z*.slr   )r   r  rR  r   r   s       r   r   )PREFERENCES_OT_studiolight_install.invoken  s8    ##99 %D
$  r   )rR  N)rR   rS   rT   rU   r   rV   rW   r	   r   rX   r   r   r   rO   r   rY   rQ   r   r   r  r  8  s    &1IH$     
 
  )
  
 0!r   r  c                   N    \ rS rSr% SrSrSr\" SSSS9\S	'   S
r	S r
S rS rSrg)PREFERENCES_OT_studiolight_newix  z>Save custom studio light from the studio light editor settingszpreferences.studiolight_newzSave Custom Studio LightNameStudioLight	FILE_NAME)r   r   rD   r,   Fc                 |   SS K nUR                  nUR                  n[        R                  R                  U R                  S5      n[        R                  R                  SUR                  R                  SS5      SS9nU(       d  U R                  S1S	5        S
1$ UR                  R                  Xe5      nUR                  R                  U5      (       a~  U R                  (       d  SU l        UR                  U SS9$ UR                   HF  nUR                  U:X  d  M  [        R                   R                  R#                  UR$                  S9  MH     UR                  R'                  US9  [)        S5      R+                  U R                  [-        U5      5      n	[/        U	5        U R                  S1U	5        S1$ )Nr   z.slr  r  studioTr   r   zFailed to get Studio Light pathrJ   @  r  )rt  )r   r  r   rI   )r   r   r   r5   r   
ensure_extr,   rK   r|   r!   rH   r}   ask_overrider  r  r   r   studiolight_uninstallrt  r   r   r   r   r   )
rM   r   r   r  r<   r,   r   filepath_finalstudio_lightr  s
             r   rO   &PREFERENCES_OT_studiolight_new.execute  sn   ####88&&t}}e<II33nh7 4 

 !KK	#DE= &7B77>>.))$$$(!--d#->>$)$7$7L#((H4++AAHZHZA[ %8 	^4 9:AA$--QTUfQghc
VHc"|r   c                     U R                   nU R                  (       a  UR                  SS9  g UR                  U S5        g )Nz6Warning, file already exists. Overwrite existing file?)r  r,   )r  r  r  prop)rM   rN   r  s      r   r  #PREFERENCES_OT_studiolight_new.draw  s1    LLVLWKKj)r   c                 :    UR                   nUR                  U SS9$ )Nr  r  r  r   s       r   r   %PREFERENCES_OT_studiolight_new.invoke  r  r   )r  N)rR   rS   rT   rU   r   rV   rW   r   rX   r  rO   r  r   rY   rQ   r   r   r  r  x  s<    H-I)H  LB*7r   r  c                   <    \ rS rSr% SrSrSr\" 5       \S'   S r	Sr
g)	$PREFERENCES_OT_studiolight_uninstalli  zDelete Studio Lightz!preferences.studiolight_uninstallzUninstall Studio Lightrt  c                 J   SS K nUR                  nUR                   H  nUR                  U R                  :X  d  M  UR                  nU(       a1  UR                  R                  U5      (       a  UR                  U5        UR                  R                  U5        S1s  $    S1$ )Nr   rI   rJ   )r   r   r  rt  r   r'   unlinkr%   )rM   r   r   r  r  rE   s         r   rO   ,PREFERENCES_OT_studiolight_uninstall.execute  s    ##!//L!!TZZ/',,x 8 8IIh'##**<8"|# 0 }r   rQ   NrR   rS   rT   rU   r   rV   rW   r   rX   rO   rY   rQ   r   r   r  r    s    3I'H=
r   r  c                   <    \ rS rSr% SrSrSr\" 5       \S'   S r	Sr
g)	(PREFERENCES_OT_studiolight_copy_settingsi  z5Copy Studio Light settings to the Studio Light editorz%preferences.studiolight_copy_settingszCopy Studio Light Settingsrt  c                    UR                   nUR                  nUR                   H  nUR                  U R                  :X  d  M  UR                  Ul        [        UR                  UR                  5       HZ  u  pVUR                  Ul        UR                  Ul        UR                  Ul	        UR                  Ul
        UR                  Ul        M\     S1s  $    S1$ )NrI   rJ   )r   systemr  rt  light_ambientzipsolid_lightsusediffuse_colorspecular_colorsmooth	direction)rM   r   r  r   r  	sys_lightlights          r   rO   0PREFERENCES_OT_studiolight_copy_settings.execute  s    ##!//L!!TZZ/'3'A'A$(+F,?,?AZAZ([$I$)IIIM.3.A.AI+/4/C/CI,',||I$*///I' )\ #|# 0 }r   rQ   Nr  rQ   r   r   r  r    s    ?7I+H=r   r  c                   T    \ rS rSr% SrSr\" SS9\S'   \" SSS	1S
9\S'   S r	S r
Srg)#PREFERENCES_OT_script_directory_newi  z preferences.script_directory_addzAdd Python Script Directoryr  rC   rp  r  Tr   r   r   c                 N   SS K nUR                  R                  R                  nUR	                  5       nU R
                  Ul        UR                  R                  U R
                  R                  UR                  5      5      Ul
        UR                  R                  SL d   eS1$ )Nr   TrI   )r   r   rm  ro  r   rp  r   r   rstripr   r   r   )rM   r   r   ro  new_dirs        r   rO   +PREFERENCES_OT_script_directory_new.execute  s    $00::MM$((* NNww''(=(=bff(EF""++t333|r   c                 B    UR                   nUR                  U 5        S1$ r   r   r   s       r   r   *PREFERENCES_OT_script_directory_new.invoke  s$    ##
$  r   rQ   N)rR   rS   rT   rU   rV   rW   r   rX   r   rO   r   rY   rQ   r   r   r-  r-    s@    2I,H   
 !r   r-  c                   8    \ rS rSr% SrSr\" SSS9\S'   S rS	r	g
)&PREFERENCES_OT_script_directory_removei  z#preferences.script_directory_removezRemove Python Script DirectoryIndexz'Index of the script directory to remover   rt  c                     UR                   R                  R                  n[        U5       H'  u  p4X0R                  :X  d  M  UR                  U5          O   UR                   R                  SL d   eS1$ r   )r   rm  ro  rn  rt  r%   r   )rM   r   ro  search_indexr  s        r   rO   .PREFERENCES_OT_script_directory_remove.execute  sn    $00::MM.78J.K*Lzz)"))*:; /L
 ""++t333|r   rQ   N)
rR   rS   rT   rU   rV   rW   r   rX   rO   rY   rQ   r   r   r5  r5    s$    5I/H= 
	r   r5  ),r5   	bpy.typesr   r   	bpy.propsr   r   r   r   r	   bpy.app.translationsr
   r  r   r   r   r2   r>   r@   r[   r   r   r   r   r   r  r  r"  r)  rF  rN  rb  rh  r  r  r  r  r  r  r  r  r-  r5  classesrQ   r   r   <module>r>     s  
  $FB.! !Xx XvH "S!h S!p;!h ;!|H 0X 4 .H .h *=( =@#8 #L>!8 >!B
8 
~!8 ~!B>7( >7B( 4   Jb!( b!P=! =!@77X 77t8 &x ,!( !DX , !  '%###!!"! &"(,'*3r   