[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57249] trunk/blender/release/scripts: Fix #35633, Cannot Add Group Node In Blender 2.67a.

Lukas Toenne lukas.toenne at googlemail.com
Wed Jun 5 11:21:17 CEST 2013


Revision: 57249
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57249
Author:   lukastoenne
Date:     2013-06-05 09:21:17 +0000 (Wed, 05 Jun 2013)
Log Message:
-----------
Fix #35633, Cannot Add Group Node In Blender 2.67a. The menu entry for the "make group" operator was missing in the new categories system. Added an alternative NodeItemCustom to the standard NodeItem to
allow custom draw functions such as this operator. Used in the group items callback to generate the basic group_make operator call.

Modified Paths:
--------------
    trunk/blender/release/scripts/modules/nodeitems_utils.py
    trunk/blender/release/scripts/startup/nodeitems_builtins.py

Modified: trunk/blender/release/scripts/modules/nodeitems_utils.py
===================================================================
--- trunk/blender/release/scripts/modules/nodeitems_utils.py	2013-06-05 09:10:56 UTC (rev 57248)
+++ trunk/blender/release/scripts/modules/nodeitems_utils.py	2013-06-05 09:21:17 UTC (rev 57249)
@@ -57,7 +57,28 @@
             # if no custom label is defined, fall back to the node type UI name
             return getattr(bpy.types, self.nodetype).bl_rna.name
 
+    # NB: is a staticmethod because called with an explicit self argument
+    # NodeItemCustom sets this as a variable attribute in __init__
+    @staticmethod
+    def draw(self, layout, context):
+        default_context = bpy.app.translations.contexts.default
 
+        props = layout.operator("node.add_node", text=self.label, text_ctxt=default_context)
+        props.type = self.nodetype
+        props.use_transform = True
+
+        for setting in self.settings.items():
+            ops = props.settings.add()
+            ops.name = setting[0]
+            ops.value = setting[1]
+
+
+class NodeItemCustom():
+    def __init__(self, poll=None, draw=None):
+        self.poll = poll
+        self.draw = draw
+
+
 _node_categories = {}
 
 def register_node_categories(identifier, cat_list):
@@ -71,15 +92,8 @@
         col = layout.column()
         default_context = bpy.app.translations.contexts.default
         for item in self.category.items(context):
-            props = col.operator("node.add_node", text=item.label, text_ctxt=default_context)
-            props.type = item.nodetype
-            props.use_transform = True
+            item.draw(item, col, context)
 
-            for setting in item.settings.items():
-                ops = props.settings.add()
-                ops.name = setting[0]
-                ops.value = setting[1]
-
     menu_types = []
     panel_types = []
     for cat in cat_list:

Modified: trunk/blender/release/scripts/startup/nodeitems_builtins.py
===================================================================
--- trunk/blender/release/scripts/startup/nodeitems_builtins.py	2013-06-05 09:10:56 UTC (rev 57248)
+++ trunk/blender/release/scripts/startup/nodeitems_builtins.py	2013-06-05 09:21:17 UTC (rev 57249)
@@ -19,7 +19,7 @@
 # <pep8 compliant>
 import bpy
 import nodeitems_utils
-from nodeitems_utils import NodeCategory, NodeItem
+from nodeitems_utils import NodeCategory, NodeItem, NodeItemCustom
 
 
 # Subclasses for standard node types
@@ -47,6 +47,11 @@
         return context.space_data.tree_type == 'TextureNodeTree'
 
 
+# menu entry for making a new group from selected nodes
+def group_make_draw(self, layout, context):
+    layout.operator("node.group_make")
+    layout.separator()
+
 # maps node tree type to group node type
 node_tree_group_type = {
     'CompositorNodeTree'    : 'CompositorNodeGroup',
@@ -62,6 +67,8 @@
     if not ntree:
         return
 
+    yield NodeItemCustom(draw=group_make_draw)
+
     def contains_group(nodetree, group):
         if nodetree == group:
             return True




More information about the Bf-blender-cvs mailing list