[Bf-blender-cvs] [b78014af978] temp-geometry-nodes-expandable-geometry-socket-prototype: initial search when adding expander output
Jacques Lucke
noreply at git.blender.org
Tue Aug 3 12:39:59 CEST 2021
Commit: b78014af97874b48524e9fe30827937e85faccb7
Author: Jacques Lucke
Date: Tue Aug 3 12:39:45 2021 +0200
Branches: temp-geometry-nodes-expandable-geometry-socket-prototype
https://developer.blender.org/rBb78014af97874b48524e9fe30827937e85faccb7
initial search when adding expander output
===================================================================
M source/blender/editors/space_node/node_edit.cc
===================================================================
diff --git a/source/blender/editors/space_node/node_edit.cc b/source/blender/editors/space_node/node_edit.cc
index 70f41d979bc..184dc1d5e85 100644
--- a/source/blender/editors/space_node/node_edit.cc
+++ b/source/blender/editors/space_node/node_edit.cc
@@ -2980,12 +2980,33 @@ void NODE_OT_cryptomatte_layer_remove(wmOperatorType *ot)
/* ****************** Geometry Expander Add Output ******************* */
-static int node_geometry_expander_output_add_exec(bContext *C, wmOperator *UNUSED(op))
+static const EnumPropertyItem *node_geometry_expander_output_add_items(bContext *UNUSED(C),
+ PointerRNA *UNUSED(ptr),
+ PropertyRNA *UNUSED(prop),
+ bool *r_free)
+{
+ EnumPropertyItem *items = NULL;
+ int totitem = 0;
+ EnumPropertyItem item = {0};
+ item.identifier = "HELLO";
+ item.name = "Hello";
+
+ RNA_enum_item_add(&items, &totitem, &item);
+ RNA_enum_item_end(&items, &totitem);
+ *r_free = true;
+ return items;
+}
+
+static int node_geometry_expander_output_add_exec(bContext *C, wmOperator *op)
{
SpaceNode *snode = CTX_wm_space_node(C);
- PointerRNA ptr = CTX_data_pointer_get(C, "node");
- bNode *node = (bNode *)ptr.data;
- bNodeTree *ntree = (bNodeTree *)ptr.owner_id;
+ bNodeTree *ntree = snode->edittree;
+ char *node_name = RNA_string_get_alloc(op->ptr, "node_name", nullptr, 0);
+ bNode *node = nodeFindNodebyName(ntree, node_name);
+ MEM_freeN(node_name);
+ if (node == nullptr) {
+ return OPERATOR_CANCELLED;
+ }
NodeGeometryGeometryExpander *storage = (NodeGeometryGeometryExpander *)node->storage;
auto to_identifier = [](int id) { return "out_" + std::to_string(id); };
@@ -3012,6 +3033,16 @@ static int node_geometry_expander_output_add_exec(bContext *C, wmOperator *UNUSE
return OPERATOR_FINISHED;
}
+static int node_geometry_expander_output_add_invoke(bContext *C,
+ wmOperator *op,
+ const wmEvent *event)
+{
+ PointerRNA ptr = CTX_data_pointer_get(C, "node");
+ bNode *node = (bNode *)ptr.data;
+ RNA_string_set(op->ptr, "node_name", node->name);
+ return WM_enum_search_invoke(C, op, event);
+}
+
void NODE_OT_geometry_expander_output_add(wmOperatorType *ot)
{
/* identifiers */
@@ -3020,9 +3051,18 @@ void NODE_OT_geometry_expander_output_add(wmOperatorType *ot)
ot->idname = "NODE_OT_geometry_expander_output_add";
/* callbacks */
+ ot->invoke = node_geometry_expander_output_add_invoke;
ot->exec = node_geometry_expander_output_add_exec;
ot->poll = ED_operator_node_editable;
/* flags */
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
+
+ PropertyRNA *prop;
+
+ prop = RNA_def_string(ot->srna, "node_name", nullptr, 0, "Node Name", "Node name");
+
+ prop = RNA_def_enum(ot->srna, "item", DummyRNA_NULL_items, 0, "Item", "");
+ RNA_def_enum_funcs(prop, node_geometry_expander_output_add_items);
+ ot->prop = prop;
}
More information about the Bf-blender-cvs
mailing list