From 33eabb82207e165de45fb6a0ea74dec962de7265 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Sat, 23 Nov 2019 13:11:39 +0300 Subject: Action Constraint: introduce a mix mode setting. Currently the action channels are applied after the existing transformation, as if the action controlled a child of the bone. This is not very natural, but more importantly, the transform tools are not designed to work conveniently with an additional 'pseudo-child' transformation, resulting in effects like an unexpected pivot location. Implementing a Before mode that integrates the action channels as if applied to a parent allows using the special transform tool code intended for dealing with such constraints. Note that in either mode, Action constraints should be added in reverse order, putting a new constraint before the existing ones that the Action was keyframed to work together. In order to implement the option, extract a utility from the Copy Transform constraint code for combining transforms with special anti-shear scale handling that matches the Aligned Inherit Scale mode. The Before mode also requires switching the constraint to the Local owner space, while the After mode can still use the World space for efficiency as before. Since the constraint doesn't have an Owner space option in the UI, this has to be handled in an RNA setter. For full backward compatibility, the original simple matrix multiplication mode is preserved as the third option, but it is not recommended due to creating shear. Differential Revision: https://developer.blender.org/D6297 --- release/scripts/startup/bl_ui/properties_constraint.py | 2 ++ 1 file changed, 2 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_constraint.py b/release/scripts/startup/bl_ui/properties_constraint.py index b75d67b5350..3fc54ff6d12 100644 --- a/release/scripts/startup/bl_ui/properties_constraint.py +++ b/release/scripts/startup/bl_ui/properties_constraint.py @@ -492,6 +492,8 @@ class ConstraintButtonsPanel: col.prop(con, "frame_start", text="Start") col.prop(con, "frame_end", text="End") + layout.prop(con, "mix_mode", text="Mix") + def LOCKED_TRACK(self, _context, layout, con): self.target_template(layout, con) -- cgit v1.2.3 From c2a37867f21be164a059552678ff3339bac39a7c Mon Sep 17 00:00:00 2001 From: Aaron Carlisle Date: Fri, 27 Dec 2019 14:38:45 -0600 Subject: UI: Remove leftover look dev (rename to HDRI preview) In Blender 2.81 Look Dev was renamed to Material Preview also the old look dev HDRIs could also be used in both cycles and eevee. A more generic name was need. --- release/scripts/startup/bl_ui/space_userpref.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 9527c7f4de8..03450fc44fb 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -2003,7 +2003,7 @@ class USERPREF_PT_studiolight_matcaps(StudioLightPanel, StudioLightPanelMixin, P class USERPREF_PT_studiolight_world(StudioLightPanel, StudioLightPanelMixin, Panel): - bl_label = "LookDev HDRIs" + bl_label = "HDRIs" sl_type = 'WORLD' def draw_header_preset(self, _context): -- cgit v1.2.3 From 86832ececcb9d5ed8fa05a02415f7c31905eae4a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 2 Jan 2020 17:00:17 +1100 Subject: Tool System: adjust Smooth/Randomize modal operator behavior Previously the default values were left non-zero to avoid having to update scripts. However, this meant it wasn't possible to setup non-modal key bindings for smooth & randomize. Now these operators follow logic of many other operators where setting the value executes immediately, leaving unset runs modal. Existing keymaps & scripts will need to be updated. Addresses issue raised in f4a4ec84255a. --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 4 ++-- release/scripts/startup/bl_ui/space_view3d.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 173e7e5f332..36701a7013a 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5535,7 +5535,7 @@ def km_3d_view_tool_edit_mesh_smooth(params): {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ ("mesh.vertices_smooth", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("factor", 0.0), ("wait_for_input", False)]}), + {"properties": [("wait_for_input", False)]}), ]}, ) @@ -5686,7 +5686,7 @@ def km_3d_view_tool_edit_curve_randomize(params): {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ ("transform.vertex_random", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("offset", 0.0), ("wait_for_input", False)]}), + {"properties": [("wait_for_input", False)]}), ]}, ) diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index fee8845d88e..02dc03be127 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -918,7 +918,7 @@ class VIEW3D_MT_transform_base(Menu): if context.mode != 'OBJECT': layout.operator("transform.vertex_warp", text="Warp") layout.operator_context = 'EXEC_DEFAULT' - layout.operator("transform.vertex_random", text="Randomize") + layout.operator("transform.vertex_random", text="Randomize").offset = 0.1 layout.operator_context = 'INVOKE_REGION_WIN' @@ -3530,8 +3530,8 @@ class VIEW3D_MT_edit_mesh_context_menu(Menu): col.operator("transform.shear", text="Shear") col.operator("transform.vert_slide", text="Slide Vertices") col.operator_context = 'EXEC_DEFAULT' - col.operator("transform.vertex_random", text="Randomize Vertices") - col.operator("mesh.vertices_smooth", text="Smooth Vertices") + col.operator("transform.vertex_random", text="Randomize Vertices").offset = 0.1 + col.operator("mesh.vertices_smooth", text="Smooth Vertices").factor = 0.5 col.operator_context = 'INVOKE_REGION_WIN' col.operator("mesh.vertices_smooth_laplacian", text="Smooth Laplacian") @@ -3747,7 +3747,7 @@ class VIEW3D_MT_edit_mesh_vertices(Menu): layout.operator("transform.vert_slide", text="Slide Vertices") layout.operator_context = 'EXEC_DEFAULT' - layout.operator("mesh.vertices_smooth", text="Smooth Vertices") + layout.operator("mesh.vertices_smooth", text="Smooth Vertices").factor = 0.5 layout.operator_context = 'INVOKE_REGION_WIN' layout.separator() -- cgit v1.2.3 From 461261c18dbf7d1ab52427b362752d25362311d6 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Thu, 2 Jan 2020 15:47:19 +0100 Subject: Fix T69207: Surface objects showed curves ADD menu (Shift+A) in editmode --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 36701a7013a..488df3f6f72 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -3589,7 +3589,7 @@ def km_curve(params): ) items.extend([ - op_menu("VIEW3D_MT_curve_add", {"type": 'A', "value": 'PRESS', "shift": True}), + op_menu("TOPBAR_MT_edit_curve_add", {"type": 'A', "value": 'PRESS', "shift": True}), ("curve.handle_type_set", {"type": 'V', "value": 'PRESS'}, None), ("curve.vertex_add", {"type": params.action_mouse, "value": 'CLICK', "ctrl": True}, None), *_template_items_select_actions(params, "curve.select_all"), -- cgit v1.2.3 From de530a95dc7b482dc22c933b9b8b2a98c79b5663 Mon Sep 17 00:00:00 2001 From: mano-wii Date: Thu, 2 Jan 2020 12:48:30 -0300 Subject: Transform: Pose: Partial support for Auto IK + X-Mirror Fix T69572 TODO: support `Relative-Mirror` as well. Maniphest Tasks: T69572 Differential Revision: https://developer.blender.org/D5862 --- release/scripts/startup/bl_ui/space_view3d_toolbar.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index f0c4aaa9344..011c2a8b39a 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -313,7 +313,7 @@ class VIEW3D_PT_tools_posemode_options(View3DPanel, Panel): layout.prop(pose, "use_auto_ik") layout.prop(pose, "use_mirror_x") col = layout.column() - col.active = pose.use_mirror_x + col.active = pose.use_mirror_x and not pose.use_auto_ik col.prop(pose, "use_mirror_relative") layout.label(text="Affect Only") -- cgit v1.2.3 From a8ce9a143abbb51eae28e5d0cae1fb310bd0c24c Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 3 Jan 2020 12:26:36 +1100 Subject: Tool System: store the fallback tool for re-use The fallback tool was run-time only data, now it's stored in the blend file. --- .../startup/bl_ui/space_toolsystem_common.py | 28 +++++++++++++++++----- 1 file changed, 22 insertions(+), 6 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 7b0a769ae62..0a42e1232d3 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -354,6 +354,16 @@ class ToolSelectPanelHelper: i += 1 return None, -1 + @classmethod + def _tool_group_active_set_by_id(cls, context, idname_group, idname): + item_group = cls._tool_get_group_by_id(context, idname_group, coerce=True) + if item_group: + for i, item in enumerate(item_group): + if item and item.idname == idname: + cls._tool_group_active[item_group[0].idname] = i + return True + return False + @staticmethod def _tool_active_from_context(context, space_type, mode=None, create=False): if space_type in {'VIEW_3D', 'PROPERTIES'}: @@ -660,10 +670,10 @@ class ToolSelectPanelHelper: *, is_horizontal_layout=False, ): - tool_fallback = tool.tool_fallback + idname_fallback = tool.idname_fallback space_type = tool.space_type cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type) - item_fallback, _index = cls._tool_get_by_id(context, tool_fallback) + item_fallback, _index = cls._tool_get_by_id(context, idname_fallback) if item_fallback is not None: draw_settings = item_fallback.draw_settings if draw_settings is not None: @@ -700,11 +710,11 @@ class ToolSelectPanelHelper: draw_settings(context, layout, tool) if context.preferences.experimental.use_tool_fallback: - tool_fallback = tool.tool_fallback + idname_fallback = tool.idname_fallback else: - tool_fallback = None + idname_fallback = None - if tool_fallback and tool_fallback != item.idname: + if idname_fallback and idname_fallback != item.idname: tool_settings = context.tool_settings # Show popover which looks like an enum but isn't one. @@ -862,6 +872,7 @@ class WM_MT_toolsystem_submenu(Menu): def _activate_by_item(context, space_type, item, index, *, as_fallback=False): cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type) + tool = ToolSelectPanelHelper._tool_active_from_context(context, space_type, create=True) tool_fallback_id = cls.tool_fallback_id if as_fallback: @@ -889,6 +900,12 @@ def _activate_by_item(context, space_type, item, index, *, as_fallback=False): # Done, now get the current tool to replace the item & index. tool_active = ToolSelectPanelHelper._tool_active_from_context(context, space_type) item, index = cls._tool_get_by_id(context, getattr(tool_active, "idname", None)) + else: + # Ensure the active fallback tool is read from saved state (even if the fallback tool is not in use). + stored_idname_fallback = tool.idname_fallback + if stored_idname_fallback: + cls._tool_group_active_set_by_id(context, tool_fallback_id, stored_idname_fallback) + del stored_idname_fallback # Find fallback keymap. item_fallback = None @@ -897,7 +914,6 @@ def _activate_by_item(context, space_type, item, index, *, as_fallback=False): item_fallback, _index = cls._tool_get_active_by_index(context, select_index) # End calculating fallback. - tool = ToolSelectPanelHelper._tool_active_from_context(context, space_type, create=True) tool.setup( idname=item.idname, keymap=item.keymap[0] if item.keymap is not None else "", -- cgit v1.2.3 From b423b891274af6262565e28199c5e53b0cde4374 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 3 Jan 2020 14:04:11 +1100 Subject: Tool System: enable fallback tool by default This defaults to selection when not using a gizmo. The previous behavior to drag anywhere can be set in the tool settings or by selecting the fallback tool (Alt-W). See: T66304 --- release/scripts/startup/bl_operators/wm.py | 3 --- .../startup/bl_ui/space_toolsystem_common.py | 6 +---- .../startup/bl_ui/space_toolsystem_toolbar.py | 7 +++--- release/scripts/startup/bl_ui/space_userpref.py | 27 ++++------------------ 4 files changed, 9 insertions(+), 34 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/wm.py b/release/scripts/startup/bl_operators/wm.py index a677d9932b6..335a2a633cd 100644 --- a/release/scripts/startup/bl_operators/wm.py +++ b/release/scripts/startup/bl_operators/wm.py @@ -1804,9 +1804,6 @@ class WM_OT_toolbar_fallback_pie(Operator): return context.space_data is not None def invoke(self, context, event): - if not context.preferences.experimental.use_tool_fallback: - return {'PASS_THROUGH'} - from bl_ui.space_toolsystem_common import ToolSelectPanelHelper space_type = context.space_data.type cls = ToolSelectPanelHelper._tool_class_from_space_type(space_type) diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 0a42e1232d3..05785b85dfc 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -709,11 +709,7 @@ class ToolSelectPanelHelper: if draw_settings is not None: draw_settings(context, layout, tool) - if context.preferences.experimental.use_tool_fallback: - idname_fallback = tool.idname_fallback - else: - idname_fallback = None - + idname_fallback = tool.idname_fallback if idname_fallback and idname_fallback != item.idname: tool_settings = context.tool_settings diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 5f017e61db7..e0f3a03733e 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -298,10 +298,9 @@ class _defs_transform: layout.label(text="Gizmos:") show_drag = True - if context.preferences.experimental.use_tool_fallback: - tool_settings = context.tool_settings - if tool_settings.workspace_tool_type == 'FALLBACK': - show_drag = False + tool_settings = context.tool_settings + if tool_settings.workspace_tool_type == 'FALLBACK': + show_drag = False if show_drag: props = tool.gizmo_group_properties("VIEW3D_GGT_xform_gizmo") diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 03450fc44fb..b497d688339 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -2087,26 +2087,6 @@ class ExperimentalPanel: url_prefix = "https://developer.blender.org/" - -class USERPREF_PT_experimental_ui(ExperimentalPanel, Panel): - bl_label = "User Interface" - - def draw(self, context): - prefs = context.preferences - experimental = prefs.experimental - - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False - - task = "T66304" - split = layout.split(factor=0.66) - col = split.column() - col.prop(experimental, "use_tool_fallback", text="Use Tool Fallback") - col = split.column() - col.operator("wm.url_open", text=task, icon='URL').url = self.url_prefix + task - - """ # Example panel, leave it here so we always have a template to follow even # after the features are gone from the experimental panel. @@ -2114,10 +2094,14 @@ class USERPREF_PT_experimental_ui(ExperimentalPanel, Panel): class USERPREF_PT_experimental_virtual_reality(ExperimentalPanel, Panel): bl_label = "Virtual Reality" - def draw_centered(self, context, layout): + def draw(self, context): prefs = context.preferences experimental = prefs.experimental + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False + task = "T71347" split = layout.split(factor=0.66) col = split.split() @@ -2242,7 +2226,6 @@ classes = ( USERPREF_PT_studiolight_matcaps, USERPREF_PT_studiolight_world, - USERPREF_PT_experimental_ui, USERPREF_PT_experimental_usd, # Popovers. -- cgit v1.2.3 From d8dc3101033dfc733fd5d1160660a770a35a01e4 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 3 Jan 2020 14:12:28 +1100 Subject: Keymap: default to gizmo drag when LMB select is in use Enable by default since it allows selection without gizmos getting in the way which is a common annoyance. Although this has the drawback that subtle adjustments with gizmos won't be detected until the drag threshold is reached. --- release/scripts/presets/keyconfig/blender.py | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/blender.py b/release/scripts/presets/keyconfig/blender.py index 596b17d734f..11cd76335f1 100644 --- a/release/scripts/presets/keyconfig/blender.py +++ b/release/scripts/presets/keyconfig/blender.py @@ -70,6 +70,7 @@ class Prefs(bpy.types.KeyConfigPreferences): ('DRAG', "Drag", "Drag allows click events to pass through to the tool, adding a small delay"), ), description="Activation event for gizmos that support drag motion", + default='DRAG', update=update_fn, ) -- cgit v1.2.3 From 9fec9c6a0fd1589f12da20b492a14e2801f1eb51 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 4 Jan 2020 14:26:26 +0100 Subject: Industry Compat keymap: Support 1-3 keys in the UV Editor when Sync Selection is enabled This also makes it possible to hold Shift to enable multiple selection modes in Edit Mode --- .../keymap_data/industry_compatible_data.py | 26 +++++++++++++++------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index e6d68510312..13523759b95 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -180,6 +180,19 @@ def _template_items_tool_select_actions_simple(operator, *, type, value, propert ] +def _template_items_editmode_mesh_select_mode(params): + return [ + ( + "mesh.select_mode", + {"type": k, "value": 'PRESS', **key_expand, **key_extend}, + {"properties": [*prop_extend, *prop_expand, ("type", e)]} + ) + for key_expand, prop_expand in (({}, ()), ({"ctrl": True}, (("use_expand", True),))) + for key_extend, prop_extend in (({}, ()), ({"shift": True}, (("use_extend", True),))) + for k, e in (('ONE', 'VERT'), ('TWO', 'EDGE'), ('THREE', 'FACE')) + ] + + # ------------------------------------------------------------------------------ # Window, Screen, Areas, Regions @@ -541,6 +554,7 @@ def km_uv_editor(params): op_panel("TOPBAR_PT_name", {"type": 'RET', "value": 'PRESS'}, [("keep_open", False)]), ("wm.search_menu", {"type": 'TAB', "value": 'PRESS'}, None), # Selection modes. + *_template_items_editmode_mesh_select_mode(params), ("wm.context_set_enum", {"type": 'ONE', "value": 'PRESS'}, {"properties": [("data_path", 'tool_settings.uv_select_mode'), ("value", 'VERTEX')]}), ("wm.context_set_enum", {"type": 'TWO', "value": 'PRESS'}, @@ -554,6 +568,7 @@ def km_uv_editor(params): {"properties": [("extend", False), ("deselect_all", True)]}), ("uv.select", {"type": 'LEFTMOUSE', "value": 'CLICK', "shift": True}, {"properties": [("extend", True), ("deselect_all", False)]}), + ("transform.translate", {"type": "EVT_TWEAK_L", "value": 'ANY'}, None), ("uv.select_loop", {"type": 'LEFTMOUSE', "value": 'DOUBLE_CLICK', "shift": True}, {"properties": [("extend", True)]}), @@ -1004,14 +1019,6 @@ def km_image(params): {"properties": [("point", 'BLACK_POINT')]}), ("image.curves_point_set", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("point", 'WHITE_POINT')]}), - ("object.mode_set", {"type": 'ONE', "value": 'PRESS'}, - {"properties": [("mode", 'EDIT')]}), - ("object.mode_set", {"type": 'TWO', "value": 'PRESS'}, - {"properties": [("mode", 'OBJECT')]}), - ("object.mode_set", {"type": 'THREE', "value": 'PRESS'}, - {"properties": [("mode", 'OBJECT')]}), - ("object.mode_set", {"type": 'FOUR', "value": 'PRESS'}, - {"properties": [("mode", 'OBJECT')]}), op_menu_pie("IMAGE_MT_pivot_pie", {"type": 'PERIOD', "value": 'PRESS'}), # Tools op_tool_cycle("builtin.select_box", {"type": 'Q', "value": 'PRESS'}), @@ -3122,6 +3129,9 @@ def km_mesh(params): ("mesh.select_more", {"type": 'UP_ARROW', "value": 'PRESS'}, None), ("mesh.select_less", {"type": 'DOWN_ARROW', "value": 'PRESS'}, None), ("mesh.select_linked", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, None), + + *_template_items_editmode_mesh_select_mode(params), + # Hide/reveal. ("mesh.hide", {"type": 'H', "value": 'PRESS', "ctrl": True}, {"properties": [("unselected", False)]}), -- cgit v1.2.3 From 819be3639cf3221a328932a0a49dd7a038b081dc Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 4 Jan 2020 14:33:11 +0100 Subject: Industry Compat keymap: Support the recently added Drag option This also simplifies the keymap a lot, since I can now remove a lot of hacky exceptions to make box select work with the gizmo-tools. --- .../keymap_data/industry_compatible_data.py | 133 --------------------- 1 file changed, 133 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 13523759b95..2ce7c3fc41e 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -3639,128 +3639,6 @@ def km_generic_gizmo_maybe_drag(params): return keymap -# ------------------------------------------------------------------------------ -# Tool System Keymaps - - -def km_3d_view_tool_transform(params): - return ( - "3D View Tool: Transform", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.from_gizmo", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, None), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_move(params): - return ( - "3D View Tool: Move", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.translate", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_rotate(params): - return ( - "3D View Tool: Rotate", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.rotate", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_scale(params): - return ( - "3D View Tool: Scale", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.resize", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_edit_mesh_extrude_region(params): - return ( - "3D View Tool: Edit Mesh, Extrude Region", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("mesh.extrude_context_move", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("TRANSFORM_OT_translate", [("release_confirm", True)])]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_edit_mesh_shear(params): - return ( - "3D View Tool: Edit Mesh, Shear", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.shear", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_edit_mesh_spin(params): - return ( - "3D View Tool: Edit Mesh, Spin", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("mesh.spin", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, None), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_edit_mesh_spin_duplicate(params): - return ( - "3D View Tool: Edit Mesh, Spin Duplicates", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("mesh.spin", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("dupli", True)]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_edit_curve_extrude(params): - return ( - "3D View Tool: Edit Curve, Extrude", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("curve.extrude_move", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("TRANSFORM_OT_translate", [("release_confirm", True)])]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - -def km_3d_view_tool_edit_armature_extrude(params): - return ( - "3D View Tool: Edit Armature, Extrude", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("armature.extrude_move", {"type": 'MIDDLEMOUSE', "value": 'ANY'}, - {"properties": [("TRANSFORM_OT_translate", [("release_confirm", True)])]}), - *_template_items_tool_select_actions("view3d.select_box", type=params.tool_tweak, value='ANY'), - ]}, - ) - - # ------------------------------------------------------------------------------ # Full Configuration @@ -3855,15 +3733,4 @@ def generate_keymaps(params=None): km_generic_gizmo_maybe_drag(params), km_generic_gizmo_click_drag(params), - # Tool System. - km_3d_view_tool_transform(params), - km_3d_view_tool_move(params), - km_3d_view_tool_rotate(params), - km_3d_view_tool_scale(params), - km_3d_view_tool_edit_mesh_extrude_region(params), - km_3d_view_tool_edit_mesh_shear(params), - km_3d_view_tool_edit_mesh_spin(params), - km_3d_view_tool_edit_mesh_spin_duplicate(params), - km_3d_view_tool_edit_curve_extrude(params), - km_3d_view_tool_edit_armature_extrude(params), ] -- cgit v1.2.3 From 5c66739b782e991034c872c4f7175093e98c9982 Mon Sep 17 00:00:00 2001 From: Antonio Vazquez Date: Sat, 4 Jan 2020 22:02:03 +0100 Subject: Fix T72897: Move Channels operator moves Grease Pencil Layers wrongly This operator was pending of fix. --- release/scripts/startup/bl_ui/space_dopesheet.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_dopesheet.py b/release/scripts/startup/bl_ui/space_dopesheet.py index 5a73ff094a2..a09e263fd87 100644 --- a/release/scripts/startup/bl_ui/space_dopesheet.py +++ b/release/scripts/startup/bl_ui/space_dopesheet.py @@ -542,8 +542,8 @@ class DOPESHEET_MT_gpencil_channel(Menu): # layout.operator("anim.channels_expand") # layout.operator("anim.channels_collapse") - # layout.separator() - #layout.operator_menu_enum("anim.channels_move", "direction", text="Move...") + layout.separator() + layout.operator_menu_enum("anim.channels_move", "direction", text="Move...") class DOPESHEET_MT_gpencil_frame(Menu): -- cgit v1.2.3 From 295647212db1463c26081e2f3936daf7bb944e87 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sun, 5 Jan 2020 12:43:16 +0100 Subject: Industry Compat keymap: Properly support Grease Pencil Edit Mode Many things weren't working correctly in GP Edit Mode, such as select/deselect/invert all, basic tools, extrude, snap etc. Now this mode works consistently with other modes. --- .../keymap_data/industry_compatible_data.py | 38 +++++----------------- 1 file changed, 9 insertions(+), 29 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 2ce7c3fc41e..656199dfee8 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -770,7 +770,6 @@ def km_mask_editing(params): ("mask.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'SELECT')]}), ("mask.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True, "shift": True}, {"properties": [("action", 'DESELECT')]}), ("mask.select_all", {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}), - #*_template_items_select_actions(params, "mask.select_all"), ("mask.select_linked", {"type": 'L', "value": 'PRESS', "ctrl": True}, None), ("mask.select_linked_pick", {"type": 'L', "value": 'PRESS'}, {"properties": [("deselect", False)]}), @@ -2256,10 +2255,12 @@ def km_grease_pencil(_params): def _grease_pencil_selection(params): return [ - # Select all - ("gpencil.select_box", {"type": 'A', "value": 'PRESS', "ctrl": True}, None), ("gpencil.select", {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, {"properties": [("extend", True), ("toggle", True)]}), + # Select all + ("gpencil.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'SELECT')]}), + ("gpencil.select_all", {"type": 'A', "value": 'PRESS', "ctrl": True, "shift": True}, {"properties": [("action", 'DESELECT')]}), + ("gpencil.select_all", {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}), # Select linked ("gpencil.select_linked", {"type": 'RIGHT_BRACKET', "value": 'PRESS'}, None), # Select alternate @@ -2272,14 +2273,6 @@ def _grease_pencil_selection(params): ] -def _grease_pencil_display(): - return [ - ("wm.context_toggle", {"type": 'Q', "value": 'PRESS', "shift": True}, - {"properties": [("data_path", 'space_data.overlay.use_gpencil_edit_lines')]}), - ("wm.context_toggle", {"type": 'Q', "value": 'PRESS', "shift": True, "alt": True}, - {"properties": [("data_path", 'space_data.overlay.use_gpencil_multiedit_line_only')]}), - ] - def km_grease_pencil_stroke_edit_mode(params): items = [] @@ -2290,18 +2283,13 @@ def km_grease_pencil_stroke_edit_mode(params): ) items.extend([ - # Interpolation - ("gpencil.interpolate", {"type": 'E', "value": 'PRESS', "ctrl": True, "alt": True}, None), - ("gpencil.interpolate_sequence", {"type": 'E', "value": 'PRESS', "shift": True, "ctrl": True}, None), # Normal select - ("gpencil.select", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + ("gpencil.select", {"type": 'LEFTMOUSE', "value": 'CLICK'}, {"properties": [("deselect_all", True)]}), # Selection *_grease_pencil_selection(params), # Duplicate and move selected points ("gpencil.duplicate_move", {"type": 'D', "value": 'PRESS', "ctrl": True}, None), - # Extrude and move selected points - ("gpencil.extrude_move", {"type": 'E', "value": 'PRESS'}, None), # Delete op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'BACK_SPACE', "value": 'PRESS'}), op_menu("VIEW3D_MT_edit_gpencil_delete", {"type": 'DEL', "value": 'PRESS'}), @@ -2321,20 +2309,13 @@ def km_grease_pencil_stroke_edit_mode(params): ("gpencil.copy", {"type": 'C', "value": 'PRESS', "ctrl": True}, None), ("gpencil.paste", {"type": 'V', "value": 'PRESS', "ctrl": True}, None), # Snap - op_menu("GPENCIL_MT_snap", {"type": 'S', "value": 'PRESS', "shift": True}), + op_menu("GPENCIL_MT_snap", {"type": 'X', "value": 'PRESS', "shift": True}), # Show/hide ("gpencil.reveal", {"type": 'H', "value": 'PRESS', "alt": True}, None), ("gpencil.hide", {"type": 'H', "value": 'PRESS', "ctrl": True}, {"properties": [("unselected", False)]}), - ("gpencil.hide", {"type": 'H', "value": 'PRESS', "shift": True}, - {"properties": [("unselected", True)]}), - ("gpencil.selection_opacity_toggle", {"type": 'H', "value": 'PRESS', "ctrl": True}, None), - # Display - *_grease_pencil_display(), # Isolate layer ("gpencil.layer_isolate", {"type": 'NUMPAD_ASTERIX', "value": 'PRESS'}, None), - # Move to layer - ("gpencil.move_to_layer", {"type": 'G', "value": 'PRESS'}, None), # Transform tools ("transform.translate", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), ("wm.context_toggle", {"type": 'B', "value": 'PRESS'}, @@ -2350,6 +2331,9 @@ def km_grease_pencil_stroke_edit_mode(params): {"properties": [("mode", 2)]}), # Tools *_template_items_basic_tools(), + op_tool_cycle("builtin.extrude", {"type": 'E', "value": 'PRESS', "ctrl": True}), + op_tool_cycle("builtin.radius", {"type": 'R', "value": 'PRESS', "ctrl": True}), + op_tool_cycle("builtin.bend", {"type": 'B', "value": 'PRESS', "ctrl": True}), ]) @@ -2514,8 +2498,6 @@ def km_grease_pencil_stroke_sculpt_mode(params): {"properties": [("data_path_primary", 'tool_settings.gpencil_sculpt.brush.size')]}), # Context menu *_template_items_context_panel("VIEW3D_PT_gpencil_sculpt_context_menu", {"type": 'RIGHTMOUSE', "value": 'PRESS'}), - # Display - *_grease_pencil_display(), ]) return keymap @@ -2543,8 +2525,6 @@ def km_grease_pencil_stroke_weight_mode(params): # Brush size. ("wm.radial_control", {"type": 'S', "value": 'PRESS'}, {"properties": [("data_path_primary", 'tool_settings.gpencil_sculpt.weight_brush.size')]}), - # Display - *_grease_pencil_display(), ]) return keymap -- cgit v1.2.3 From ebe177aeadbba6c9d4e3469a84426b161d653603 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sun, 5 Jan 2020 16:54:08 +0100 Subject: Industry Compat keymap: Fix Polybuild tool not working with this keymap I ended up simply removing the gizmo entries here - they seem to be no longer needed. --- .../keymap_data/industry_compatible_data.py | 72 ---------------------- 1 file changed, 72 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 656199dfee8..10ee750f887 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -114,26 +114,6 @@ def _template_items_animation(): ] -# Gizmos - -def _template_items_gizmo_tweak_value(): - return [ - ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'PRESS'}, None), - ] - - -def _template_items_gizmo_tweak_value_click_drag(): - return [ - ("gizmogroup.gizmo_tweak", {"type": 'LEFTMOUSE', "value": 'CLICK'}, None), - ("gizmogroup.gizmo_tweak", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ] - - -def _template_items_gizmo_tweak_value_drag(): - return [ - ("gizmogroup.gizmo_tweak", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), - ] - # Tool System Templates @@ -3573,52 +3553,6 @@ def km_transform_modal_map(_params): return keymap -# ------------------------------------------------------------------------------ -# Gizmos - -# Fallback for gizmos that don't have custom a custom key-map. -def km_generic_gizmo(_params): - keymap = ( - "Generic Gizmo", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": _template_items_gizmo_tweak_value()}, - ) - - return keymap - - -def km_generic_gizmo_drag(_params): - keymap = ( - "Generic Gizmo Drag", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": _template_items_gizmo_tweak_value_drag()}, - ) - - return keymap - - -def km_generic_gizmo_click_drag(_params): - keymap = ( - "Generic Gizmo Click Drag", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": _template_items_gizmo_tweak_value_click_drag()}, - ) - - return keymap - - -def km_generic_gizmo_maybe_drag(params): - keymap = ( - "Generic Gizmo Maybe Drag", - {"space_type": 'EMPTY', "region_type": 'WINDOW'}, - {"items": - _template_items_gizmo_tweak_value_drag() - }, - ) - - return keymap - - # ------------------------------------------------------------------------------ # Full Configuration @@ -3707,10 +3641,4 @@ def generate_keymaps(params=None): km_eyedropper_colorramp_pointsampling_map(params), km_transform_modal_map(params), - # Gizmos. - km_generic_gizmo(params), - km_generic_gizmo_drag(params), - km_generic_gizmo_maybe_drag(params), - km_generic_gizmo_click_drag(params), - ] -- cgit v1.2.3 From 7f3e121926fdd985d37ce8371647d79e09e37917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Mon, 6 Jan 2020 11:47:23 +0100 Subject: USD Exporter: removed from experimental features There were two reasons the USD Exporter was listed as experimental: - Originally there was no deduplication of mesh normals & UV coordinates (resolved in rBf5e00f735106b5ec635806a4c795a2bc46ae8369), and - the way materials were exported was incompatible with instancing with USD 19.07. This seems to be resolved with the current version of USD (19.11). Blender (more specifically, `makesdna`) doesn't seem to like empty DNA structs, so I couldn't remove all properties from `UserDef_Experimental`. Instead I have just kept `char _pad0[8]`. Reviewed by: campbellbarton Differential Revision: https://developer.blender.org/D6519 --- release/scripts/startup/bl_ui/space_topbar.py | 2 +- release/scripts/startup/bl_ui/space_userpref.py | 26 ------------------------- 2 files changed, 1 insertion(+), 27 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index 7dbf49d01e3..fd46bd53cd2 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -471,7 +471,7 @@ class TOPBAR_MT_file_export(Menu): text="Collada (Default) (.dae)") if bpy.app.build_options.alembic: self.layout.operator("wm.alembic_export", text="Alembic (.abc)") - if bpy.app.build_options.usd and context.preferences.experimental.use_usd_exporter: + if bpy.app.build_options.usd: self.layout.operator( "wm.usd_export", text="Universal Scene Description (.usd, .usdc, .usda)") diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index b497d688339..4f35bcc29df 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -2118,30 +2118,6 @@ class USERPREF_PT_experimental_virtual_reality(ExperimentalPanel, Panel): """ -class USERPREF_PT_experimental_usd(ExperimentalPanel, Panel): - bl_label = "Universal Scene Description" - - @classmethod - def poll(cls, context): - # Only show the panel if Blender was actually built with USD support. - return getattr(bpy.app.build_options, "usd", False) - - def draw(self, context): - prefs = context.preferences - experimental = prefs.experimental - - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False - - split = layout.split(factor=0.66) - col = split.split() - col.prop(experimental, "use_usd_exporter", text="USD Exporter") - col = split.split() - url = "https://devtalk.blender.org/t/universal-scene-description-usd-exporter-feedback/10920" - col.operator("wm.url_open", text='Give Feedback', icon='URL').url = url - - # ----------------------------------------------------------------------------- # Class Registration @@ -2226,8 +2202,6 @@ classes = ( USERPREF_PT_studiolight_matcaps, USERPREF_PT_studiolight_world, - USERPREF_PT_experimental_usd, - # Popovers. USERPREF_PT_ndof_settings, -- cgit v1.2.3 From 58e88d3816bb3c967e2c54c8e68fde724c68b372 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 6 Jan 2020 20:37:47 +0100 Subject: Industry Compat keymap: Support MMB for immediate transform tool use again Now this also works for the UV Editor Note: Only the transform tools currently support this. I would like to make this work for all the tools with gizmos, but need to find the nicest way to do it. --- .../keymap_data/industry_compatible_data.py | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 10ee750f887..4759a91ab93 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -3553,6 +3553,89 @@ def km_transform_modal_map(_params): return keymap +# ------------------------------------------------------------------------------ +# Tool System Keymaps +# +# Named are auto-generated based on the tool name and it's toolbar. + + +def km_image_editor_tool_uv_move(params): + return ( + "Image Editor Tool: Uv, Move", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": [ + ("transform.translate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ]}, + ) + + +def km_image_editor_tool_uv_rotate(params): + return ( + "Image Editor Tool: Uv, Rotate", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": [ + ("transform.rotate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ]}, + ) + + +def km_image_editor_tool_uv_scale(params): + return ( + "Image Editor Tool: Uv, Scale", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": [ + ("transform.resize", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ]}, + ) + + +def km_3d_view_tool_move(params): + return ( + "3D View Tool: Move", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("transform.translate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ]}, + ) + + +def km_3d_view_tool_rotate(params): + return ( + "3D View Tool: Rotate", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("transform.rotate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ]}, + ) + + +def km_3d_view_tool_scale(params): + return ( + "3D View Tool: Scale", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("transform.resize", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, + {"properties": [("release_confirm", True)]}), + ]}, + ) + + +def km_3d_view_tool_transform(params): + return ( + "3D View Tool: Transform", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("transform.from_gizmo", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, None), + ]}, + ) + + + # ------------------------------------------------------------------------------ # Full Configuration @@ -3641,4 +3724,13 @@ def generate_keymaps(params=None): km_eyedropper_colorramp_pointsampling_map(params), km_transform_modal_map(params), + # Tool System. + km_image_editor_tool_uv_move(params), + km_image_editor_tool_uv_rotate(params), + km_image_editor_tool_uv_scale(params), + km_3d_view_tool_transform(params), + km_3d_view_tool_move(params), + km_3d_view_tool_rotate(params), + km_3d_view_tool_scale(params), + ] -- cgit v1.2.3 From 3a35301fd16d9230932a148f0cf64ed6bef9e38b Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 6 Jan 2020 21:54:56 +0100 Subject: Fix T70821: Hair Radius Is Actually Hair Diameter Renamed hair tip and root properties to be called diameter rather than radius. The old name was incorrect. --- release/scripts/startup/bl_ui/properties_particle.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 21abf8bb34c..b83eca1ab74 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -1961,8 +1961,8 @@ class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel): layout.prop(part, "shape", text="Strand Shape") col = layout.column(align=True) - col.prop(part, "root_radius", text="Radius Root") - col.prop(part, "tip_radius", text="Tip") + col.prop(part, "root_diameter", text="Diameter Root") + col.prop(part, "tip_diameter", text="Tip") col = layout.column() col.prop(part, "radius_scale") -- cgit v1.2.3 From b5cef9fc3f5d505dab700cf8cecffc56e9a1e778 Mon Sep 17 00:00:00 2001 From: Antonio Vazquez Date: Tue, 7 Jan 2020 09:15:26 +0100 Subject: GPencil: Fix wrong keymap for Radius thickness (related to T72945) --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 488df3f6f72..c6355d61a2b 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5960,7 +5960,7 @@ def km_3d_view_tool_edit_gpencil_radius(params): {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ ("transform.transform", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("mode", 'CURVE_SHRINKFATTEN'), ("release_confirm", True)]}), + {"properties": [("mode", 'GPENCIL_SHRINKFATTEN'), ("release_confirm", True)]}), ]}, ) -- cgit v1.2.3 From fa3a0697b846bd0ed3766fcabd1bf6f260aa425a Mon Sep 17 00:00:00 2001 From: Antonio Vazquez Date: Tue, 7 Jan 2020 11:29:42 +0100 Subject: Annotations: Split annotation operators and pointer functions This allows to have annotation panels and grease pencil object panel at the same time. Differential Revision: https://developer.blender.org/D6467 --- .../bl_ui/properties_grease_pencil_common.py | 32 +++++++++++----------- .../startup/bl_ui/space_toolsystem_toolbar.py | 8 +++++- 2 files changed, 23 insertions(+), 17 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py index 45cb10bb3bd..2001f46820f 100644 --- a/release/scripts/startup/bl_ui/properties_grease_pencil_common.py +++ b/release/scripts/startup/bl_ui/properties_grease_pencil_common.py @@ -581,9 +581,9 @@ class AnnotationDataPanel: def poll(cls, context): # Show this panel as long as someone that might own this exists # AND the owner isn't an object (e.g. GP Object) - if context.gpencil_data_owner is None: + if context.annotation_data_owner is None: return False - elif type(context.gpencil_data_owner) is bpy.types.Object: + elif type(context.annotation_data_owner) is bpy.types.Object: return False else: return True @@ -597,14 +597,14 @@ class AnnotationDataPanel: layout.use_property_decorate = False # Grease Pencil owner. - gpd_owner = context.gpencil_data_owner - gpd = context.gpencil_data + gpd_owner = context.annotation_data_owner + gpd = context.annotation_data # Owner selector. if context.space_data.type == 'CLIP_EDITOR': layout.row().prop(context.space_data, "grease_pencil_source", expand=True) - layout.template_ID(gpd_owner, "grease_pencil", new="gpencil.data_add", unlink="gpencil.data_unlink") + layout.template_ID(gpd_owner, "grease_pencil", new="gpencil.annotation_add", unlink="gpencil.data_unlink") # List of layers/notes. if gpd and gpd.layers: @@ -624,17 +624,17 @@ class AnnotationDataPanel: col = row.column() sub = col.column(align=True) - sub.operator("gpencil.layer_add", icon='ADD', text="") - sub.operator("gpencil.layer_remove", icon='REMOVE', text="") + sub.operator("gpencil.layer_annotation_add", icon='ADD', text="") + sub.operator("gpencil.layer_annotation_remove", icon='REMOVE', text="") - gpl = context.active_gpencil_layer + gpl = context.active_annotation_layer if gpl: if len(gpd.layers) > 1: col.separator() sub = col.column(align=True) - sub.operator("gpencil.layer_move", icon='TRIA_UP', text="").type = 'UP' - sub.operator("gpencil.layer_move", icon='TRIA_DOWN', text="").type = 'DOWN' + sub.operator("gpencil.layer_annotation_move", icon='TRIA_UP', text="").type = 'UP' + sub.operator("gpencil.layer_annotation_move", icon='TRIA_DOWN', text="").type = 'DOWN' tool_settings = context.tool_settings if gpd and gpl: @@ -653,7 +653,7 @@ class AnnotationDataPanel: else: lock_label = iface_("Lock Frame") row.prop(gpl, "lock_frame", text=lock_label, icon='UNLOCKED') - row.operator("gpencil.active_frame_delete", text="", icon='X') + row.operator("gpencil.annotation_active_frame_delete", text="", icon='X') class AnnotationOnionSkin: @@ -665,26 +665,26 @@ class AnnotationOnionSkin: def poll(cls, context): # Show this panel as long as someone that might own this exists # AND the owner isn't an object (e.g. GP Object) - if context.gpencil_data_owner is None: + if context.annotation_data_owner is None: return False - elif type(context.gpencil_data_owner) is bpy.types.Object: + elif type(context.annotation_data_owner) is bpy.types.Object: return False else: - gpl = context.active_gpencil_layer + gpl = context.active_annotation_layer if gpl is None: return False return True def draw_header(self, context): - gpl = context.active_gpencil_layer + gpl = context.active_annotation_layer self.layout.prop(gpl, "use_annotation_onion_skinning", text="") def draw(self, context): layout = self.layout layout.use_property_decorate = False - gpl = context.active_gpencil_layer + gpl = context.active_annotation_layer col = layout.column() split = col.split(factor=0.5) split.active = gpl.use_annotation_onion_skinning diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index e0f3a03733e..170b635f7e1 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -2115,6 +2115,8 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_gpencil_paint.curve, _defs_gpencil_paint.box, _defs_gpencil_paint.circle, + None, + *_tools_annotate, ], 'EDIT_GPENCIL': [ *_tools_gpencil_select, @@ -2129,11 +2131,13 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_gpencil_edit.shear, _defs_gpencil_edit.tosphere, ), - + None, + *_tools_annotate, ], 'SCULPT_GPENCIL': [ _defs_gpencil_sculpt.generate_from_brushes, None, + *_tools_annotate, lambda context: ( VIEW3D_PT_tools_active._tools_gpencil_select if _defs_gpencil_sculpt.poll_select_mask(context) @@ -2142,6 +2146,8 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): ], 'WEIGHT_GPENCIL': [ _defs_gpencil_weight.generate_from_brushes, + None, + *_tools_annotate, ], } -- cgit v1.2.3 From e665c2c89326f4b13270d0d5d5082b5368413371 Mon Sep 17 00:00:00 2001 From: mano-wii Date: Tue, 7 Jan 2020 11:52:44 -0300 Subject: Fix T69314: Broken Rotation to Deltas for Quaternions --- release/scripts/startup/bl_operators/object.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/object.py b/release/scripts/startup/bl_operators/object.py index c42d5970ed9..12d7984b3b2 100644 --- a/release/scripts/startup/bl_operators/object.py +++ b/release/scripts/startup/bl_operators/object.py @@ -743,7 +743,9 @@ class TransformsToDeltas(Operator): def transfer_rotation(self, obj): # TODO: add transforms together... if obj.rotation_mode == 'QUATERNION': - obj.delta_rotation_quaternion += obj.rotation_quaternion + delta = obj.delta_rotation_quaternion.copy() + obj.delta_rotation_quaternion = obj.rotation_quaternion + obj.delta_rotation_quaternion.rotate(delta) if self.reset_values: obj.rotation_quaternion.identity() -- cgit v1.2.3 From fdf89acc8634ecba4dfe66e20ff595c0c24ffdee Mon Sep 17 00:00:00 2001 From: Pablo Dobarro Date: Tue, 7 Jan 2020 16:46:56 +0100 Subject: Sculpt: Pose Brush with Inverse Kinematics This commits introduces the pose_ik_segments brush property in the Pose Brush. When increasing the IK segments count, the brush generates more segments and weights associations following the topology of the mesh. When moving the brush, these segments are transformed using an IK solver and they are used to deform the mesh. When pressing Ctrl, the brush controls the segments' roll rotation instead of using the IK solver. The brush falloff controls how much rotation is propagated from the first to the last segment in the chain. Reviewed By: jbakker Differential Revision: https://developer.blender.org/D6389 --- release/scripts/startup/bl_ui/properties_paint_common.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 327df079d3b..b15a244eefd 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -616,9 +616,12 @@ def brush_settings(layout, context, brush, popover=False): layout.separator() if brush.sculpt_tool == 'POSE': - row = layout.row() - row.prop(brush, "pose_offset") - + layout.separator() + layout.prop(brush, "pose_offset") + layout.prop(brush, "pose_smooth_iterations") + layout.prop(brush, "pose_ik_segments") + layout.separator() + if brush.sculpt_tool == 'SCRAPE': row = layout.row() row.prop(brush, "invert_to_scrape_fill", text="Invert to Fill") -- cgit v1.2.3 From c3b406a7c331e68978eacac543f3be564f7601ac Mon Sep 17 00:00:00 2001 From: William Reynish Date: Wed, 8 Jan 2020 20:37:35 +0100 Subject: Revert recent change to the particles RNA, and only affect the UI. Even though the name change is more correct, we don't want to change the API at this time. --- release/scripts/startup/bl_ui/properties_particle.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index b83eca1ab74..2028857640e 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -1961,8 +1961,8 @@ class PARTICLE_PT_hair_shape(ParticleButtonsPanel, Panel): layout.prop(part, "shape", text="Strand Shape") col = layout.column(align=True) - col.prop(part, "root_diameter", text="Diameter Root") - col.prop(part, "tip_diameter", text="Tip") + col.prop(part, "root_radius", text="Diameter Root") + col.prop(part, "tip_radius", text="Tip") col = layout.column() col.prop(part, "radius_scale") -- cgit v1.2.3 From 915177f99acb5f40d246311f9dcfc54d46c64c1b Mon Sep 17 00:00:00 2001 From: William Reynish Date: Wed, 8 Jan 2020 21:14:15 +0100 Subject: Industry Compat keymap: Fix gizmos stealing the Alt-key when navigating the viewport --- .../keymap_data/industry_compatible_data.py | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 4759a91ab93..4ca75ba75e0 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -115,6 +115,12 @@ def _template_items_animation(): ] +def _template_items_gizmo_tweak_value_drag(): + return [ + ("gizmogroup.gizmo_tweak", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ] + + # Tool System Templates def _template_items_basic_tools(*, connected=False): @@ -3635,6 +3641,30 @@ def km_3d_view_tool_transform(params): ) +# Fallback for gizmos that don't have custom a custom key-map. + + +def km_generic_gizmo_drag(_params): + keymap = ( + "Generic Gizmo Drag", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": _template_items_gizmo_tweak_value_drag()}, + ) + + return keymap + + +def km_generic_gizmo_maybe_drag(params): + keymap = ( + "Generic Gizmo Maybe Drag", + {"space_type": 'EMPTY', "region_type": 'WINDOW'}, + {"items": + _template_items_gizmo_tweak_value_drag() + }, + ) + + return keymap + # ------------------------------------------------------------------------------ # Full Configuration @@ -3724,6 +3754,10 @@ def generate_keymaps(params=None): km_eyedropper_colorramp_pointsampling_map(params), km_transform_modal_map(params), + # Gizmos. + km_generic_gizmo_drag(params), + km_generic_gizmo_maybe_drag(params), + # Tool System. km_image_editor_tool_uv_move(params), km_image_editor_tool_uv_rotate(params), -- cgit v1.2.3 From 9b920938bbca806d978cc6d24ecffc3b4a9b0e6d Mon Sep 17 00:00:00 2001 From: Jacques Lucke Date: Thu, 9 Jan 2020 17:07:27 +0100 Subject: Fix T71630: Add Delete Tracks to Edit menu in NLA editor Reviewers: billreynish, lichtwerk Differential Revision: https://developer.blender.org/D6550 --- release/scripts/startup/bl_ui/space_nla.py | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_nla.py b/release/scripts/startup/bl_ui/space_nla.py index 28b67c93666..4ecc4e7fdd9 100644 --- a/release/scripts/startup/bl_ui/space_nla.py +++ b/release/scripts/startup/bl_ui/space_nla.py @@ -167,6 +167,7 @@ class NLA_MT_edit(Menu): layout.operator("nla.duplicate", text="Linked Duplicate").linked = True layout.operator("nla.split") layout.operator("nla.delete") + layout.operator("nla.tracks_delete") layout.separator() layout.operator("nla.mute_toggle") -- cgit v1.2.3 From ad69127859247bceddbc1a2bcca3cf1993cdbae7 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 10 Jan 2020 13:03:12 +1100 Subject: Fix mesh randomize tool not running Missing from recent update to execute immediately when properties are set. --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index c6355d61a2b..a950f6b0c1e 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5546,7 +5546,7 @@ def km_3d_view_tool_edit_mesh_randomize(params): {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, {"items": [ ("transform.vertex_random", {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("offset", 0.0), ("wait_for_input", False)]}), + {"properties": [("wait_for_input", False)]}), ]}, ) -- cgit v1.2.3 From 1c81374c3728a0c3843846c0996340ab3bc258dd Mon Sep 17 00:00:00 2001 From: William Reynish Date: Mon, 13 Jan 2020 09:38:49 +0100 Subject: Fix T73062: Custom properties misaligned The UI layout here was mistakingly made left aligned and very hard to read when viewed inside the Sidebar. --- release/scripts/modules/rna_prop_ui.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/rna_prop_ui.py b/release/scripts/modules/rna_prop_ui.py index 202fd865723..8dda8c90f85 100644 --- a/release/scripts/modules/rna_prop_ui.py +++ b/release/scripts/modules/rna_prop_ui.py @@ -277,14 +277,15 @@ def draw(layout, context, context_member, property_type, use_edit=True): else: val_draw = val - row = flow.row(align=True) + row = layout.row(align=True) box = row.box() if use_edit: split = box.split(factor=0.75) row = split.row(align=True) else: - row = box.row(align=True) + split = box.split(factor=1.00) + row = split.row(align=True) row.alignment = 'RIGHT' -- cgit v1.2.3 From 283d76932a74971b8be06a988c2e0646fdbc1b78 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Tue, 14 Jan 2020 15:49:30 +0300 Subject: Fix T57159: don't exit tweak mode in Bake Action if reusing the action. --- release/scripts/modules/bpy_extras/anim_utils.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy_extras/anim_utils.py b/release/scripts/modules/bpy_extras/anim_utils.py index e402c9cb53c..d5e328f5c51 100644 --- a/release/scripts/modules/bpy_extras/anim_utils.py +++ b/release/scripts/modules/bpy_extras/anim_utils.py @@ -249,11 +249,14 @@ def bake_action_iter( if action is None: action = bpy.data.actions.new("Action") - # Leave tweak mode before trying to modify the action (T48397) - if atd.use_tweak_mode: - atd.use_tweak_mode = False + # Only leave tweak mode if we actually need to modify the action (T57159) + if action != atd.action: + # Leave tweak mode before trying to modify the action (T48397) + if atd.use_tweak_mode: + atd.use_tweak_mode = False + + atd.action = action - atd.action = action # ------------------------------------------------------------------------- # Apply transformations to action -- cgit v1.2.3 From d5c963bbc3da296f7740ef6df563946ed1f98d15 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Tue, 14 Jan 2020 16:04:23 +0300 Subject: Fix T69105: reset the action blend mode to Replace in Bake Action. This can't be done in Tweak mode since the setting is stored in the tweaked strip, and the logic for finding it is not exposed to python. --- release/scripts/modules/bpy_extras/anim_utils.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy_extras/anim_utils.py b/release/scripts/modules/bpy_extras/anim_utils.py index d5e328f5c51..c67134ac3f6 100644 --- a/release/scripts/modules/bpy_extras/anim_utils.py +++ b/release/scripts/modules/bpy_extras/anim_utils.py @@ -257,6 +257,9 @@ def bake_action_iter( atd.action = action + # Baking the action only makes sense in Replace mode, so force it (T69105) + if not atd.use_tweak_mode: + atd.action_blend_type = 'REPLACE' # ------------------------------------------------------------------------- # Apply transformations to action -- cgit v1.2.3 From f4beab71927c91a6ba96920e473b4f806b5333cd Mon Sep 17 00:00:00 2001 From: Pablo Dobarro Date: Mon, 13 Jan 2020 21:52:07 +0100 Subject: Fix T73070: Disable falloff_shape in the Pose Brush The Falloff property in the pose brush controls how much deformation propagates through the ik chain, not by using the distance to the vertices, so this option does not make sense (it does nothing in the pose brush code and it disables the 3d paint cursor). Reviewed By: jbakker Maniphest Tasks: T73070 Differential Revision: https://developer.blender.org/D6574 --- release/scripts/startup/bl_ui/properties_paint_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index b15a244eefd..93bf5eca052 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -438,7 +438,7 @@ class FalloffPanel(BrushPanel): row.operator("brush.curve_preset", icon='LINCURVE', text="").shape = 'LINE' row.operator("brush.curve_preset", icon='NOCURVE', text="").shape = 'MAX' - if mode in {'SCULPT', 'PAINT_VERTEX', 'PAINT_WEIGHT'}: + if mode in {'SCULPT', 'PAINT_VERTEX', 'PAINT_WEIGHT'} and brush.sculpt_tool != 'POSE': col.separator() row = col.row(align=True) row.use_property_split = True -- cgit v1.2.3 From d68346eacfa8647b42882e2d588b9ef365c714c4 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Mon, 13 Jan 2020 15:29:09 +0100 Subject: Fix T72803: Texture Paint: Shortcut 'Shift + S' Does Not Save an Image 'Shift + S' is taken by toggeling Smooth Stroke in the keymap, should be 'Shift + Alt + S' (this also goes more in line with other editors, where Alt is added to the shortcut used by 'Save' to do 'Save As') Maniphest Tasks: T72803 Differential Revision: https://developer.blender.org/D6572 --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 2 +- .../scripts/presets/keyconfig/keymap_data/industry_compatible_data.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index a950f6b0c1e..8f8b1cc39d9 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1526,7 +1526,7 @@ def km_image_generic(_params): ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True}, None), + ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None), ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS'}, None), ("image.cycle_render_slot", {"type": 'J', "value": 'PRESS', "alt": True}, {"properties": [("reverse", True)]}), diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 4ca75ba75e0..01db6994f37 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -946,7 +946,7 @@ def km_image_generic(params): ("image.reload", {"type": 'R', "value": 'PRESS', "alt": True}, None), ("image.read_viewlayers", {"type": 'R', "value": 'PRESS', "ctrl": True}, None), ("image.save", {"type": 'S', "value": 'PRESS', "alt": True}, None), - ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True}, None), + ("image.save_as", {"type": 'S', "value": 'PRESS', "shift": True, "alt": True}, None), ]) return keymap -- cgit v1.2.3 From d571e9055a0a81f4bd1fd9f574b81783d3f648fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Wed, 15 Jan 2020 15:51:33 +0100 Subject: Fluid: Fix T72971 Incorporated suggestions from the task discussion --- release/scripts/startup/bl_operators/object_quick_effects.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index e49ca0320c7..009ae53fa80 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -499,7 +499,6 @@ class QuickLiquid(Operator): # setup liquid domain bpy.ops.object.modifier_add(type='FLUID') obj.modifiers[-1].fluid_type = 'DOMAIN' - obj.modifiers[-1].domain_settings.domain_type = 'LIQUID' # set all domain borders to obstacle obj.modifiers[-1].domain_settings.use_collision_border_front = True obj.modifiers[-1].domain_settings.use_collision_border_back = True @@ -511,8 +510,8 @@ class QuickLiquid(Operator): # set correct cache file format for liquid obj.modifiers[-1].domain_settings.cache_mesh_format = 'BOBJECT' - # allocate and show particle system for FLIP - obj.modifiers[-1].domain_settings.use_flip_particles = True + # change domain type, will also allocate and show particle system for FLIP + obj.modifiers[-1].domain_settings.domain_type = 'LIQUID' # make the domain smooth so it renders nicely bpy.ops.object.shade_smooth() -- cgit v1.2.3 From cdd937c6dd988feed1d9e5d023b8b7b8bec7665c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Wed, 15 Jan 2020 15:51:33 +0100 Subject: Fluid: Fix T72971 Incorporated suggestions from the task discussion --- release/scripts/startup/bl_operators/object_quick_effects.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index e49ca0320c7..009ae53fa80 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -499,7 +499,6 @@ class QuickLiquid(Operator): # setup liquid domain bpy.ops.object.modifier_add(type='FLUID') obj.modifiers[-1].fluid_type = 'DOMAIN' - obj.modifiers[-1].domain_settings.domain_type = 'LIQUID' # set all domain borders to obstacle obj.modifiers[-1].domain_settings.use_collision_border_front = True obj.modifiers[-1].domain_settings.use_collision_border_back = True @@ -511,8 +510,8 @@ class QuickLiquid(Operator): # set correct cache file format for liquid obj.modifiers[-1].domain_settings.cache_mesh_format = 'BOBJECT' - # allocate and show particle system for FLIP - obj.modifiers[-1].domain_settings.use_flip_particles = True + # change domain type, will also allocate and show particle system for FLIP + obj.modifiers[-1].domain_settings.domain_type = 'LIQUID' # make the domain smooth so it renders nicely bpy.ops.object.shade_smooth() -- cgit v1.2.3 From 216291ddb39e3460361b8bd7350878a30e34945b Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 16 Jan 2020 15:09:07 +0100 Subject: Fix T68000: load previous settings error if config folder already exists This happened when opening Blender and not clicking Load Previous Settings or Next, and then reopening Blender again and using Load Previous Settings. --- release/scripts/startup/bl_operators/userpref.py | 45 ++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 3 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/userpref.py b/release/scripts/startup/bl_operators/userpref.py index 4c5c269955a..4cb6ddd3fa3 100644 --- a/release/scripts/startup/bl_operators/userpref.py +++ b/release/scripts/startup/bl_operators/userpref.py @@ -49,6 +49,44 @@ def module_filesystem_remove(path_base, module_name): else: os.remove(f_full) +# This duplicates shutil.copytree from Python 3.8, with the new dirs_exist_ok +# argument that we need. Once we upgrade to 3.8 we can remove this. +def _preferences_copytree(entries, src, dst): + import shutil + import os + os.makedirs(dst, exist_ok=True) + errors = [] + + for srcentry in entries: + srcname = os.path.join(src, srcentry.name) + dstname = os.path.join(dst, srcentry.name) + srcobj = srcentry + try: + if srcentry.is_symlink(): + linkto = os.readlink(srcname) + os.symlink(linkto, dstname) + shutil.copystat(srcobj, dstname, follow_symlinks=False) + elif srcentry.is_dir(): + preferences_copytree(srcobj, dstname) + else: + shutil.copy2(srcentry, dstname) + except Error as err: + errors.extend(err.args[0]) + except OSError as why: + errors.append((srcname, dstname, str(why))) + try: + shutil.copystat(src, dst) + except OSError as why: + if getattr(why, 'winerror', None) is None: + errors.append((src, dst, str(why))) + if errors: + raise Error(errors) + return dst + +def preferences_copytree(src, dst): + import os + with os.scandir(src) as entries: + return _preferences_copytree(entries=entries, src=src, dst=dst) class PREFERENCES_OT_keyconfig_activate(Operator): bl_idname = "preferences.keyconfig_activate" @@ -110,9 +148,10 @@ class PREFERENCES_OT_copy_prev(Operator): return os.path.isfile(old_userpref) and not os.path.isfile(new_userpref) def execute(self, _context): - import shutil - - shutil.copytree(self._old_path(), self._new_path(), symlinks=True) + # Use this instead once we upgrade to Python 3.8 with dirs_exist_ok. + # import shutil + # shutil.copytree(self._old_path(), self._new_path(), dirs_exist_ok=True) + preferences_copytree(self._old_path(), self._new_path()) # reload preferences and recent-files.txt bpy.ops.wm.read_userpref() -- cgit v1.2.3 From f60d97d42663d9578ed284b7be337a6b5afc600d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Fri, 17 Jan 2020 19:27:05 +1100 Subject: Fix T73176: No options for Centre Action Safe Margins --- release/scripts/startup/bl_ui/properties_data_camera.py | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py index eef70056be8..aee909e3a6c 100644 --- a/release/scripts/startup/bl_ui/properties_data_camera.py +++ b/release/scripts/startup/bl_ui/properties_data_camera.py @@ -501,6 +501,7 @@ class DATA_PT_camera_safe_areas_center_cut(CameraButtonsPanel, Panel): col = layout.column() col.prop(safe_data, "title_center", slider=True) + col.prop(safe_data, "action_center", slider=True) class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, Panel): -- cgit v1.2.3 From 7f794ae09d252aefe6623bb240bfde056f6606bd Mon Sep 17 00:00:00 2001 From: William Reynish Date: Fri, 17 Jan 2020 14:09:54 +0100 Subject: Keymap: Use PRESS event for Tweak tool extend selection This makes selection more responsive when using the Tweak tool Differential Revision: https://developer.blender.org/D6608 Reviewed by Campbell Barton --- .../scripts/presets/keyconfig/keymap_data/blender_default.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 8f8b1cc39d9..f95d5795f4f 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -290,12 +290,14 @@ def _template_items_proportional_editing(*, connected=False): # Tool System Templates -def _template_items_tool_select(params, operator, cursor_operator): +def _template_items_tool_select(params, operator, cursor_operator, extend_type): if params.select_mouse == 'LEFTMOUSE': # Immediate select without quick delay. return [ (operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, {"properties": [("deselect_all", True)]}), + (operator, {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [(extend_type, True)]}), ] else: # For right mouse, set the cursor. @@ -5055,7 +5057,7 @@ def km_image_editor_tool_uv_select(params): return ( "Image Editor Tool: Uv, Tweak", {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "uv.select", "uv.cursor_set")}, + {"items": _template_items_tool_select(params, "uv.select", "uv.cursor_set", "extend")}, ) @@ -5206,7 +5208,7 @@ def km_3d_view_tool_select(params): return ( "3D View Tool: Tweak", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "view3d.select", "view3d.cursor3d")}, + {"items": _template_items_tool_select(params, "view3d.select", "view3d.cursor3d", "toggle")}, ) @@ -5913,7 +5915,7 @@ def km_3d_view_tool_edit_gpencil_select(params): return ( "3D View Tool: Edit Gpencil, Tweak", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d")}, + {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d", "toggle")}, ) @@ -6018,7 +6020,7 @@ def km_3d_view_tool_sculpt_gpencil_select(params): return ( "3D View Tool: Sculpt Gpencil, Tweak", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d")}, + {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d", "toggle")}, ) -- cgit v1.2.3 From 966383138a42924b155e237a6dc32c22ace49b68 Mon Sep 17 00:00:00 2001 From: Alexander Gavrilov Date: Tue, 17 Dec 2019 16:11:31 +0300 Subject: Weight Paint: implement a red shade for bones with locked weights. Blender supports locking vertex groups to prevent changes to the weights. However, as mentioned in comments for D3837, it is hard to use this because there is no interface for locking in 3D View. This adds a red shade to bones that are associated with a locked weight group during weight paint mode, as the first step to adding such interface. The next step is adding a pie menu for lock/unlock. Differential Revision: https://developer.blender.org/D6533 --- release/scripts/startup/bl_ui/space_userpref.py | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 4f35bcc29df..ad5e7b5442c 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -997,6 +997,7 @@ class PreferenceThemeSpacePanel: "freestyle_face_mark", "split_normal", "bone_solid", + "bone_locked_weight", "paint_curve_pivot", }, 'GRAPH_EDITOR': { -- cgit v1.2.3 From c7596cd820e32747372378a511cd95894c4829e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Sun, 19 Jan 2020 23:41:02 +0100 Subject: Fluid: Improved cache file loading Cache file loading for mesh and particle files now works through the direct update_structures functions. The final cache mode now also only bakes the most essential files and is therefore not resumable anymore. --- release/scripts/startup/bl_ui/properties_physics_fluid.py | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index 6b0dd7ac36f..6252ba3bb74 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -1088,13 +1088,7 @@ class PHYSICS_PT_cache(PhysicButtonsPanel, Panel): col.separator() split = layout.split() - bake_incomplete = (domain.cache_frame_pause_data < domain.cache_frame_end) - if domain.has_cache_baked_data and not domain.is_cache_baking_data and bake_incomplete: - col = split.column() - col.operator("fluid.bake_all", text="Resume") - col = split.column() - col.operator("fluid.free_all", text="Free") - elif domain.is_cache_baking_data and not domain.has_cache_baked_data: + if domain.is_cache_baking_data and not domain.has_cache_baked_data: split.enabled = False split.operator("fluid.pause_bake", text="Baking All - ESC to pause") elif not domain.has_cache_baked_data and not domain.is_cache_baking_data: -- cgit v1.2.3 From 31e2786707049c40b9d8639639fd16a5cc0dce13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Mon, 20 Jan 2020 17:32:16 +0100 Subject: Fix T71825: Custom Animation Player path overrides chosen player Thanks @mano-wii for providing the patch! The original code assumed that when `animation_player_preset` was not `CUSTOM`, the `animation_player` path would be empty. This is a bad assumption, as it can be quite useful to be able to toggle between a custom and a built-in player. As such, `animation_player` should not be reset to an empty string when a non-custom player is chosen. --- release/scripts/startup/bl_operators/screen_play_rendered_anim.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py index 756d2ff1eeb..3900fc3f2c2 100644 --- a/release/scripts/startup/bl_operators/screen_play_rendered_anim.py +++ b/release/scripts/startup/bl_operators/screen_play_rendered_anim.py @@ -85,12 +85,13 @@ class PlayRenderedAnim(Operator): fps_final = rd.fps / rd.fps_base preset = prefs.filepaths.animation_player_preset - player_path = prefs.filepaths.animation_player # file_path = bpy.path.abspath(rd.filepath) # UNUSED is_movie = rd.is_movie_format # try and guess a command line if it doesn't exist - if player_path == "": + if preset == 'CUSTOM': + player_path = prefs.filepaths.animation_player + else: player_path = guess_player_path(preset) if is_movie is False and preset in {'FRAMECYCLER', 'RV', 'MPLAYER'}: -- cgit v1.2.3 From ed4bf2dc61ac1f1da71815b542749243101069db Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 21 Jan 2020 09:59:22 +0100 Subject: Fix T73283: Shadows checkbox affects Custom Distance active state This appears to just have been a simple copy/paste mistake --- release/scripts/startup/bl_ui/properties_data_light.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_light.py b/release/scripts/startup/bl_ui/properties_data_light.py index 6f730cf3307..cf894b48e1e 100644 --- a/release/scripts/startup/bl_ui/properties_data_light.py +++ b/release/scripts/startup/bl_ui/properties_data_light.py @@ -134,17 +134,15 @@ class DATA_PT_EEVEE_light_distance(DataButtonsPanel, Panel): light = context.light layout = self.layout - layout.active = light.use_shadow layout.prop(light, "use_custom_distance", text="") def draw(self, context): layout = self.layout light = context.light + layout.active = light.use_custom_distance layout.use_property_split = True - col = layout.column() - - col.prop(light, "cutoff_distance", text="Distance") + layout.prop(light, "cutoff_distance", text="Distance") class DATA_PT_EEVEE_shadow(DataButtonsPanel, Panel): @@ -311,7 +309,8 @@ class DATA_PT_falloff_curve(DataButtonsPanel, Panel): def draw(self, context): light = context.light - self.layout.template_curve_mapping(light, "falloff_curve", use_negative_slope=True) + self.layout.template_curve_mapping( + light, "falloff_curve", use_negative_slope=True) class DATA_PT_custom_props_light(DataButtonsPanel, PropertyPanel, Panel): -- cgit v1.2.3 From 79bd553f06283d7e30c76e3851c2444fa9a73ffb Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 21 Jan 2020 23:50:24 +1100 Subject: Industry Compatible Keymap: use MMB to access the active tool Fallback tools are used on LMB, MMB accessed the active tool. --- .../keymap_data/industry_compatible_data.py | 49 +++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 01db6994f37..ceca4687443 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -3669,7 +3669,7 @@ def km_generic_gizmo_maybe_drag(params): # ------------------------------------------------------------------------------ # Full Configuration -def generate_keymaps(params=None): +def generate_keymaps_impl(params=None): if params is None: params = Params() return [ @@ -3768,3 +3768,50 @@ def generate_keymaps(params=None): km_3d_view_tool_scale(params), ] + + +def keymap_transform_tool_mmb(keymap): + import re + # Any tool besides fallback tools. + re_fallback_tool = re.compile( + r".*\bTool:\s(?!" + r".*\bSelect Box$|" + r".*\bSelect Circle$|" + r".*\bSelect Lasso$|" + r".*\bTweak$)", + ) + for km_name, km_args, km_content in keymap: + if re_fallback_tool.match(km_name): + km_items = km_content["items"] + km_items_new = [] + for kmi in km_items: + ty = kmi[1]["type"] + if ty == 'LEFTMOUSE': + kmi = (kmi[0], kmi[1].copy(), kmi[2]) + kmi[1]["type"] = 'MIDDLEMOUSE' + km_items_new.append(kmi) + elif ty == 'EVT_TWEAK_L': + kmi = (kmi[0], kmi[1].copy(), kmi[2]) + kmi[1]["type"] = 'EVT_TWEAK_M' + km_items_new.append(kmi) + km_items.extend(km_items_new) + + +def generate_keymaps(params=None): + import os + from bpy.utils import execfile + keymap = generate_keymaps_impl(params) + + # Combine the key-map to support manipulating it, so we don't need to manually + # define key-map here just to manipulate them. + blender_default = execfile( + os.path.join(os.path.dirname(__file__), "blender_default.py"), + ).generate_keymaps() + + keymap_existing_names = {km[0] for km in keymap} + keymap.extend([km for km in blender_default if km[0] not in keymap_existing_names]) + + # Manipulate the key-map. + keymap_transform_tool_mmb(keymap) + + return keymap -- cgit v1.2.3 From 0de07c98143ad5b3581018b2e7e2e3ffdf3dc828 Mon Sep 17 00:00:00 2001 From: Keith Boshoff Date: Wed, 22 Jan 2020 04:00:21 +1100 Subject: Docs: describe vertex dirt method --- release/scripts/startup/bl_operators/vertexpaint_dirt.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/vertexpaint_dirt.py b/release/scripts/startup/bl_operators/vertexpaint_dirt.py index 39d792bd557..a249599b5d7 100644 --- a/release/scripts/startup/bl_operators/vertexpaint_dirt.py +++ b/release/scripts/startup/bl_operators/vertexpaint_dirt.py @@ -37,6 +37,20 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, from math import acos import array + # We simulate the accumulation of dirt in the creases of geometric surfaces + # by comparing the vertex normal to the average direction of all vertices + # connected to that vertex. We can also simulate surfaces being buffed or + # worn by testing protruding surfaces. + # + # So if the angle between the normal and geometric direction is: + # < 90 - dirt has accumulated in the crease + # > 90 - surface has been worn or buffed + # ~ 90 - surface is flat and is generally unworn and clean + # + # This method is limited by the complexity or lack there of in the geometry. + # + # Original code and method by Keith "Wahooney" Boshoff. + vert_tone = array.array("f", [0.0]) * len(me.vertices) # create lookup table for each vertex's connected vertices (via edges) -- cgit v1.2.3 From a4cf2cf2decc29f2ca829f57254b3087e438eb5a Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Wed, 22 Jan 2020 02:07:54 +0100 Subject: VSE: Add Adjust Last Operation panel to the video sequencer Add Adjust Last Operation panel to Sequencer. `OPTYPE_REGISTER` was removed form some operators and few properties were hidden So they don't show up on the panel Author: a.monti Reviewed By: ISS Differential Revision: http://developer.blender.org/D6210 --- release/scripts/startup/bl_ui/space_sequencer.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 097564444d0..5f23c7bca20 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -228,6 +228,9 @@ class SEQUENCER_MT_view(Menu): layout.prop(st, "show_region_ui") layout.operator_context = 'INVOKE_DEFAULT' + if is_sequencer_view: + layout.prop(st, "show_region_hud") + if st.view_type == 'SEQUENCER': layout.prop(st, "show_backdrop", text="Preview as Backdrop") -- cgit v1.2.3 From 69828cba533d486d3c00578cd0bd03a5e2b8d1c6 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 22 Jan 2020 17:43:15 +1100 Subject: UI: rename transparency to opacity Calling it transparency makes value seem inverted, resolves T73306. --- release/scripts/startup/bl_ui/properties_data_empty.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py index 4ce87b85410..dc9c170c65b 100644 --- a/release/scripts/startup/bl_ui/properties_data_empty.py +++ b/release/scripts/startup/bl_ui/properties_data_empty.py @@ -49,7 +49,7 @@ class DATA_PT_empty(DataButtonsPanel, Panel): col = layout.column() col.active = ob.use_empty_image_alpha - col.prop(ob, "color", text="Transparency", index=3, slider=True) + col.prop(ob, "color", text="Opacity", index=3, slider=True) col = layout.column(align=True) col.prop(ob, "empty_image_offset", text="Offset X", index=0) -- cgit v1.2.3 From fbe25aeed4411e1b7f501f25a7b23c4c0967c6e9 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 22 Jan 2020 18:31:25 +1100 Subject: Cleanup: adjust extend argument for tweak tool This isn't a type, name argument 'extend'. --- .../scripts/presets/keyconfig/keymap_data/blender_default.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index f95d5795f4f..bc4b5f49bdc 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -290,14 +290,14 @@ def _template_items_proportional_editing(*, connected=False): # Tool System Templates -def _template_items_tool_select(params, operator, cursor_operator, extend_type): +def _template_items_tool_select(params, operator, cursor_operator, *, extend): if params.select_mouse == 'LEFTMOUSE': # Immediate select without quick delay. return [ (operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, {"properties": [("deselect_all", True)]}), (operator, {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, - {"properties": [(extend_type, True)]}), + {"properties": [(extend, True)]}), ] else: # For right mouse, set the cursor. @@ -5057,7 +5057,7 @@ def km_image_editor_tool_uv_select(params): return ( "Image Editor Tool: Uv, Tweak", {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "uv.select", "uv.cursor_set", "extend")}, + {"items": _template_items_tool_select(params, "uv.select", "uv.cursor_set", extend="extend")}, ) @@ -5208,7 +5208,7 @@ def km_3d_view_tool_select(params): return ( "3D View Tool: Tweak", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "view3d.select", "view3d.cursor3d", "toggle")}, + {"items": _template_items_tool_select(params, "view3d.select", "view3d.cursor3d", extend="toggle")}, ) @@ -5915,7 +5915,7 @@ def km_3d_view_tool_edit_gpencil_select(params): return ( "3D View Tool: Edit Gpencil, Tweak", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d", "toggle")}, + {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d", extend="toggle")}, ) @@ -6020,7 +6020,7 @@ def km_3d_view_tool_sculpt_gpencil_select(params): return ( "3D View Tool: Sculpt Gpencil, Tweak", {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d", "toggle")}, + {"items": _template_items_tool_select(params, "gpencil.select", "view3d.cursor3d", extend="toggle")}, ) -- cgit v1.2.3 From ba8de85299ffaefba76dc2f0ca8231587ee7c233 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Wed, 22 Jan 2020 14:48:44 +0100 Subject: PLY Import: Hide empty operator properties sidebar in file browser The sidebar is empty for the PLY importer, so better to hide it. --- release/scripts/modules/bpy_extras/io_utils.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py index 19697b25f70..9e8febb47cd 100644 --- a/release/scripts/modules/bpy_extras/io_utils.py +++ b/release/scripts/modules/bpy_extras/io_utils.py @@ -116,6 +116,13 @@ class ImportHelper: subtype='FILE_PATH', ) + # Hide opertator properties, rest of this is managed in C. See WM_operator_properties_filesel(). + hide_props_region: BoolProperty( + name="Hide Operator Properties", + description="Collapse the region displaying the operator settings", + default=True, + ) + def invoke(self, context, _event): context.window_manager.fileselect_add(self) return {'RUNNING_MODAL'} -- cgit v1.2.3 From 6a49161c8c60cb63d9e3ed8dbe700163ff858436 Mon Sep 17 00:00:00 2001 From: Richard Antalik Date: Wed, 22 Jan 2020 14:54:44 +0100 Subject: VSE: Tool system integration Add toolbar to sequencer regions. A bit of refactoring has to be done in RNA space. Currently there is only cut tool implemented to serve as template for anybody who would like to add more. --- .../keyconfig/keymap_data/blender_default.py | 44 +++++++++ release/scripts/startup/bl_ui/space_sequencer.py | 41 +++++++- .../startup/bl_ui/space_toolsystem_common.py | 10 ++ .../startup/bl_ui/space_toolsystem_toolbar.py | 104 +++++++++++++++++++++ 4 files changed, 197 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index bc4b5f49bdc..81d59f9f751 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -2335,6 +2335,7 @@ def km_sequencercommon(_params): items.extend([ *_template_space_region_type_toggle( + toolbar_key={"type": 'T', "value": 'PRESS'}, sidebar_key={"type": 'N', "value": 'PRESS'}, ), ("wm.context_toggle", {"type": 'O', "value": 'PRESS', "shift": True}, @@ -2342,6 +2343,13 @@ def km_sequencercommon(_params): ("sequencer.view_toggle", {"type": 'TAB', "value": 'PRESS', "ctrl": True}, None), ]) + if _params.select_mouse == 'LEFTMOUSE' and not _params.legacy: + # Quick switch to select tool, since left select can't easily + # select with any tool active. + items.extend([ + op_tool_cycle("builtin.select_box", {"type": 'W', "value": 'PRESS'}), + ]) + return keymap @@ -6051,6 +6059,39 @@ def km_3d_view_tool_sculpt_gpencil_select_lasso(params): ) +def km_sequencer_editor_tool_select(params): + return ( + "Sequencer Tool: Select", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": [ + ("sequencer.select", {"type": params.select_mouse, "value": 'PRESS'}, + {"properties": [("extend", False), ("deselect_all", not params.legacy)]}), + ]}, + ) + + +def km_sequencer_editor_tool_select_box(params): + return ( + "Sequencer Tool: Select Box", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items": _template_items_tool_select_actions_simple( + "sequencer.select_box", type=params.tool_tweak, value='ANY', + properties=[("tweak", True)], + )}, + ) + + +def km_sequencer_editor_tool_cut(params): + return ( + "Sequencer Tool: Cut", + {"space_type": 'SEQUENCE_EDITOR', "region_type": 'WINDOW'}, + {"items":[ + ("sequencer.cut", {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("type", 'SOFT'), ("side", 'NO_CHANGE'), ("use_cursor_position", True), ("ignore_selection", True)]}), + ]}, + ) + + # ------------------------------------------------------------------------------ # Full Configuration @@ -6264,6 +6305,9 @@ def generate_keymaps(params=None): km_3d_view_tool_sculpt_gpencil_select_box(params), km_3d_view_tool_sculpt_gpencil_select_circle(params), km_3d_view_tool_sculpt_gpencil_select_lasso(params), + km_sequencer_editor_tool_select(params), + km_sequencer_editor_tool_select_box(params), + km_sequencer_editor_tool_cut(params), ] # ------------------------------------------------------------------------------ diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 5f23c7bca20..0e78ddfb648 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -30,6 +30,9 @@ from bpy.app.translations import ( from bl_ui.properties_grease_pencil_common import ( AnnotationDataPanel, ) +from bl_ui.space_toolsystem_common import ( + ToolActivePanelHelper, +) from rna_prop_ui import PropertyPanel @@ -89,6 +92,35 @@ def draw_color_balance(layout, color_balance): split.template_color_picker(color_balance, "gain", value_slider=True, lock_luminosity=True, cubic=True) +class SEQUENCER_PT_active_tool(ToolActivePanelHelper, Panel): + bl_space_type = 'SEQUENCE_EDITOR' + bl_region_type = 'UI' + bl_category = "Tool" + + +class SEQUENCER_HT_tool_header(Header): + bl_space_type = 'SEQUENCE_EDITOR' + bl_region_type = 'TOOL_HEADER' + + def draw(self, context): + layout = self.layout + + layout.template_header() + + self.draw_tool_settings(context) + + # TODO: options popover. + + def draw_tool_settings(self, context): + layout = self.layout + + # Active Tool + # ----------- + from bl_ui.space_toolsystem_common import ToolSelectPanelHelper + tool = ToolSelectPanelHelper.draw_active_tool_header(context, layout) + tool_mode = context.mode if tool is None else tool.mode + + class SEQUENCER_HT_header(Header): bl_space_type = 'SEQUENCE_EDITOR' @@ -97,7 +129,10 @@ class SEQUENCER_HT_header(Header): st = context.space_data - layout.template_header() + show_region_tool_header = st.show_region_tool_header + + if not show_region_tool_header: + layout.template_header() layout.prop(st, "view_type", text="") @@ -226,6 +261,7 @@ class SEQUENCER_MT_view(Menu): # wm_keymap_item_find_props() (see #32595). layout.operator_context = 'INVOKE_REGION_PREVIEW' layout.prop(st, "show_region_ui") + layout.prop(st, "show_region_toolbar") layout.operator_context = 'INVOKE_DEFAULT' if is_sequencer_view: @@ -2131,6 +2167,7 @@ class SEQUENCER_PT_custom_props(SequencerButtonsPanel, PropertyPanel, Panel): classes = ( SEQUENCER_MT_change, + SEQUENCER_HT_tool_header, SEQUENCER_HT_header, SEQUENCER_MT_editor_menus, SEQUENCER_MT_range, @@ -2156,7 +2193,7 @@ classes = ( SEQUENCER_MT_strip_input, SEQUENCER_MT_strip_lock_mute, SEQUENCER_MT_context_menu, - + SEQUENCER_PT_active_tool, SEQUENCER_PT_strip, SEQUENCER_PT_effect, diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py index 05785b85dfc..4dc724299f0 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_common.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py @@ -390,6 +390,14 @@ class ToolSelectPanelHelper: if tool is not None: tool.refresh_from_context() return tool + elif space_type == 'SEQUENCE_EDITOR': + space_data = context.space_data + if mode is None: + mode = space_data.view_type + tool = context.workspace.tools.from_space_sequencer(mode, create=create) + if tool is not None: + tool.refresh_from_context() + return tool return None @staticmethod @@ -656,6 +664,8 @@ class ToolSelectPanelHelper: return space_type, space_data.mode elif space_type == 'NODE_EDITOR': return space_type, None + elif space_type == 'SEQUENCE_EDITOR': + return space_type, context.space_data.view_type else: return None, None diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 170b635f7e1..c03d681f2b2 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -1707,6 +1707,51 @@ class _defs_node_edit: keymap="Node Tool: Links Cut", ) +class _defs_sequencer_generic: + + @ToolDef.from_fn + def cut(): + def draw_settings(_context, layout, tool): + props = tool.operator_properties("sequencer.cut") + row = layout.row() + row.use_property_split = False + row.prop(props, "type", expand=True) + return dict( + idname="builtin.cut", + label="Cut", + icon="ops.mesh.knife_tool", + widget=None, + keymap="Sequencer Tool: Cut", + draw_settings=draw_settings, + ) + +class _defs_sequencer_select: + @ToolDef.from_fn + def select(): + return dict( + idname="builtin.select", + label="Select", + icon="ops.generic.select", + widget=None, + keymap="Sequencer Tool: Select", + ) + @ToolDef.from_fn + def box(): + def draw_settings(_context, layout, tool): + props = tool.operator_properties("sequencer.select_box") + row = layout.row() + row.use_property_split = False + row.prop(props, "mode", text="", expand=True, icon_only=True) + pass + return dict( + idname="builtin.select_box", + label="Select Box", + icon="ops.generic.select_box", + widget=None, + keymap="Sequencer Tool: Select Box", + draw_settings=draw_settings, + ) + class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel): bl_space_type = 'IMAGE_EDITOR' @@ -2150,12 +2195,71 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): *_tools_annotate, ], } +class SEQUENCER_PT_tools_active(ToolSelectPanelHelper, Panel): + bl_space_type = 'SEQUENCE_EDITOR' + bl_region_type = 'TOOLS' + bl_label = "Tools" # not visible + bl_options = {'HIDE_HEADER'} + + # Satisfy the 'ToolSelectPanelHelper' API. + keymap_prefix = "Sequence Editor Tool:" + + # Default group to use as a fallback. + tool_fallback_id = "builtin.select" + + @classmethod + def tools_from_context(cls, context, mode=None): + if mode is None: + if context.space_data: + mode = context.space_data.view_type + for tools in (cls._tools[None], cls._tools.get(mode, ())): + for item in tools: + if not (type(item) is ToolDef) and callable(item): + yield from item(context) + else: + yield item + + @classmethod + def tools_all(cls): + yield from cls._tools.items() + _tools_select = ( + ( + _defs_sequencer_select.select, + _defs_sequencer_select.box, + ), + ) + _tools_annotate = ( + ( + _defs_annotate.scribble, + _defs_annotate.line, + _defs_annotate.poly, + _defs_annotate.eraser, + ), + ) + + _tools = { + None: [ + ], + 'PREVIEW': [ + *_tools_annotate, + ], + 'SEQUENCER': [ + *_tools_select, + _defs_sequencer_generic.cut, + ], + 'SEQUENCER_PREVIEW': [ + *_tools_select, + *_tools_annotate, + _defs_sequencer_generic.cut, + ], + } classes = ( IMAGE_PT_tools_active, NODE_PT_tools_active, VIEW3D_PT_tools_active, + SEQUENCER_PT_tools_active, ) if __name__ == "__main__": # only for live edit. -- cgit v1.2.3 From 452834f1e3a0253afd27339511f9b864818d3dde Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Wed, 22 Jan 2020 13:48:25 -0800 Subject: UI: Area Duplicate Icon Changes the icon used for 'duplicate into new window' to a new one created for this purpose. Differential Revision: https://developer.blender.org/D6463 Reviewed by Julian Eisel --- release/scripts/addons | 2 +- release/scripts/addons_contrib | 2 +- release/scripts/startup/bl_ui/space_info.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/addons b/release/scripts/addons index 1470f353c65..1e165b809b6 160000 --- a/release/scripts/addons +++ b/release/scripts/addons @@ -1 +1 @@ -Subproject commit 1470f353c65034db91131d21ab9c782d029a2ee9 +Subproject commit 1e165b809b66fbf19778dbb6f1a3f4e64efef031 diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib index ffbaca558a2..70b649775ee 160000 --- a/release/scripts/addons_contrib +++ b/release/scripts/addons_contrib @@ -1 +1 @@ -Subproject commit ffbaca558a27bab4716bcd51ca7ea1df8e4f4b14 +Subproject commit 70b649775eeeebedb02c1c7b7aa996a7f6294177 diff --git a/release/scripts/startup/bl_ui/space_info.py b/release/scripts/startup/bl_ui/space_info.py index 82ed701aa4c..cd65980fc0d 100644 --- a/release/scripts/startup/bl_ui/space_info.py +++ b/release/scripts/startup/bl_ui/space_info.py @@ -92,7 +92,7 @@ class INFO_MT_area(Menu): layout.separator() - layout.operator("screen.area_dupli", icon='DUPLICATE') + layout.operator("screen.area_dupli", icon='WINDOW') layout.separator() -- cgit v1.2.3 From fe772bf8186c5fc990752c4199a4ec38128e0816 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Thu, 23 Jan 2020 10:34:29 +0100 Subject: UI: Change 'Lock Time to Other Windows' > 'Sync Visible Range' + add to Sequencer As pointed out by user @Peter Fog (tintwotin): The current name for this property is wrong for two reasons: - Because it makes incorrect use of the term 'window' (in Blender these are called 'editors') - 'Lock Time' is incorrect, because it has nothing to do with locking the time at all. In Blender, the time is already locked and always the same across editors, no matter what. This property only syncs the visible range, which is something quite different. For this reason, this is changed to 'Sync Visible Range' instead. I also added a tooltip, which was completely missing. This patch also adds this property to the Sequencer, where it was missing. Differential Revision: https://developer.blender.org/D6632 Reviewed by Julian Eisel --- release/scripts/startup/bl_ui/space_sequencer.py | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_sequencer.py b/release/scripts/startup/bl_ui/space_sequencer.py index 0e78ddfb648..af0c23e7892 100644 --- a/release/scripts/startup/bl_ui/space_sequencer.py +++ b/release/scripts/startup/bl_ui/space_sequencer.py @@ -307,6 +307,7 @@ class SEQUENCER_MT_view(Menu): layout.operator_context = 'INVOKE_DEFAULT' layout.prop(st, "show_seconds") + layout.prop(st, "show_locked_time") layout.prop(st, "show_strip_offset") layout.separator() layout.prop(st, "show_markers") -- cgit v1.2.3 From 1f6ab32196d7cdd78e55f51ccc4304994b78b5c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Thu, 23 Jan 2020 10:37:32 +0100 Subject: Fix T73279: Particle Rotation checkbox enabled when a bake exists The contents of the Rotation panel was already disabled when a bake exists, but the checkbox in the header wasn't. Since rotations are part of the baked data, it doesn't make sense to enable/disable rotations after baking. --- release/scripts/startup/bl_ui/properties_particle.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 2028857640e..34ff386893b 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -582,7 +582,10 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): else: part = context.space_data.pin_id - self.layout.prop(part, "use_rotations", text="") + layout = self.layout + layout.prop(part, "use_rotations", text="") + layout.enabled = particle_panel_enabled(context, psys) and part.use_rotations + def draw(self, context): layout = self.layout -- cgit v1.2.3 From c01246f6c0fa09d20bfc1f966466b74998045dfa Mon Sep 17 00:00:00 2001 From: William Reynish Date: Thu, 23 Jan 2020 11:45:48 +0100 Subject: UI: Consolidate masking-related brush controls In the brush properties, some masking-related controls are currently available as a sub-panel in the Options panel, while others are in the Mask panel. I want to generally lessen the amount of controls in generic 'options' panels, since it's non-descriptive and rather a rather random grab bag of various controls. Better to group things in terms of their functionality with descriptive names. This change consolidates the masking-related controls under one panel. Differential Revision: https://developer.blender.org/D6577 Reviewers: Pablo Dobarro, Julien Kaspar --- .../scripts/startup/bl_ui/space_view3d_toolbar.py | 23 ++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 011c2a8b39a..19d5e3da309 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -560,12 +560,23 @@ class VIEW3D_PT_slots_projectpaint(View3DPanel, Panel): layout.operator("image.save_all_modified", text="Save All Images", icon='FILE_TICK') +class VIEW3D_PT_mask(View3DPanel, Panel): + bl_category = "Tool" + bl_context = ".imagepaint" # dot on purpose (access from topbar) + bl_label = "Masking" + bl_options = {'DEFAULT_CLOSED'} + + def draw(self, context): + pass + + # TODO, move to space_view3d.py class VIEW3D_PT_stencil_projectpaint(View3DPanel, Panel): bl_category = "Tool" bl_context = ".imagepaint" # dot on purpose (access from topbar) - bl_label = "Mask" + bl_label = "Stencil Mask" bl_options = {'DEFAULT_CLOSED'} + bl_parent_id = "VIEW3D_PT_mask" bl_ui_units_x = 14 @classmethod @@ -1192,6 +1203,7 @@ class VIEW3D_PT_tools_imagepaint_options_cavity(View3DPaintPanel, Panel): bl_context = ".imagepaint" # dot on purpose (access from topbar) bl_label = "Cavity Mask" bl_parent_id = "VIEW3D_PT_tools_imagepaint_options" + bl_parent_id = "VIEW3D_PT_mask" bl_options = {'DEFAULT_CLOSED'} def draw_header(self, context): @@ -1876,7 +1888,7 @@ classes = ( VIEW3D_PT_tools_curveedit_options_stroke, VIEW3D_PT_tools_armatureedit_options, VIEW3D_PT_tools_posemode_options, - + VIEW3D_PT_slots_projectpaint, VIEW3D_PT_tools_brush_select, VIEW3D_PT_tools_brush_settings, @@ -1886,7 +1898,6 @@ classes = ( VIEW3D_PT_tools_brush_clone, TEXTURE_UL_texpaintslots, VIEW3D_MT_tools_projectpaint_uvlayer, - VIEW3D_PT_stencil_projectpaint, VIEW3D_PT_tools_brush_texture, VIEW3D_PT_tools_mask_texture, VIEW3D_PT_tools_brush_stroke, @@ -1912,9 +1923,13 @@ classes = ( VIEW3D_PT_tools_vertexpaint_symmetry_for_topbar, VIEW3D_PT_tools_vertexpaint_options, + VIEW3D_PT_mask, + VIEW3D_PT_stencil_projectpaint, + VIEW3D_PT_tools_imagepaint_options_cavity, + VIEW3D_PT_tools_imagepaint_symmetry, VIEW3D_PT_tools_imagepaint_options, - VIEW3D_PT_tools_imagepaint_options_cavity, + VIEW3D_PT_tools_imagepaint_options_external, VIEW3D_MT_tools_projectpaint_stencil, -- cgit v1.2.3 From 8482ba6d2e1a97e038175a7fb693ed40c03ca5d9 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Thu, 23 Jan 2020 14:53:19 +0100 Subject: UI: Text Editor header cleanup - Register toggle is in the Text menu - Run Script and Refresh OSL become an icon buttons next to ID block Differential Revision: https://developer.blender.org/D5686 Reviewed by Campbell Barton --- release/scripts/startup/bl_ui/space_text.py | 33 ++++++++++++----------------- 1 file changed, 13 insertions(+), 20 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_text.py b/release/scripts/startup/bl_ui/space_text.py index 81ccc9216a1..b7c5dcd5437 100644 --- a/release/scripts/startup/bl_ui/space_text.py +++ b/release/scripts/startup/bl_ui/space_text.py @@ -30,7 +30,7 @@ class TEXT_HT_header(Header): st = context.space_data text = st.text - + is_syntax_highlight_supported = st.is_syntax_highlight_supported() layout.template_header() TEXT_MT_editor_menus.draw_collapsible(context, layout) @@ -43,7 +43,18 @@ class TEXT_HT_header(Header): layout.separator_spacer() row = layout.row(align=True) - row.template_ID(st, "text", new="text.new", unlink="text.unlink", open="text.open") + row.template_ID(st, "text", new="text.new", + unlink="text.unlink", open="text.open") + + if text: + is_osl = text.name.endswith((".osl", ".osl")) + if is_osl: + row.operator("node.shader_script_update", + text="", icon='FILE_REFRESH') + else: + row = layout.row() + row.active = is_syntax_highlight_supported + row.operator("text.run_script", text="", icon='PLAY') layout.separator_spacer() @@ -51,28 +62,10 @@ class TEXT_HT_header(Header): row.prop(st, "show_line_numbers", text="") row.prop(st, "show_word_wrap", text="") - is_syntax_highlight_supported = st.is_syntax_highlight_supported() syntax = row.row(align=True) syntax.active = is_syntax_highlight_supported syntax.prop(st, "show_syntax_highlight", text="") - if text: - text_name = text.name - is_osl = text_name.endswith((".osl", ".oso")) - - row = layout.row() - if is_osl: - row = layout.row() - row.operator("node.shader_script_update") - else: - row = layout.row() - row.active = text_name.endswith(".py") - row.prop(text, "use_module") - - row = layout.row() - row.active = is_syntax_highlight_supported - row.operator("text.run_script") - class TEXT_HT_footer(Header): bl_space_type = 'TEXT_EDITOR' -- cgit v1.2.3 From 8d3df01e9dc098c3660491e73da9d6901fd422a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Fri, 24 Jan 2020 17:15:53 +0100 Subject: Fix T53205: Show Smoke Advance Panel at Outflow type Now hiding the initial velocity and texture panel when flow behavior is set to outflow. --- .../scripts/startup/bl_ui/properties_physics_fluid.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index 6252ba3bb74..c1b8ae1a36a 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -95,6 +95,16 @@ class PhysicButtonsPanel: md = context.fluid return md and (md.fluid_type == 'FLOW') + @staticmethod + def poll_fluid_flow_outflow(context): + if not PhysicButtonsPanel.poll_fluid_flow(context): + return False + + md = context.fluid + flow = md.flow_settings + if (flow.flow_behavior == 'OUTFLOW'): + return True + class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel): bl_label = "Fluid" @@ -507,6 +517,9 @@ class PHYSICS_PT_flow_initial_velocity(PhysicButtonsPanel, Panel): if not PhysicButtonsPanel.poll_fluid_flow(context): return False + if PhysicButtonsPanel.poll_fluid_flow_outflow(context): + return False + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): @@ -546,6 +559,9 @@ class PHYSICS_PT_flow_texture(PhysicButtonsPanel, Panel): if not PhysicButtonsPanel.poll_fluid_flow(context): return False + if PhysicButtonsPanel.poll_fluid_flow_outflow(context): + return False + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): -- cgit v1.2.3 From 4aa703aa1430bc53f19e2cc7182e70db1a916f13 Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Fri, 24 Jan 2020 12:17:57 -0800 Subject: UI: View3D Cursor Changes Changes the default View3D mouse cursor to the OS-supplied arrow pointer. Subsequent cursor changes will now be set per-tool instead. Differential Revision: https://developer.blender.org/D6485 Reviewed by Campbell Barton --- release/scripts/addons | 2 +- release/scripts/startup/bl_ui/space_toolsystem_toolbar.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/addons b/release/scripts/addons index 1e165b809b6..71ac0b888be 160000 --- a/release/scripts/addons +++ b/release/scripts/addons @@ -1 +1 @@ -Subproject commit 1e165b809b66fbf19778dbb6f1a3f4e64efef031 +Subproject commit 71ac0b888beb3f057915446e3e7c92c44f1c4ee8 diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index c03d681f2b2..8429d30aeec 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -134,6 +134,7 @@ class _defs_view3d_generic: idname="builtin.measure", label="Measure", description=description, + cursor='CROSSHAIR', icon="ops.view3d.ruler", widget="VIEW3D_GGT_ruler", keymap="3D View Tool: Measure", @@ -361,6 +362,7 @@ class _defs_view3d_select: label="Select Lasso", icon="ops.generic.select_lasso", widget=None, + cursor='DEFAULT', keymap="3D View Tool: Select Lasso", draw_settings=draw_settings, ) @@ -385,6 +387,7 @@ class _defs_view3d_select: label="Select Circle", icon="ops.generic.select_circle", widget=None, + cursor='DEFAULT', keymap="3D View Tool: Select Circle", draw_settings=draw_settings, draw_cursor=draw_cursor, -- cgit v1.2.3 From 92230a32fd21a3648fe13116b0d309560f2af111 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 25 Jan 2020 17:03:39 +0100 Subject: Fix T73362: Tweak Tool not working if IC Keymap is chosen I don't fully understand why this was broken, but defining the Tweak tool keymap here and removing the 3d cursor argument fixes it. --- .../keymap_data/industry_compatible_data.py | 30 ++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index ceca4687443..a2c48f83118 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -39,6 +39,9 @@ class Params: use_mouse_emulate_3_button=False, ): self.tool_mouse = 'LEFTMOUSE' + self.select_mouse = 'LEFTMOUSE' + self.select_mouse_value = 'CLICK' + self.select_tweak = 'EVT_TWEAK_L' self.tool_tweak = 'EVT_TWEAK_L' self.action_tweak = 'EVT_TWEAK_R' self.use_mouse_emulate_3_button = use_mouse_emulate_3_button @@ -135,8 +138,13 @@ def _template_items_basic_tools(*, connected=False): op_tool_cycle("builtin.cursor", {"type": 'C', "value": 'PRESS'}), ] -def _template_items_tool_select(params, operator, cursor_operator): - return [(operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, None)] +def _template_items_tool_select(params, operator, *, extend): + return [ + (operator, {"type": 'LEFTMOUSE', "value": 'PRESS'}, + {"properties": [("deselect_all", True)]}), + (operator, {"type": 'LEFTMOUSE', "value": 'PRESS', "shift": True}, + {"properties": [(extend, True)]}), + ] def _template_items_tool_select_actions(operator, *, type, value): @@ -3565,6 +3573,22 @@ def km_transform_modal_map(_params): # Named are auto-generated based on the tool name and it's toolbar. +def km_3d_view_tool_select(params): + return ( + "3D View Tool: Tweak", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": _template_items_tool_select(params, "view3d.select", extend="toggle")}, + ) + + +def km_image_editor_tool_uv_select(params): + return ( + "Image Editor Tool: Uv, Tweak", + {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, + {"items": _template_items_tool_select(params, "uv.select", extend="extend")}, + ) + + def km_image_editor_tool_uv_move(params): return ( "Image Editor Tool: Uv, Move", @@ -3759,6 +3783,8 @@ def generate_keymaps_impl(params=None): km_generic_gizmo_maybe_drag(params), # Tool System. + km_3d_view_tool_select(params), + km_image_editor_tool_uv_select(params), km_image_editor_tool_uv_move(params), km_image_editor_tool_uv_rotate(params), km_image_editor_tool_uv_scale(params), -- cgit v1.2.3 From 5325bc3fb62967cd43ecbe842b632717be5aa905 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Sat, 25 Jan 2020 18:01:04 +0100 Subject: Industry Compat keymap: cleanup Remove entries for the transform tools, since this is no longer necessary after recent changes. The default keymap entries are simply used instead, since the MMB is now added automatically. --- .../keymap_data/industry_compatible_data.py | 84 ---------------------- 1 file changed, 84 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index a2c48f83118..6b4f4976596 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -3589,82 +3589,6 @@ def km_image_editor_tool_uv_select(params): ) -def km_image_editor_tool_uv_move(params): - return ( - "Image Editor Tool: Uv, Move", - {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": [ - ("transform.translate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - ]}, - ) - - -def km_image_editor_tool_uv_rotate(params): - return ( - "Image Editor Tool: Uv, Rotate", - {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": [ - ("transform.rotate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - ]}, - ) - - -def km_image_editor_tool_uv_scale(params): - return ( - "Image Editor Tool: Uv, Scale", - {"space_type": 'IMAGE_EDITOR', "region_type": 'WINDOW'}, - {"items": [ - ("transform.resize", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - ]}, - ) - - -def km_3d_view_tool_move(params): - return ( - "3D View Tool: Move", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.translate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - ]}, - ) - - -def km_3d_view_tool_rotate(params): - return ( - "3D View Tool: Rotate", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.rotate", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - ]}, - ) - - -def km_3d_view_tool_scale(params): - return ( - "3D View Tool: Scale", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.resize", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, - {"properties": [("release_confirm", True)]}), - ]}, - ) - - -def km_3d_view_tool_transform(params): - return ( - "3D View Tool: Transform", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.from_gizmo", {"type": 'EVT_TWEAK_M', "value": 'ANY'}, None), - ]}, - ) - - # Fallback for gizmos that don't have custom a custom key-map. @@ -3785,14 +3709,6 @@ def generate_keymaps_impl(params=None): # Tool System. km_3d_view_tool_select(params), km_image_editor_tool_uv_select(params), - km_image_editor_tool_uv_move(params), - km_image_editor_tool_uv_rotate(params), - km_image_editor_tool_uv_scale(params), - km_3d_view_tool_transform(params), - km_3d_view_tool_move(params), - km_3d_view_tool_rotate(params), - km_3d_view_tool_scale(params), - ] -- cgit v1.2.3 From b59adcaa3683ecba90bfab0b91d13f86bbf4f335 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Sun, 26 Jan 2020 16:48:05 +0100 Subject: Fix T73357: Multiple importers fail Very stupid mistake in ba8de85299ff, registered property for wrong class. It should be registered for the PLY importer add-on only. --- release/scripts/modules/bpy_extras/io_utils.py | 7 ------- 1 file changed, 7 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy_extras/io_utils.py b/release/scripts/modules/bpy_extras/io_utils.py index 9e8febb47cd..19697b25f70 100644 --- a/release/scripts/modules/bpy_extras/io_utils.py +++ b/release/scripts/modules/bpy_extras/io_utils.py @@ -116,13 +116,6 @@ class ImportHelper: subtype='FILE_PATH', ) - # Hide opertator properties, rest of this is managed in C. See WM_operator_properties_filesel(). - hide_props_region: BoolProperty( - name="Hide Operator Properties", - description="Collapse the region displaying the operator settings", - default=True, - ) - def invoke(self, context, _event): context.window_manager.fileselect_add(self) return {'RUNNING_MODAL'} -- cgit v1.2.3 From 6dbc254c0b3fb11ce53f8a6a6df4692422556500 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Mon, 27 Jan 2020 11:41:22 +0100 Subject: Fix T66920: Shortcut Bind Camera to Marker in timeline not working The shortcut was only registered for the marker region, although it can be registered to the main region without conflicts. --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 81d59f9f751..95f066c583d 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1331,7 +1331,6 @@ def km_markers(params): ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None), ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), ("marker.move", {"type": 'G', "value": 'PRESS'}, None), - ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), ]) return keymap @@ -2034,6 +2033,7 @@ def km_dopesheet(params): op_menu_pie("VIEW3D_MT_proportional_editing_falloff_pie", {"type": 'O', "value": 'PRESS', "shift": True}), ("marker.add", {"type": 'M', "value": 'PRESS'}, None), ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), + ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), *_template_items_context_menu("DOPESHEET_MT_context_menu", params.context_menu_event), ]) -- cgit v1.2.3 From 4e881540f71ba207db7c007a3424c95eff187080 Mon Sep 17 00:00:00 2001 From: Julian Eisel Date: Mon, 27 Jan 2020 11:49:24 +0100 Subject: Fix mistake in previous commit While the behavior of this shortcut can be argued (it only works while hovering the possibly invisible markers region), it was not my intention to remove it entierly from the Graph and Sequencer Editor. Only wanted to copy it. --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 1 + 1 file changed, 1 insertion(+) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 95f066c583d..543a36aa7c1 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -1331,6 +1331,7 @@ def km_markers(params): ("marker.delete", {"type": 'DEL', "value": 'PRESS'}, None), ("marker.rename", {"type": 'M', "value": 'PRESS', "ctrl": True}, None), ("marker.move", {"type": 'G', "value": 'PRESS'}, None), + ("marker.camera_bind", {"type": 'B', "value": 'PRESS', "ctrl": True}, None), ]) return keymap -- cgit v1.2.3 From 1094e560413d38e9834ae563ef248f898cb8b201 Mon Sep 17 00:00:00 2001 From: Cody Winchester Date: Mon, 27 Jan 2020 14:03:24 +0100 Subject: Cast modifier: Add invert vgroup option. Adds the Invert Vertex Group weight option to the Cast modifier. Uses the same setup as similar modifiers invert weight. Adds a boolean invert property next to the vertex group string in the modifier and subtracts the current vertex weight from 1.0f if it is turned on. Differential Revision: https://developer.blender.org/D6671 Minor modifications by @mont29. --- release/scripts/startup/bl_ui/properties_data_modifier.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_modifier.py b/release/scripts/startup/bl_ui/properties_data_modifier.py index d4b2c39bd5e..197566f16f3 100644 --- a/release/scripts/startup/bl_ui/properties_data_modifier.py +++ b/release/scripts/startup/bl_ui/properties_data_modifier.py @@ -293,7 +293,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, Panel): col = split.column() col.label(text="Vertex Group:") - col.prop_search(md, "vertex_group", ob, "vertex_groups", text="") + row = col.row(align=True) + row.prop_search(md, "vertex_group", ob, "vertex_groups", text="") + row.prop(md, "invert_vertex_group", text="", icon='ARROW_LEFTRIGHT') col = split.column() col.label(text="Control Object:") col.prop(md, "object", text="") -- cgit v1.2.3 From 5d21efcd21cd46c336404d37ebf8e80b6ed77c11 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 27 Jan 2020 15:10:48 +0100 Subject: Fix T73409: error deleting preset saved on different drive than Blender install --- release/scripts/modules/bpy/utils/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index abe33b0e8ea..ae1e3495cba 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -486,7 +486,10 @@ def is_path_builtin(path): ): return True except FileNotFoundError: - #The path we tried to look up doesn't exist + # The path we tried to look up doesn't exist. + pass + except ValueError: + # Happens on Windows when paths don't have the same drive. pass return False -- cgit v1.2.3 From 22ca8b8aee9955292b838ac92d08566bcaee3e25 Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Mon, 27 Jan 2020 10:41:39 -0800 Subject: UI: Win32 - Restore Minimized App On WM_Close Changes needed for Windows 10 to restore and show close dialog from minimized state. https://developer.blender.org/D5107 Reviewed by Brecht Van Lommel --- release/scripts/addons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/addons b/release/scripts/addons index 71ac0b888be..47a32a5370d 160000 --- a/release/scripts/addons +++ b/release/scripts/addons @@ -1 +1 @@ -Subproject commit 71ac0b888beb3f057915446e3e7c92c44f1c4ee8 +Subproject commit 47a32a5370d36942674621e5a03e57e8dd4986d8 -- cgit v1.2.3 From eb6cb67ab68679ac80a0f8886879c42cf6953d98 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 28 Jan 2020 14:01:18 +1100 Subject: Fix T69213: App-Template doesn't run scripts in BLENDER_USER_SCRIPTS --- release/scripts/modules/bpy/utils/__init__.py | 30 ++++++++++----------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index ae1e3495cba..9404c78c565 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -409,26 +409,18 @@ def app_template_paths(subdir=None): :return: app template paths. :rtype: generator """ - # Note: keep in sync with: Blender's BKE_appdir_app_template_any - - subdir_tuple = (subdir,) if subdir is not None else () - - # Avoid adding 'bl_app_templates_system' twice. - # Either we have a portable build or an installed system build. - for resource_type, module_name in ( - ('USER', "bl_app_templates_user"), - ('LOCAL', "bl_app_templates_system"), - ('SYSTEM', "bl_app_templates_system"), + subdir_args = (subdir,) if subdir is not None else () + # Note: keep in sync with: Blender's 'BKE_appdir_app_template_any'. + # Uses 'BLENDER_USER_SCRIPTS', 'BLENDER_SYSTEM_SCRIPTS' + # ... in this case 'system' accounts for 'local' too. + scripts_system, scripts_user = _bpy_script_paths() + for resource_fn, module_name in ( + (_user_resource, "bl_app_templates_user"), + (system_resource, "bl_app_templates_system"), ): - path = resource_path(resource_type) - if path: - path = _os.path.join( - *(path, "scripts", "startup", module_name, *subdir_tuple)) - if _os.path.isdir(path): - yield path - # Only load LOCAL or SYSTEM (never both). - if resource_type == 'LOCAL': - break + path = resource_fn('SCRIPTS', _os.path.join("startup", module_name, *subdir_args)) + if path and _os.path.isdir(path): + yield path def preset_paths(subdir): -- cgit v1.2.3 From 2e7fd35425ede9f4b938b7fa92c2ae8a34a60b6d Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 28 Jan 2020 16:20:44 +1100 Subject: Error in last comment (redundant assignment) --- release/scripts/modules/bpy/utils/__init__.py | 1 - 1 file changed, 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/bpy/utils/__init__.py b/release/scripts/modules/bpy/utils/__init__.py index 9404c78c565..3d36f3eb510 100644 --- a/release/scripts/modules/bpy/utils/__init__.py +++ b/release/scripts/modules/bpy/utils/__init__.py @@ -413,7 +413,6 @@ def app_template_paths(subdir=None): # Note: keep in sync with: Blender's 'BKE_appdir_app_template_any'. # Uses 'BLENDER_USER_SCRIPTS', 'BLENDER_SYSTEM_SCRIPTS' # ... in this case 'system' accounts for 'local' too. - scripts_system, scripts_user = _bpy_script_paths() for resource_fn, module_name in ( (_user_resource, "bl_app_templates_user"), (system_resource, "bl_app_templates_system"), -- cgit v1.2.3 From acb576c762d46d945e1bafe85d3f166c6c07955b Mon Sep 17 00:00:00 2001 From: William Reynish Date: Tue, 28 Jan 2020 10:25:46 +0100 Subject: UI: Empty image Properties layout tweaks - Enable decorators - Use sub-panel for transparency Differential Revision: https://developer.blender.org/D6692 Reviewed by Brecht van Lommel --- .../scripts/startup/bl_ui/properties_data_empty.py | 36 ++++++++++++++++------ 1 file changed, 26 insertions(+), 10 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py index dc9c170c65b..d686c55407a 100644 --- a/release/scripts/startup/bl_ui/properties_data_empty.py +++ b/release/scripts/startup/bl_ui/properties_data_empty.py @@ -37,7 +37,6 @@ class DATA_PT_empty(DataButtonsPanel, Panel): def draw(self, context): layout = self.layout layout.use_property_split = True - layout.use_property_decorate = False ob = context.object @@ -45,12 +44,6 @@ class DATA_PT_empty(DataButtonsPanel, Panel): layout.prop(ob, "empty_display_size", text="Size") if ob.empty_display_type == 'IMAGE': - layout.prop(ob, "use_empty_image_alpha") - - col = layout.column() - col.active = ob.use_empty_image_alpha - col.prop(ob, "color", text="Opacity", index=3, slider=True) - col = layout.column(align=True) col.prop(ob, "empty_image_offset", text="Offset X", index=0) col.prop(ob, "empty_image_offset", text="Y", index=1) @@ -58,11 +51,32 @@ class DATA_PT_empty(DataButtonsPanel, Panel): col = layout.column() col.row().prop(ob, "empty_image_depth", text="Depth", expand=True) col.row().prop(ob, "empty_image_side", text="Side", expand=True) - col.prop(ob, "show_empty_image_orthographic", text="Display Orthographic") - col.prop(ob, "show_empty_image_perspective", text="Display Perspective") + col.prop(ob, "show_empty_image_orthographic", + text="Display Orthographic") + col.prop(ob, "show_empty_image_perspective", + text="Display Perspective") col.prop(ob, "show_empty_image_only_axis_aligned") +class DATA_PT_empty_alpha(DataButtonsPanel, Panel): + bl_label = "Transparency" + bl_parent_id = "DATA_PT_empty" + + def draw_header(self, context): + ob = context.object + + self.layout.prop(ob, "use_empty_image_alpha", text="") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + + ob = context.object + + layout.active = ob.use_empty_image_alpha + layout.prop(ob, "color", text="Opacity", index=3, slider=True) + + class DATA_PT_empty_image(DataButtonsPanel, Panel): bl_label = "Image" @@ -74,13 +88,15 @@ class DATA_PT_empty_image(DataButtonsPanel, Panel): def draw(self, context): layout = self.layout ob = context.object - layout.template_ID(ob, "data", open="image.open", unlink="object.unlink_data") + layout.template_ID(ob, "data", open="image.open", + unlink="object.unlink_data") layout.separator() layout.template_image(ob, "data", ob.image_user, compact=True) classes = ( DATA_PT_empty, + DATA_PT_empty_alpha, DATA_PT_empty_image, ) -- cgit v1.2.3 From 773beec541474616eda18583567c9934745c71ba Mon Sep 17 00:00:00 2001 From: Yevgeny Makarov Date: Tue, 28 Jan 2020 11:29:38 +0100 Subject: macOS: add trackpad smart zoom event support This is done with two-finger double tap on trackpads, and is usually used to zoom into an element under the cursor. It can now be used for toggling local view in the 3D viewport. Differential Revision: https://developer.blender.org/D6588 --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 1 + .../scripts/presets/keyconfig/keymap_data/industry_compatible_data.py | 1 + 2 files changed, 2 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 543a36aa7c1..617f2d34064 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -942,6 +942,7 @@ def km_view3d(params): # Visibility. ("view3d.localview", {"type": 'NUMPAD_SLASH', "value": 'PRESS'}, None), ("view3d.localview", {"type": 'SLASH', "value": 'PRESS'}, None), + ("view3d.localview", {"type": 'MOUSESMARTZOOM', "value": 'ANY'}, None), ("view3d.localview_remove_from", {"type": 'M', "value": 'PRESS'}, None), # Navigation. ("view3d.rotate", {"type": 'MIDDLEMOUSE', "value": 'PRESS'}, None), diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index 6b4f4976596..d84699fc0f6 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -630,6 +630,7 @@ def km_view3d(params): ("wm.search_menu", {"type": 'TAB', "value": 'PRESS'}, None), # Visibility. ("view3d.localview", {"type": 'I', "value": 'PRESS', "shift": True}, None), + ("view3d.localview", {"type": 'MOUSESMARTZOOM', "value": 'ANY'}, None), op_menu_pie("VIEW3D_MT_view_pie", {"type": 'V', "value": 'PRESS'}), # Navigation. ("view3d.rotate", {"type": 'LEFTMOUSE', "value": 'PRESS', "alt": True}, None), -- cgit v1.2.3 From f9e1e088a4c7000158aa1e99d32a7785bc36e9e5 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Wed, 29 Jan 2020 10:25:09 +1100 Subject: Tool System: add shear tool to non-mesh edit-modes --- .../keyconfig/keymap_data/blender_default.py | 42 +++++++++++----------- .../startup/bl_ui/space_toolsystem_toolbar.py | 38 ++++++++++++-------- 2 files changed, 44 insertions(+), 36 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index 8f8b1cc39d9..8b398d1541c 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -5280,6 +5280,26 @@ def km_3d_view_tool_scale(params): ) +def km_3d_view_tool_shear(params): + return ( + "3D View Tool: Shear", + {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, + {"items": [ + ("transform.shear", + {"type": params.tool_tweak, "value": 'NORTH'}, + {"properties": [("release_confirm", True), ("orient_axis_ortho", 'Y')]}), + ("transform.shear", + {"type": params.tool_tweak, "value": 'SOUTH'}, + {"properties": [("release_confirm", True), ("orient_axis_ortho", 'Y')]}), + + # Use as fallback to catch diagonals too. + ("transform.shear", + {"type": params.tool_tweak, "value": 'ANY'}, + {"properties": [("release_confirm", True), ("orient_axis_ortho", 'X')]}), + ]}, + ) + + def km_3d_view_tool_measure(params): return ( "3D View Tool: Measure", @@ -5595,26 +5615,6 @@ def km_3d_view_tool_edit_mesh_push_pull(params): ) -def km_3d_view_tool_edit_mesh_shear(params): - return ( - "3D View Tool: Edit Mesh, Shear", - {"space_type": 'VIEW_3D', "region_type": 'WINDOW'}, - {"items": [ - ("transform.shear", - {"type": params.tool_tweak, "value": 'NORTH'}, - {"properties": [("release_confirm", True), ("orient_axis_ortho", 'Y')]}), - ("transform.shear", - {"type": params.tool_tweak, "value": 'SOUTH'}, - {"properties": [("release_confirm", True), ("orient_axis_ortho", 'Y')]}), - - # Use as fallback to catch diagonals too. - ("transform.shear", - {"type": params.tool_tweak, "value": 'ANY'}, - {"properties": [("release_confirm", True), ("orient_axis_ortho", 'X')]}), - ]}, - ) - - def km_3d_view_tool_edit_mesh_to_sphere(params): return ( "3D View Tool: Edit Mesh, To Sphere", @@ -6194,6 +6194,7 @@ def generate_keymaps(params=None): km_3d_view_tool_move(params), km_3d_view_tool_rotate(params), km_3d_view_tool_scale(params), + km_3d_view_tool_shear(params), km_3d_view_tool_measure(params), km_3d_view_tool_pose_breakdowner(params), km_3d_view_tool_pose_push(params), @@ -6223,7 +6224,6 @@ def generate_keymaps(params=None): km_3d_view_tool_edit_mesh_vertex_slide(params), km_3d_view_tool_edit_mesh_shrink_fatten(params), km_3d_view_tool_edit_mesh_push_pull(params), - km_3d_view_tool_edit_mesh_shear(params), km_3d_view_tool_edit_mesh_to_sphere(params), km_3d_view_tool_edit_mesh_rip_region(params), km_3d_view_tool_edit_mesh_rip_edge(params), diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py index 170b635f7e1..0759d37e2b8 100644 --- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py +++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py @@ -291,6 +291,20 @@ class _defs_transform: draw_settings=draw_settings, ) + @ToolDef.from_fn + def shear(): + def draw_settings(context, layout, _tool): + # props = tool.operator_properties("transform.shear") + _template_widget.VIEW3D_GGT_xform_gizmo.draw_settings_with_index(context, layout, 2) + return dict( + idname="builtin.shear", + label="Shear", + icon="ops.transform.shear", + widget="VIEW3D_GGT_xform_shear", + keymap="3D View Tool: Shear", + draw_settings=draw_settings, + ) + @ToolDef.from_fn def transform(): def draw_settings(context, layout, tool): @@ -762,20 +776,6 @@ class _defs_edit_mesh: draw_settings=draw_settings, ) - @ToolDef.from_fn - def shear(): - def draw_settings(context, layout, _tool): - # props = tool.operator_properties("transform.shear") - _template_widget.VIEW3D_GGT_xform_gizmo.draw_settings_with_index(context, layout, 2) - return dict( - idname="builtin.shear", - label="Shear", - icon="ops.transform.shear", - widget="VIEW3D_GGT_xform_shear", - keymap=(), - draw_settings=draw_settings, - ) - @ToolDef.from_fn def tosphere(): return dict( @@ -1960,6 +1960,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_edit_armature.extrude, _defs_edit_armature.extrude_cursor, ), + _defs_transform.shear, ], 'EDIT_MESH': [ *_tools_default, @@ -1998,7 +1999,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_edit_mesh.push_pull, ), ( - _defs_edit_mesh.shear, + _defs_transform.shear, _defs_edit_mesh.tosphere, ), ( @@ -2018,16 +2019,23 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel): _defs_edit_curve.curve_radius, _defs_edit_curve.tilt, None, + _defs_transform.shear, _defs_edit_curve.curve_vertex_randomize, ], 'EDIT_SURFACE': [ *_tools_default, + None, + _defs_transform.shear, ], 'EDIT_METABALL': [ *_tools_default, + None, + _defs_transform.shear, ], 'EDIT_LATTICE': [ *_tools_default, + None, + _defs_transform.shear, ], 'EDIT_TEXT': [ _defs_view3d_generic.cursor, -- cgit v1.2.3 From deb5b00e1b1928bb841838f7eccc11bfa0c1c4fc Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 29 Jan 2020 11:11:09 +1100 Subject: Cleanup: revert wrapping from D6692 --- release/scripts/startup/bl_ui/properties_data_empty.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py index d686c55407a..72946ed1268 100644 --- a/release/scripts/startup/bl_ui/properties_data_empty.py +++ b/release/scripts/startup/bl_ui/properties_data_empty.py @@ -51,10 +51,8 @@ class DATA_PT_empty(DataButtonsPanel, Panel): col = layout.column() col.row().prop(ob, "empty_image_depth", text="Depth", expand=True) col.row().prop(ob, "empty_image_side", text="Side", expand=True) - col.prop(ob, "show_empty_image_orthographic", - text="Display Orthographic") - col.prop(ob, "show_empty_image_perspective", - text="Display Perspective") + col.prop(ob, "show_empty_image_orthographic", text="Display Orthographic") + col.prop(ob, "show_empty_image_perspective", text="Display Perspective") col.prop(ob, "show_empty_image_only_axis_aligned") @@ -88,8 +86,7 @@ class DATA_PT_empty_image(DataButtonsPanel, Panel): def draw(self, context): layout = self.layout ob = context.object - layout.template_ID(ob, "data", open="image.open", - unlink="object.unlink_data") + layout.template_ID(ob, "data", open="image.open", unlink="object.unlink_data") layout.separator() layout.template_image(ob, "data", ob.image_user, compact=True) -- cgit v1.2.3 From dee9c3cc25419146bd38016f0e2ec98eea282962 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Wed, 29 Jan 2020 16:56:21 +1100 Subject: UI: pose X-ray state wasn't shown in the header --- release/scripts/startup/bl_ui/space_view3d.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 02dc03be127..3a3869068b0 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -621,15 +621,19 @@ class VIEW3D_HT_header(Header): tool_settings = context.tool_settings view = context.space_data shading = view.shading - # mode_string = context.mode - obj = context.active_object show_region_tool_header = view.show_region_tool_header if not show_region_tool_header: layout.row(align=True).template_header() row = layout.row(align=True) + obj = context.active_object + # mode_string = context.mode object_mode = 'OBJECT' if obj is None else obj.mode + has_pose_mode = ( + (object_mode == 'POSE') or + (object_mode == 'WEIGHT_PAINT' and context.pose_object is not None) + ) # Note: This is actually deadly in case enum_items have to be dynamically generated # (because internal RNA array iterator will free everything immediately...). @@ -780,10 +784,13 @@ class VIEW3D_HT_header(Header): "view3d.toggle_xray", text="", icon='XRAY', - depress=getattr( - shading, - "show_xray_wireframe" if shading.type == 'WIREFRAME' else - "show_xray" + depress=( + overlay.show_xray_bone if has_pose_mode else + getattr( + shading, + "show_xray_wireframe" if shading.type == 'WIREFRAME' else + "show_xray" + ) ), ) -- cgit v1.2.3 From bd59b21907bc83cea38407a8684b59182b5a4663 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Wed, 29 Jan 2020 14:07:26 +0100 Subject: Keymap: Add ability to extend or subtract animation channel box selections For some reason this was missing. Seems to be a simple oversight. Differential Revision: https://developer.blender.org/D6707 Reviewed by Julian Eisel --- release/scripts/presets/keyconfig/keymap_data/blender_default.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py index ca9767605c5..629bc24abb3 100644 --- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py +++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py @@ -2930,6 +2930,10 @@ def km_animation_channels(params): *_template_items_select_actions(params, "anim.channels_select_all"), ("anim.channels_select_box", {"type": 'B', "value": 'PRESS'}, None), ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True,}, + {"properties": [("extend", True)]}), + ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True,}, + {"properties": [("deselect", True)]}), # Delete. ("anim.channels_delete", {"type": 'X', "value": 'PRESS'}, None), ("anim.channels_delete", {"type": 'DEL', "value": 'PRESS'}, None), -- cgit v1.2.3 From fee7a3457547606635d098f97f23d47cdda2d653 Mon Sep 17 00:00:00 2001 From: William Reynish Date: Wed, 29 Jan 2020 15:01:39 +0100 Subject: IC keymap: Add extend & subtract box selection to animation channel lists Same as recent change for default keymap --- .../presets/keyconfig/keymap_data/industry_compatible_data.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py index d84699fc0f6..0bffd316f30 100644 --- a/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py +++ b/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py @@ -2191,8 +2191,11 @@ def km_animation_channels(params): ("anim.channels_select_all", {"type": 'A', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'SELECT')]}), ("anim.channels_select_all", {"type": 'A', "value": 'PRESS', "ctrl": True, "shift": True}, {"properties": [("action", 'DESELECT')]}), ("anim.channels_select_all", {"type": 'I', "value": 'PRESS', "ctrl": True}, {"properties": [("action", 'INVERT')]}), - ("anim.channels_select_box", {"type": 'B', "value": 'PRESS'}, None), ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY'}, None), + ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "shift": True,}, + {"properties": [("extend", True)]}), + ("anim.channels_select_box", {"type": 'EVT_TWEAK_L', "value": 'ANY', "ctrl": True,}, + {"properties": [("deselect", True)]}), # Delete. ("anim.channels_delete", {"type": 'BACK_SPACE', "value": 'PRESS'}, None), ("anim.channels_delete", {"type": 'DEL', "value": 'PRESS'}, None), -- cgit v1.2.3 From aa919f3e82020a4d9e953ec826a390bf2837cadc Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Wed, 29 Jan 2020 09:24:54 -0800 Subject: UI: Info Editor Visual Changes Changes to Info Editor making it easier to read. Only visual changes, no functional changes. Differential Revision: https://developer.blender.org/D6491 Reviewed by Julian Eisel --- release/scripts/addons | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/addons b/release/scripts/addons index 47a32a5370d..21dee6f8943 160000 --- a/release/scripts/addons +++ b/release/scripts/addons @@ -1 +1 @@ -Subproject commit 47a32a5370d36942674621e5a03e57e8dd4986d8 +Subproject commit 21dee6f89433249dba6573bf1eaa56a8d5b99c34 -- cgit v1.2.3 From e4faed120d9c294ea5d6061b3213ed4f6784db52 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Wed, 29 Jan 2020 10:26:45 +0100 Subject: Fix T73466: Unable to set particle rotation Error in rB1f6ab32196d7. Maniphest Tasks: T73466 Differential Revision: https://developer.blender.org/D6706 --- release/scripts/startup/bl_ui/properties_particle.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_particle.py b/release/scripts/startup/bl_ui/properties_particle.py index 34ff386893b..3384032e332 100644 --- a/release/scripts/startup/bl_ui/properties_particle.py +++ b/release/scripts/startup/bl_ui/properties_particle.py @@ -584,7 +584,7 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, Panel): layout = self.layout layout.prop(part, "use_rotations", text="") - layout.enabled = particle_panel_enabled(context, psys) and part.use_rotations + layout.enabled = particle_panel_enabled(context, psys) def draw(self, context): -- cgit v1.2.3 From a8bfa916334177531168e15eb6f8d6a8040164cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Wed, 29 Jan 2020 12:25:22 +0100 Subject: Fluid: Removed wireframe drawtype setter for fluid domains Fluid domains with (auto-generated) particle systems were set to wireframe drawtype automatically. This was a convenience feature that made particles visible immediately. As the auto switching is sometimes a bit annoying though this has been removed. Instead, the Quick Liquid Operator switches the viewport shading type to wireframe. --- release/scripts/startup/bl_operators/object_quick_effects.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/object_quick_effects.py b/release/scripts/startup/bl_operators/object_quick_effects.py index 009ae53fa80..71153ba8b74 100644 --- a/release/scripts/startup/bl_operators/object_quick_effects.py +++ b/release/scripts/startup/bl_operators/object_quick_effects.py @@ -466,6 +466,13 @@ class QuickLiquid(Operator): self.report({'ERROR'}, "Select at least one mesh object") return {'CANCELLED'} + # set shading type to wireframe so that liquid particles are visible + for area in bpy.context.screen.areas: + if area.type == 'VIEW_3D': + for space in area.spaces: + if space.type == 'VIEW_3D': + space.shading.type = 'WIREFRAME' + for obj in mesh_objects: fake_context["object"] = obj # make each selected object a liquid flow -- cgit v1.2.3 From 88b14fdf6057452e962b14f853303d7928430588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebasti=C3=A1n=20Barschkis?= Date: Wed, 29 Jan 2020 12:41:48 +0100 Subject: Fluid: Updated UI UI updates include: - More descriptive tool tips - Removed texture panel for liquid flow objects - Adjusted alignment for some smoke / fire parameters --- .../startup/bl_ui/properties_physics_fluid.py | 35 ++++++++++++++-------- 1 file changed, 23 insertions(+), 12 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index c1b8ae1a36a..28c9895f53b 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -105,6 +105,16 @@ class PhysicButtonsPanel: if (flow.flow_behavior == 'OUTFLOW'): return True + @staticmethod + def poll_fluid_flow_liquid(context): + if not PhysicButtonsPanel.poll_fluid_flow(context): + return False + + md = context.fluid + flow = md.flow_settings + if (flow.flow_type == 'LIQUID'): + return True + class PHYSICS_PT_fluid(PhysicButtonsPanel, Panel): bl_label = "Fluid" @@ -323,9 +333,9 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, Panel): flow = layout.grid_flow(row_major=True, columns=0, even_columns=True, even_rows=False, align=False) flow.enabled = not is_baking_any and not has_baked_data - col = flow.column() - col.prop(domain, "alpha") - col.prop(domain, "beta", text="Temperature Diff.") + col = flow.column(align=True) + col.prop(domain, "alpha", text="Buoyancy Density") + col.prop(domain, "beta", text="Heat") col = flow.column() col.prop(domain, "vorticity") @@ -399,14 +409,12 @@ class PHYSICS_PT_fire(PhysicButtonsPanel, Panel): col = flow.column() col.prop(domain, "burning_rate", text="Reaction Speed") - col = flow.column() + col = flow.column(align=True) col.prop(domain, "flame_smoke", text="Flame Smoke") - col = flow.column() - col.prop(domain, "flame_vorticity", text="Flame Vorticity") - col = flow.column() - col.prop(domain, "flame_ignition", text="Temperature Ignition") - col = flow.column() - col.prop(domain, "flame_max_temp", text="Maximum Temperature") + col.prop(domain, "flame_vorticity", text="Vorticity") + col = flow.column(align=True) + col.prop(domain, "flame_max_temp", text="Temperature Maximum") + col.prop(domain, "flame_ignition", text="Minimum") col = flow.column() col.prop(domain, "flame_smoke_color", text="Flame Color") @@ -495,10 +503,10 @@ class PHYSICS_PT_flow_source(PhysicButtonsPanel, Panel): col = grid.column() if flow.flow_source == 'MESH': col.prop(flow, "use_plane_init", text="Is Planar") - col.prop(flow, "surface_distance", text="Surface Thickness") + col.prop(flow, "surface_distance", text="Surface Emission") if flow.flow_type in {'SMOKE', 'BOTH', 'FIRE'}: col = grid.column() - col.prop(flow, "volume_density", text="Volume Density") + col.prop(flow, "volume_density", text="Volume Emission") if flow.flow_source == 'PARTICLES': col.prop(flow, "use_particle_size", text="Set Size") @@ -562,6 +570,9 @@ class PHYSICS_PT_flow_texture(PhysicButtonsPanel, Panel): if PhysicButtonsPanel.poll_fluid_flow_outflow(context): return False + if PhysicButtonsPanel.poll_fluid_flow_liquid(context): + return False + return (context.engine in cls.COMPAT_ENGINES) def draw_header(self, context): -- cgit v1.2.3 From 65761487229c61e5d043326cb5fd96cfca274e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Wed, 29 Jan 2020 21:36:58 +0100 Subject: Fix T65146: Curve Texture Coordinates in Cycles and Eevee differ Remove the use UV for mapping option. --- release/scripts/modules/rna_manual_reference.py | 1 - release/scripts/startup/bl_ui/properties_data_curve.py | 1 - 2 files changed, 2 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/rna_manual_reference.py b/release/scripts/modules/rna_manual_reference.py index 1f01523534f..2e78f18b78e 100644 --- a/release/scripts/modules/rna_manual_reference.py +++ b/release/scripts/modules/rna_manual_reference.py @@ -197,7 +197,6 @@ url_manual_mapping = ( ("bpy.types.compositornodedilateerode*", "compositing/types/filter/dilate_erode.html#bpy-types-compositornodedilateerode"), ("bpy.types.compositornodeellipsemask*", "compositing/types/matte/ellipse_mask.html#bpy-types-compositornodeellipsemask"), ("bpy.types.compositornodesplitviewer*", "compositing/types/output/split_viewer.html#bpy-types-compositornodesplitviewer"), - ("bpy.types.curve.use_uv_as_generated*", "editors/uv/generated_uvs.html#bpy-types-curve-use-uv-as-generated"), ("bpy.types.dynamicpaintbrushsettings*", "physics/dynamic_paint/brush.html#bpy-types-dynamicpaintbrushsettings"), ("bpy.types.materialgpencilstyle.flip*", "grease_pencil/materials/grease_pencil_shader.html#bpy-types-materialgpencilstyle-flip"), ("bpy.types.materialgpencilstyle.mode*", "grease_pencil/materials/grease_pencil_shader.html#bpy-types-materialgpencilstyle-mode"), diff --git a/release/scripts/startup/bl_ui/properties_data_curve.py b/release/scripts/startup/bl_ui/properties_data_curve.py index d1975919d7e..b694062dfc5 100644 --- a/release/scripts/startup/bl_ui/properties_data_curve.py +++ b/release/scripts/startup/bl_ui/properties_data_curve.py @@ -144,7 +144,6 @@ class DATA_PT_curve_texture_space(CurveButtonsPanel, Panel): curve = context.curve col = layout.column() - col.prop(curve, "use_uv_as_generated") col.prop(curve, "use_auto_texspace") col = layout.column() -- cgit v1.2.3 From 5a541cfceccea2bad1cd39466404e7b08d289e17 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 30 Jan 2020 11:45:36 +1100 Subject: Cleanup: resolve static analyzer warnings in bl_i18n_utils Reported in T73504 --- release/scripts/modules/bl_i18n_utils/bl_extract_messages.py | 4 ++-- release/scripts/modules/bl_i18n_utils/utils.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'release/scripts') 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 4aaa30a0508..2034b2ac55c 100644 --- a/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py +++ b/release/scripts/modules/bl_i18n_utils/bl_extract_messages.py @@ -599,8 +599,8 @@ def dump_py_messages_from_files(msgs, reports, files, settings): # We manually add funcs from bpy.app.translations for func_id, func_ids in pgettext_variants: func_translate_args[func_id] = pgettext_variants_args - for func_id in func_ids: - func_translate_args[func_id] = pgettext_variants_args + for sub_func_id in func_ids: + func_translate_args[sub_func_id] = pgettext_variants_args # print(func_translate_args) # Break recursive nodes look up on some kind of nodes. diff --git a/release/scripts/modules/bl_i18n_utils/utils.py b/release/scripts/modules/bl_i18n_utils/utils.py index 2cca4171193..7c22a86d687 100644 --- a/release/scripts/modules/bl_i18n_utils/utils.py +++ b/release/scripts/modules/bl_i18n_utils/utils.py @@ -1413,8 +1413,8 @@ class I18n: "# and edit the translations by hand.", "# Just carefully respect the format of the tuple!", "", - "# Tuple of tuples " - "((msgctxt, msgid), (sources, gen_comments), (lang, translation, (is_fuzzy, comments)), ...)", + "# Tuple of tuples:", + "# ((msgctxt, msgid), (sources, gen_comments), (lang, translation, (is_fuzzy, comments)), ...)", "translations_tuple = (", ] # First gather all keys (msgctxt, msgid) - theoretically, all translations should share the same, but... -- cgit v1.2.3 From 4482d70f6e0dd3e3f455236915357a69898dc9be Mon Sep 17 00:00:00 2001 From: Simon G Date: Thu, 30 Jan 2020 11:50:09 +1100 Subject: Fix invalid exception used in 'rna_xml' --- release/scripts/modules/rna_xml.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/modules/rna_xml.py b/release/scripts/modules/rna_xml.py index 95196cb83fa..d9fc09e7d18 100644 --- a/release/scripts/modules/rna_xml.py +++ b/release/scripts/modules/rna_xml.py @@ -100,7 +100,7 @@ def rna2xml( elif val_type == bool: return "TRUE" if val else "FALSE" else: - raise NotImplemented("this type is not a number %s" % val_type) + raise NotImplementedError("this type is not a number %s" % val_type) def rna2xml_node(ident, value, parent): ident_next = ident + ident_val -- cgit v1.2.3 From 2de704da6883dc89766d6b766b215596d38f8839 Mon Sep 17 00:00:00 2001 From: Simon G Date: Thu, 30 Jan 2020 15:23:37 +0100 Subject: Fix preset tracking setttings missing a comma Preset tracking settings is missing a comma here. Without a comma this will result in an implicit string concatenation. This was probably not wanted. Reviewed By: sergey, Blendify Differential Revision: https://developer.blender.org/D6717 --- release/scripts/startup/bl_operators/presets.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_operators/presets.py b/release/scripts/startup/bl_operators/presets.py index c811f542a3a..6a21f7db654 100644 --- a/release/scripts/startup/bl_operators/presets.py +++ b/release/scripts/startup/bl_operators/presets.py @@ -501,7 +501,7 @@ class AddPresetTrackingSettings(AddPresetBase, Operator): "settings.use_default_mask", "settings.use_default_red_channel", "settings.use_default_green_channel", - "settings.use_default_blue_channel" + "settings.use_default_blue_channel", "settings.default_weight" ] -- cgit v1.2.3 From fd959bf658c36eebad32fd4d2cfa493f30eda4ea Mon Sep 17 00:00:00 2001 From: William Reynish Date: Thu, 30 Jan 2020 17:18:07 +0100 Subject: Fix unreported: Missing Empty Transparency panel poll Own mistake in recent change --- release/scripts/startup/bl_ui/properties_data_empty.py | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_empty.py b/release/scripts/startup/bl_ui/properties_data_empty.py index 72946ed1268..88fdaae0433 100644 --- a/release/scripts/startup/bl_ui/properties_data_empty.py +++ b/release/scripts/startup/bl_ui/properties_data_empty.py @@ -60,6 +60,11 @@ class DATA_PT_empty_alpha(DataButtonsPanel, Panel): bl_label = "Transparency" bl_parent_id = "DATA_PT_empty" + @classmethod + def poll(cls, context): + ob = context.object + return (ob and ob.type == 'EMPTY' and ob.empty_display_type == 'IMAGE') + def draw_header(self, context): ob = context.object -- cgit v1.2.3 From 14ccda75f6313849c5b4376f7e74def24084782e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 31 Jan 2020 10:24:28 +0100 Subject: USD: Include USD library version in System Info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pixar recently released USD 20.02 [1]. I think it's important for people to be able to figure out which version of the USD library is used in Blender. [1] https://github.com/PixarAnimationStudios/USD/releases/tag/v20.02 This commit exposes the USD library information via `bpy.app.usd`, and includes that info in the `system-info.txt` saved via Help → Save System Info. Reviewed by: brecht Differential Revision: https://developer.blender.org/D6724 --- release/scripts/modules/sys_info.py | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'release/scripts') diff --git a/release/scripts/modules/sys_info.py b/release/scripts/modules/sys_info.py index 8b4e224efe4..656e2b3bd54 100644 --- a/release/scripts/modules/sys_info.py +++ b/release/scripts/modules/sys_info.py @@ -172,6 +172,13 @@ def write_sysinfo(filepath): else: output.write("Blender was built without Alembic support\n") + usd = bpy.app.usd + output.write("USD: ") + if usd.supported: + output.write("%s\n" % usd.version_string) + else: + output.write("Blender was built without USD support\n") + if not bpy.app.build_options.sdl: output.write("SDL: Blender was built without SDL support\n") -- cgit v1.2.3 From eea3751c5bb2aef421cb7117add0f860da06d7af Mon Sep 17 00:00:00 2001 From: William Reynish Date: Fri, 31 Jan 2020 13:06:36 +0100 Subject: UI: Icons update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - New bespoke icon for the universal brush toggles - New icon for Redirected Folder (currently unused) - New icons for handle types (Auto Clamped, Auto, Aligned, Vector, Free) - New icons for Sequencer Text Strip anchor (Top, Bottom, Left, Right, Centre) Thanks to Andrzej Ambroż for the new icons --- release/scripts/startup/bl_ui/properties_paint_common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 93bf5eca052..a9e8cae3c8b 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -121,7 +121,7 @@ class UnifiedPaintPanel: if unified_name and not header: # NOTE: We don't draw UnifiedPaintSettings in the header to reduce clutter. D5928#136281 - row.prop(ups, unified_name, text="", icon="WORLD") + row.prop(ups, unified_name, text="", icon="BRUSHES_ALL") return row -- cgit v1.2.3 From eee5a0e4ecd3e326c1169f636526040aa964f402 Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Fri, 31 Jan 2020 21:49:24 +0100 Subject: UI: use full width for ID blocks in speaker properties rBb6a97baa0efa already did this for World, Light, Camera, Texture. rBb196c42d4ade already did this for Lattice. --- release/scripts/startup/bl_ui/properties_data_speaker.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'release/scripts') diff --git a/release/scripts/startup/bl_ui/properties_data_speaker.py b/release/scripts/startup/bl_ui/properties_data_speaker.py index 5de133f184a..10645bdd214 100644 --- a/release/scripts/startup/bl_ui/properties_data_speaker.py +++ b/release/scripts/startup/bl_ui/properties_data_speaker.py @@ -45,12 +45,10 @@ class DATA_PT_context_speaker(DataButtonsPanel, Panel): speaker = context.speaker space = context.space_data - split = layout.split(factor=0.65) - if ob: - split.template_ID(ob, "data") + layout.template_ID(ob, "data") elif speaker: - split.template_ID(space, "pin_id") + layout.template_ID(space, "pin_id") class DATA_PT_speaker(DataButtonsPanel, Panel): -- cgit v1.2.3