
    ai                     .   S SK r S SKJrJrJrJrJr  S SKJrJ	r	J
r
  S SKJrJr  S SKJr  \
" SS\" S5      S	9\l        S
S.S j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% " S0 S1\\5      r& " S2 S3\\5      r' " S4 S5\\5      r( " S6 S7\\5      r) " S8 S9\5      r* " S: S;\\5      r+ " S< S=\5      r, " S> S?\\5      r- " S@ SA\\5      r.\\\\\$\%\&\'\(\#\)\\\\\ \\-\.\!\"\\*\+\,4r/g)B    N)MenuOperatorOperatorFileListElementPanelWindowManager)BoolPropertyCollectionPropertyStringProperty)pgettext_rptpgettext_data)PresetPanelzPreset NamezName for new preset
New Preset)namedescriptiondefaultz4.2
deprecatedc                "   U c  g [        U S5      (       a  SnOSn[        [        U SS 5      SS 5      nUSU-   :X  a  X4nO[        SR                  X05      5        U4n U " U6   g ! [         a   n[        SU [        U5      5         S nAg S nAff = f)	N__self__   r   __code__co_argcount   zNDeprecated since Blender {:s}, a filepath argument should be included in: {!r}zInternal error running)hasattrgetattrprintformat	Exceptionstr)fncontextfilepathr   args_offsetfn_arg_countargsexs           \/home/wildlama/Downloads/blender-5.1.2-linux-x64/5.1/scripts/startup/bl_operators/presets.py_call_preset_cbr(   $   s    	zr: 72z48-NLq;&"^eefpuv{5
D	 5&CG445s   A$ $
B.B		Bc                 @    SSK JnJn  U" U 5      =(       d    U" U 5      $ )Nr   )is_path_builtinis_path_extension)	bpy.utilsr*   r+   )pathr*   r+   s      r'   _is_path_readonlyr.   <   s     4 ;$5d$;;    c                       \ rS rSr% SrSS1r\" SSSS1S	9\S
'   \" SSS1S9\S'   \" SSS1S9\S'   \	S 5       r
S rS rS rSrg)AddPresetBaseI   zaBase preset class, only for subclassing
subclasses must define
 - preset_values
 - preset_subdir REGISTERINTERNALNamez.Name of the preset, used to make the path name@   	SKIP_SAVE)r   r   maxlenoptionsr   FHIDDENr   r9   remove_nameremove_activec                     S nU R                  5       n [        R                  R                  U 5      n U" 5       nU R	                  U5      R                  S5      $ )Nc                      [         n Sn[        XS 5      nUc2  [        R                  S Vs0 s H  o3S_M     sn5      n[	        XU5        U$ s  snf )N_as_filename_transz !@#$%^&*(){}:";'[]<>,.\/?_)r1   r   r   	maketranssetattr)clsattrtranschars       r'   maketrans_init1AddPresetBase.as_filename.<locals>.maketrans_initg   sT    C'DCt,E}=[&\=[TSy=[&\]5)L ']s   ArA   )stripbpyr-   display_name_to_filepath	translate)r   rH   rF   s      r'   as_filenameAddPresetBase.as_filenamec   sJ    	 zz|xx006 ~~e$**3//r/   c                 \	  ^^ SS K n[        U S5      (       a  U R                  U5        [        [        R
                  U R                  5      n[        USS 5      S:H  nU R                  =(       d    U R                  (       + nU(       a  SnOSnU(       a  U R                  R                  5       OU R                  nU(       Ga  U(       d  S1$ [        R                  R                  S   nXxR                  :X  a  [        S5      Ul        U R                  U5      n	UR                   R#                  S	U R$                  5      n
[        R&                  R)                  S
U
SS9n
U
(       d  U R+                  S1S5        S1$ [        R&                  R-                  XR$                  US9n[/        U
5      (       d  U(       a%  U R+                  S1SR1                  U5      5        S1$ UR                   R#                  X5      U-   n[        U S5      (       a  U R3                  X5        GO[5        SR1                  U5      5        U(       a!  SS KnUR9                  XUR:                  5        OUU4S jm[=        USSS9 mTR?                  S5        S[        0n0 n[        U S5      (       aP  U R@                   H/  n[C        UX5        TR?                  SR1                  U5      5        M1     TR?                  S5        U RD                   H  n[G        UX5      nT" UUS5        M     S S S 5        [        R                   RI                  U	5      Ul%        OU R                  (       a  URJ                  n[        R&                  R-                  XpR$                  US9nU(       d)  [        R&                  R-                  XpR$                  SUS9nU(       d  S1$ [/        U5      (       a  U R+                  S1S5        S1$  [        U S 5      (       a  U RM                  X5        OURM                  U5         S#Ul%        [W        [        U S$S 5      XS%S&9  S1$ ! , (       d  f       GN/= f! [N         aL  nU R+                  S!1[Q        S"5      R1                  U5      5        SS K)nURU                  5         S1s S nA$ S nAff = f)'Nr   pre_cbpreset_typeXML.xml.pyFINISHEDr   presetsSCRIPTSTr-   createWARNINGzFailed to create presets path	CANCELLEDextz7Cannot create preset "{:s}", as the name already existsaddzWriting Preset: {!r}c                   > [        U [        R                  R                  5      (       ak  S1nU R                  R
                  R                  5        H?  nXC;   a  M
  UR                  U5        [        X5      nT" USR                  X5      U5        MA     g [        U 5      R                  S:X  af  TR                  SR                  U5      5        U  H?  nTR                  SR                  X!5      5        T" USR                  U5      US-   5        MA     g  U S S  n TR                  SR                  X5      5        g ! [         a     N-f = f)	Nrna_type	{:s}.{:s}bpy_prop_collection_idpropz{:s}.clear()
zitem_sub_{:d} = {:s}.add()
zitem_sub_{:d}r   z{:s} = {!r}
)
isinstancerK   typesPropertyGroupbl_rna
propertieskeysr_   r   r   type__name__writer   )valuerna_path_steplevelproperties_skipsub_value_attr	sub_valuefile_presetrna_recursive_attr_expands         r'   rt   8AddPresetBase.execute.<locals>.rna_recursive_attr_expand   s.   %eSYY-D-DEE
 0:lO27,,2I2I2N2N2P#1#D$, / 3 3N C,3E,J	 9$-$/$6$6}$U$)!" 3Q "%[115QQ'--.>.E.Em.TU-2	 + 1 12P2W2WX]2m n 9)_E[E[\aEbdilmdm n .3%(-a (--o.D.D].Z[ $- % $%s   D< <
E	E	wutf-8encodingzimport bpy
rK   preset_definesz{:s}

r   )display_namer^   z Unable to remove default presetsremoveERRORzUnable to remove preset: {!r}Presetspost_cbz4.3r   ),osr   rQ   r   rK   re   preset_menur<   r=   r   rJ   datawindow_managerspreset_namedata_rN   r-   joinpreset_subdirutilsuser_resourcereportpreset_findr.   r   r_   r   _rna_xmlxml_file_writepreset_xml_mapopenrl   rz   execpreset_valuesevalr|   bl_labelr}   r   rpt_	traceback	print_excr(   )selfr!   r   preset_menu_classis_xmlis_preset_addr^   r   wmfilenametarget_pathpreset_filepathr"   rna_xmlnamespace_globalsnamespace_localsrna_pathrm   r&   r   rs   rt   s                       @@r'   executeAddPresetBase.executew   s   4""KK #CIIt/?/?@*M4@EI!--C1C1CDCC$1tyy tyy"|# ))!,B~~%!&|!4''-H'',,y$2D2DEK))11)+VZ1[KYK)HI#}$!ii33H>P>PVY3ZO --YK)d)k)klp)qr#}$ww||K:S@HtU##+,33H=>.**7>O>^>^_\B hg>+#)).9-2CL)+-("4)9::,0,?,? $X/@ S + 1 1(//(2K L -@ (--d3(,(:(:H$(3D$WE5eXqI ); ?  *-)>)>x)H& !!(11 yy,,T3E3E3,OH99007I7IX\be0f#}$ !**YK)KL#}$	%4**KK2IIh' *3&i6V[\|i ?>R  %WIt,K'L'S'STV'WX ##%#}$	%s2   5B&Q."Q Q 
Q
R+AR& R+&R+c                 `    U R                  U R                  R                  5       5      U l        g N)rN   r   rJ   )r   _contexts     r'   checkAddPresetBase.check  s    $$TYY__%67	r/   c                     U R                   (       d.  U R                  (       d  UR                  nUR                  U 5      $ U R	                  U5      $ r   )r=   r<   window_managerinvoke_props_dialogr   )r   r!   _eventr   s       r'   invokeAddPresetBase.invoke  s>    ""d&6&6''B))$//<<((r/   r   N)rk   
__module____qualname____firstlineno____doc__
bl_optionsr
   __annotations__r   staticmethodrN   r   r   r   __static_attributes__ r/   r'   r1   r1   I   s     j)J
D	  ;'   ;' 
 0 0&JX8)r/   r1   c                   V    \ rS rSr% SrSrSr\" SS1S9\S'   \" S	S
S1S9\S'   S r	Sr
g)ExecutePreseti  zLoad a presetscript.execute_presetzExecute a Python Preset	FILE_PATHr7   )subtyper9   r"   zMenu ID Namez(ID name of the menu this was called fromr   r   r9   menu_idnamec           	      
   SSK JnJn  U R                  n[	        [
        R                  U R                  5      n[
        R                  R                  U" U5      SS9Ul
        U" U5      S   R                  5       nUS;  a.  U R                  S1[        S5      R                  U5      5        S	1$ [        [	        US
S 5      X5        US:X  a!   [
        R                   R#                  U5        O3US:X  a-  SS KnUR*                  n	[	        USS 5      n
UR-                  XXS9  [        [	        USS 5      X5        S1$ ! [$         a>  nU R                  S1[        S5      R                  ['        U5      5      5         S nAN]S nAff = f)Nr   )basenamesplitextF)
title_caser   >   rU   rT   r~   zUnknown file type: {!r}r\   reset_cbrU   z"Failed to execute the preset: {:s}rT   preset_xml_secure_types)secure_typesr   rV   )os.pathr   r   r"   r   rK   re   r   r-   r|   r   lowerr   r   r   r(   r   execfiler   reprr   r   xml_file_run)r   r!   r   r   r"   preset_classr^   r&   r   r   r   s              r'   r   ExecutePreset.execute  sX   .== syy$*:*:; # 5 5hx6HUZ 5 [x #))+o%KK	4(A#B#I#I##NO= j$?S%<d		""8, F]&)88N&-l<UW[&\#  N ii>R|  dWIt,P'Q'X'XY]^`Ya'bccds   D: :
F4E==Fr   N)rk   r   r   r   r   	bl_idnamer   r
   r   r   r   r   r/   r'   r   r     sC    'I(H   > r/   r   c                   6    \ rS rSrSrSrSrSrS/r/ SQr	Sr
S	rg
)AddPresetRenderi?  zAdd or remove a Render Presetzrender.preset_addzAdd Render PresetRENDER_PT_format_presetszscene = bpy.context.scene)zscene.render.fpszscene.render.fps_basezscene.render.pixel_aspect_xzscene.render.pixel_aspect_yz"scene.render.resolution_percentagezscene.render.resolution_xzscene.render.resolution_yrenderr   Nrk   r   r   r   r   r   r   r   rz   r   r   r   r   r/   r'   r   r   ?  s.    '#I"H,K 	$NM Mr/   r   c                   X    \ rS rSr% SrSrSrSrS/rSr	\
" SS	S
1S9\S'   \S 5       rSrg)AddPresetCameraiV  zAdd or remove a Camera Presetzcamera.preset_addAdd Camera PresetCAMERA_PT_presetszcam = bpy.context.cameracameraInclude Focal Length$Include focal length into the presetr7   r   use_focal_lengthc                 t    / SQnU R                   (       a"  UR                  S5        UR                  S5        U$ )N)zcam.sensor_widthzcam.sensor_heightzcam.sensor_fitzcam.lenszcam.lens_unitr   appendr   r   s     r'   r   AddPresetCamera.preset_valuesh  s6    

     ,  1r/   r   Nrk   r   r   r   r   r   r   r   rz   r   r   r   propertyr   r   r   r/   r'   r   r   V  sS    '#I"H%K 	#N M"#:  	 	r/   r   c                   6    \ rS rSrSrSrSrSrS/r/ SQr	Sr
S	rg
)AddPresetCameraSafeAreasiu  z!Add or remove a Safe Areas Presetzcamera.safe_areas_preset_addzAdd Safe Area PresetCAMERA_PT_safe_areas_presetsz)safe_areas = bpy.context.scene.safe_areas)zsafe_areas.titlezsafe_areas.actionzsafe_areas.title_centerzsafe_areas.action_center
safe_areasr   Nr   r   r/   r'   r   r   u  s.    +.I%H0K 	4NM !Mr/   r   c                   6    \ rS rSrSrSrSrSrS/r/ SQr	Sr
S	rg
)AddPresetClothi  zAdd or remove a Cloth Presetzcloth.preset_addzAdd Cloth PresetCLOTH_PT_presetszcloth = bpy.context.cloth)zcloth.settings.qualityzcloth.settings.masszcloth.settings.air_dampingzcloth.settings.bending_modelz cloth.settings.tension_stiffnessz$cloth.settings.compression_stiffnesszcloth.settings.shear_stiffnessz cloth.settings.bending_stiffnesszcloth.settings.tension_dampingz"cloth.settings.compression_dampingzcloth.settings.shear_dampingzcloth.settings.bending_dampingz#cloth.settings.use_internal_springsz)cloth.settings.internal_spring_max_lengthz,cloth.settings.internal_spring_max_diversionz+cloth.settings.internal_spring_normal_checkz)cloth.settings.internal_tension_stiffnessz-cloth.settings.internal_compression_stiffnessz-cloth.settings.internal_tension_stiffness_maxz1cloth.settings.internal_compression_stiffness_maxzcloth.settings.use_pressurez%cloth.settings.uniform_pressure_forcez"cloth.settings.use_pressure_volumezcloth.settings.target_volumezcloth.settings.pressure_factorzcloth.settings.fluid_densityclothr   Nr   r   r/   r'   r   r     s.    &"I!H$K 	$NM: Mr/   r   c                   6    \ rS rSrSrSrSrSrS/rSS/r	S	r
S
rg)AddPresetFluidi  zAdd or remove a Fluid Presetzfluid.preset_addzAdd Fluid PresetFLUID_PT_presetszfluid = bpy.context.fluidz$fluid.domain_settings.viscosity_basez(fluid.domain_settings.viscosity_exponentfluidr   Nr   r   r/   r'   r   r     s6    &"I!H$K 	$N
 	/2M
 Mr/   r   c                   8    \ rS rSrSrSrSrSr/ SQrSr	/ SQr
S	rg
)AddPresetHairDynamicsi  z$Add or remove a Hair Dynamics Presetz!particle.hair_dynamics_preset_addzAdd Hair Dynamics Preset!PARTICLE_PT_hair_dynamics_presets)z"psys = bpy.context.particle_systemz)cloth = bpy.context.particle_system.clothz5settings = bpy.context.particle_system.cloth.settingsz@collision = bpy.context.particle_system.cloth.collision_settingshair_dynamics)zsettings.qualityzsettings.masszsettings.bending_stiffnesszpsys.settings.bending_randomzsettings.bending_dampingzsettings.air_dampingzsettings.internal_frictionzsettings.density_targetzsettings.density_strengthzsettings.voxel_cell_sizezsettings.pin_stiffnessr   N)rk   r   r   r   r   r   r   r   rz   r   r   r   r   r/   r'   r   r     s)    .3I)H5KN $MMr/   r   c                   6    \ rS rSrSrSrSrSrS/rSS/r	S	r
S
rg)AddPresetTextEditori  z"Add or remove a Text Editor Presetztext_editor.preset_addzAdd Text Editor PresetUSERPREF_PT_text_editor_presetsz-filepaths = bpy.context.preferences.filepathszfilepaths.text_editorzfilepaths.text_editor_argstext_editorr   Nr   r   r/   r'   r   r     s6    ,(I'H3K 	8N
 	 $M
 "Mr/   r   c                   Z    \ rS rSr% SrSrSrSrS/rSr	\
" SS	S
1SS9\S'   \S 5       rSrg)AddPresetTrackingCamerai  z1Add or remove a Tracking Camera Intrinsics Presetzclip.camera_preset_addr   CLIP_PT_camera_presetsz3camera = bpy.context.edit_movieclip.tracking.cameratracking_camerar   r   r7   T)r   r   r9   r   r   c                 t    / SQnU R                   (       a"  UR                  S5        UR                  S5        U$ )N)zcamera.sensor_widthzcamera.pixel_aspectz	camera.k1z	camera.k2z	camera.k3zcamera.unitszcamera.focal_lengthr   r   s     r'   r   %AddPresetTrackingCamera.preset_values  s7    
     0  !67r/   r   Nr   r   r/   r'   r   r     sV    ;(I"H*K 	>N &M"#:	   r/   r   c                   6    \ rS rSrSrSrSrSrS/rSS/r	S	r
