[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56272] trunk/blender/source/blender/ editors/space_node/node_edit.c: Fix #35068: bpy.ops.node. output_file_add_socket() now works on the active node
Brecht Van Lommel
brechtvanlommel at pandora.be
Wed Apr 24 18:59:56 CEST 2013
Revision: 56272
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56272
Author: blendix
Date: 2013-04-24 16:59:56 +0000 (Wed, 24 Apr 2013)
Log Message:
-----------
Fix #35068: bpy.ops.node.output_file_add_socket() now works on the active node
if there is no "node" in the context, for scripting convenience.
Modified Paths:
--------------
trunk/blender/source/blender/editors/space_node/node_edit.c
Modified: trunk/blender/source/blender/editors/space_node/node_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_edit.c 2013-04-24 16:36:50 UTC (rev 56271)
+++ trunk/blender/source/blender/editors/space_node/node_edit.c 2013-04-24 16:59:56 UTC (rev 56272)
@@ -1704,16 +1704,22 @@
{
Scene *scene = CTX_data_scene(C);
SpaceNode *snode = CTX_wm_space_node(C);
- PointerRNA ptr;
- bNodeTree *ntree;
- bNode *node;
+ PointerRNA ptr = CTX_data_pointer_get(C, "node");
+ bNodeTree *ntree = NULL;
+ bNode *node = NULL;
char file_path[MAX_NAME];
- ptr = CTX_data_pointer_get(C, "node");
- if (!ptr.data)
+ if (ptr.data) {
+ node = ptr.data;
+ ntree = ptr.id.data;
+ }
+ else if (snode && snode->edittree) {
+ ntree = snode->edittree;
+ node = nodeGetActive(snode->edittree);
+ }
+
+ if (!node)
return OPERATOR_CANCELLED;
- node = ptr.data;
- ntree = ptr.id.data;
RNA_string_get(op->ptr, "file_path", file_path);
ntreeCompositOutputFileAddSocket(ntree, node, file_path, &scene->r.im_format);
@@ -1746,13 +1752,20 @@
{
SpaceNode *snode = CTX_wm_space_node(C);
PointerRNA ptr = CTX_data_pointer_get(C, "node");
- bNodeTree *ntree;
- bNode *node;
+ bNodeTree *ntree = NULL;
+ bNode *node = NULL;
- if (!ptr.data)
+ if (ptr.data) {
+ node = ptr.data;
+ ntree = ptr.id.data;
+ }
+ else if (snode && snode->edittree) {
+ ntree = snode->edittree;
+ node = nodeGetActive(snode->edittree);
+ }
+
+ if (!node)
return OPERATOR_CANCELLED;
- node = ptr.data;
- ntree = ptr.id.data;
if (!ntreeCompositOutputFileRemoveActiveSocket(ntree, node))
return OPERATOR_CANCELLED;
@@ -1783,14 +1796,19 @@
{
SpaceNode *snode = CTX_wm_space_node(C);
PointerRNA ptr = CTX_data_pointer_get(C, "node");
- bNode *node;
+ bNode *node = NULL;
NodeImageMultiFile *nimf;
bNodeSocket *sock;
int direction;
- if (!ptr.data)
+ if (ptr.data)
+ node = ptr.data;
+ else if (snode && snode->edittree)
+ node = nodeGetActive(snode->edittree);
+
+ if (!node)
return OPERATOR_CANCELLED;
- node = ptr.data;
+
nimf = node->storage;
sock = BLI_findlink(&node->inputs, nimf->active_input);
@@ -2277,6 +2295,7 @@
{
Scene *scene = CTX_data_scene(C);
RenderEngineType *type = RE_engines_find(scene->r.engine);
+ SpaceNode *snode = CTX_wm_space_node(C);
bNode *node;
Text *text;
@@ -2286,6 +2305,10 @@
/* see if we have a shader script node in context */
node = CTX_data_pointer_get_type(C, "node", &RNA_ShaderNodeScript).data;
+
+ if (!node && snode && snode->edittree)
+ node = nodeGetActive(snode->edittree);
+
if (node && node->type == SH_NODE_SCRIPT) {
NodeShaderScript *nss = node->storage;
@@ -2332,7 +2355,10 @@
{
Main *bmain = CTX_data_main(C);
Scene *scene = CTX_data_scene(C);
+ SpaceNode *snode = CTX_wm_space_node(C);
PointerRNA nodeptr = CTX_data_pointer_get_type(C, "node", &RNA_ShaderNodeScript);
+ bNodeTree *ntree = NULL;
+ bNode *node = NULL;
RenderEngine *engine;
RenderEngineType *type;
int found = FALSE;
@@ -2342,11 +2368,18 @@
engine = RE_engine_create(type);
engine->reports = op->reports;
+ /* get node */
if (nodeptr.data) {
+ ntree = nodeptr.id.data;
+ node = nodeptr.data;
+ }
+ else if (snode && snode->edittree) {
+ ntree = snode->edittree;
+ node = nodeGetActive(snode->edittree);
+ }
+
+ if (node) {
/* update single node */
- bNodeTree *ntree = nodeptr.id.data;
- bNode *node = nodeptr.data;
-
type->update_script_node(engine, ntree, node);
found = TRUE;
More information about the Bf-blender-cvs
mailing list