diff options
author | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-06-09 13:51:19 +0400 |
---|---|---|
committer | Lukas Toenne <lukas.toenne@googlemail.com> | 2013-06-09 13:51:19 +0400 |
commit | 9c5729e67220c97f059f4a5825f6ba99b4b401d2 (patch) | |
tree | 83f71c854f8d9e71267d47c063c33a63a9802b8f /release/scripts/templates_py | |
parent | 3fe01ecfd9bb9cd9a2cff5cf27c32cdaace95400 (diff) |
Fix for unintended commit of python template file ...
Diffstat (limited to 'release/scripts/templates_py')
-rw-r--r-- | release/scripts/templates_py/custom_nodes_groups.py | 178 |
1 files changed, 0 insertions, 178 deletions
diff --git a/release/scripts/templates_py/custom_nodes_groups.py b/release/scripts/templates_py/custom_nodes_groups.py deleted file mode 100644 index 48dbfd4749a..00000000000 --- a/release/scripts/templates_py/custom_nodes_groups.py +++ /dev/null @@ -1,178 +0,0 @@ -import bpy -from bpy_types import NodeTree, Node, NodeSocket - -# Implementation of custom nodes from Python - - -# Shortcut for node type menu -def add_nodetype(layout, type): - layout.operator("node.add_node", text=type.bl_label).type = type.bl_rna.identifier - -# Derived from the NodeTree base type, similar to Menu, Operator, Panel, etc. -class MyCustomTree(NodeTree): - # Description string - '''A custom node tree type that will show up in the node editor header''' - # Optional identifier string. If not explicitly defined, the python class name is used. - bl_idname = 'CustomTreeType' - # Label for nice name display - bl_label = 'Custom Node Tree' - # Icon identifier - # NOTE: If no icon is defined, the node tree will not show up in the editor header! - # This can be used to make additional tree types for groups and similar nodes (see below) - # Only one base tree class is needed in the editor for selecting the general category - bl_icon = 'NODETREE' - - def draw_add_menu(self, context, layout): - layout.label("Hello World!") - add_nodetype(layout, bpy.types.CustomNodeType) - add_nodetype(layout, bpy.types.MyCustomGroup) - - -# Custom socket type -class MyCustomSocket(NodeSocket): - # Description string - '''Custom node socket type''' - # Optional identifier string. If not explicitly defined, the python class name is used. - bl_idname = 'CustomSocketType' - # Label for nice name display - bl_label = 'Custom Node Socket' - - # Enum items list - my_items = [ - ("DOWN", "Down", "Where your feet are"), - ("UP", "Up", "Where your head should be"), - ("LEFT", "Left", "Not right"), - ("RIGHT", "Right", "Not left") - ] - - myEnumProperty = bpy.props.EnumProperty(name="Direction", description="Just an example", items=my_items, default='UP') - - # Optional function for drawing the socket input value - def draw(self, context, layout, node, text): - if self.is_linked: - layout.label(text) - else: - layout.prop(self, "myEnumProperty", text=text) - - # Socket color - def draw_color(self, context, node): - return (1.0, 0.4, 0.216, 0.5) - -# Mix-in class for all custom nodes in this tree type. -# Defines a poll function to enable instantiation. -class MyCustomTreeNode : - @classmethod - def poll(cls, ntree): - return ntree.bl_idname == 'CustomTreeType' - -# Derived from the Node base type. -class MyCustomNode(Node, MyCustomTreeNode): - # === Basics === - # Description string - '''A custom node''' - # Optional identifier string. If not explicitly defined, the python class name is used. - bl_idname = 'CustomNodeType' - # Label for nice name display - bl_label = 'Custom Node' - # Icon identifier - bl_icon = 'SOUND' - - # === Custom Properties === - # These work just like custom properties in ID data blocks - # Extensive information can be found under - # http://wiki.blender.org/index.php/Doc:2.6/Manual/Extensions/Python/Properties - myStringProperty = bpy.props.StringProperty() - myFloatProperty = bpy.props.FloatProperty(default=3.1415926) - - # === Optional Functions === - # Initialization function, called when a new node is created. - # This is the most common place to create the sockets for a node, as shown below. - # NOTE: this is not the same as the standard __init__ function in Python, which is - # a purely internal Python method and unknown to the node system! - def init(self, context): - self.inputs.new('CustomSocketType', "Hello") - self.inputs.new('NodeSocketFloat', "World") - self.inputs.new('NodeSocketVector', "!") - - self.outputs.new('NodeSocketColor', "How") - self.outputs.new('NodeSocketColor', "are") - self.outputs.new('NodeSocketFloat', "you") - - # Copy function to initialize a copied node from an existing one. - def copy(self, node): - print("Copying from node ", node) - - # Free function to clean up on removal. - def free(self): - print("Removing node ", self, ", Goodbye!") - - # Additional buttons displayed on the node. - def draw_buttons(self, context, layout): - layout.label("Node settings") - layout.prop(self, "myFloatProperty") - - # Detail buttons in the sidebar. - # If this function is not defined, the draw_buttons function is used instead - def draw_buttons_ext(self, context, layout): - layout.prop(self, "myFloatProperty") - # myStringProperty button will only be visible in the sidebar - layout.prop(self, "myStringProperty") - - -### Node Categories ### -# Node categories are a python system for automatically -# extending the Add menu, toolbar panels and search operator. -# For more examples see release/scripts/startup/nodeitems_builtins.py - -import nodeitems_utils -from nodeitems_utils import NodeCategory, NodeItem - -# our own base class with an appropriate poll function, -# so the categories only show up in our own tree type -class MyNodeCategory(NodeCategory): - @classmethod - def poll(cls, context): - return context.space_data.tree_type == 'CustomTreeType' - -# all categories in a list -node_categories = [ - # identifier, label, items list - MyNodeCategory("SOMENODES", "Some Nodes", items=[ - # our basic node - NodeItem("CustomNodeType"), - ]), - MyNodeCategory("OTHERNODES", "Other Nodes", items=[ - # the node item can have additional settings, - # which are applied to new nodes - # NB: settings values are stored as string expressions, - # for this reason they should be converted to strings using repr() - NodeItem("CustomNodeType", label="Node A", settings={ - "myStringProperty" : repr("Lorem ipsum dolor sit amet"), - "myFloatProperty" : repr(1.0), - }), - NodeItem("CustomNodeType", label="Node B", settings={ - "myStringProperty" : repr("consectetur adipisicing elit"), - "myFloatProperty" : repr(2.0), - }), - ]), - ] - - -def register(): - bpy.utils.register_class(MyCustomTree) - bpy.utils.register_class(MyCustomSocket) - bpy.utils.register_class(MyCustomNode) - - nodeitems_utils.register_node_categories("CUSTOM_NODES", node_categories) - - -def unregister(): - nodeitems_utils.unregister_node_categories("CUSTOM_NODES") - - bpy.utils.unregister_class(MyCustomTree) - bpy.utils.unregister_class(MyCustomSocket) - bpy.utils.unregister_class(MyCustomNode) - - -if __name__ == "__main__": - register() |