S
rg)AddPresetTrackingTrackColori  z'Add or remove a Clip Track Color Presetzclip.track_color_preset_addzAdd Track Color PresetCLIP_PT_track_color_presetsz9track = bpy.context.edit_movieclip.tracking.tracks.activeztrack.colorztrack.use_custom_colortracking_track_colorr   Nr   r   r/   r'   r   r     s7    1-I'H/K 	DN
 	 M
 +Mr/   r   c                   6    \ rS rSrSrSrSrSrS/r/ SQr	Sr
S	rg
)AddPresetTrackingSettingsi)  z/Add or remove a motion tracking settings presetz!clip.tracking_settings_preset_addzAdd Tracking Settings Preset!CLIP_PT_tracking_settings_presetsz7settings = bpy.context.edit_movieclip.tracking.settings)z settings.default_correlation_minzsettings.default_pattern_sizezsettings.default_search_sizezsettings.default_frames_limitzsettings.default_pattern_matchzsettings.default_marginzsettings.default_motion_modelzsettings.use_default_brutez"settings.use_default_normalizationzsettings.use_default_maskz settings.use_default_red_channelz"settings.use_default_green_channelz!settings.use_default_blue_channelzsettings.default_weighttracking_settingsr   Nr   r   r/   r'   r  r  )  s/    93I-H5K 	BNM" (Mr/   r  c                   8    \ rS rSrSrSrSrSrSS/r/ SQr	S	r
S
rg)AddPresetEEVEERaytracingiG  z)Add or remove an EEVEE ray-tracing presetz"render.eevee_raytracing_preset_addzAdd Raytracing Preset"RENDER_PT_eevee_raytracing_presetszeevee = bpy.context.scene.eeveez#options = eevee.ray_tracing_options)zeevee.ray_tracing_methodzoptions.resolution_scalezoptions.trace_max_roughnesszoptions.screen_trace_qualityzoptions.screen_trace_thicknesszoptions.use_denoisezoptions.denoise_spatialzoptions.denoise_temporalzoptions.denoise_bilateralzeevee.fast_gi_methodzeevee.fast_gi_resolutionzeevee.fast_gi_ray_countzeevee.fast_gi_step_countzeevee.fast_gi_qualityzeevee.fast_gi_distancezeevee.fast_gi_thickness_nearzeevee.fast_gi_thickness_farzeevee.fast_gi_biaszeevee/raytracingr   Nr   r   r/   r'   r  r  G  s1    34I&H6K 	*-N
M* 'Mr/   r  c                   6    \ rS rSrSrSrSrSrS/rSS/r	S	r
S
rg)$AddPresetColorManagementWhiteBalanceij  z$Add or remove a white balance presetz0render.color_management_white_balance_preset_addzAdd White Balance Preset0RENDER_PT_color_management_white_balance_presetsz/view_settings = bpy.context.scene.view_settingsz'view_settings.white_balance_temperaturez view_settings.white_balance_tintzcolor_management/white_balancer   Nr   r   r/   r'   r  r  j  s6    .BI)HDK 	:N
 	2*M
 5Mr/   r  c                   6    \ rS rSrSrSrSrSrS/rSS/r	S	r
