Fix T49150: make new 'operator categories' in search menu i18n-aware.
This commit is contained in:
@@ -375,6 +375,7 @@ def dump_rna_messages(msgs, reports, settings, verbose=False):
|
|||||||
walk_keymap_hierarchy(lvl[3], msgsrc)
|
walk_keymap_hierarchy(lvl[3], msgsrc)
|
||||||
|
|
||||||
# Dump Messages
|
# Dump Messages
|
||||||
|
operator_categories = {}
|
||||||
def process_cls_list(cls_list):
|
def process_cls_list(cls_list):
|
||||||
if not cls_list:
|
if not cls_list:
|
||||||
return
|
return
|
||||||
@@ -391,6 +392,16 @@ def dump_rna_messages(msgs, reports, settings, verbose=False):
|
|||||||
cls_id = bl_rna.identifier + "." + cls_id
|
cls_id = bl_rna.identifier + "." + cls_id
|
||||||
bl_rna = bl_rna.base
|
bl_rna = bl_rna.base
|
||||||
return cls_id
|
return cls_id
|
||||||
|
|
||||||
|
def operator_category(cls):
|
||||||
|
"""Extract operators' categories, as displayed in 'search' space menu."""
|
||||||
|
# NOTE: keep in sync with C code in ui_searchbox_region_draw_cb__operator().
|
||||||
|
if issubclass(cls, bpy.types.OperatorProperties) and "_OT_" in cls.__name__:
|
||||||
|
cat_id = cls.__name__.split("_OT_")[0]
|
||||||
|
if cat_id not in operator_categories:
|
||||||
|
cat_str = cat_id.capitalize() + ":"
|
||||||
|
operator_categories[cat_id] = cat_str
|
||||||
|
|
||||||
if verbose:
|
if verbose:
|
||||||
print(cls_list)
|
print(cls_list)
|
||||||
cls_list.sort(key=full_class_id)
|
cls_list.sort(key=full_class_id)
|
||||||
@@ -402,6 +413,7 @@ def dump_rna_messages(msgs, reports, settings, verbose=False):
|
|||||||
if (cls in blacklist_rna_class) or issubclass(cls, bpy.types.Operator):
|
if (cls in blacklist_rna_class) or issubclass(cls, bpy.types.Operator):
|
||||||
reports["rna_structs_skipped"].append(cls)
|
reports["rna_structs_skipped"].append(cls)
|
||||||
else:
|
else:
|
||||||
|
operator_category(cls)
|
||||||
walk_class(cls)
|
walk_class(cls)
|
||||||
# Recursively process subclasses.
|
# Recursively process subclasses.
|
||||||
process_cls_list(cls.__subclasses__())
|
process_cls_list(cls.__subclasses__())
|
||||||
@@ -409,6 +421,11 @@ def dump_rna_messages(msgs, reports, settings, verbose=False):
|
|||||||
# Parse everything (recursively parsing from bpy_struct "class"...).
|
# Parse everything (recursively parsing from bpy_struct "class"...).
|
||||||
process_cls_list(bpy.types.ID.__base__.__subclasses__())
|
process_cls_list(bpy.types.ID.__base__.__subclasses__())
|
||||||
|
|
||||||
|
# Finalize generated 'operator categories' messages.
|
||||||
|
for cat_str in operator_categories.values():
|
||||||
|
process_msg(msgs, bpy.app.translations.contexts.operator_default, cat_str, "Generated operator category",
|
||||||
|
reports, check_ctxt_rna, settings)
|
||||||
|
|
||||||
# And parse keymaps!
|
# And parse keymaps!
|
||||||
from bpy_extras.keyconfig_utils import KM_HIERARCHY
|
from bpy_extras.keyconfig_utils import KM_HIERARCHY
|
||||||
walk_keymap_hierarchy(KM_HIERARCHY, "KM_HIERARCHY")
|
walk_keymap_hierarchy(KM_HIERARCHY, "KM_HIERARCHY")
|
||||||
|
|||||||
@@ -1380,6 +1380,7 @@ static void ui_searchbox_region_draw_cb__operator(const bContext *UNUSED(C), ARe
|
|||||||
rect_pre.xmax = rect_post.xmin = rect.xmin + ((rect.xmax - rect.xmin) / 4);
|
rect_pre.xmax = rect_post.xmin = rect.xmin + ((rect.xmax - rect.xmin) / 4);
|
||||||
|
|
||||||
/* widget itself */
|
/* widget itself */
|
||||||
|
/* NOTE: i18n messages extracting tool does the same, please keep it in sync. */
|
||||||
{
|
{
|
||||||
wmOperatorType *ot = data->items.pointers[a];
|
wmOperatorType *ot = data->items.pointers[a];
|
||||||
|
|
||||||
@@ -1400,7 +1401,8 @@ static void ui_searchbox_region_draw_cb__operator(const bContext *UNUSED(C), ARe
|
|||||||
}
|
}
|
||||||
|
|
||||||
rect_pre.xmax += 4; /* sneaky, avoid showing ugly margin */
|
rect_pre.xmax += 4; /* sneaky, avoid showing ugly margin */
|
||||||
ui_draw_menu_item(&data->fstyle, &rect_pre, text_pre, data->items.icons[a], state, false);
|
ui_draw_menu_item(&data->fstyle, &rect_pre, CTX_IFACE_(BLT_I18NCONTEXT_OPERATOR_DEFAULT, text_pre),
|
||||||
|
data->items.icons[a], state, false);
|
||||||
ui_draw_menu_item(&data->fstyle, &rect_post, data->items.names[a], 0, state, data->use_sep);
|
ui_draw_menu_item(&data->fstyle, &rect_post, data->items.names[a], 0, state, data->use_sep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user