Fix #105548: I18n: many keymap sections cannot be translated
Ensure tool keymaps are registered when calling: bl_keymap_utils.keymap_hierarchy.generate() in background mode. This is an alternative to !116299 that doesn't require keymap initialization in background mode. Thanks to Damien Picard's for reporting & investigating this issue.
This commit is contained in:
parent
6007838bb2
commit
c59b9ff9c2
|
@ -26,6 +26,13 @@ def _km_hierarchy_iter_recursive(items):
|
|||
|
||||
|
||||
def generate():
|
||||
import bpy
|
||||
|
||||
if bpy.app.background:
|
||||
from bl_ui.space_toolsystem_common import ToolSelectPanelHelper
|
||||
for cls in ToolSelectPanelHelper.__subclasses__():
|
||||
cls.register_ensure()
|
||||
|
||||
return list(_km_hierarchy_iter_recursive(_km_hierarchy))
|
||||
|
||||
|
||||
|
|
|
@ -499,6 +499,15 @@ class ToolSelectPanelHelper:
|
|||
if kc_default is not kc:
|
||||
kc_default.keymaps.new(km_idname, **km_kwargs)
|
||||
|
||||
@classmethod
|
||||
def register_ensure(cls):
|
||||
"""
|
||||
Ensure register has created key-map data, needed when key-map data is needed in background mode.
|
||||
"""
|
||||
if cls._has_keymap_data:
|
||||
return
|
||||
cls.register()
|
||||
|
||||
@classmethod
|
||||
def register(cls):
|
||||
wm = bpy.context.window_manager
|
||||
|
@ -513,6 +522,7 @@ class ToolSelectPanelHelper:
|
|||
|
||||
# ignore in background mode
|
||||
if kc_default is None:
|
||||
cls._has_keymap_data = False
|
||||
return
|
||||
|
||||
for context_mode, tools in cls.tools_all():
|
||||
|
@ -530,6 +540,8 @@ class ToolSelectPanelHelper:
|
|||
if callable(keymap_data[0]):
|
||||
cls._km_action_simple(kc_default, kc_default, context_descr, item.label, keymap_data)
|
||||
|
||||
cls._has_keymap_data = True
|
||||
|
||||
@classmethod
|
||||
def keymap_ui_hierarchy(cls, context_mode):
|
||||
# See: bpy_extras.keyconfig_utils
|
||||
|
|
Loading…
Reference in New Issue