diff options
Diffstat (limited to 'release/scripts/startup/bl_ui/space_node.py')
-rw-r--r-- | release/scripts/startup/bl_ui/space_node.py | 108 |
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, |