[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47732] trunk/blender/release/scripts/ templates/operator_node.py: template for python node operators

Campbell Barton ideasman42 at gmail.com
Mon Jun 11 12:11:36 CEST 2012


Revision: 47732
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47732
Author:   campbellbarton
Date:     2012-06-11 10:11:31 +0000 (Mon, 11 Jun 2012)
Log Message:
-----------
template for python node operators

Added Paths:
-----------
    trunk/blender/release/scripts/templates/operator_node.py

Added: trunk/blender/release/scripts/templates/operator_node.py
===================================================================
--- trunk/blender/release/scripts/templates/operator_node.py	                        (rev 0)
+++ trunk/blender/release/scripts/templates/operator_node.py	2012-06-11 10:11:31 UTC (rev 47732)
@@ -0,0 +1,58 @@
+import bpy
+
+def main(operator, context):
+    space = context.space_data
+    node_tree = space.node_tree
+    node_active = context.active_node
+    node_selected = context.selected_nodes
+
+    # now we have the context, perform a simple operation
+    if node_active in node_selected:
+        node_selected.remove(node_active)
+    if len(node_selected) != 1:
+        operator.report({'ERROR'}, "2 nodes must be selected")
+        return
+
+    node_other, = node_selected
+    
+    # now we have 2 nodes to operate on
+    if not node_active.inputs:
+        operator.report({'ERROR'}, "Active node has no inputs")
+        return
+
+    if not node_other.outputs:
+        operator.report({'ERROR'}, "Selected node has no outputs")
+        return
+
+    socket_in = node_active.inputs[0]
+    socket_out = node_other.outputs[0]
+
+    # add a link between the two nodes
+    node_link = node_tree.links.new(socket_in, socket_out)
+
+
+class NodeOperator(bpy.types.Operator):
+    '''Tooltip'''
+    bl_idname = "node.simple_operator"
+    bl_label = "Simple Node Operator"
+
+    @classmethod
+    def poll(cls, context):
+        space = context.space_data
+        return space.type == 'NODE_EDITOR'
+
+    def execute(self, context):
+        main(context)
+        return {'FINISHED'}
+
+
+def register():
+    bpy.utils.register_class(NodeOperator)
+
+
+def unregister():
+    bpy.utils.unregister_class(NodeOperator)
+
+
+if __name__ == "__main__":
+    register()


Property changes on: trunk/blender/release/scripts/templates/operator_node.py
___________________________________________________________________
Added: svn:eol-style
   + native




More information about the Bf-blender-cvs mailing list