S
rg)AddPresetNodeColori|  z!Add or remove a Node Color Presetznode.node_color_preset_addzAdd Node Color PresetNODE_PT_node_color_presetsznode = bpy.context.active_nodez
node.colorznode.use_custom_color
node_colorr   Nr   r   r/   r'   r  r  |  s6    +,I&H.K 	)N
 	M
 !Mr/   r  c                   .    \ rS rSrSrSrSrSrSrS r	Sr
g	)
AddPresetInterfaceThemei  z%Add a custom theme to the preset listzwm.interface_theme_preset_addz	Add Theme#USERPREF_MT_interface_theme_presetsinterface_themec                 >    X!R                   R                  S   l        g )Nr   )preferencesthemesr"   )r   r!   r"   s      r'   r   AddPresetInterfaceTheme.post_cb  s     2:""1%.r/   r   N)rk   r   r   r   r   r   r   r   r   r   r   r   r/   r'   r  r    s    //IH7K%M:r/   r  c                   N    \ rS rSr% SrSrSrSrSr\	" SSS	1S
9\
S'   S rS rSrg)RemovePresetInterfaceThemei  z*Remove a custom theme from the preset listz wm.interface_theme_preset_removezRemove Themer  r  Tr:   r7   r;   r=   c                     UR                   R                  S   R                  nU(       a  [        U5      (       a  U R	                  S1S5        S1$ UR
                  R                  XSSS9$ )Nr   r~   z!Built-in themes cannot be removedr\   zRemove Custom ThemeDeletetitleconfirm_textr  r  r"   r.   r   r   invoke_confirmr   r!   eventr"   s       r'   r   !RemovePresetInterfaceTheme.invoke  se    &&--a099.x88KK	#FG= %%44TH]lt4uur/   c                 T    [         R                  R                  R                  5         g r   )rK   opsr  reset_default_theme)r   r!   	_filepaths      r'   r   "RemovePresetInterfaceTheme.post_cb  s     	//1r/   r   N)rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r'   r  r    s<    42IH7K%M;' v2r/   r  c                   N    \ rS rSr% SrSrSrSrSr\	" SSS	1S
