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:
Diffstat (limited to 'release/scripts/startup/bl_ui/space_node.py')
-rw-r--r--release/scripts/startup/bl_ui/space_node.py108
1 files changed, 78 insertions, 30 deletions
diff --git a/release/scripts/startup/bl_ui/space_node.py b/release/scripts/startup/bl_ui/space_node.py
index c2735998d2c..521c510ad2d 100644
--- a/release/scripts/startup/bl_ui/space_node.py
+++ b/release/scripts/startup/bl_ui/space_node.py
@@ -21,6 +21,7 @@ import bpy
import nodeitems_utils
from bpy.types import Header, Menu, Panel
from bpy.app.translations import pgettext_iface as iface_
+from bl_operators.presets import PresetMenu
from .properties_grease_pencil_common import (
GreasePencilDrawingToolsPanel,
GreasePencilStrokeEditPanel,
@@ -48,16 +49,14 @@ class NODE_HT_header(Header):
row = layout.row(align=True)
row.template_header()
- NODE_MT_editor_menus.draw_collapsible(context, layout)
-
- layout.prop(snode, "tree_type", text="", expand=True)
+ # Now expanded via the 'ui_type'
+ # layout.prop(snode, "tree_type", text="")
if snode.tree_type == 'ShaderNodeTree':
- if scene.render.use_shading_nodes:
- layout.prop(snode, "shader_type", text="", expand=True)
+ layout.prop(snode, "shader_type", text="", expand=True)
ob = context.object
- if (not scene.render.use_shading_nodes or snode.shader_type == 'OBJECT') and ob:
+ if snode.shader_type == 'OBJECT' and ob:
row = layout.row()
# disable material slot buttons when pinned, cannot find correct slot within id_from (#36589)
row.enabled = not snode.pin
@@ -68,24 +67,32 @@ class NODE_HT_header(Header):
if id_from and ob.type != 'LAMP':
row.template_ID(id_from, "active_material", new="material.new")
- # Don't show "Use Nodes" Button when Engine is BI for Lamps
- if snode_id and not (scene.render.use_shading_nodes == 0 and ob.type == 'LAMP'):
- layout.prop(snode_id, "use_nodes")
+ # No shader nodes for Eevee lamps
+ if snode_id and not (context.engine == 'BLENDER_EEVEE' and ob.type == 'LAMP'):
+ row.prop(snode_id, "use_nodes")
+
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
- if scene.render.use_shading_nodes and snode.shader_type == 'WORLD':
+ if snode.shader_type == 'WORLD':
row = layout.row()
row.enabled = not snode.pin
row.template_ID(scene, "world", new="world.new")
+
if snode_id:
row.prop(snode_id, "use_nodes")
- if scene.render.use_shading_nodes and snode.shader_type == 'LINESTYLE':
- rl = context.scene.render.layers.active
- lineset = rl.freestyle_settings.linesets.active
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
+
+ if snode.shader_type == 'LINESTYLE':
+ view_layer = context.view_layer
+ lineset = view_layer.freestyle_settings.linesets.active
if lineset is not None:
row = layout.row()
row.enabled = not snode.pin
row.template_ID(lineset, "linestyle", new="scene.freestyle_linestyle_new")
+
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
+
if snode_id:
row.prop(snode_id, "use_nodes")
@@ -97,21 +104,31 @@ class NODE_HT_header(Header):
layout.template_ID(id_from, "texture", new="texture.new")
else:
layout.template_ID(id_from, "active_texture", new="texture.new")
+
if snode_id:
layout.prop(snode_id, "use_nodes")
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
+
elif snode.tree_type == 'CompositorNodeTree':
+
if snode_id:
layout.prop(snode_id, "use_nodes")
+
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
+
+ layout.prop(snode, "use_auto_render")
layout.prop(snode, "show_backdrop")
if snode.show_backdrop:
row = layout.row(align=True)
row.prop(snode, "backdrop_channels", text="", expand=True)
- layout.prop(snode, "use_auto_render")
else:
# Custom node tree is edited as independent ID block
layout.template_ID(snode, "node_tree", new="node.new_node_tree")
+ NODE_MT_editor_menus.draw_collapsible(context, layout)
+
+ layout.separator_spacer()
layout.prop(snode, "pin", text="")
layout.operator("node.tree_path_parent", text="", icon='FILE_PARENT')
@@ -194,9 +211,7 @@ class NODE_MT_view(Menu):
layout.separator()
- layout.operator("screen.area_dupli")
- layout.operator("screen.screen_full_area")
- layout.operator("screen.screen_full_area", text="Toggle Fullscreen Area").use_hide_panels = True
+ layout.menu("INFO_MT_area")
class NODE_MT_select(Menu):
@@ -271,16 +286,16 @@ class NODE_MT_node(Menu):
layout.separator()
- layout.operator("node.read_renderlayers")
+ layout.operator("node.read_viewlayers")
layout.operator("node.read_fullsamplelayers")
-class NODE_MT_node_color_presets(Menu):
+class NODE_PT_node_color_presets(PresetMenu):
"""Predefined node color"""
bl_label = "Color Presets"
preset_subdir = "node_color"
preset_operator = "script.execute_preset"
- draw = Menu.draw_preset
+ preset_add_operator = "node.node_color_preset_add"
class NODE_MT_node_color_specials(Menu):
@@ -292,6 +307,41 @@ class NODE_MT_node_color_specials(Menu):
layout.operator("node.node_copy_color", icon='COPY_ID')
+class NODE_MT_specials(Menu):
+ bl_label = "Node Context Menu"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.operator_context = 'INVOKE_DEFAULT'
+ layout.operator("node.duplicate_move")
+ layout.operator("node.delete")
+ layout.operator_context = 'EXEC_DEFAULT'
+
+ layout.operator("node.delete_reconnect")
+
+ layout.separator()
+
+ layout.operator("node.link_make").replace = False
+ layout.operator("node.link_make", text="Make and Replace Links").replace = True
+ layout.operator("node.links_detach")
+
+ layout.separator()
+
+ layout.operator("node.group_make", text="Group")
+ layout.operator("node.group_ungroup", text="Ungroup")
+ layout.operator("node.group_edit").exit = False
+
+ layout.separator()
+
+ layout.operator("node.hide_toggle")
+ layout.operator("node.mute_toggle")
+ layout.operator("node.preview_toggle")
+ layout.operator("node.hide_socket_toggle")
+ layout.operator("node.options_toggle")
+ layout.operator("node.collapse_hide_unused_toggle")
+
+
class NODE_PT_active_node_generic(Panel):
bl_space_type = 'NODE_EDITOR'
bl_region_type = 'UI'
@@ -324,6 +374,9 @@ class NODE_PT_active_node_color(Panel):
node = context.active_node
self.layout.prop(node, "use_custom_color", text="")
+ def draw_header_preset(self, context):
+ NODE_PT_node_color_presets.draw_panel_header(self.layout)
+
def draw(self, context):
layout = self.layout
node = context.active_node
@@ -331,13 +384,8 @@ class NODE_PT_active_node_color(Panel):
layout.enabled = node.use_custom_color
row = layout.row()
- col = row.column()
- col.menu("NODE_MT_node_color_presets")
- col.prop(node, "color", text="")
- col = row.column(align=True)
- col.operator("node.node_color_preset_add", text="", icon='ZOOMIN').remove_active = False
- col.operator("node.node_color_preset_add", text="", icon='ZOOMOUT').remove_active = True
- col.menu("NODE_MT_node_color_specials", text="", icon='DOWNARROW_HLT')
+ row.prop(node, "color", text="")
+ row.menu("NODE_MT_node_color_specials", text="", icon='DOWNARROW_HLT')
class NODE_PT_active_node_properties(Panel):
@@ -395,8 +443,7 @@ class NODE_PT_backdrop(Panel):
col = layout.column(align=True)
col.label(text="Offset:")
- col.prop(snode, "backdrop_x", text="X")
- col.prop(snode, "backdrop_y", text="Y")
+ col.prop(snode, "backdrop_offset", text="")
col.operator("node.backimage_move", text="Move")
layout.operator("node.backimage_fit", text="Fit")
@@ -537,8 +584,9 @@ classes = (
NODE_MT_view,
NODE_MT_select,
NODE_MT_node,
- NODE_MT_node_color_presets,
+ NODE_PT_node_color_presets,
NODE_MT_node_color_specials,
+ NODE_MT_specials,
NODE_PT_active_node_generic,
NODE_PT_active_node_color,
NODE_PT_active_node_properties,