Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/presets/keyconfig/keymap_data/blender_default.py43
-rw-r--r--release/scripts/startup/bl_ui/space_node.py13
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_common.py6
-rw-r--r--release/scripts/startup/bl_ui/space_toolsystem_toolbar.py97
-rw-r--r--source/blender/editors/space_node/space_node.c4
-rw-r--r--source/blender/makesrna/intern/rna_workspace.c13
-rw-r--r--source/blender/windowmanager/WM_toolsystem.h6
-rw-r--r--source/blender/windowmanager/intern/wm_toolsystem.c5
8 files changed, 170 insertions, 17 deletions
diff --git a/release/scripts/presets/keyconfig/keymap_data/blender_default.py b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
index 6b8e459d16b..706eade89f1 100644
--- a/release/scripts/presets/keyconfig/keymap_data/blender_default.py
+++ b/release/scripts/presets/keyconfig/keymap_data/blender_default.py
@@ -5050,6 +5050,46 @@ def km_image_editor_tool_uv_select_lasso(params):
)
+def km_node_editor_tool_select(params):
+ return (
+ "Node Tool: Select",
+ {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
+ {"items": (
+ ("node.select", {"type": params.select_mouse, "value": 'PRESS'},
+ {"properties": [("extend", False)]}),
+ ),
+ },
+ )
+
+
+def km_node_editor_tool_select_box(params):
+ return (
+ "Node Tool: Select Box",
+ {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
+ {"items": (
+ ("node.select_box", {"type": params.tool_mouse, "value": 'PRESS'},
+ {"properties": [("deselect", False), ("tweak", True)]}),
+ ("node.select_box", {"type": params.tool_mouse, "value": 'PRESS', "ctrl": True},
+ {"properties": [("deselect", True), ("tweak", True)]}),
+ ),
+ },
+ )
+
+
+def km_node_editor_tool_select_lasso(params):
+ return (
+ "Node Tool: Select Lasso",
+ {"space_type": 'NODE_EDITOR', "region_type": 'WINDOW'},
+ {"items": (
+ ("node.select_lasso", {"type": params.tool_mouse, "value": 'PRESS'},
+ {"properties": [("deselect", False)]}),
+ ("node.select_lasso", {"type": params.tool_mouse, "value": 'PRESS', "ctrl": True},
+ {"properties": [("deselect", True)]}),
+ ),
+ },
+ )
+
+
def km_3d_view_tool_object_cursor(params):
return (
"3D View Tool: Object, Cursor",
@@ -5902,6 +5942,9 @@ def generate_keymaps(params=None):
km_image_editor_tool_uv_select_box(params),
km_image_editor_tool_uv_select_circle(params),
km_image_editor_tool_uv_select_lasso(params),
+ km_node_editor_tool_select(params),
+ km_node_editor_tool_select_box(params),
+ km_node_editor_tool_select_lasso(params),
km_3d_view_tool_object_cursor(params),
km_3d_view_tool_object_select(params),
km_3d_view_tool_object_select_box(params),
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index 789fc1b0a31..6ec264ff699 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -553,18 +553,6 @@ class NODE_PT_grease_pencil_tools(GreasePencilToolsPanel, Panel):
# toolbar, but which may not necessarily be open
-# Tool Shelf ------------------
-
-
-# Grease Pencil drawing tools
-class NODE_PT_tools_grease_pencil_draw(AnnotationDrawingToolsPanel, Panel):
- bl_space_type = 'NODE_EDITOR'
- bl_region_type = 'TOOLS'
-
-
-# -----------------------------
-
-
def node_draw_tree_view(layout, context):
pass
@@ -587,7 +575,6 @@ classes = (
NODE_UL_interface_sockets,
NODE_PT_grease_pencil,
NODE_PT_grease_pencil_tools,
- NODE_PT_tools_grease_pencil_draw,
)
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_common.py b/release/scripts/startup/bl_ui/space_toolsystem_common.py
index 2ff5c9692ec..9349f776c99 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_common.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_common.py
@@ -293,6 +293,12 @@ class ToolSelectPanelHelper:
if tool is not None:
tool.refresh_from_context()
return tool
+ elif space_type == 'NODE_EDITOR':
+ space_data = context.space_data
+ tool = context.workspace.tools.from_space_node(create=create)
+ if tool is not None:
+ tool.refresh_from_context()
+ return tool
return None
@staticmethod
diff --git a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index 1f2b4ca47ee..cefc900b8b3 100644
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@ -1164,6 +1164,49 @@ class _defs_gpencil_weight:
)
+class _defs_node_select:
+
+ @ToolDef.from_fn
+ def select():
+ def draw_settings(context, layout, tool):
+ pass
+ return dict(
+ text="Select",
+ icon="ops.generic.select",
+ widget=None,
+ keymap="Node Tool: Select",
+ draw_settings=draw_settings,
+ )
+
+ @ToolDef.from_fn
+ def box():
+ def draw_settings(context, layout, tool):
+ props = tool.operator_properties("node.select_box")
+ layout.prop(props, "deselect")
+ pass
+ return dict(
+ text="Select Box",
+ icon="ops.generic.select_box",
+ widget=None,
+ keymap="Node Tool: Select Box",
+ draw_settings=draw_settings,
+ )
+
+ @ToolDef.from_fn
+ def lasso():
+ def draw_settings(context, layout, tool):
+ props = tool.operator_properties("node.select_lasso")
+ layout.prop(props, "deselect")
+ pass
+ return dict(
+ text="Select Lasso",
+ icon="ops.generic.select_lasso",
+ widget=None,
+ keymap="Node Tool: Select Lasso",
+ draw_settings=draw_settings,
+ )
+
+
class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel):
bl_space_type = 'IMAGE_EDITOR'
bl_region_type = 'TOOLS'
@@ -1243,6 +1286,59 @@ class IMAGE_PT_tools_active(ToolSelectPanelHelper, Panel):
}
+class NODE_PT_tools_active(ToolSelectPanelHelper, Panel):
+ bl_space_type = 'NODE_EDITOR'
+ bl_region_type = 'TOOLS'
+ bl_label = "Tools" # not visible
+ bl_options = {'HIDE_HEADER'}
+
+ # Satisfy the 'ToolSelectPanelHelper' API.
+ keymap_prefix = "Node Editor Tool:"
+
+ @classmethod
+ def tools_from_context(cls, context, mode=None):
+ if mode is None:
+ if context.space_data is None:
+ mode = None
+ else:
+ mode = context.space_data.tree_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_node_select.select,
+ _defs_node_select.box,
+ _defs_node_select.lasso,
+ ),
+ )
+
+ _tools_annotate = (
+ (
+ _defs_annotate.scribble,
+ _defs_annotate.line,
+ _defs_annotate.poly,
+ _defs_annotate.eraser,
+ ),
+ )
+
+ _tools = {
+ None: [
+ *_tools_select,
+ None,
+ *_tools_annotate,
+ ],
+ }
+
+
class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
bl_space_type = 'VIEW_3D'
bl_region_type = 'TOOLS'
@@ -1507,6 +1603,7 @@ class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
classes = (
IMAGE_PT_tools_active,
+ NODE_PT_tools_active,
VIEW3D_PT_tools_active,
)
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 85820ec3e13..8af5fe1b3a1 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -1014,10 +1014,12 @@ void ED_spacetype_node(void)
/* regions: toolbar */
art = MEM_callocN(sizeof(ARegionType), "spacetype view3d tools region");
art->regionid = RGN_TYPE_TOOLS;
- art->prefsizex = 160; /* XXX */
+ art->prefsizex = 58; /* XXX */
art->prefsizey = 50; /* XXX */
art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES;
art->listener = node_region_listener;
+ art->message_subscribe = ED_region_generic_tools_region_message_subscribe;
+ art->snap_size = ED_region_generic_tools_region_snap_size;
art->init = node_toolbar_region_init;
art->draw = node_toolbar_region_draw;
BLI_addhead(&st->regiontypes, art);
diff --git a/source/blender/makesrna/intern/rna_workspace.c b/source/blender/makesrna/intern/rna_workspace.c
index 59b1086e17e..a79dc05e09b 100644
--- a/source/blender/makesrna/intern/rna_workspace.c
+++ b/source/blender/makesrna/intern/rna_workspace.c
@@ -132,6 +132,12 @@ static bToolRef *rna_WorkSpace_tools_from_space_image_mode(
return rna_WorkSpace_tools_from_tkey(workspace, &(bToolKey){ .space_type = SPACE_IMAGE, .mode = mode}, create);
}
+static bToolRef *rna_WorkSpace_tools_from_space_node(
+ WorkSpace *workspace, bool create)
+{
+ return rna_WorkSpace_tools_from_tkey(workspace, &(bToolKey){ .space_type = SPACE_NODE, .mode = 0}, create);
+}
+
const EnumPropertyItem *rna_WorkSpace_tools_mode_itemf(
bContext *UNUSED(C), PointerRNA *ptr, PropertyRNA *UNUSED(prop), bool *UNUSED(r_free))
{
@@ -301,6 +307,13 @@ static void rna_def_workspace_tools(BlenderRNA *brna, PropertyRNA *cprop)
/* return type */
parm = RNA_def_pointer(func, "result", "WorkspaceTool", "", "");
RNA_def_function_return(func, parm);
+
+ func = RNA_def_function(srna, "from_space_node", "rna_WorkSpace_tools_from_space_node");
+ RNA_def_function_ui_description(func, "");
+ RNA_def_boolean(func, "create", false, "Create", "");
+ /* return type */
+ parm = RNA_def_pointer(func, "result", "WorkspaceTool", "", "");
+ RNA_def_function_return(func, parm);
}
static void rna_def_workspace(BlenderRNA *brna)
diff --git a/source/blender/windowmanager/WM_toolsystem.h b/source/blender/windowmanager/WM_toolsystem.h
index 7410bf4ab09..9b056ddcae6 100644
--- a/source/blender/windowmanager/WM_toolsystem.h
+++ b/source/blender/windowmanager/WM_toolsystem.h
@@ -46,9 +46,9 @@ struct WorkSpace;
/* wm_toolsystem.c */
#define WM_TOOLSYSTEM_SPACE_MASK ( \
- (1 << SPACE_VIEW3D) | \
- (1 << SPACE_IMAGE) \
-)
+ (1 << SPACE_IMAGE) | \
+ (1 << SPACE_NODE) | \
+ (1 << SPACE_VIEW3D) )
/* Values that define a categoey of active tool. */
typedef struct bToolKey { int space_type; int mode; } bToolKey;
diff --git a/source/blender/windowmanager/intern/wm_toolsystem.c b/source/blender/windowmanager/intern/wm_toolsystem.c
index d1173fccff8..6857e057893 100644
--- a/source/blender/windowmanager/intern/wm_toolsystem.c
+++ b/source/blender/windowmanager/intern/wm_toolsystem.c
@@ -613,6 +613,11 @@ int WM_toolsystem_mode_from_spacetype(
mode = sima->mode;
break;
}
+ case SPACE_NODE:
+ {
+ mode = 0;
+ break;
+ }
}
return mode;
}