9\
S'   S rS rSrg)SavePresetInterfaceThemei  z&Save a custom theme in the preset listzwm.interface_theme_preset_savez
Save Themer  r  Tr:   r7   r;   r=   c           	      0   SS K nUR                  R                  S   R                  nU(       a  [	        U5      (       a  U R                  S1S5        S1$ [        [        R                  U R                  5      n UR                  XUR                  5        X1R                  R                  S   l        S1$ ! [         aU  nU R                  S1[        S5      R                  [        U5      5      5        SS KnUR#                  5         S1s S nA$ S nAff = f)Nr   r~   %Built-in themes cannot be overwrittenr\   z Unable to overwrite preset: {:s}rV   )r   r  r  r"   r.   r   r   rK   re   r   r   r   r   r   r   r   r   r   )r   r!   r   r"   r   r&   r   s          r'   r    SavePresetInterfaceTheme.execute  s    "&&--a099.x88KK	#JK= #CIIt/?/?@	!""76G6V6VW 2:""1%.|  	!KK	4(J#K#R#RSVWYSZ#[\!= 		!s   :B6 6
D A
D
DDc                     UR                   R                  S   R                  nU(       a  [        U5      (       a  U R	                  S1S5        S1$ UR
                  R                  XSSS9$ )Nr   r~   r-  r\   zOverwrite Custom Theme?Saver  r   r"  s       r'   r   SavePresetInterfaceTheme.invoke  se    &&--a099.x88KK	#JK= %%44THapv4wwr/   r   N)rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r/   r'   r+  r+    s<    00IH7K%M;' (xr/   r+  c                   .    \ rS rSrSrSrSrSrSrS r	Sr
g	)
AddPresetKeyconfigi  z4Add a custom keymap configuration to the preset listzwm.keyconfig_preset_addzAdd Custom Keymap ConfigurationUSERPREF_MT_keyconfigs	keyconfigc                     [         R                  R                  R                  US9  [         R                  R                  U5        g )N)r"   )rK   r&  r  keyconfig_exportr   keyconfig_set)r   r   r"   s      r'   r_   AddPresetKeyconfig.add  s/    ,,h,?		)r/   r   N)rk   r   r   r   r   r   r   r   r   r_   r   r   r/   r'   r3  r3    s    >)I0H*KM*r/   r3  c                   T    \ rS rSr% SrSrSrSrSr\	" SSS	1S
9\
S'   S rS rS rSrg)RemovePresetKeyconfigi  z9Remove a custom keymap configuration from the preset listzwm.keyconfig_preset_removeRemove Keymap Configurationr4  r5  Tr:   r7   r;   r=   c                     [         R                  R                  R                  n[	        [         R
                  U R                  5      nUR                  R                  Ul	        g r   )
rK   r!   r   
keyconfigsr   re   r   activer   r   )r   r!   r>  r   s       r'   rQ   RemovePresetKeyconfig.pre_cb  sC    [[//::
#CIIt/?/?@%/%6%6%;%;"r/   c                     [         R                  R                  R                  nUR	                  UR
                  5        g r   )rK   r!   r   r>  r}   r?  )r   r!   r(  r>  s       r'   r   RemovePresetKeyconfig.post_cb  s+    [[//::
*++,r/   c                 V   [         R                  R                  R                  nUR                  R
                  n[         R                  R                  X@R                  SS9nU(       a  [        U5      (       a  U R                  S1S5        S1$ UR                  R                  XSSS9$ )	NrU   r]   r~   z0Built-in keymap configurations cannot be removedr\   r<  r  r  )rK   r!   r   r>  r?  r   r   r   r   r.   r   r!  )r   r!   r#  r>  r   r"   s         r'   r   RemovePresetKeyconfig.invoke  s    [[//::
  %%99((/A/Au(M.x88KK	#UV= %%44<8 5 
 	
r/   r   N)rk   r   r   r   r   r   r   r   r   r   r   rQ   r   r   r   r   r/   r'   r;  r;    s@    C,I,H*KM;' <
-

r/   r;  c                   v    \ rS rSr% SrSrSrSr\" SSSS	1S
9\	S'   S/r
\S 5       r\S 5       r\S 5       rSrg)AddPresetOperatori  z Add or remove an Operator Presetwm.operator_preset_addzOperator PresetWM_MT_operator_presetsr   r6   r:   r7   )r   r8   r9   operatorz op = bpy.context.active_operatorc                 @    [         R                  U R                  5      $ r   rF  operator_pathrI  r   s    r'   r   AddPresetOperator.preset_subdir%       ..t}}==r/   c                    [         R                  R                  R                  5       nU R                  R                  SS5      u  p#[        [        [        R                  UR                  5       5      U5      nUR                  5       nA/ nUR                  R                  5        H?  u  pxUR                  (       a  M  Xq;  d  M  UR                  SR                  U5      5        MA     U$ )N_OT_r   zop.{:s})r   rg   rh   ri   rI  splitr   rK   r&  r   get_rna_typeitemsis_skip_presetr   r   )	r   properties_blacklistprefixsuffixopoperator_rnaretprop_idprops	            r'   r   AddPresetOperator.preset_values)  s    '99>>@,,VQ7WSWWflln5v>()44::<MG&&&6JJy//89 =
 
r/   c                     SS K nU R                  SS5      u  p#UR                  R                  SSR	                  UR                  5       U5      5      $ )Nr   rQ  r   rI  rb   )r   rR  r-   r   r   r   )rI  r   rW  rX  s       r'   rL  AddPresetOperator.operator_path:  s?    !2ww||J(:(:6<<>6(RSSr/   r   N)rk   r   r   r   r   r   r   r   r
   r   rz   r   r   r   r   rL  r   r   r/   r'   rF  rF    sy    *(I H*K;'  	+N > >    T Tr/   rF  c                   2    \ rS rSrSrS r\S 5       rSrSr	g)rH  iA  Operator Presetsc                     UR                   R                  U l        U R                  nUR                  S5        UR	                  5         [
        R                  " X5        g )Nzwm.operator_defaults)active_operatorr   rI  layout	separatorr   draw_preset)r   r!   re  s      r'   drawWM_MT_operator_presets.drawD  sG    //99 ./'r/   c                 @    [         R                  U R                  5      $ r   rK  rM  s    r'   r   $WM_MT_operator_presets.preset_subdirN  rO  r/   r   rI  N)
rk   r   r   r   r   rh  r   r   preset_operatorr   r   r/   r'   rH  rH  A  s'    !H( > > .Or/   rH  c                   F    \ rS rSrSrSrSr\S 5       r\S 5       r	S r
Srg	)
WM_PT_operator_presetsiU  rb  rG  r   c                 @    [         R                  U R                  5      $ r   rK  rM  s    r'   r   $WM_PT_operator_presets.preset_subdirZ  rO  r/   c                     SU R                   0$ )NrI  rl  rM  s    r'   preset_add_operator_properties5WM_PT_operator_presets.preset_add_operator_properties^  s    DMM**r/   c                 f    UR                   R                  U l        [        R                  " X5        g r   )rd  r   rI  r   rh  )r   r!   s     r'   rh  WM_PT_operator_presets.drawb  s#    //99'r/   rl  N)rk   r   r   r   r   preset_add_operatorrm  r   r   rs  rh  r   r   r/   r'   ro  ro  U  s=    !H2-O> > + +(r/   ro  c                   Z    \ rS rSr% SrSrSr\" SS9\S'   \	" S\
S9\S'   S	 rS
 rS rSrg)WM_OT_operator_presets_cleanupig  zHRemove outdated operator properties from presets that may cause problemszwm.operator_presets_cleanupzClean Up Operator PresetsrI  r   rh   )r   rj   c                 $   SS K nSS KnUR                  R                  U5      (       a0  UR                  R	                  U5      S   R                  5       S:X  d  g [        USSS9 nUR                  5       R                  S5      nS S S 5        W(       d  g UR                  SS	R                  U Vs/ s H  otR                  S
U-   5      PM     sn5      -   S-   5      n/ n	Sn
U
[        U5      :  a  UR                  Xj   5      nUc  U	R                  Xj   5        U
S-  n
OXj   UR                  5       S  R!                  S5      nU
S-  n
U(       aU  U
[        U5      :  aF  Xj   R!                  S
5      (       d.  U
S-  n
U
[        U5      :  a  Xj   R!                  S
5      (       d  M.  U
[        U5      :  a  M  [        USSS9 nUR#                  SR                  U	5      5        S S S 5        g ! , (       d  f       GNl= fs  snf ! , (       d  f       g = f)Nr   r   rU   rrw   rx   T(|zop.z)\bz.clear()rv    )r   rer-   isfiler   r   r   read
splitlinescompiler   escapelenmatchr   end
startswithrl   )r   r"   properties_excluder   r  fh
lines_prevr]  regex_exclude
lines_nextimis_collections                r'   _cleanup_preset.WM_OT_operator_presets_cleanup._cleanup_presetp  s   x((RWW-=-=h-G-J-P-P-RV[-[(C'2b--d3J 3

3Wi2jWit99UT\3JWi2j)k#knt#tu
#j/!##JM2Ay!!*-0Q *aeegh 7 B B: NQ !c*o-z}7O7OPU7V7VQ c*o-z}7O7OPU7V7V #j/! (C'2bHHRWWZ() 32- 32 3k$ 32s   % G*0G< !H*
G9
Hc                    SS K n[        R                  R                  SSSS9nU(       d  g U H  n[        R                  U5      nUR                  R                  XF5      nUR                  R                  U5      (       d  MU  UR                  U5       H.  nU R                  UR                  R                  Xx5      U5        M0     M     g )Nr   rX   rW   FrY   )r   rK   r   r   rF  rL  r-   r   isdirlistdirr  )	r   	operatorsr  r   base_preset_directoryrI  rL  	directoryr   s	            r'   _cleanup_operators_presets9WM_OT_operator_presets_cleanup._cleanup_operators_presets  s     #		 7 7		Z_ 7 `$!H-;;HEM%:JI77==++JJy1$$RWW\\)%FHZ[ 2 "r/   c                     / n/ nU R                   (       aJ  UR                  U R                   5        U R                   H  nUR                  UR                  5        M      O/ SQn/ SQnU R	                  X25        S1$ )N)WM_OT_alembic_exportWM_OT_alembic_importWM_OT_obj_exportWM_OT_obj_importWM_OT_ply_exportWM_OT_ply_importWM_OT_stl_exportWM_OT_stl_importWM_OT_usd_exportWM_OT_usd_importEXPORT_SCENE_OT_fbxIMPORT_SCENE_OT_fbx)r"   r  filesr   rV   )rI  r   rh   r   r  )r   r!   r  r  r]  s        r'   r   &WM_OT_operator_presets_cleanup.execute  sm    	==T]]+"))$))4 (I" 	''	F|r/   r   N)rk   r   r   r   r   r   r   r
   r   r	   r   r  r  r   r   r   r/   r'   ry  ry  g  s8    R-I*H*--";RSS*<\r/   ry  c                   8    \ rS rSrSrSrSrSrSS/r/ SQr	S	r
S
rg)AddPresetGpencilBrushi  z(Add or remove Grease Pencil brush presetzscene.gpencil_brush_preset_addzAdd Grease Pencil Brush PresetVIEW3D_PT_gpencil_brush_presetsz5brush = bpy.context.tool_settings.gpencil_paint.brushz!settings = brush.gpencil_settings)zsettings.input_sampleszsettings.active_smooth_factorzsettings.anglezsettings.angle_factorz settings.use_settings_stabilizerzbrush.smooth_stroke_radiuszbrush.smooth_stroke_factorzsettings.pen_smooth_factorzsettings.pen_smooth_stepszsettings.pen_subdivision_stepszsettings.use_settings_randomzsettings.random_pressurezsettings.random_strengthzsettings.uv_randomzsettings.pen_jitterzsettings.use_jitter_pressurezsettings.use_trimgpencil_brushr   Nr   r   r/   r'   r  r    s2    20I/H3K 	@+N
M( $Mr/   r  c                   8    \ rS rSrSrSrSrSrSS/r/ SQr	S	r
S
rg)AddPresetGpencilMateriali  z+Add or remove Grease Pencil material presetz!scene.gpencil_material_preset_addz!Add Grease Pencil Material Preset$MATERIAL_PT_gpencil_material_presetsz-material = bpy.context.object.active_materialz gpcolor = material.grease_pencil)zgpcolor.modezgpcolor.stroke_stylezgpcolor.colorzgpcolor.stroke_imagezgpcolor.pixel_sizezgpcolor.mix_stroke_factorzgpcolor.alignment_modezgpcolor.alignment_rotationzgpcolor.fill_stylezgpcolor.fill_colorzgpcolor.fill_imagezgpcolor.gradient_typezgpcolor.mix_colorgpcolor.mix_factorzgpcolor.flipzgpcolor.texture_offsetzgpcolor.texture_scalezgpcolor.texture_anglezgpcolor.texture_clampr  zgpcolor.show_strokezgpcolor.show_fillgpencil_materialr   Nr   r   r/   r'   r  r    s1    53I2H8K 	8*N
M2 'Mr/   r  )0rK   	bpy.typesr   r   r   r   r   	bpy.propsr   r	   r
   bpy.app.translationsr   r   r   r   bl_ui.utilsr   r   r(   r.   r1   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r+  r3  r;  rF  rH  ro  ry  r  r  classesr   r/   r'   <module>r     s  
   
 $ +	%,  :? 50<B) B)J.H .bmX .mX >!}h !(']H 'T]H $M8 <"- "$mX D+- +$(x (< '}h  'F5=( 5$! !$
:mX 
:2 2:)x}h )xX	* 	*"
M8 "
J)Tx )TX.T .(([% ($TX Tn$M8 $D$'}h $'P ("3r/   