Workaround for C nodes: In order to make registerable RNA methods of the standard C nodes (e.g. poll or draw_buttons) available in python scripts, they need a specialized Node subtype (called NodeInternal). This is necessary because bpy omits any registerable functions of RNA types in the generated python classes, relying instead on using the supposed native implementation in a registered python class. Since the standard shader/compositor/texture nodes in Blender are not registered but directly created in makesrna they lack all registerable function in the associated python types. The NodeInternal RNA subtype replaces the registerable functions of the base Node type to solve this issue.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56586 954f8c5b-7b00-dc11-b283-0030488c597c
Expose the HIDE_VALUE flag of node sockets in RNA.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56587 954f8c5b-7b00-dc11-b283-0030488c597c
Removed the add_group_node operator, this is now integrated into the generic node_add operator. The group node tree pointer is then part of the settings dictionary.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56588 954f8c5b-7b00-dc11-b283-0030488c597c
Exposed the node socket templates of C nodes in RNA by means of a classmethod. This will allow the node link menu to determine feasible socket connections before an actual node instance is created.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56589 954f8c5b-7b00-dc11-b283-0030488c597c
Removed the unused socket template system from the bpy_types Node base class (it interferes with the input_templates/output_templates functions from C nodes). This can be reimplemented in a nicer way for pynode subclasses later on, but should not be part of the basic Node class.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56590 954f8c5b-7b00-dc11-b283-0030488c597c
Moved a couple of common properties into the NodeAddOperator base class to avoid repetitive code. A new operator node_add_and_link is another variant that first creates a node and them connects a specific socket to an existing one (defined by context pointer).

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56591 954f8c5b-7b00-dc11-b283-0030488c597c
Expose the data type property of node group interfaces for easier comparison in python.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56592 954f8c5b-7b00-dc11-b283-0030488c597c
2 fixes for node group node_tree pointer property: Make sure the nodeGroupPoll function (which checks for recursion) is used both in the poll callback as well as the actual pointer assignment (set). The poll callback doesn't seem to be used when directly setting the node_tree pointer from the API, so to make sure no dangerous recursion situation can happen this needs a second check.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56593 954f8c5b-7b00-dc11-b283-0030488c597c
A bit more pythonic way of using the items callback in node categories. The category.items attribute is now a function taking a context parameter instead of a property. This can be used for checking validity, e.g. for doing node group recursion checks, and filter out unusable items.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56594 954f8c5b-7b00-dc11-b283-0030488c597c
Added filter to the node group items callback to remove recursive node groups right from the start. These tree pointers would be polled out internally as well, but this way they don't show up in the menus in the first place.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56595 954f8c5b-7b00-dc11-b283-0030488c597c
Fix for node item polling: recursion check was the wrong way around, needs to test is the parent tree is inside the group.

git-svn-id: https://svn.blender.org/svnroot/bf-blender/trunk/blender@56596 954f8c5b-7b00-dc11-b283-0030488c597c