[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32699] branches/particles-2010/source/ blender/editors/space_node: Added operators for adding and removing property sockets to/ from data nodes.
Lukas Toenne
lukas.toenne at googlemail.com
Mon Oct 25 12:53:34 CEST 2010
Revision: 32699
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32699
Author: lukastoenne
Date: 2010-10-25 12:53:33 +0200 (Mon, 25 Oct 2010)
Log Message:
-----------
Added operators for adding and removing property sockets to/from data nodes.
Modified Paths:
--------------
branches/particles-2010/source/blender/editors/space_node/node_edit.c
branches/particles-2010/source/blender/editors/space_node/node_intern.h
branches/particles-2010/source/blender/editors/space_node/node_ops.c
Modified: branches/particles-2010/source/blender/editors/space_node/node_edit.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/node_edit.c 2010-10-25 08:03:05 UTC (rev 32698)
+++ branches/particles-2010/source/blender/editors/space_node/node_edit.c 2010-10-25 10:53:33 UTC (rev 32699)
@@ -2385,161 +2385,102 @@
RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Datablock name to assign.");
}
-/* ****************** Add RNA Property Node Operator ******************* */
+/* ****************** Add Property Socket Operator ******************* */
-#if 0
-static void simnode_getdata_add_property_socket_exec_cb(bContext *C, void *arg1, void *arg2)
+static int node_add_property_socket_exec(bContext *C, wmOperator *op)
{
SpaceNode *snode= CTX_wm_space_node(C);
- bNode *node= (bNode*)arg1;
- const char *prop= (const char*)arg2;
+ bNode *node= editnode_get_active(snode->edittree);
+ char name[64];
- if (prop) {
- simnode_getdata_add_property_socket(node, prop);
- snode_notify(C, snode);
- }
-}
-
-static void simnode_getdata_add_property_socket_search_cb(const bContext *C, void *arg, char *str, uiSearchItems *items)
-{
- bNode *node= (bNode*)arg;
- LinkData *link;
- ListBase props;
+ ED_preview_kill_jobs(C);
- props = simnode_getdata_get_properties(node);
- for (link=props.first; link; link = link->next) {
- if (!BLI_strcasestr((const char*)link->data, str))
- continue;
-
- if(0==uiSearchItemAdd(items, (const char*)link->data, link->data, RNA_property_ui_icon(prop)))
- break;
- }
-}
+ /* check input variables */
+ if (RNA_property_is_set(op->ptr, "name"))
+ RNA_string_get(op->ptr, "name", name);
+ else
+ name[0] = '\0';
-void simnode_getdata_add_rna_socket_search(uiLayout *layout, bNode *node)
-{
- uiBlock *block;
- uiBut *but;
- static char search[256]= "";
-
- block= uiLayoutGetBlock(layout);
- uiBlockSetCurLayout(block, layout);
-
- but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, sizeof(search), 0, 0, UI_UNIT_X*6, UI_UNIT_Y, 0, 0, "");
- uiButSetSearchFunc(but, simnode_getdata_add_rna_socket_search_cb, node, simnode_getdata_add_rna_socket_exec_cb, NULL);
-}
-#endif
-
-#if 0
-static void simnode_getdata_add_rna_socket_exec_cb(bContext *C, void *arg1, void *arg2)
-{
- SpaceNode *snode= CTX_wm_space_node(C);
- bNode *node= (bNode*)arg1;
- PropertyRNA *prop= (PropertyRNA*)arg2;
-
- if (prop) {
- simnode_getdata_add_rna_socket(node, prop);
- snode_notify(C, snode);
+ switch (node->type) {
+ case SIM_NODE_GETDATA:
+ sim_getdata_add_property_socket(node, name);
+ break;
+ case SIM_NODE_SETDATA:
+ sim_setdata_add_property_socket(node, name);
+ break;
}
+
+ snode_notify(C, snode);
+
+ return OPERATOR_FINISHED;
}
-static void simnode_getdata_add_rna_socket_search_cb(const bContext *C, void *arg, char *str, uiSearchItems *items)
+void NODE_OT_add_property_socket(wmOperatorType *ot)
{
- bNode *node= (bNode*)arg;
- StructRNA *srna;
- PropertyRNA *prop;
- const ListBase *lb;
- Link *link;
- const char *name;
+ /* identifiers */
+ ot->name= "Add property socket";
+ ot->description= "Add a new property socket to a data node";
+ ot->idname= "NODE_OT_add_property_socket";
- srna = simnode_getdata_get_type(node);
- if (!srna)
- return;
+ /* callbacks */
+ ot->exec= node_add_property_socket_exec;
+ ot->poll= ED_operator_node_active;
- lb = RNA_struct_defined_properties(srna);
- for (link=lb->first; link; link = link->next) {
- prop = (PropertyRNA *)link;
-
- if (!simnode_getdata_property_valid(node, prop))
- continue;
-
- name = RNA_property_ui_name(prop);
- if (!BLI_strcasestr(name, str))
- continue;
-
- if(0==uiSearchItemAdd(items, name, prop, RNA_property_ui_icon(prop)))
- break;
- }
-}
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-void simnode_getdata_add_rna_socket_search(uiLayout *layout, bNode *node)
-{
- uiBlock *block;
- uiBut *but;
- static char search[256]= "";
-
- block= uiLayoutGetBlock(layout);
- uiBlockSetCurLayout(block, layout);
-
- but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, sizeof(search), 0, 0, UI_UNIT_X*6, UI_UNIT_Y, 0, 0, "");
- uiButSetSearchFunc(but, simnode_getdata_add_rna_socket_search_cb, node, simnode_getdata_add_rna_socket_exec_cb, NULL);
+ RNA_def_string(ot->srna, "name", "", 64, "Name", "Property socket name.");
}
-static void simnode_setdata_add_rna_socket_exec_cb(bContext *C, void *arg1, void *arg2)
+/* ****************** Remove Property Socket Operator ******************* */
+
+static int node_remove_property_socket_exec(bContext *C, wmOperator *op)
{
SpaceNode *snode= CTX_wm_space_node(C);
- bNode *node= (bNode*)arg1;
- PropertyRNA *prop= (PropertyRNA*)arg2;
+ bNode *node= editnode_get_active(snode->edittree);
+ bNodeSocket *sock;
- if (prop) {
- simnode_setdata_add_rna_socket(node, prop);
- snode_notify(C, snode);
+ ED_preview_kill_jobs(C);
+
+ /* check input variables */
+ if (RNA_property_is_set(op->ptr, "socket"))
+ sock = (bNodeSocket*)RNA_pointer_get(op->ptr, "socket").data;
+ else
+ sock = NULL;
+
+ switch (node->type) {
+ case SIM_NODE_GETDATA:
+ nodeRemoveOutputSocket(snode->edittree, node, sock);
+ break;
+ case SIM_NODE_SETDATA:
+ nodeRemoveInputSocket(snode->edittree, node, sock);
+ break;
}
+
+ node_tree_verify_groups(snode->nodetree);
+
+ snode_notify(C, snode);
+
+ return OPERATOR_FINISHED;
}
-static void simnode_setdata_add_rna_socket_search_cb(const bContext *C, void *arg, char *str, uiSearchItems *items)
+void NODE_OT_remove_property_socket(wmOperatorType *ot)
{
- bNode *node= (bNode*)arg;
- StructRNA *srna;
- PropertyRNA *prop;
- const ListBase *lb;
- Link *link;
- const char *name;
+ /* identifiers */
+ ot->name= "Remove property socket";
+ ot->description= "Remove a new property socket from a data node";
+ ot->idname= "NODE_OT_remove_property_socket";
- srna = simnode_setdata_get_type(node);
- if (!srna)
- return;
+ /* callbacks */
+ ot->exec= node_remove_property_socket_exec;
+ ot->poll= ED_operator_node_active;
- lb = RNA_struct_defined_properties(srna);
- for (link=lb->first; link; link = link->next) {
- prop = (PropertyRNA *)link;
-
- if (!simnode_setdata_property_valid(node, prop))
- continue;
-
- name = RNA_property_ui_name(prop);
- if (!BLI_strcasestr(name, str))
- continue;
-
- if(0==uiSearchItemAdd(items, name, prop, RNA_property_ui_icon(prop)))
- break;
- }
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ RNA_def_pointer(ot->srna, "socket", "NodeSocket", "Socket", "Property socket to remove.");
}
-void simnode_setdata_add_rna_socket_search(uiLayout *layout, bNode *node)
-{
- uiBlock *block;
- uiBut *but;
- static char search[256]= "";
-
- block= uiLayoutGetBlock(layout);
- uiBlockSetCurLayout(block, layout);
-
- but= uiDefSearchBut(block, search, 0, ICON_VIEWZOOM, sizeof(search), 0, 0, UI_UNIT_X*6, UI_UNIT_Y, 0, 0, "");
- uiButSetSearchFunc(but, simnode_setdata_add_rna_socket_search_cb, node, simnode_setdata_add_rna_socket_exec_cb, NULL);
-}
-#endif
-
/* ****************** Compile OpenCL Program Node Operator ******************* */
static int node_compile_opencl_program_exec(bContext *C, wmOperator *op)
Modified: branches/particles-2010/source/blender/editors/space_node/node_intern.h
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/node_intern.h 2010-10-25 08:03:05 UTC (rev 32698)
+++ branches/particles-2010/source/blender/editors/space_node/node_intern.h 2010-10-25 10:53:33 UTC (rev 32699)
@@ -122,6 +122,9 @@
void NODE_OT_add_file(struct wmOperatorType *ot);
+void NODE_OT_add_property_socket(struct wmOperatorType *ot);
+void NODE_OT_remove_property_socket(struct wmOperatorType *ot);
+
void NODE_OT_compile_opencl_program(struct wmOperatorType *ot);
// XXXXXX
Modified: branches/particles-2010/source/blender/editors/space_node/node_ops.c
===================================================================
--- branches/particles-2010/source/blender/editors/space_node/node_ops.c 2010-10-25 08:03:05 UTC (rev 32698)
+++ branches/particles-2010/source/blender/editors/space_node/node_ops.c 2010-10-25 10:53:33 UTC (rev 32699)
@@ -84,6 +84,9 @@
WM_operatortype_append(NODE_OT_add_file);
+ WM_operatortype_append(NODE_OT_add_property_socket);
+ WM_operatortype_append(NODE_OT_remove_property_socket);
+
WM_operatortype_append(NODE_OT_compile_opencl_program);
}
@@ -172,5 +175,7 @@
WM_keymap_add_item(keymap, "NODE_OT_read_renderlayers", RKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "NODE_OT_read_fullsamplelayers", RKEY, KM_PRESS, KM_SHIFT, 0);
+// WM_keymap_add_item(keymap, "NODE_OT_operation", RIGHTMOUSE, KM_PRESS, 0, 0);
+
transform_keymap_for_space(keyconf, keymap, SPACE_NODE);
}
More information about the Bf-blender-cvs
mailing list