From fe8b197269fda1b6747c022eb93b2781353008d5 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Tue, 23 Aug 2016 21:48:16 +0200 Subject: Fix T49150: make new 'operator categories' in search menu i18n-aware. --- .../modules/bl_i18n_utils/bl_extract_messages.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'release') diff --git a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py index 5a3eda567be..dc1ddbfe057 100644 --- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py +++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py @@ -375,6 +375,7 @@ def dump_rna_messages(msgs, reports, settings, verbose=False): walk_keymap_hierarchy(lvl[3], msgsrc) # Dump Messages + operator_categories = {} def process_cls_list(cls_list): if not cls_list: return @@ -391,6 +392,16 @@ def dump_rna_messages(msgs, reports, settings, verbose=False): cls_id = bl_rna.identifier + "." + cls_id bl_rna = bl_rna.base 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: print(cls_list) 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): reports["rna_structs_skipped"].append(cls) else: + operator_category(cls) walk_class(cls) # Recursively process 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"...). 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! from bpy_extras.keyconfig_utils import KM_HIERARCHY walk_keymap_hierarchy(KM_HIERARCHY, "KM_HIERARCHY") -- cgit v1.2.3