Commit: 3400fe3ecee99cb6a74455943f2755e6f22ef047 Author: Campbell Barton Date: Fri Mar 15 12:45:41 2019 +1100 Branches: master https://developer.blender.org/rB3400fe3ecee99cb6a74455943f2755e6f22ef047
Tool System: split UI label from tool identifiers Prepare for exposing tool registration to the Python API. - Generated tools can use their own prefix so naming collisions won't happen between hard coded & generated tools. - Add-on authors can use the add-on name as a prefix. Currently the names match, renaming will happen next. =================================================================== M release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py M release/scripts/presets/keyconfig/keymap_data/blender_default.py M release/scripts/startup/bl_operators/wm.py M release/scripts/startup/bl_ui/space_toolsystem_common.py M release/scripts/startup/bl_ui/space_toolsystem_toolbar.py M release/scripts/startup/bl_ui/space_topbar.py M release/scripts/startup/bl_ui/space_view3d.py M source/blender/editors/interface/interface_query.c M source/blender/editors/interface/interface_region_tooltip.c M source/blender/makesrna/intern/rna_workspace.c M source/blender/makesrna/intern/rna_workspace_api.c M source/blender/windowmanager/WM_toolsystem.h M source/blender/windowmanager/intern/wm_keymap_utils.c M source/blender/windowmanager/intern/wm_toolsystem.c =================================================================== diff --git a/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py b/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py index 66d05903335..0c812780a23 100644 --- a/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py +++ b/release/scripts/modules/bl_keymap_utils/keymap_from_toolbar.py @@ -59,7 +59,7 @@ def generate(context, space_type): for item in ToolSelectPanelHelper._tools_flatten(cls.tools_from_context(context)) if item is not None ] - items_all_text = {item_container[0].text for item_container in items_all} + items_all_id = {item_container[0].idname for item_container in items_all} # Press the toolbar popup key again to set the default tool, # this is useful because the select box tool is useful as a way @@ -70,7 +70,7 @@ def generate(context, space_type): # TODO: support other tools for modes which don't use this tool. tap_reset_tool = "Cursor" # Check the tool is available in the current context. - if tap_reset_tool not in items_all_text: + if tap_reset_tool not in items_all_id: use_tap_reset = False from bl_operators.wm import use_toolbar_release_hack @@ -102,13 +102,13 @@ def generate(context, space_type): for kmi_src in keymap_src.keymap_items: # Skip tools that aren't currently shown. if ( - (kmi_src.idname == "wm.tool_set_by_name") and - (kmi_src.properties.name not in items_all_text) + (kmi_src.idname == "wm.tool_set_by_id") and + (kmi_src.properties.name not in items_all_id) ): continue keymap.keymap_items.new_from_item(kmi_src) del keymap_src - del items_all_text + del items_all_id kmi_unique_args = set() @@ -122,7 +122,7 @@ def generate(context, space_type): cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type) if use_hack_properties: - kmi_hack = keymap.keymap_items.new("wm.tool_set_by_name", 'NONE', 'PRESS') + kmi_hack = keymap.keymap_items.new("wm.tool_set_by_id", 'NONE', 'PRESS') kmi_hack_properties = kmi_hack.properties kmi_hack.active = False @@ -148,9 +148,9 @@ def generate(context, space_type): # First check for direct assignment, if this tool already has a key, no need to add a new one. kmi_hack_properties.name = tap_reset_tool kmi_found = wm.keyconfigs.find_item_from_operator( - idname="wm.tool_set_by_name", + idname="wm.tool_set_by_id", context='INVOKE_REGION_WIN', - # properties={"name": item.text}, + # properties={"name": item.idname}, properties=kmi_hack_properties, include={'KEYBOARD'}, )[1] @@ -165,7 +165,7 @@ def generate(context, space_type): items_all[:] = [ item_container for item_container in items_all - if item_container[0].text != tap_reset_tool + if item_container[0].idname != tap_reset_tool ] # ----------------------- @@ -179,11 +179,11 @@ def generate(context, space_type): # Only check the first item in the tools key-map (a little arbitrary). if use_hack_properties: # First check for direct assignment. - kmi_hack_properties.name = item.text + kmi_hack_properties.name = item.idname kmi_found = wm.keyconfigs.find_item_from_operator( - idname="wm.tool_set_by_name", + idname="wm.tool_set_by_id", context='INVOKE_REGION_WIN', - # properties={"name": item.text}, + # properties={"name": item.idname}, properties=kmi_hack_properties, include={'KEYBOARD'}, )[1] @@ -229,7 +229,7 @@ def generate(context, space_type): elif item.keymap is not None: km = keyconf_user.keymaps.get(item.keymap[0]) if km is None: - print("Keymap", repr(item.keymap[0]), "not found for tool", item.text) + print("Keymap", repr(item.keymap[0]), "not found for tool", item.idname) kmi_found = None else: kmi_first = km.keymap_items @@ -274,12 +274,12 @@ def generate(context, space_type): if ( (len(kmi_found_type) == 1) or # When a tool is being activated instead of running an operator, just copy the shortcut. - (kmi_found.idname in {"wm.tool_set_by_name", "WM_OT_tool_set_by_name"}) + (kmi_found.idname in {"wm.tool_set_by_id", "WM_OT_tool_set_by_id"}) ): kmi_args = {"type": kmi_found_type, **modifier_keywords_from_item(kmi_found)} if kmi_unique_or_pass(kmi_args): - kmi = keymap.keymap_items.new(idname="wm.tool_set_by_name", value='PRESS', **kmi_args) - kmi.properties.name = item.text + kmi = keymap.keymap_items.new(idname="wm.tool_set_by_id", value='PRESS', **kmi_args) + kmi.properties.name = item.idname item_container[2] = kmi # ------------------------------------------------------------------------- @@ -310,8 +310,8 @@ def generate(context, space_type): kmi_args = {"type": kmi_found_type, **modifier_keywords_from_item(kmi_found)} del kmi_args["key_modifier"] if kmi_unique_or_pass(kmi_args): - kmi = keymap.keymap_items.new(idname="wm.tool_set_by_name", value='PRESS', **kmi_args) - kmi.properties.name = item.text + kmi = keymap.keymap_items.new(idname="wm.tool_set_by_id", value='PRESS', **kmi_args) + kmi.properties.name = item.idname item_container[2] = kmi # ------------------------------------------------------------------------- @@ -331,16 +331,16 @@ def generate(context, space_type): item, kmi_found, kmi_exist = item_container if kmi_exist: continue - kmi_type = item.text[0].upper() + kmi_type = item.label[0].upper() kmi_tuple = kmi_type_alpha_args_tuple.get(kmi_type) if kmi_tuple and kmi_tuple not in kmi_unique_args: kmi_unique_args.add(kmi_tuple) kmi = keymap.keymap_items.new( - idname="wm.tool_set_by_name", + idname="wm.tool_set_by_id", value='PRESS', **kmi_type_alpha_args[kmi_type], ) - kmi.properties.name = item.text + kmi.properties.name = item.idname item_container[2] = kmi del kmi_type_alpha_char, kmi_type_alpha_args, kmi_type_alpha_args_tuple @@ -388,8 +388,8 @@ def generate(context, space_type): break if kmi_args is not None: - kmi = keymap.keymap_items.new(idname="wm.tool_set_by_name", value='PRESS', **kmi_args) - kmi.properties.name = item.text + kmi = keymap.keymap_items.new(idname="wm.tool_set_by_id", value='PRESS', **kmi_args) + kmi.properties.name = item.idname item_container[2] = kmi kmi_unique_args.add(kmi_tuple) @@ -398,8 +398,8 @@ def generate(context, space_type): kmi_args["type"] = key kmi_tuple = dict_as_tuple(kmi_args) if not kmi_tuple in kmi_unique_args: - kmi = keymap.keymap_items.new(idname="wm.tool_set_by_name", value='PRESS', **kmi_args) - kmi.properties.name = item.text + kmi = keymap.keymap_items.new(idname="wm.tool_set_by_id", value='PRESS', **kmi_args) + kmi.properties.name = item.idname kmi_unique_args.add(kmi_tuple) @@ -426,7 +426,7 @@ def generate(context, space_type): del kmi_toolbar_tuple kmi = keymap.keymap_items.new( - "wm.tool_set_by_name", + "wm.tool_set_by_id", value='PRESS' if use_toolbar_release_hack else 'DOUBLE_CLICK', **kmi_toolbar_args_available, ) @@ -445,7 +445,7 @@ def generate(context, space_type): # ... or pass through to let the toolbar know we're released. # Let the operator know we're released. kmi = keymap.keymap_items.new( - "wm.tool_set_by_name", + "wm.tool_set_by_id", type=kmi_toolbar_type, value='RELEASE', any=True, diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 9b41e4c6a4a..91651b7f549 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -143,11 +143,11 @@ def op_panel(menu, kmi_args, kmi_data=()): def op_tool(tool, kmi_args): - return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool)]}) + return ("wm.tool_set_by_id", kmi_args, {"properties": [("name", tool)]}) def op_tool_cycle(tool, kmi_args): - return ("wm.tool_set_by_name", kmi_args, {"properties": [("name", tool), ("cycle", True)]}) + return ("wm.tool_set_by_id", kmi_args, {"properties": [("name", tool), ("cycle", True)]}) # ------------------------------------------------------------------------------ diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index cf513d61dbe..9e0e090fb28 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1486,14 +1486,14 @@ class WM_OT_owner_disable(Operator): -class WM_OT_tool_set_by_name(Operator): +class WM_OT_tool_set_by_id(Operator): """Set the tool by name (for keymaps)""" - bl_idname = "wm.tool_set_by_name" + bl_idname = "wm.tool_set_by_id" @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs