UI: Region polling support #105088
|
@ -39,7 +39,7 @@ Desktop.ini
|
|||
/doc/python_api/rst/bmesh.ops.rst
|
||||
|
||||
# in-source lib downloads
|
||||
/build_files/build_environment/downloads
|
||||
/build_files/build_environment/downloads/
|
||||
|
||||
# in-source buildbot signing configuration
|
||||
/build_files/buildbot/codesign/config_server.py
|
||||
|
@ -48,4 +48,20 @@ Desktop.ini
|
|||
waveletNoiseTile.bin
|
||||
|
||||
# testing environment
|
||||
/Testing
|
||||
/Testing/
|
||||
|
||||
# Translations.
|
||||
/locale/user-config.py
|
||||
|
||||
# External repositories.
|
||||
/scripts/addons/
|
||||
/scripts/addons_contrib/
|
||||
|
||||
# Ignore old submodules directories.
|
||||
# Eventually need to get rid of those, but for the first time of transition
|
||||
# avoid indidents when the folders exists after bisect and developers staging
|
||||
# them by accident.
|
||||
/release/scripts/addons/
|
||||
/release/datafiles/locale/
|
||||
/release/scripts/addons_contrib/
|
||||
/source/tools/
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
[submodule "release/scripts/addons"]
|
||||
path = release/scripts/addons
|
||||
url = ../blender-addons.git
|
||||
branch = main
|
||||
ignore = all
|
||||
[submodule "release/scripts/addons_contrib"]
|
||||
path = release/scripts/addons_contrib
|
||||
url = ../blender-addons-contrib.git
|
||||
branch = main
|
||||
ignore = all
|
||||
[submodule "release/datafiles/locale"]
|
||||
path = release/datafiles/locale
|
||||
url = ../blender-translations.git
|
||||
branch = main
|
||||
ignore = all
|
||||
[submodule "source/tools"]
|
||||
path = source/tools
|
||||
url = ../blender-dev-tools.git
|
||||
branch = main
|
||||
ignore = all
|
|
@ -954,21 +954,6 @@ endif()
|
|||
# -----------------------------------------------------------------------------
|
||||
# Check if Sub-modules are Cloned
|
||||
|
||||
if(WITH_INTERNATIONAL)
|
||||
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
|
||||
list(LENGTH RESULT DIR_LEN)
|
||||
if(DIR_LEN EQUAL 0)
|
||||
message(
|
||||
WARNING
|
||||
"Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
|
||||
"This is a 'git submodule', which are known not to work with bridges to other version "
|
||||
"control systems."
|
||||
)
|
||||
set(TRANSLATIONS_FOUND OFF)
|
||||
set_and_warn_library_found("Translations" TRANSLATIONS_FOUND WITH_INTERNATIONAL)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(WITH_PYTHON)
|
||||
# While we have this as an '#error' in 'bpy_capi_utils.h',
|
||||
# upgrading Python tends to cause confusion for users who build.
|
||||
|
@ -984,14 +969,14 @@ if(WITH_PYTHON)
|
|||
)
|
||||
endif()
|
||||
|
||||
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/release/scripts/addons")
|
||||
file(GLOB RESULT "${CMAKE_SOURCE_DIR}/scripts/addons")
|
||||
list(LENGTH RESULT DIR_LEN)
|
||||
if(DIR_LEN EQUAL 0)
|
||||
message(
|
||||
WARNING
|
||||
"Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
|
||||
"This is a 'git submodule', which are known not to work with bridges to other version "
|
||||
"control systems: * CONTINUING WITHOUT ADDONS *"
|
||||
"Addons path '${CMAKE_SOURCE_DIR}/scripts/addons' is missing. "
|
||||
"This is an external repository which needs to be checked out. Use `make update` to do so. "
|
||||
"* CONTINUING WITHOUT ADDONS *"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
|
28
GNUmakefile
28
GNUmakefile
|
@ -69,7 +69,7 @@ Static Source Code Checking
|
|||
* check_cmake: Runs our own cmake file checker which detects errors in the cmake file list definitions.
|
||||
* check_pep8: Checks all Python script are pep8 which are tagged to use the stricter formatting.
|
||||
* check_mypy: Checks all Python scripts using mypy,
|
||||
see: source/tools/check_source/check_mypy_config.py scripts which are included.
|
||||
see: tools/check_source/check_mypy_config.py scripts which are included.
|
||||
|
||||
Documentation Checking
|
||||
|
||||
|
@ -85,7 +85,7 @@ Spell Checkers
|
|||
* check_spelling_osl: Check for spelling errors (OSL only).
|
||||
* check_spelling_py: Check for spelling errors (Python only).
|
||||
|
||||
Note: an additional word-list is maintained at: 'source/tools/check_source/check_spelling_c_config.py'
|
||||
Note: an additional word-list is maintained at: 'tools/check_source/check_spelling_c_config.py'
|
||||
|
||||
Note: that spell checkers can take a 'CHECK_SPELLING_CACHE' filepath argument,
|
||||
so re-running does not need to re-check unchanged files.
|
||||
|
@ -490,22 +490,22 @@ check_smatch: .FORCE
|
|||
$(PYTHON) "$(BLENDER_DIR)/build_files/cmake/cmake_static_check_smatch.py"
|
||||
|
||||
check_mypy: .FORCE
|
||||
@$(PYTHON) "$(BLENDER_DIR)/source/tools/check_source/check_mypy.py"
|
||||
@$(PYTHON) "$(BLENDER_DIR)/tools/check_source/check_mypy.py"
|
||||
|
||||
check_wiki_file_structure: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_wiki/check_wiki_file_structure.py"
|
||||
"$(BLENDER_DIR)/tools/check_wiki/check_wiki_file_structure.py"
|
||||
|
||||
check_spelling_py: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/release/scripts"
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/scripts"
|
||||
|
||||
check_spelling_c: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
"$(BLENDER_DIR)/source" \
|
||||
"$(BLENDER_DIR)/intern/cycles" \
|
||||
|
@ -515,21 +515,21 @@ check_spelling_c: .FORCE
|
|||
check_spelling_osl: .FORCE
|
||||
@cd "$(BUILD_DIR)" ; \
|
||||
PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_spelling.py" \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_spelling.py" \
|
||||
--cache-file=$(CHECK_SPELLING_CACHE) \
|
||||
"$(BLENDER_DIR)/intern/cycles/kernel/shaders"
|
||||
|
||||
check_descriptions: .FORCE
|
||||
@$(BLENDER_BIN) --background -noaudio --factory-startup --python \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_descriptions.py"
|
||||
"$(BLENDER_DIR)/tools/check_source/check_descriptions.py"
|
||||
|
||||
check_deprecated: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
source/tools/check_source/check_deprecated.py
|
||||
tools/check_source/check_deprecated.py
|
||||
|
||||
check_licenses: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
"$(BLENDER_DIR)/source/tools/check_source/check_licenses.py" \
|
||||
"$(BLENDER_DIR)/tools/check_source/check_licenses.py" \
|
||||
"--show-headers=$(SHOW_HEADERS)"
|
||||
|
||||
check_pep8: .FORCE
|
||||
|
@ -538,7 +538,7 @@ check_pep8: .FORCE
|
|||
|
||||
check_cmake: .FORCE
|
||||
@PYTHONIOENCODING=utf_8 $(PYTHON) \
|
||||
source/tools/check_source/check_cmake_consistency.py
|
||||
tools/check_source/check_cmake_consistency.py
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
@ -576,8 +576,8 @@ update_code: .FORCE
|
|||
@$(PYTHON) ./build_files/utils/make_update.py --no-libraries
|
||||
|
||||
format: .FORCE
|
||||
@PATH="${LIBDIR}/llvm/bin/:$(PATH)" $(PYTHON) source/tools/utils_maintenance/clang_format_paths.py $(PATHS)
|
||||
@$(PYTHON) source/tools/utils_maintenance/autopep8_format_paths.py --autopep8-command="$(AUTOPEP8)" $(PATHS)
|
||||
@PATH="${LIBDIR}/llvm/bin/:$(PATH)" $(PYTHON) tools/utils_maintenance/clang_format_paths.py $(PATHS)
|
||||
@$(PYTHON) tools/utils_maintenance/autopep8_format_paths.py --autopep8-command="$(AUTOPEP8)" $(PATHS)
|
||||
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
|
|
@ -1090,7 +1090,7 @@ function(msgfmt_simple
|
|||
add_custom_command(
|
||||
OUTPUT ${_file_to}
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${_file_to_path}
|
||||
COMMAND "$<TARGET_FILE:msgfmt>" ${_file_from} ${_file_to}
|
||||
COMMAND ${CMAKE_COMMAND} -E env ${PLATFORM_ENV_BUILD} "$<TARGET_FILE:msgfmt>" ${_file_from} ${_file_to}
|
||||
DEPENDS msgfmt ${_file_from})
|
||||
|
||||
set_source_files_properties(${_file_to} PROPERTIES GENERATED TRUE)
|
||||
|
|
|
@ -901,11 +901,11 @@ endif()
|
|||
|
||||
if(WINDOWS_PYTHON_DEBUG)
|
||||
# Include the system scripts in the blender_python_system_scripts project.
|
||||
file(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/release/scripts/*.*" )
|
||||
file(GLOB_RECURSE inFiles "${CMAKE_SOURCE_DIR}/scripts/*.*" )
|
||||
add_custom_target(blender_python_system_scripts SOURCES ${inFiles})
|
||||
foreach(_source IN ITEMS ${inFiles})
|
||||
get_filename_component(_source_path "${_source}" PATH)
|
||||
string(REPLACE "${CMAKE_SOURCE_DIR}/release/scripts/" "" _source_path "${_source_path}")
|
||||
string(REPLACE "${CMAKE_SOURCE_DIR}/scripts/" "" _source_path "${_source_path}")
|
||||
string(REPLACE "/" "\\" _group_path "${_source_path}")
|
||||
source_group("${_group_path}" FILES "${_source}")
|
||||
endforeach()
|
||||
|
@ -940,7 +940,7 @@ if(WINDOWS_PYTHON_DEBUG)
|
|||
file(WRITE ${USER_PROPS_FILE} "<?xml version=\"1.0\" encoding=\"utf-8\"?>
|
||||
<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">
|
||||
<PropertyGroup>
|
||||
<LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/release/scripts\" </LocalDebuggerCommandArguments>
|
||||
<LocalDebuggerCommandArguments>-con --env-system-scripts \"${CMAKE_SOURCE_DIR}/scripts\" </LocalDebuggerCommandArguments>
|
||||
</PropertyGroup>
|
||||
</Project>")
|
||||
endif()
|
||||
|
@ -1040,7 +1040,7 @@ endif()
|
|||
|
||||
# Environment variables to run precompiled executables that needed libraries.
|
||||
list(JOIN PLATFORM_BUNDLED_LIBRARY_DIRS ";" _library_paths)
|
||||
set(PLATFORM_ENV_BUILD_DIRS "${LIBDIR}/OpenImageIO/bin\;${LIBDIR}/boost/lib\;${LIBDIR}/openexr/bin\;${LIBDIR}/imath/bin\;${PATH}")
|
||||
set(PLATFORM_ENV_BUILD_DIRS "${LIBDIR}/tbb/bin\;${LIBDIR}/OpenImageIO/bin\;${LIBDIR}/boost/lib\;${LIBDIR}/openexr/bin\;${LIBDIR}/imath/bin\;${PATH}")
|
||||
set(PLATFORM_ENV_BUILD "PATH=${PLATFORM_ENV_BUILD_DIRS}")
|
||||
# Install needs the additional folders from PLATFORM_ENV_BUILD_DIRS as well, as tools like idiff and abcls use the release mode dlls
|
||||
set(PLATFORM_ENV_INSTALL "PATH=${CMAKE_INSTALL_PREFIX_WITH_CONFIG}/blender.shared/\;${PLATFORM_ENV_BUILD_DIRS}\;$ENV{PATH}")
|
||||
|
|
|
@ -1,53 +1,3 @@
|
|||
#
|
||||
# Used by Buildbot build pipeline make_update.py script only for now
|
||||
# We intended to update the make_update.py in the branches to use this file eventually
|
||||
#
|
||||
update-code:
|
||||
git:
|
||||
submodules:
|
||||
- branch: main
|
||||
commit_id: HEAD
|
||||
path: release/scripts/addons
|
||||
- branch: main
|
||||
commit_id: HEAD
|
||||
path: release/scripts/addons_contrib
|
||||
- branch: main
|
||||
commit_id: HEAD
|
||||
path: release/datafiles/locale
|
||||
- branch: main
|
||||
commit_id: HEAD
|
||||
path: source/tools
|
||||
svn:
|
||||
libraries:
|
||||
darwin-arm64:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/darwin_arm64
|
||||
darwin-x86_64:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/darwin
|
||||
linux-x86_64:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/linux_x86_64_glibc_228
|
||||
windows-amd64:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/win64_vc15
|
||||
tests:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/tests
|
||||
benchmarks:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/benchmarks
|
||||
assets:
|
||||
branch: trunk
|
||||
commit_id: HEAD
|
||||
path: lib/assets
|
||||
|
||||
#
|
||||
# Buildbot only configs
|
||||
#
|
||||
|
|
|
@ -135,7 +135,7 @@ def submodules_to_manifest(
|
|||
submodule = line.split()[1]
|
||||
|
||||
# Don't use native slashes as GIT for MS-Windows outputs forward slashes.
|
||||
if skip_addon_contrib and submodule == "release/scripts/addons_contrib":
|
||||
if skip_addon_contrib and submodule == "scripts/addons_contrib":
|
||||
continue
|
||||
|
||||
for path in git_ls_files(blender_srcdir / submodule):
|
||||
|
|
|
@ -16,14 +16,28 @@ import shutil
|
|||
import sys
|
||||
|
||||
import make_utils
|
||||
from pathlib import Path
|
||||
from make_utils import call, check_output
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from typing import (
|
||||
List,
|
||||
Iterable,
|
||||
Optional,
|
||||
)
|
||||
|
||||
|
||||
class Submodule:
|
||||
path: str
|
||||
branch: str
|
||||
branch_fallback: str
|
||||
|
||||
def __init__(self, path: str, branch: str, branch_fallback: str) -> None:
|
||||
self.path = path
|
||||
self.branch = branch
|
||||
self.branch_fallback = branch_fallback
|
||||
|
||||
|
||||
def print_stage(text: str) -> None:
|
||||
print("")
|
||||
print(text)
|
||||
|
@ -198,58 +212,221 @@ def git_update_skip(args: argparse.Namespace, check_remote_exists: bool = True)
|
|||
return ""
|
||||
|
||||
|
||||
def use_upstream_workflow(args: argparse.Namespace) -> bool:
|
||||
return make_utils.git_remote_exist(args.git_command, "upstream")
|
||||
|
||||
|
||||
def work_tree_update_upstream_workflow(args: argparse.Namespace, use_fetch=True) -> str:
|
||||
"""
|
||||
Update the Blender repository using the Github style of fork organization
|
||||
|
||||
Returns true if the current local branch has been updated to the upstream state.
|
||||
Otherwise false is returned.
|
||||
"""
|
||||
|
||||
branch_name = make_utils.git_branch(args.git_command)
|
||||
|
||||
if use_fetch:
|
||||
call((args.git_command, "fetch", "upstream"))
|
||||
|
||||
upstream_branch = f"upstream/{branch_name}"
|
||||
if not make_utils.git_branch_exists(args.git_command, upstream_branch):
|
||||
return "no_branch"
|
||||
|
||||
retcode = call((args.git_command, "merge", "--ff-only", upstream_branch), exit_on_error=False)
|
||||
if retcode != 0:
|
||||
return "Unable to fast forward\n"
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def work_tree_update(args: argparse.Namespace, use_fetch=True) -> str:
|
||||
"""
|
||||
Update the Git working tree using the best strategy
|
||||
|
||||
This function detects whether it is a github style of fork remote organization is used, or
|
||||
is it a repository which origin is an upstream.
|
||||
"""
|
||||
|
||||
if use_upstream_workflow(args):
|
||||
message = work_tree_update_upstream_workflow(args, use_fetch)
|
||||
if message != "no_branch":
|
||||
return message
|
||||
|
||||
# If there is upstream configured but the local branch is not in the upstream, try to
|
||||
# update the branch from the fork.
|
||||
|
||||
update_command = [args.git_command, "pull", "--rebase"]
|
||||
|
||||
call(update_command)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
# Update blender repository.
|
||||
def blender_update(args: argparse.Namespace) -> None:
|
||||
def blender_update(args: argparse.Namespace) -> str:
|
||||
print_stage("Updating Blender Git Repository")
|
||||
call([args.git_command, "pull", "--rebase"])
|
||||
|
||||
return work_tree_update(args)
|
||||
|
||||
|
||||
# Update submodules.
|
||||
def submodules_update(
|
||||
args: argparse.Namespace,
|
||||
release_version: Optional[str],
|
||||
branch: Optional[str],
|
||||
) -> str:
|
||||
print_stage("Updating Submodules")
|
||||
if make_utils.command_missing(args.git_command):
|
||||
sys.stderr.write("git not found, can't update code\n")
|
||||
sys.exit(1)
|
||||
def resolve_external_url(blender_url: str, repo_name: str) -> str:
|
||||
return urljoin(blender_url + "/", "../" + repo_name)
|
||||
|
||||
# Update submodules to appropriate given branch,
|
||||
# falling back to main if none is given and/or found in a sub-repository.
|
||||
|
||||
def external_script_copy_old_submodule_over(args: argparse.Namespace, directory_name: str) -> None:
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
old_submodule_relative_dir = Path("release") / "scripts" / directory_name
|
||||
print(f"Moving {old_submodule_relative_dir} to scripts/{directory_name} ...")
|
||||
|
||||
old_submodule_dir = blender_git_root / old_submodule_relative_dir
|
||||
shutil.move(old_submodule_dir, external_dir)
|
||||
|
||||
# Remove old ".git" which is a file with path to a submodule bare repo inside of main
|
||||
# repo .git/modules directory.
|
||||
(external_dir / ".git").unlink()
|
||||
|
||||
bare_repo_relative_dir = Path(".git") / "modules" / "release" / "scripts" / directory_name
|
||||
print(f"Copying {bare_repo_relative_dir} to scripts/{directory_name}/.git ...")
|
||||
bare_repo_dir = blender_git_root / bare_repo_relative_dir
|
||||
shutil.copytree(bare_repo_dir, external_dir / ".git")
|
||||
|
||||
git_config = external_dir / ".git" / "config"
|
||||
call((args.git_command, "config", "--file", git_config, "--unset", "core.worktree"))
|
||||
|
||||
|
||||
def external_script_initialize_if_needed(args: argparse.Namespace,
|
||||
repo_name: str,
|
||||
directory_name: str) -> None:
|
||||
"""Initialize checkout of an external repository scripts directory"""
|
||||
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
blender_dot_git = blender_git_root / ".git"
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
if external_dir.exists():
|
||||
return
|
||||
|
||||
print(f"Initializing scripts/{directory_name} ...")
|
||||
|
||||
old_submodule_dot_git = blender_git_root / "release" / "scripts" / directory_name / ".git"
|
||||
if old_submodule_dot_git.exists() and blender_dot_git.is_dir():
|
||||
external_script_copy_old_submodule_over(args, directory_name)
|
||||
return
|
||||
|
||||
origin_name = "upstream" if use_upstream_workflow(args) else "origin"
|
||||
blender_url = make_utils.git_get_remote_url(args.git_command, origin_name)
|
||||
external_url = resolve_external_url(blender_url, repo_name)
|
||||
|
||||
call((args.git_command, "clone", "--origin", origin_name, external_url, external_dir))
|
||||
|
||||
|
||||
def external_script_add_origin_if_needed(args: argparse.Namespace,
|
||||
repo_name: str,
|
||||
directory_name: str) -> str:
|
||||
"""
|
||||
Add remote called 'origin' if there is a fork of the external repository available
|
||||
|
||||
This is only done when using Github style upstream workflow in the main repository.
|
||||
"""
|
||||
|
||||
if not use_upstream_workflow(args):
|
||||
return ""
|
||||
|
||||
cwd = os.getcwd()
|
||||
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
origin_blender_url = make_utils.git_get_remote_url(args.git_command, "origin")
|
||||
origin_external_url = resolve_external_url(origin_blender_url, repo_name)
|
||||
|
||||
try:
|
||||
os.chdir(external_dir)
|
||||
|
||||
if (make_utils.git_remote_exist(args.git_command, "origin") or
|
||||
not make_utils.git_remote_exist(args.git_command, "upstream")):
|
||||
return
|
||||
|
||||
if not make_utils.git_is_remote_repository(args.git_command, origin_external_url):
|
||||
return
|
||||
|
||||
print(f"Adding origin remote to {directory_name} pointing to fork ...")
|
||||
|
||||
# Non-obvious tricks to introduce the new remote called "origin" to the existing
|
||||
# submodule configuration.
|
||||
#
|
||||
# This is all within the content of creating a fork of a submodule after `make update`
|
||||
# has been run and possibly local branches tracking upstream were added.
|
||||
#
|
||||
# The idea here goes as following:
|
||||
#
|
||||
# - Rename remote "upstream" to "origin", which takes care of changing the names of
|
||||
# remotes the local branches are tracking.
|
||||
#
|
||||
# - Change the URL to the "origin", which so was was still pointing to upstream.
|
||||
#
|
||||
# - Re-introduce the "upstream" remote, with the same URL as it had prior to rename.
|
||||
|
||||
upstream_url = make_utils.git_get_remote_url(args.git_command, "upstream")
|
||||
|
||||
call((args.git_command, "remote", "rename", "upstream", "origin"))
|
||||
make_utils.git_set_config(args.git_command, f"remote.origin.url", origin_external_url)
|
||||
|
||||
call((args.git_command, "remote", "add", "upstream", upstream_url))
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def external_scripts_update(args: argparse.Namespace,
|
||||
repo_name: str,
|
||||
directory_name: str,
|
||||
branch: Optional[str]) -> str:
|
||||
"""Update a single external checkout with the given name in the scripts folder"""
|
||||
|
||||
external_script_initialize_if_needed(args, repo_name, directory_name)
|
||||
external_script_add_origin_if_needed(args, repo_name, directory_name)
|
||||
|
||||
print(f"Updating scripts/{directory_name} ...")
|
||||
|
||||
cwd = os.getcwd()
|
||||
|
||||
blender_git_root = Path(get_blender_git_root())
|
||||
scripts_dir = blender_git_root / "scripts"
|
||||
external_dir = scripts_dir / directory_name
|
||||
|
||||
# Update externals to appropriate given branch, falling back to main if none is given and/or
|
||||
# found in a sub-repository.
|
||||
branch_fallback = "main"
|
||||
if not branch:
|
||||
branch = branch_fallback
|
||||
|
||||
submodules = [
|
||||
("release/scripts/addons", branch, branch_fallback),
|
||||
("release/scripts/addons_contrib", branch, branch_fallback),
|
||||
("release/datafiles/locale", branch, branch_fallback),
|
||||
("source/tools", branch, branch_fallback),
|
||||
]
|
||||
|
||||
# Initialize submodules only if needed.
|
||||
for submodule_path, submodule_branch, submodule_branch_fallback in submodules:
|
||||
if not os.path.exists(os.path.join(submodule_path, ".git")):
|
||||
call([args.git_command, "submodule", "update", "--init", "--recursive"])
|
||||
break
|
||||
|
||||
# Checkout appropriate branch and pull changes.
|
||||
skip_msg = ""
|
||||
for submodule_path, submodule_branch, submodule_branch_fallback in submodules:
|
||||
cwd = os.getcwd()
|
||||
|
||||
try:
|
||||
os.chdir(submodule_path)
|
||||
os.chdir(external_dir)
|
||||
msg = git_update_skip(args, check_remote_exists=False)
|
||||
if msg:
|
||||
skip_msg += submodule_path + " skipped: " + msg + "\n"
|
||||
skip_msg += directory_name + " skipped: " + msg + "\n"
|
||||
else:
|
||||
# Find a matching branch that exists.
|
||||
call([args.git_command, "fetch", "origin"])
|
||||
for remote in ("origin", "upstream"):
|
||||
if make_utils.git_remote_exist(args.git_command, remote):
|
||||
call([args.git_command, "fetch", remote])
|
||||
|
||||
submodule_branch = branch
|
||||
|
||||
if make_utils.git_branch_exists(args.git_command, submodule_branch):
|
||||
pass
|
||||
elif make_utils.git_branch_exists(args.git_command, submodule_branch_fallback):
|
||||
submodule_branch = submodule_branch_fallback
|
||||
elif make_utils.git_branch_exists(args.git_command, branch_fallback):
|
||||
submodule_branch = branch_fallback
|
||||
else:
|
||||
# Skip.
|
||||
submodule_branch = ""
|
||||
|
@ -258,13 +435,34 @@ def submodules_update(
|
|||
if submodule_branch:
|
||||
if make_utils.git_branch(args.git_command) != submodule_branch:
|
||||
call([args.git_command, "checkout", submodule_branch])
|
||||
call([args.git_command, "pull", "--rebase", "origin", submodule_branch])
|
||||
# Don't use extra fetch since all remotes of interest have been already fetched
|
||||
# some lines above.
|
||||
skip_msg += work_tree_update(args, use_fetch=False)
|
||||
finally:
|
||||
os.chdir(cwd)
|
||||
|
||||
return skip_msg
|
||||
|
||||
|
||||
def scripts_submodules_update(args: argparse.Namespace, branch: Optional[str]) -> str:
|
||||
"""Update working trees of addons and addons_contrib within the scripts/ directory"""
|
||||
msg = ""
|
||||
|
||||
msg += external_scripts_update(args, "blender-addons", "addons", branch)
|
||||
msg += external_scripts_update(args, "blender-addons-contrib", "addons_contrib", branch)
|
||||
|
||||
return msg
|
||||
|
||||
|
||||
def submodules_update(args: argparse.Namespace, branch: Optional[str]) -> str:
|
||||
"""Update submodules or other externally tracked source trees"""
|
||||
msg = ""
|
||||
|
||||
msg += scripts_submodules_update(args, branch)
|
||||
|
||||
return msg
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
args = parse_arguments()
|
||||
blender_skip_msg = ""
|
||||
|
@ -284,12 +482,12 @@ if __name__ == "__main__":
|
|||
svn_update(args, release_version)
|
||||
if not args.no_blender:
|
||||
blender_skip_msg = git_update_skip(args)
|
||||
if not blender_skip_msg:
|
||||
blender_skip_msg = blender_update(args)
|
||||
if blender_skip_msg:
|
||||
blender_skip_msg = "Blender repository skipped: " + blender_skip_msg + "\n"
|
||||
else:
|
||||
blender_update(args)
|
||||
if not args.no_submodules:
|
||||
submodules_skip_msg = submodules_update(args, release_version, branch)
|
||||
submodules_skip_msg = submodules_update(args, branch)
|
||||
|
||||
# Report any skipped repositories at the end, so it's not as easy to miss.
|
||||
skip_msg = blender_skip_msg + submodules_skip_msg
|
||||
|
|
|
@ -9,7 +9,9 @@ import re
|
|||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
from pathlib import Path
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from typing import (
|
||||
Sequence,
|
||||
|
@ -19,7 +21,7 @@ from typing import (
|
|||
|
||||
def call(cmd: Sequence[str], exit_on_error: bool = True, silent: bool = False) -> int:
|
||||
if not silent:
|
||||
print(" ".join(cmd))
|
||||
print(" ".join([str(x) for x in cmd]))
|
||||
|
||||
# Flush to ensure correct order output on Windows.
|
||||
sys.stdout.flush()
|
||||
|
@ -55,10 +57,48 @@ def check_output(cmd: Sequence[str], exit_on_error: bool = True) -> str:
|
|||
def git_branch_exists(git_command: str, branch: str) -> bool:
|
||||
return (
|
||||
call([git_command, "rev-parse", "--verify", branch], exit_on_error=False, silent=True) == 0 or
|
||||
call([git_command, "rev-parse", "--verify", "remotes/upstream/" + branch], exit_on_error=False, silent=True) == 0 or
|
||||
call([git_command, "rev-parse", "--verify", "remotes/origin/" + branch], exit_on_error=False, silent=True) == 0
|
||||
)
|
||||
|
||||
|
||||
def git_get_remote_url(git_command: str, remote_name: str) -> bool:
|
||||
return check_output((git_command, "ls-remote", "--get-url", remote_name))
|
||||
|
||||
|
||||
def git_remote_exist(git_command: str, remote_name: str) -> bool:
|
||||
"""Check whether there is a remote with the given name"""
|
||||
# `git ls-remote --get-url upstream` will print an URL if there is such remote configured, and
|
||||
# otherwise will print "upstream".
|
||||
remote_url = check_output((git_command, "ls-remote", "--get-url", remote_name))
|
||||
return remote_url != remote_name
|
||||
|
||||
|
||||
def git_get_resolved_submodule_url(git_command: str, blender_url: str, submodule_path: str) -> str:
|
||||
git_root = check_output([git_command, "rev-parse", "--show-toplevel"])
|
||||
dot_gitmodules = os.path.join(git_root, ".gitmodules")
|
||||
|
||||
submodule_key_prefix = f"submodule.{submodule_path}"
|
||||
submodule_key_url = f"{submodule_key_prefix}.url"
|
||||
|
||||
gitmodule_url = git_get_config(
|
||||
git_command, submodule_key_url, file=dot_gitmodules)
|
||||
|
||||
# A bit of a trickery to construct final URL.
|
||||
# Only works for the relative submodule URLs.
|
||||
#
|
||||
# Note that unless the LHS URL ends up with a slash urljoin treats the last component as a
|
||||
# file.
|
||||
assert gitmodule_url.startswith('..')
|
||||
return urljoin(blender_url + "/", gitmodule_url)
|
||||
|
||||
|
||||
def git_is_remote_repository(git_command: str, repo: str) -> bool:
|
||||
"""Returns true if the given repository is a valid/clonable git repo"""
|
||||
exit_code = call((git_command, "ls-remote", repo, "HEAD"), exit_on_error=False, silent=True)
|
||||
return exit_code == 0
|
||||
|
||||
|
||||
def git_branch(git_command: str) -> str:
|
||||
# Get current branch name.
|
||||
try:
|
||||
|
@ -70,6 +110,20 @@ def git_branch(git_command: str) -> str:
|
|||
return branch.strip().decode('utf8')
|
||||
|
||||
|
||||
def git_get_config(git_command: str, key: str, file: Optional[str] = None) -> str:
|
||||
if file:
|
||||
return check_output([git_command, "config", "--file", file, "--get", key])
|
||||
|
||||
return check_output([git_command, "config", "--get", key])
|
||||
|
||||
|
||||
def git_set_config(git_command: str, key: str, value: str, file: Optional[str] = None) -> str:
|
||||
if file:
|
||||
return check_output([git_command, "config", "--file", file, key, value])
|
||||
|
||||
return check_output([git_command, "config", key, value])
|
||||
|
||||
|
||||
def git_tag(git_command: str) -> Optional[str]:
|
||||
# Get current tag name.
|
||||
try:
|
||||
|
|
|
@ -4,9 +4,9 @@ if "%GIT%" == "" (
|
|||
)
|
||||
cd "%BLENDER_DIR%"
|
||||
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Branch_hash=%%i
|
||||
cd "%BLENDER_DIR%/release/datafiles/locale"
|
||||
cd "%BLENDER_DIR%/locale"
|
||||
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Locale_hash=%%i
|
||||
cd "%BLENDER_DIR%/release/scripts/addons"
|
||||
cd "%BLENDER_DIR%/scripts/addons"
|
||||
for /f "delims=" %%i in ('"%GIT%" rev-parse HEAD') do echo Addons_Hash=%%i
|
||||
cd "%BLENDER_DIR%"
|
||||
:EOF
|
|
@ -31,7 +31,7 @@ For an overview of BMesh data types and how they reference each other see:
|
|||
Example Script
|
||||
--------------
|
||||
|
||||
.. literalinclude:: __/__/__/release/scripts/templates_py/bmesh_simple.py
|
||||
.. literalinclude:: __/__/__/scripts/templates_py/bmesh_simple.py
|
||||
|
||||
|
||||
Standalone Module
|
||||
|
|
|
@ -288,7 +288,7 @@ In Python, this is done by defining a class, which is a subclass of an existing
|
|||
Example Operator
|
||||
----------------
|
||||
|
||||
.. literalinclude:: __/__/__/release/scripts/templates_py/operator_simple.py
|
||||
.. literalinclude:: __/__/__/scripts/templates_py/operator_simple.py
|
||||
|
||||
Once this script runs, ``SimpleOperator`` is registered with Blender
|
||||
and can be called from Operator Search or added to the toolbar.
|
||||
|
@ -320,7 +320,7 @@ Example Panel
|
|||
Panels are registered as a class, like an operator.
|
||||
Notice the extra ``bl_`` variables used to set the context they display in.
|
||||
|
||||
.. literalinclude:: __/__/__/release/scripts/templates_py/ui_panel_simple.py
|
||||
.. literalinclude:: __/__/__/scripts/templates_py/ui_panel_simple.py
|
||||
|
||||
To run the script:
|
||||
|
||||
|
|
|
@ -367,13 +367,13 @@ except ImportError:
|
|||
# Note that ".." is replaced by "__" in the RST files,
|
||||
# to avoid having to match Blender's source tree.
|
||||
EXTRA_SOURCE_FILES = (
|
||||
"../../../release/scripts/templates_py/bmesh_simple.py",
|
||||
"../../../release/scripts/templates_py/gizmo_operator.py",
|
||||
"../../../release/scripts/templates_py/gizmo_operator_target.py",
|
||||
"../../../release/scripts/templates_py/gizmo_simple.py",
|
||||
"../../../release/scripts/templates_py/operator_simple.py",
|
||||
"../../../release/scripts/templates_py/ui_panel_simple.py",
|
||||
"../../../release/scripts/templates_py/ui_previews_custom_icon.py",
|
||||
"../../../scripts/templates_py/bmesh_simple.py",
|
||||
"../../../scripts/templates_py/gizmo_operator.py",
|
||||
"../../../scripts/templates_py/gizmo_operator_target.py",
|
||||
"../../../scripts/templates_py/gizmo_simple.py",
|
||||
"../../../scripts/templates_py/operator_simple.py",
|
||||
"../../../scripts/templates_py/ui_panel_simple.py",
|
||||
"../../../scripts/templates_py/ui_previews_custom_icon.py",
|
||||
"../examples/bmesh.ops.1.py",
|
||||
"../examples/bpy.app.translations.py",
|
||||
)
|
||||
|
@ -1816,7 +1816,7 @@ def pyrna2sphinx(basepath):
|
|||
|
||||
# operators
|
||||
def write_ops():
|
||||
API_BASEURL = "https://projects.blender.org/blender/blender/src/branch/main/release/scripts"
|
||||
API_BASEURL = "https://projects.blender.org/blender/blender/src/branch/main/scripts"
|
||||
API_BASEURL_ADDON = "https://projects.blender.org/blender/blender-addons"
|
||||
API_BASEURL_ADDON_CONTRIB = "https://projects.blender.org/blender/blender-addons-contrib"
|
||||
|
||||
|
|
|
@ -349,8 +349,7 @@ void BlenderSync::sync_integrator(BL::ViewLayer &b_view_layer, bool background)
|
|||
|
||||
bool use_light_tree = get_boolean(cscene, "use_light_tree");
|
||||
integrator->set_use_light_tree(use_light_tree);
|
||||
integrator->set_light_sampling_threshold(
|
||||
(use_light_tree) ? 0.0f : get_float(cscene, "light_sampling_threshold"));
|
||||
integrator->set_light_sampling_threshold(get_float(cscene, "light_sampling_threshold"));
|
||||
|
||||
if (integrator->use_light_tree_is_modified()) {
|
||||
scene->light_manager->tag_update(scene, LightManager::UPDATE_ALL);
|
||||
|
|
|
@ -113,13 +113,16 @@ ccl_device_noinline bool light_sample(KernelGlobals kg,
|
|||
{
|
||||
int prim;
|
||||
MeshLight mesh_light;
|
||||
#ifdef __LIGHT_TREE__
|
||||
if (kernel_data.integrator.use_light_tree) {
|
||||
ccl_global const KernelLightTreeEmitter *kemitter = &kernel_data_fetch(light_tree_emitters,
|
||||
emitter_index);
|
||||
prim = kemitter->prim;
|
||||
mesh_light = kemitter->mesh_light;
|
||||
}
|
||||
else {
|
||||
else
|
||||
#endif
|
||||
{
|
||||
ccl_global const KernelLightDistribution *kdistribution = &kernel_data_fetch(
|
||||
light_distribution, emitter_index);
|
||||
prim = kdistribution->prim;
|
||||
|
|
|
@ -255,8 +255,10 @@ void Integrator::device_update(Device *device, DeviceScene *dscene, Scene *scene
|
|||
kintegrator->scrambling_distance = scrambling_distance;
|
||||
kintegrator->sobol_index_mask = reverse_integer_bits(next_power_of_two(aa_samples - 1) - 1);
|
||||
|
||||
kintegrator->use_light_tree = scene->integrator->use_light_tree;
|
||||
if (light_sampling_threshold > 0.0f) {
|
||||
/* NOTE: The kintegrator->use_light_tree is assigned to the efficient value in the light manager,
|
||||
* and the synchronization code is expected to tag the light manager for update when the
|
||||
* `use_light_tree` is changed. */
|
||||
if (light_sampling_threshold > 0.0f && !kintegrator->use_light_tree) {
|
||||
kintegrator->light_inv_rr_threshold = scene->film->get_exposure() / light_sampling_threshold;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -93,7 +93,7 @@ GHOST_WindowWin32::GHOST_WindowWin32(GHOST_SystemWin32 *system,
|
|||
}
|
||||
|
||||
RECT win_rect = {left, top, long(left + width), long(top + height)};
|
||||
adjustWindowRectForDesktop(&win_rect, style, extended_style);
|
||||
adjustWindowRectForClosestMonitor(&win_rect, style, extended_style);
|
||||
|
||||
wchar_t *title_16 = alloc_utf16_from_8((char *)title, 0);
|
||||
m_hWnd = ::CreateWindowExW(extended_style, /* window extended style */
|
||||
|
@ -298,55 +298,24 @@ GHOST_WindowWin32::~GHOST_WindowWin32()
|
|||
m_directManipulationHelper = NULL;
|
||||
}
|
||||
|
||||
void GHOST_WindowWin32::adjustWindowRectForDesktop(LPRECT win_rect, DWORD dwStyle, DWORD dwExStyle)
|
||||
void GHOST_WindowWin32::adjustWindowRectForClosestMonitor(LPRECT win_rect,
|
||||
DWORD dwStyle,
|
||||
DWORD dwExStyle)
|
||||
{
|
||||
/* Windows can span multiple monitors, but must be usable. The desktop can have a larger
|
||||
* surface than all monitors combined, for example when two monitors are aligned diagonally.
|
||||
* Therefore we ensure that all the window's corners are within some monitor's Work area. */
|
||||
|
||||
POINT pt;
|
||||
HMONITOR hmonitor;
|
||||
/* Get Details of the closest monitor. */
|
||||
HMONITOR hmonitor = MonitorFromRect(win_rect, MONITOR_DEFAULTTONEAREST);
|
||||
MONITORINFOEX monitor;
|
||||
monitor.cbSize = sizeof(MONITORINFOEX);
|
||||
monitor.dwFlags = 0;
|
||||
|
||||
/* We'll need this value before it is altered for checking later. */
|
||||
LONG requested_top = win_rect->top;
|
||||
|
||||
/* Note that with MonitorFromPoint using MONITOR_DEFAULTTONEAREST, it will return
|
||||
* the exact monitor if there is one at the location or the nearest monitor if not. */
|
||||
|
||||
/* Top-left. */
|
||||
pt.x = win_rect->left;
|
||||
pt.y = win_rect->top;
|
||||
hmonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(hmonitor, &monitor);
|
||||
win_rect->top = max(win_rect->top, monitor.rcWork.top);
|
||||
win_rect->left = max(win_rect->left, monitor.rcWork.left);
|
||||
|
||||
/* Top-right. */
|
||||
pt.x = win_rect->right;
|
||||
pt.y = win_rect->top;
|
||||
hmonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(hmonitor, &monitor);
|
||||
win_rect->top = max(win_rect->top, monitor.rcWork.top);
|
||||
win_rect->right = min(win_rect->right, monitor.rcWork.right);
|
||||
|
||||
/* Bottom-left. */
|
||||
pt.x = win_rect->left;
|
||||
pt.y = win_rect->bottom;
|
||||
hmonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(hmonitor, &monitor);
|
||||
win_rect->bottom = min(win_rect->bottom, monitor.rcWork.bottom);
|
||||
win_rect->left = max(win_rect->left, monitor.rcWork.left);
|
||||
|
||||
/* Bottom-right. */
|
||||
pt.x = win_rect->right;
|
||||
pt.y = win_rect->bottom;
|
||||
hmonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(hmonitor, &monitor);
|
||||
win_rect->bottom = min(win_rect->bottom, monitor.rcWork.bottom);
|
||||
win_rect->right = min(win_rect->right, monitor.rcWork.right);
|
||||
/* Constrain requested size and position to fit within this monitor. */
|
||||
LONG width = min(monitor.rcWork.right - monitor.rcWork.left, win_rect->right - win_rect->left);
|
||||
LONG height = min(monitor.rcWork.bottom - monitor.rcWork.top, win_rect->bottom - win_rect->top);
|
||||
win_rect->left = min(max(monitor.rcWork.left, win_rect->left), monitor.rcWork.right - width);
|
||||
win_rect->right = win_rect->left + width;
|
||||
win_rect->top = min(max(monitor.rcWork.top, win_rect->top), monitor.rcWork.bottom - height);
|
||||
win_rect->bottom = win_rect->top + height;
|
||||
|
||||
/* With Windows 10 and newer we can adjust for chrome that differs with DPI and scale. */
|
||||
GHOST_WIN32_AdjustWindowRectExForDpi fpAdjustWindowRectExForDpi = nullptr;
|
||||
|
@ -358,9 +327,6 @@ void GHOST_WindowWin32::adjustWindowRectForDesktop(LPRECT win_rect, DWORD dwStyl
|
|||
/* Adjust to allow for caption, borders, shadows, scaling, etc. Resulting values can be
|
||||
* correctly outside of monitor bounds. NOTE: You cannot specify #WS_OVERLAPPED when calling. */
|
||||
if (fpAdjustWindowRectExForDpi) {
|
||||
/* Use the DPI of the monitor that is at the middle of the rect. */
|
||||
hmonitor = MonitorFromRect(win_rect, MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(hmonitor, &monitor);
|
||||
UINT dpiX, dpiY;
|
||||
GetDpiForMonitor(hmonitor, MDT_EFFECTIVE_DPI, &dpiX, &dpiY);
|
||||
fpAdjustWindowRectExForDpi(win_rect, dwStyle & ~WS_OVERLAPPED, FALSE, dwExStyle, dpiX);
|
||||
|
@ -369,12 +335,7 @@ void GHOST_WindowWin32::adjustWindowRectForDesktop(LPRECT win_rect, DWORD dwStyl
|
|||
AdjustWindowRectEx(win_rect, dwStyle & ~WS_OVERLAPPED, FALSE, dwExStyle);
|
||||
}
|
||||
|
||||
/* Don't hide the title bar. Check the working area of the monitor at the top-left corner, using
|
||||
* the original top since the justWindowRects might have altered it to different monitor. */
|
||||
pt.x = win_rect->left;
|
||||
pt.y = requested_top;
|
||||
hmonitor = MonitorFromPoint(pt, MONITOR_DEFAULTTONEAREST);
|
||||
GetMonitorInfo(hmonitor, &monitor);
|
||||
/* But never allow a top position that can hide part of the title bar. */
|
||||
win_rect->top = max(monitor.rcWork.top, win_rect->top);
|
||||
}
|
||||
|
||||
|
|
|
@ -87,12 +87,12 @@ class GHOST_WindowWin32 : public GHOST_Window {
|
|||
~GHOST_WindowWin32();
|
||||
|
||||
/**
|
||||
* Adjusts a requested window rect to fit and position within the desktop.
|
||||
* Adjusts a requested window rect to fit and position correctly in monitor.
|
||||
* \param win_rect: pointer to rectangle that will be modified.
|
||||
* \param dwStyle: The Window Style of the window whose required size is to be calculated.
|
||||
* \param dwExStyle: The Extended Window Style of the window.
|
||||
*/
|
||||
void adjustWindowRectForDesktop(LPRECT win_rect, DWORD dwStyle, DWORD dwExStyle);
|
||||
void adjustWindowRectForClosestMonitor(LPRECT win_rect, DWORD dwStyle, DWORD dwExStyle);
|
||||
|
||||
/**
|
||||
* Returns indication as to whether the window is valid.
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
# File used by Blender to know which languages (translations) are available,
|
||||
# and to generate translation menu.
|
||||
#
|
||||
# File format:
|
||||
# ID:MENULABEL:ISOCODE
|
||||
# ID must be unique, except for 0 value (marks categories for menu).
|
||||
# Line starting with a # are comments!
|
||||
#
|
||||
# Automatically generated by bl_i18n_utils/update_languages_menu.py script.
|
||||
# Highest ID currently in use: 48
|
||||
#
|
||||
0:Complete:
|
||||
0:Automatic (Automatic):DEFAULT
|
||||
1:English (English):en_US
|
||||
9:Spanish (Español):es
|
||||
8:French (Français):fr_FR
|
||||
2:Japanese (日本語):ja_JP
|
||||
47:Slovak (Slovenčina):sk_SK
|
||||
41:Vietnamese (tiếng Việt):vi_VN
|
||||
13:Simplified Chinese (简体中文):zh_CN
|
||||
#
|
||||
0:In Progress:
|
||||
10:Catalan (Català):ca_AD
|
||||
11:Czech (Český):cs_CZ
|
||||
5:German (Deutsch):de_DE
|
||||
4:Italian (Italiano):it_IT
|
||||
48:Georgian (ქართული):ka
|
||||
24:Korean (한국어):ko_KR
|
||||
32:Brazilian Portuguese (Português do Brasil):pt_BR
|
||||
12:Portuguese (Português):pt_PT
|
||||
15:Russian (Русский):ru_RU
|
||||
18:Ukrainian (Українська):uk_UA
|
||||
14:Traditional Chinese (繁體中文):zh_TW
|
||||
#
|
||||
0:Starting:
|
||||
45:Abkhaz (Аԥсуа бызшәа):ab
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #37:Amharic (አማርኛ):am_ET
|
||||
21:Arabic (ﺔﻴﺑﺮﻌﻟﺍ):ar_EG
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #22:Bulgarian (Български):bg_BG
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #23:Greek (Ελληνικά):el_GR
|
||||
35:Esperanto (Esperanto):eo
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #36:Spanish from Spain (Español de España):es_ES
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #34:Estonian (Eestlane):et_EE
|
||||
42:Basque (Euskara):eu_EU
|
||||
26:Persian (ﯽﺳﺭﺎﻓ):fa_IR
|
||||
6:Finnish (Suomi):fi_FI
|
||||
43:Hausa (Hausa):ha
|
||||
33:Hebrew (תירִבְעִ):he_IL
|
||||
40:Hindi (मानक हिन्दी):hi_IN
|
||||
16:Croatian (Hrvatski):hr_HR
|
||||
31:Hungarian (Magyar):hu_HU
|
||||
27:Indonesian (Bahasa indonesia):id_ID
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #44:Kazakh (қазақша):kk_KZ
|
||||
29:Kyrgyz (Кыргыз тили):ky_KG
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #25:Nepali (नेपाली):ne_NP
|
||||
3:Dutch (Nederlandse taal):nl_NL
|
||||
19:Polish (Polski):pl_PL
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #20:Romanian (Român):ro_RO
|
||||
17:Serbian (Српски):sr_RS
|
||||
28:Serbian Latin (Srpski latinica):sr_RS@latin
|
||||
7:Swedish (Svenska):sv_SE
|
||||
46:Thai (ภาษาไทย):th_TH
|
||||
30:Turkish (Türkçe):tr_TR
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #38:Uzbek (Oʻzbek):uz_UZ
|
||||
# Skipped (see IMPORT_LANGUAGES_SKIP in settings.py). #39:Uzbek Cyrillic (Ўзбек):uz_UZ@cyrillic
|
|
@ -0,0 +1,720 @@
|
|||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Blender 3.5.0 Beta (b'5fd4d47206ff')\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"\"POT-Creation-Date: 2019-02-25 20:41:30\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Daniel Tlisha <daniel.abzakh@gmail.com>\n"
|
||||
"Language-Team: Abkhaz language team <daniel.abzakh@gmail.com>\n"
|
||||
"Language: ab\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit"
|
||||
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Алхра"
|
||||
|
||||
|
||||
msgid "Add"
|
||||
msgstr "Ацҵара"
|
||||
|
||||
|
||||
msgid "Subtract"
|
||||
msgstr "Ацхра"
|
||||
|
||||
|
||||
msgid "Empty"
|
||||
msgstr "Аҭацәы"
|
||||
|
||||
|
||||
msgid "Edge"
|
||||
msgstr "Акьыԥшь"
|
||||
|
||||
|
||||
msgid "Face"
|
||||
msgstr "Ахаҿы"
|
||||
|
||||
|
||||
msgid "Object"
|
||||
msgstr "Амаҭәар"
|
||||
|
||||
|
||||
msgid "Texts"
|
||||
msgstr "Аҳәоуқәа"
|
||||
|
||||
|
||||
msgid "Main Images"
|
||||
msgstr "Ихадоу Асахьақәа"
|
||||
|
||||
|
||||
msgid "Main Lights"
|
||||
msgstr "Ихадоу Алашарақәа"
|
||||
|
||||
|
||||
msgid "Main Meshes"
|
||||
msgstr "Ихадоу Аҿарԥагақәа"
|
||||
|
||||
|
||||
msgid "Mode"
|
||||
msgstr "А́иҿкаашьа"
|
||||
|
||||
|
||||
msgid "Marker"
|
||||
msgstr "Ашьҭа"
|
||||
|
||||
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgid "Rotation"
|
||||
msgstr "Агьежьра"
|
||||
|
||||
|
||||
msgid "Scale"
|
||||
msgstr "Ашәага"
|
||||
|
||||
|
||||
msgid "Curve"
|
||||
msgstr "Архәара"
|
||||
|
||||
|
||||
msgid "Difference"
|
||||
msgstr "Аиԥшымра"
|
||||
|
||||
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgid "Camera"
|
||||
msgstr "Акамера"
|
||||
|
||||
|
||||
msgid "Location"
|
||||
msgstr "Аҭыԥ"
|
||||
|
||||
|
||||
msgid "Cursor"
|
||||
msgstr "Ахырхага"
|
||||
|
||||
|
||||
msgid "Plane"
|
||||
msgstr "Аҟьаҟьа"
|
||||
|
||||
|
||||
msgid "View"
|
||||
msgstr "Аԥшра"
|
||||
|
||||
|
||||
msgid "Render"
|
||||
msgstr "Архиара"
|
||||
|
||||
|
||||
msgid "Shading"
|
||||
msgstr "Аршәшьра"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Camera"
|
||||
msgstr "Акамера"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Library"
|
||||
msgstr "Ашәҟәыԥхьарҭа"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Light"
|
||||
msgstr "Алашара"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Metaball"
|
||||
msgstr "Метампыл"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Speaker"
|
||||
msgstr "Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgid "Vertex"
|
||||
msgstr "Ақәыцә"
|
||||
|
||||
|
||||
msgid "Group"
|
||||
msgstr "Агәыԥ"
|
||||
|
||||
|
||||
msgid "Cone"
|
||||
msgstr "Аконус"
|
||||
|
||||
|
||||
msgid "Sphere"
|
||||
msgstr "Асфера"
|
||||
|
||||
|
||||
msgid "End"
|
||||
msgstr "Алгара"
|
||||
|
||||
|
||||
msgid "Start"
|
||||
msgstr "Алагара"
|
||||
|
||||
|
||||
msgid "Window"
|
||||
msgstr "Аԥенџьыр"
|
||||
|
||||
|
||||
msgid "Edit Mode"
|
||||
msgstr "Аиҭакра Аиҿкаашьа"
|
||||
|
||||
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgid "Library"
|
||||
msgstr "Ашәҟәыԥхьарҭа"
|
||||
|
||||
|
||||
msgid "Local"
|
||||
msgstr "Ҷыдала"
|
||||
|
||||
|
||||
msgid "Global"
|
||||
msgstr "Зеиԥшла"
|
||||
|
||||
|
||||
msgctxt "Light"
|
||||
msgid "Light"
|
||||
msgstr "Алашара"
|
||||
|
||||
|
||||
msgctxt "Light"
|
||||
msgid "Sun"
|
||||
msgstr "Амра"
|
||||
|
||||
|
||||
msgid "Cube"
|
||||
msgstr "Акуб"
|
||||
|
||||
|
||||
msgid "Roughness"
|
||||
msgstr "Аџьаџьара"
|
||||
|
||||
|
||||
msgid "Specular"
|
||||
msgstr "Ацырцырра"
|
||||
|
||||
|
||||
msgid "Circle"
|
||||
msgstr "Аицыгьежь"
|
||||
|
||||
|
||||
msgid "Object Mode"
|
||||
msgstr "Амаҭәар Аиҿкаашьа"
|
||||
|
||||
|
||||
msgid "Sculpt Mode"
|
||||
msgstr "Ашәаҳара Аиҿкаашьа"
|
||||
|
||||
|
||||
msgid "Vertex Paint"
|
||||
msgstr "Ақәыцә Ашәра"
|
||||
|
||||
|
||||
msgid "Weight Paint"
|
||||
msgstr "Акапан Ашәра"
|
||||
|
||||
|
||||
msgid "Texture Paint"
|
||||
msgstr "Атекстура Ашәра"
|
||||
|
||||
|
||||
msgctxt "ID"
|
||||
msgid "Empty"
|
||||
msgstr "Аҭацәы"
|
||||
|
||||
|
||||
msgid "3D Cursor"
|
||||
msgstr "3Д Ахырхага"
|
||||
|
||||
|
||||
msgid "Edit"
|
||||
msgstr "Аиҭакра"
|
||||
|
||||
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgid "Mesh"
|
||||
msgstr "Аҿарҧага"
|
||||
|
||||
|
||||
msgid "File"
|
||||
msgstr "Ашәҟәы"
|
||||
|
||||
|
||||
msgid "Help"
|
||||
msgstr "Аилыркаа"
|
||||
|
||||
|
||||
msgid "Metaball"
|
||||
msgstr "Метампыл"
|
||||
|
||||
|
||||
msgid "Light"
|
||||
msgstr "Алашара"
|
||||
|
||||
|
||||
msgid "Intersect"
|
||||
msgstr "Аихҵәара"
|
||||
|
||||
|
||||
msgid "Ball"
|
||||
msgstr "Ампыл"
|
||||
|
||||
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgid "Keying"
|
||||
msgstr " Аиҭаганҵа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Circle"
|
||||
msgstr "Ацҵара Аицыгьежь"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Cube"
|
||||
msgstr "Ацҵара Акуб"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Ico Sphere"
|
||||
msgstr "Ацҵара Ico Асфера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Monkey"
|
||||
msgstr "Ацҵара Амаамын"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Plane"
|
||||
msgstr "Ацҵара Аҟьаҟьа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add UV Sphere"
|
||||
msgstr "Ацҵара UV Асфера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Armature"
|
||||
msgstr "Ацҵара Абаҩ"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Camera"
|
||||
msgstr "Ацҵара Акамера"
|
||||
|
||||
|
||||
msgid "Monkey"
|
||||
msgstr "Амаамын"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Light"
|
||||
msgstr "Ацҵара Алашара"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Metaball"
|
||||
msgstr "Ацҵара Метампыл"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Speaker"
|
||||
msgstr "Ацҵара Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Add Text"
|
||||
msgstr "Ацҵара Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "Scene"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgid "Overlays"
|
||||
msgstr "Ақәҵакәа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Scale"
|
||||
msgstr "Ашәага"
|
||||
|
||||
|
||||
msgid "Playback"
|
||||
msgstr "Арҳәара"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Circle"
|
||||
msgstr "Аицыгьежь"
|
||||
|
||||
|
||||
msgctxt "Sequence"
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgctxt "Sequence"
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "MovieClip"
|
||||
msgid "View"
|
||||
msgstr "Аԥшра"
|
||||
|
||||
|
||||
msgid "Speaker"
|
||||
msgstr "Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Metaball"
|
||||
msgstr "Метампы"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Image"
|
||||
msgstr "Асахьанҵа"
|
||||
|
||||
|
||||
msgctxt "WindowManager"
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Location"
|
||||
msgstr "Аҭыԥ"
|
||||
|
||||
|
||||
msgctxt "Image"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Text"
|
||||
msgstr "Аҳәоу"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Rotation"
|
||||
msgstr "Агьежьра"
|
||||
|
||||
|
||||
msgctxt "Text"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgid "location"
|
||||
msgstr "Аҭыԥ"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Plane"
|
||||
msgstr "Аҟьаҟьа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Cube"
|
||||
msgstr "Акуб"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "UV Sphere"
|
||||
msgstr "UV Асфера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Ico Sphere"
|
||||
msgstr "Ico Асфера "
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Cylinder"
|
||||
msgstr "Ацилиндр"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Cone"
|
||||
msgstr "Аконус"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Monkey"
|
||||
msgstr "Амаамын"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Camera"
|
||||
msgstr "Акамера"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Speaker"
|
||||
msgstr "Абжьы Ахыҵхырҭа"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Armature"
|
||||
msgstr "Абаҩ"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Lattice"
|
||||
msgstr "Аҭыџьеихац"
|
||||
|
||||
|
||||
msgctxt "Object"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Mesh"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Curve"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Metaball"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Material"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Texture"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Lattice"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Light"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Camera"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "World"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Screen"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Speaker"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Sound"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Armature"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Action"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "NodeTree"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Brush"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "ParticleSettings"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "GPencil"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "FreestyleLineStyle"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "WorkSpace"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "LightProbe"
|
||||
msgid "New"
|
||||
msgstr "Аҿыц"
|
||||
|
||||
|
||||
msgctxt "Action"
|
||||
msgid "Group"
|
||||
msgstr "Агәыԥ"
|
||||
|
||||
|
||||
msgid "Front Orthographic"
|
||||
msgstr "Аԥхьа Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Front Perspective"
|
||||
msgstr "Аԥхьа Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Back Orthographic"
|
||||
msgstr "Ашьҭахь Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Back Perspective"
|
||||
msgstr "Ашьҭахь Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Top Orthographic"
|
||||
msgstr "Ақә Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Top Perspective"
|
||||
msgstr "Ақә Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Bottom Orthographic"
|
||||
msgstr "Ҵаҟа Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Bottom Perspective"
|
||||
msgstr "Ҵаҟа Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Right Orthographic"
|
||||
msgstr "Арӷьа Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Right Perspective"
|
||||
msgstr "Арӷьа Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Left Orthographic"
|
||||
msgstr "Арма Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "Left Perspective"
|
||||
msgstr "Арма Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Camera Perspective"
|
||||
msgstr "Акамера Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "Camera Orthographic"
|
||||
msgstr "Акамера Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "User Orthographic"
|
||||
msgstr "Ахархәаҩ Аҩышьаԥҟара"
|
||||
|
||||
|
||||
msgid "User Perspective"
|
||||
msgstr "Ахархәаҩ Ԥхьаԥшра"
|
||||
|
||||
|
||||
msgid "global"
|
||||
msgstr "Зеиԥшла"
|
||||
|
||||
|
||||
msgid "local"
|
||||
msgstr "Ҷыдала"
|
||||
|
||||
|
||||
msgid "view"
|
||||
msgstr "Аԥшра"
|
||||
|
||||
|
||||
msgid "cursor"
|
||||
msgstr "Ахырхага"
|
||||
|
||||
|
||||
msgctxt "Armature"
|
||||
msgid "Group"
|
||||
msgstr "Агәыԥ"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,75 @@
|
|||
|
||||
msgid "Select"
|
||||
msgstr "Elektas"
|
||||
|
||||
|
||||
msgid "Add"
|
||||
msgstr "Aldonia"
|
||||
|
||||
|
||||
msgid "View"
|
||||
msgstr "Rigardi"
|
||||
|
||||
|
||||
msgid "Render"
|
||||
msgstr "Por Kapitulacigi"
|
||||
|
||||
|
||||
msgid "Window"
|
||||
msgstr "Fenestro"
|
||||
|
||||
|
||||
msgid "Edit Mode"
|
||||
msgstr "Prilaborado Modo"
|
||||
|
||||
|
||||
msgid "Links"
|
||||
msgstr "Ligiloj"
|
||||
|
||||
|
||||
msgid "Object Mode"
|
||||
msgstr "Objekto Modo"
|
||||
|
||||
|
||||
msgid "Sculpt Mode"
|
||||
msgstr "Skulptaĵo Modo"
|
||||
|
||||
|
||||
msgid "File"
|
||||
msgstr "Dosiero"
|
||||
|
||||
|
||||
msgid "Help"
|
||||
msgstr "Helpo"
|
||||
|
||||
|
||||
msgid "New"
|
||||
msgstr "Nova"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Select"
|
||||
msgstr "Elektas"
|
||||
|
||||
|
||||
msgid "View Z Axis"
|
||||
msgstr "Montri Z Axis"
|
||||
|
||||
|
||||
msgid "View X Axis"
|
||||
msgstr "Montri X Axis"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Render"
|
||||
msgstr "Por Kapitulacigi"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Recover Last Session"
|
||||
msgstr "Restaŭri lasta kunsido"
|
||||
|
||||
|
||||
msgid "Recent"
|
||||
msgstr "Freŝaj"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,123 @@
|
|||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Blender 3.5.0 Beta (b'5fd4d47206ff')\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-20 13:46:36\n"
|
||||
"PO-Revision-Date: 2017-12-25 14:01+0100\n"
|
||||
"Last-Translator: UMAR HARUNA ABDULLAHI <umarbrowser20@gmail.com>\n"
|
||||
"Language-Team: BlenderNigeria <pyc0der@outlook.com>\n"
|
||||
"Language: ha\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Generator: Poedit 1.8.11"
|
||||
|
||||
|
||||
msgid "Name"
|
||||
msgstr "Suna"
|
||||
|
||||
|
||||
msgid "Action F-Curves"
|
||||
msgstr "Aikin F-Curves"
|
||||
|
||||
|
||||
msgid "Collection of action F-Curves"
|
||||
msgstr "Karban bayanan aikin F-Curves"
|
||||
|
||||
|
||||
msgid "Action Group"
|
||||
msgstr "Aikin Kunguya"
|
||||
|
||||
|
||||
msgid "Groups of F-Curves"
|
||||
msgstr "Kungiyar F-Curves"
|
||||
|
||||
|
||||
msgid "Channels"
|
||||
msgstr "Channels"
|
||||
|
||||
|
||||
msgid "F-Curves in this group"
|
||||
msgstr "F-Curves acikin wannan kungiya"
|
||||
|
||||
|
||||
msgid "Color Set"
|
||||
msgstr "Sashin Launi"
|
||||
|
||||
|
||||
msgid "Custom color set to use"
|
||||
msgstr "Hadaddiyar sashin launin daza a saka"
|
||||
|
||||
|
||||
msgid "Default Colors"
|
||||
msgstr "Launi na ainihi"
|
||||
|
||||
|
||||
msgid "01 - Theme Color Set"
|
||||
msgstr "01 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "02 - Theme Color Set"
|
||||
msgstr "02 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "03 - Theme Color Set"
|
||||
msgstr "03 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "04 - Theme Color Set"
|
||||
msgstr "04 - Theme Color Set"
|
||||
|
||||
|
||||
msgid "Custom Color Set"
|
||||
msgstr "Hadaddiyar sashin launuka"
|
||||
|
||||
|
||||
msgid "Colors"
|
||||
msgstr "launuka"
|
||||
|
||||
|
||||
msgid "Copy of the colors associated with the group's color set"
|
||||
msgstr "Ari launukan dasuka danganta da launukannan"
|
||||
|
||||
|
||||
msgid "Color set is user-defined instead of a fixed theme color set"
|
||||
msgstr "Launukan nawanda yasane ba na gyararren theme ba"
|
||||
|
||||
|
||||
msgid "Lock"
|
||||
msgstr "rufe"
|
||||
|
||||
|
||||
msgid "Action group is locked"
|
||||
msgstr "Aikin kungiya ya rufe"
|
||||
|
||||
|
||||
msgid "Select"
|
||||
msgstr "Zabi"
|
||||
|
||||
|
||||
msgid "Action group is selected"
|
||||
msgstr "An zabi aikin kungiya"
|
||||
|
||||
|
||||
msgid "Expanded"
|
||||
msgstr "budadde"
|
||||
|
||||
|
||||
msgid "Action Groups"
|
||||
msgstr "Aikin kungiyoyi"
|
||||
|
||||
|
||||
msgid "Collection of action groups"
|
||||
msgstr "Karban aikin kungiyoyi"
|
||||
|
||||
|
||||
msgid "Action Pose Markers"
|
||||
msgstr "Aikin Pose Markers"
|
||||
|
||||
|
||||
msgid "Collection of timeline markers"
|
||||
msgstr "Sashin lokacin markers"
|
||||
|
|
@ -0,0 +1,531 @@
|
|||
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Blender 3.5.0 Beta (b'5fd4d47206ff')\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2023-02-20 13:46:36\n"
|
||||
"PO-Revision-Date: 2012-10-07 13:56+0300\n"
|
||||
"Last-Translator: Barak Itkin <lightningismyname@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: he\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
"X-Generator: Virtaal 0.7.0"
|
||||
|
||||
|
||||
msgid "Name"
|
||||
msgstr "םש"
|
||||
|
||||
|
||||
msgid "Color"
|
||||
msgstr "עבצ"
|
||||
|
||||
|
||||
msgid "Value"
|
||||
msgstr "ךרע"
|
||||
|
||||
|
||||
msgid "Off"
|
||||
msgstr "יובכ"
|
||||
|
||||
|
||||
msgid "Add"
|
||||
msgstr "ףסוה"
|
||||
|
||||
|
||||
msgid "Width"
|
||||
msgstr "בחור"
|
||||
|
||||
|
||||
msgid "Vector"
|
||||
msgstr "רוטקו"
|
||||
|
||||
|
||||
msgid "Indirect"
|
||||
msgstr "ףיקע"
|
||||
|
||||
|
||||
msgid "Speed"
|
||||
msgstr "תוריהמ"
|
||||
|
||||
|
||||
msgid "Strength"
|
||||
msgstr "המצוע"
|
||||
|
||||
|
||||
msgid "Random"
|
||||
msgstr "יארקא"
|
||||
|
||||
|
||||
msgid "Remove"
|
||||
msgstr "רסה"
|
||||
|
||||
|
||||
msgid "Vertex Color"
|
||||
msgstr "דוקדוק עבצ"
|
||||
|
||||
|
||||
msgid "Smooth"
|
||||
msgstr "קלח"
|
||||
|
||||
|
||||
msgid "Saturation"
|
||||
msgstr "היוור"
|
||||
|
||||
|
||||
msgid "Path"
|
||||
msgstr "ביתנ"
|
||||
|
||||
|
||||
msgid "Rotation"
|
||||
msgstr "בוביס"
|
||||
|
||||
|
||||
msgid "Left"
|
||||
msgstr "לאמש"
|
||||
|
||||
|
||||
msgid "Right"
|
||||
msgstr "ןימי"
|
||||
|
||||
|
||||
msgid "Center"
|
||||
msgstr "זכרמ"
|
||||
|
||||
|
||||
msgid "Gamma"
|
||||
msgstr "אמג"
|
||||
|
||||
|
||||
msgid "Constant"
|
||||
msgstr "עובק"
|
||||
|
||||
|
||||
msgid "Position"
|
||||
msgstr "םוקמ"
|
||||
|
||||
|
||||
msgid "Output"
|
||||
msgstr "טלפ"
|
||||
|
||||
|
||||
msgid "Default"
|
||||
msgstr "לדחמ תרירב"
|
||||
|
||||
|
||||
msgid "Location"
|
||||
msgstr "םוקימ"
|
||||
|
||||
|
||||
msgid "White Level"
|
||||
msgstr "ןבל תמר"
|
||||
|
||||
|
||||
msgid "Surface"
|
||||
msgstr "חטשמ"
|
||||
|
||||
|
||||
msgid "View"
|
||||
msgstr "הגוצת"
|
||||
|
||||
|
||||
msgid "Scene"
|
||||
msgstr "הנצס"
|
||||
|
||||
|
||||
msgid "Shrink"
|
||||
msgstr "ץווכ"
|
||||
|
||||
|
||||
msgid "Modifiers"
|
||||
msgstr "םינשמ"
|
||||
|
||||
|
||||
msgid "Frequency"
|
||||
msgstr "תורידת"
|
||||
|
||||
|
||||
msgid "Size"
|
||||
msgstr "לדוג"
|
||||
|
||||
|
||||
msgid "Environment"
|
||||
msgstr "הביבס"
|
||||
|
||||
|
||||
msgid "End"
|
||||
msgstr "ףוס"
|
||||
|
||||
|
||||
msgid "Start"
|
||||
msgstr "הלחתה"
|
||||
|
||||
|
||||
msgid "Density"
|
||||
msgstr "תופיפצ"
|
||||
|
||||
|
||||
msgid "Generated"
|
||||
msgstr "רצוימ"
|
||||
|
||||
|
||||
msgid "Window"
|
||||
msgstr "ןולח"
|
||||
|
||||
|
||||
msgid "Header"
|
||||
msgstr "תרתוכ"
|
||||
|
||||
|
||||
msgid "Tools"
|
||||
msgstr "םילכ"
|
||||
|
||||
|
||||
msgid "Edit Mode"
|
||||
msgstr "הכירע בצמ"
|
||||
|
||||
|
||||
msgid "Mirror"
|
||||
msgstr "הארמ"
|
||||
|
||||
|
||||
msgid "Space"
|
||||
msgstr "חוור"
|
||||
|
||||
|
||||
msgid "Red"
|
||||
msgstr "םודא"
|
||||
|
||||
|
||||
msgid "Green"
|
||||
msgstr "קורי"
|
||||
|
||||
|
||||
msgid "Blue"
|
||||
msgstr "לוחכ"
|
||||
|
||||
|
||||
msgid "Mask"
|
||||
msgstr "הכסמ"
|
||||
|
||||
|
||||
msgid "Up"
|
||||
msgstr "הלעמ"
|
||||
|
||||
|
||||
msgid "Mean"
|
||||
msgstr "עצוממ"
|
||||
|
||||
|
||||
msgid "Movie"
|
||||
msgstr "טרס"
|
||||
|
||||
|
||||
msgid "Roughness"
|
||||
msgstr "תוסג"
|
||||
|
||||
|
||||
msgid "Specular"
|
||||
msgstr "רלקפסא"
|
||||
|
||||
|
||||
msgid "Both"
|
||||
msgstr "םהינש"
|
||||
|
||||
|
||||
msgid "Sculpt Mode"
|
||||
msgstr "לוסיפ בצמ"
|
||||
|
||||
|
||||
msgid "Vertex Paint"
|
||||
msgstr "םידוקדוק תעיבצ"
|
||||
|
||||
|
||||
msgid "Weight Paint"
|
||||
msgstr "לקשמ תעיבצ"
|
||||
|
||||
|
||||
msgid "Quadratic"
|
||||
msgstr "יעוביר"
|
||||
|
||||
|
||||
msgid "Mist"
|
||||
msgstr "לפרע"
|
||||
|
||||
|
||||
msgid "Color Management"
|
||||
msgstr "עבצ לוהינ"
|
||||
|
||||
|
||||
msgid "Apply"
|
||||
msgstr "לחה"
|
||||
|
||||
|
||||
msgid "Python"
|
||||
msgstr "Python"
|
||||
|
||||
|
||||
msgid "System"
|
||||
msgstr "תכרעמ"
|
||||
|
||||
|
||||
msgid "Convert"
|
||||
msgstr "רמה"
|
||||
|
||||
|
||||
msgid "World"
|
||||
msgstr "םלוע"
|
||||
|
||||
|
||||
msgid "Lift"
|
||||
msgstr "יוליע"
|
||||
|
||||
|
||||
msgid "Y Axis"
|
||||
msgstr "Y ריצ"
|
||||
|
||||
|
||||
msgid "Background"
|
||||
msgstr "עקר"
|
||||
|
||||
|
||||
msgid "Reflection"
|
||||
msgstr "תופקתשה"
|
||||
|
||||
|
||||
msgid "Emission"
|
||||
msgstr "הטילפ"
|
||||
|
||||
|
||||
msgid "Down"
|
||||
msgstr "הטמ"
|
||||
|
||||
|
||||
msgid "Lamp"
|
||||
msgstr "הרונמ"
|
||||
|
||||
|
||||
msgid "Reset"
|
||||
msgstr "לוחתא"
|
||||
|
||||
|
||||
msgid "Manual"
|
||||
msgstr "ינדי"
|
||||
|
||||
|
||||
msgid "Credits"
|
||||
msgstr "תודות"
|
||||
|
||||
|
||||
msgid "Detail"
|
||||
msgstr "טוריפ"
|
||||
|
||||
|
||||
msgid "Dimension"
|
||||
msgstr "דמימ"
|
||||
|
||||
|
||||
msgid "Location:"
|
||||
msgstr ":םוקימ"
|
||||
|
||||
|
||||
msgid "Nothing selected"
|
||||
msgstr "רבד רחבנ אל"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Change Shortcut"
|
||||
msgstr "ךרד־רוציק הנש"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Reset All to Default Values"
|
||||
msgstr "לדחמה תרירב יכרעל לכה לחתא"
|
||||
|
||||
|
||||
msgctxt "Operator"
|
||||
msgid "Remove Shortcut"
|
||||
msgstr "ךרד־רוציק רסה"
|
||||
|
||||
|
||||
msgid "Value:"
|
||||
msgstr ":ךרע"
|
||||
|
||||
|
||||
msgid "(Gamma Corrected)"
|
||||
msgstr "(אמג ןקותמ)"
|
||||
|
||||
|
||||
msgid "Shortcut: %s"
|
||||
msgstr "%s :ךרד־רוציק"
|
||||
|
||||
|
||||
msgid "Python: %s"
|
||||
msgstr "Python: %s"
|
||||
|
||||
|
||||
msgid "Radians: %f"
|
||||
msgstr "%f :םינאידר"
|
||||
|
||||
|
||||
msgid "Expression: %s"
|
||||
msgstr "%s :יוטיב"
|
||||
|
||||
|
||||
msgid "Library: %s"
|
||||
msgstr "%s :היירפס"
|
||||
|
||||
|
||||
msgid "Disabled: %s"
|
||||
msgstr "%s :תבשומ"
|
||||
|
||||
|
||||
msgid "Python: %s.%s"
|
||||
msgstr "Python: %s.%s"
|
||||
|
||||
|
||||
msgid "No Properties"
|
||||
msgstr "םינייפאמ אלל"
|
||||
|
||||
|
||||
msgid "Delete points"
|
||||
msgstr "תודוקנ קחמ"
|
||||
|
||||
|
||||
msgid "Stop this job"
|
||||
msgstr "וז הדובע רוצע"
|
||||
|
||||
|
||||
msgid "%d items"
|
||||
msgstr "%d םיטירפ"
|
||||
|
||||
|
||||
msgid "Fields"
|
||||
msgstr "תודש"
|
||||
|
||||
|
||||
msgid "File Path:"
|
||||
msgstr ":ץבוק ביתנ"
|
||||
|
||||
|
||||
msgid "File path"
|
||||
msgstr "ץבוק ביתנ"
|
||||
|
||||
|
||||
msgid "Cancel"
|
||||
msgstr "לוטיב"
|
||||
|
||||
|
||||
msgid "File name"
|
||||
msgstr "ץבוק םש"
|
||||
|
||||
|
||||
msgid "Add Modifier"
|
||||
msgstr "הנשמ ףסוה"
|
||||
|
||||
|
||||
msgid "Select Layer"
|
||||
msgstr "הבכש רחב"
|
||||
|
||||
|
||||
msgid " + Z"
|
||||
msgstr " + Z"
|
||||
|
||||
|
||||
msgid "Label Size"
|
||||
msgstr "תיוות לדוג"
|
||||
|
||||
|
||||
msgid "Squash"
|
||||
msgstr "ךעמ"
|
||||
|
||||
|
||||
msgid "Disconnect"
|
||||
msgstr "קתנ"
|
||||
|
||||
|
||||
msgid "Dependency Loop"
|
||||
msgstr "תויולת תאלול"
|
||||
|
||||
|
||||
msgid "Vertex:"
|
||||
msgstr ":דוקדוק"
|
||||
|
||||
|
||||
msgid "Median:"
|
||||
msgstr ":ןויצח"
|
||||
|
||||
|
||||
msgid "Radius X:"
|
||||
msgstr ":X סוידר"
|
||||
|
||||
|
||||
msgid "Radius Y:"
|
||||
msgstr ":Y סוידר"
|
||||
|
||||
|
||||
msgid "Weight:"
|
||||
msgstr ":לקשמ"
|
||||
|
||||
|
||||
msgid "Radius:"
|
||||
msgstr ":סוידר"
|
||||
|
||||
|
||||
msgid "Mean Radius:"
|
||||
msgstr ":עצוממ סוידר"
|
||||
|
||||
|
||||
msgid "Modify"
|
||||
msgstr "הנש"
|
||||
|
||||
|
||||
msgid "Color Space:"
|
||||
msgstr ":עבצ בחרמ"
|
||||
|
||||
|
||||
msgid "Key Color"
|
||||
msgstr "חתפמ עבצ"
|
||||
|
||||
|
||||
msgid "Image 1"
|
||||
msgstr "1 הנומת"
|
||||
|
||||
|
||||
msgid "Image 2"
|
||||
msgstr "2 הנומת"
|
||||
|
||||
|
||||
msgid "Std Dev"
|
||||
msgstr "ןקת תייטס"
|
||||
|
||||
|
||||
msgid "Path:"
|
||||
msgstr ":ביתנ"
|
||||
|
||||
|
||||
msgid "Add Input"
|
||||
msgstr "טלק ףסוה"
|
||||
|
||||
|
||||
msgid "Incoming"
|
||||
msgstr "סנכנ"
|
||||
|
||||
|
||||
msgid "Color2"
|
||||
msgstr "2עבצ"
|
||||
|
||||
|
||||
msgid "Row Height"
|
||||
msgstr "הרוש הבוג"
|
||||
|
||||
|
||||
msgid "Bricks 1"
|
||||
msgstr "1 םינבל"
|
||||
|
||||
|
||||
msgid "Bricks 2"
|
||||
msgstr "2 םינבל"
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,9 @@
|
|||
|
||||
msgctxt "Operator"
|
||||
msgid "Duplicate Objects"
|
||||
msgstr "bbbbbbbbbbbbb"
|
||||
|
||||
|
||||
msgid "Duplicate Objects"
|
||||
msgstr "aaaaaaaaa"
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -33,15 +33,15 @@ aggressive = 2
|
|||
|
||||
# Exclude:
|
||||
# - `./extern/` because it's maintained separately.
|
||||
# - `./release/scripts/addons*` & `./source/tools/` because they are external repositories
|
||||
# - `./scripts/addons*` & `./tools/` because they are external repositories
|
||||
# which can contain their own configuration and be handled separately.
|
||||
# - `./release/scripts/modules/rna_manual_reference.py` because it's a generated data-file.
|
||||
# - `./scripts/modules/rna_manual_reference.py` because it's a generated data-file.
|
||||
exclude = """
|
||||
./extern/*,
|
||||
./release/scripts/addons/*,
|
||||
./release/scripts/addons_contrib/*,
|
||||
./release/scripts/modules/rna_manual_reference.py,
|
||||
./source/tools/*,
|
||||
./scripts/addons/*,
|
||||
./scripts/addons_contrib/*,
|
||||
./scripts/modules/rna_manual_reference.py,
|
||||
./tools/*,
|
||||
"""
|
||||
|
||||
# Omit settings such as `jobs`, `in_place` & `recursive` as they can cause editor utilities that auto-format on save
|
||||
|
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
Subproject commit 4331c8e76c2f42b9fd903716c333d6cdeaa5cebd
|
|
@ -1,7 +1,7 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
/**
|
||||
* Generated by 'source/tools/utils/blender_theme_as_c.py'
|
||||
* Generated by 'tools/utils/blender_theme_as_c.py'
|
||||
*
|
||||
* Do not hand edit this file!
|
||||
*/
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Subproject commit b3f0ffc587d197b37eac9a1566d1d24b7bee7d9a
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 14ab9273409ea0231d08ba6e86fdc73d4e459e99
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue