PyAPI: Skip user scripts w/ factory-startup
Adds bpy.app.factory_startup, used to check if user scripts should be loaded.
This commit is contained in:
parent
35d9f68121
commit
edc6bec9d6
Notes:
blender-bot
2023-02-14 06:45:15 +01:00
Referenced by issue #52250, Glitch in UI in the addon panel regression Referenced by issue #52193, scale bug
|
@ -72,6 +72,7 @@ import addon_utils as _addon_utils
|
|||
|
||||
_user_preferences = _bpy.context.user_preferences
|
||||
_script_module_dirs = "startup", "modules"
|
||||
_is_factory_startup = _bpy.app.factory_startup
|
||||
|
||||
|
||||
def _test_import(module_name, loaded_modules):
|
||||
|
@ -145,6 +146,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||
:type refresh_scripts: bool
|
||||
"""
|
||||
use_time = use_class_register_check = _bpy.app.debug_python
|
||||
use_user = not _is_factory_startup
|
||||
|
||||
if use_time:
|
||||
import time
|
||||
|
@ -235,7 +237,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||
from bpy_restrict_state import RestrictBlend
|
||||
|
||||
with RestrictBlend():
|
||||
for base_path in script_paths():
|
||||
for base_path in script_paths(use_user=use_user):
|
||||
for path_subdir in _script_module_dirs:
|
||||
path = _os.path.join(base_path, path_subdir)
|
||||
if _os.path.isdir(path):
|
||||
|
@ -307,7 +309,7 @@ def script_path_pref():
|
|||
return _os.path.normpath(path) if path else None
|
||||
|
||||
|
||||
def script_paths(subdir=None, user_pref=True, check_all=False):
|
||||
def script_paths(subdir=None, user_pref=True, check_all=False, use_user=True):
|
||||
"""
|
||||
Returns a list of valid script paths.
|
||||
|
||||
|
@ -331,13 +333,24 @@ def script_paths(subdir=None, user_pref=True, check_all=False):
|
|||
|
||||
if check_all:
|
||||
# All possible paths, no duplicates, keep order.
|
||||
base_paths = (
|
||||
*(path for path in (_os.path.join(resource_path(res), "scripts")
|
||||
for res in ('LOCAL', 'USER', 'SYSTEM')) if path not in base_paths),
|
||||
*base_paths,
|
||||
)
|
||||
if use_user:
|
||||
test_paths = ('LOCAL', 'USER', 'SYSTEM')
|
||||
else:
|
||||
test_paths = ('LOCAL', 'SYSTEM')
|
||||
|
||||
for path in (*base_paths, script_path_user(), script_path_pref()):
|
||||
base_paths = (
|
||||
*(path for path in (
|
||||
_os.path.join(resource_path(res), "scripts")
|
||||
for res in test_paths) if path not in base_paths),
|
||||
*base_paths,
|
||||
)
|
||||
|
||||
if use_user:
|
||||
test_paths = (*base_paths, script_path_user(), script_path_pref())
|
||||
else:
|
||||
test_paths = (*base_paths, script_path_pref())
|
||||
|
||||
for path in test_paths:
|
||||
if path:
|
||||
path = _os.path.normpath(path)
|
||||
if path not in scripts and _os.path.isdir(path):
|
||||
|
|
|
@ -89,6 +89,7 @@ static PyStructSequence_Field app_info_fields[] = {
|
|||
{(char *)"version_cycle", (char *)"The release status of this build alpha/beta/rc/release"},
|
||||
{(char *)"binary_path", (char *)"The location of blenders executable, useful for utilities that spawn new instances"},
|
||||
{(char *)"background", (char *)"Boolean, True when blender is running without a user interface (started with -b)"},
|
||||
{(char *)"factory_startup", (char *)"Boolean, True when blender is running with --factory-startup)"},
|
||||
|
||||
/* buildinfo */
|
||||
{(char *)"build_date", (char *)"The date this blender instance was built"},
|
||||
|
@ -165,6 +166,7 @@ static PyObject *make_app_info(void)
|
|||
SetStrItem(STRINGIFY(BLENDER_VERSION_CYCLE));
|
||||
SetStrItem(BKE_appdir_program_path());
|
||||
SetObjItem(PyBool_FromLong(G.background));
|
||||
SetObjItem(PyBool_FromLong(G.factory_startup));
|
||||
|
||||
/* build info, use bytes since we can't assume _any_ encoding:
|
||||
* see patch [#30154] for issue */
|
||||
|
|
Loading…
Reference in New Issue