diff --git a/source/blender/nodes/NOD_socket_items_ops.hh b/source/blender/nodes/NOD_socket_items_ops.hh index 30f0e73b49e..fb21ca128b2 100644 --- a/source/blender/nodes/NOD_socket_items_ops.hh +++ b/source/blender/nodes/NOD_socket_items_ops.hh @@ -218,4 +218,25 @@ inline void move_active_item(wmOperatorType *ot, RNA_def_enum(ot->srna, "direction", direction_items, 0, "Direction", "Move direction"); } +/** + * Creates simple operators for adding, removing and moving items. + * The idnames are passed in explicitly, so that they are more searchable compared to when they + * would be computed automatically. + */ +template inline void make_common_operators() +{ + WM_operatortype_append([](wmOperatorType *ot) { + socket_items::ops::add_item( + ot, "Add Item", Accessor::operator_idnames::add_item, "Add item below active item"); + }); + WM_operatortype_append([](wmOperatorType *ot) { + socket_items::ops::remove_active_item( + ot, "Remove Item", Accessor::operator_idnames::remove_item, "Remove active item"); + }); + WM_operatortype_append([](wmOperatorType *ot) { + socket_items::ops::move_active_item( + ot, "Move Item", Accessor::operator_idnames::move_item, "Move active item"); + }); +} + } // namespace blender::nodes::socket_items::ops diff --git a/source/blender/nodes/geometry/include/NOD_geo_bake.hh b/source/blender/nodes/geometry/include/NOD_geo_bake.hh index ed8090056cc..0422c47cd1c 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_bake.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_bake.hh @@ -35,6 +35,11 @@ struct BakeItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_bake_node_item_add"; + static constexpr const char *remove_item = "NODE_OT_bake_node_item_remove"; + static constexpr const char *move_item = "NODE_OT_bake_node_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { diff --git a/source/blender/nodes/geometry/include/NOD_geo_capture_attribute.hh b/source/blender/nodes/geometry/include/NOD_geo_capture_attribute.hh index 035b1db7d69..49c3a42fe20 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_capture_attribute.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_capture_attribute.hh @@ -20,6 +20,11 @@ struct CaptureAttributeItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = false; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_capture_attribute_item_add"; + static constexpr const char *remove_item = "NODE_OT_capture_attribute_item_remove"; + static constexpr const char *move_item = "NODE_OT_capture_attribute_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node( bNode &node) diff --git a/source/blender/nodes/geometry/include/NOD_geo_foreach_geometry_element.hh b/source/blender/nodes/geometry/include/NOD_geo_foreach_geometry_element.hh index c5d04ded91c..812e22154d7 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_foreach_geometry_element.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_foreach_geometry_element.hh @@ -18,6 +18,13 @@ struct ForeachGeometryElementInputItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_foreach_geometry_element_zone_input_item_add"; + static constexpr const char *remove_item = + "NODE_OT_foreach_geometry_element_zone_input_item_remove"; + static constexpr const char *move_item = + "NODE_OT_foreach_geometry_element_zone_input_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { @@ -90,6 +97,13 @@ struct ForeachGeometryElementMainItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_foreach_geometry_element_zone_main_item_add"; + static constexpr const char *remove_item = + "NODE_OT_foreach_geometry_element_zone_main_item_remove"; + static constexpr const char *move_item = + "NODE_OT_foreach_geometry_element_zone_main_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { @@ -161,6 +175,14 @@ struct ForeachGeometryElementGenerationItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = + "NODE_OT_foreach_geometry_element_zone_generation_item_add"; + static constexpr const char *remove_item = + "NODE_OT_foreach_geometry_element_zone_generation_item_remove"; + static constexpr const char *move_item = + "NODE_OT_foreach_geometry_element_zone_generation_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { diff --git a/source/blender/nodes/geometry/include/NOD_geo_menu_switch.hh b/source/blender/nodes/geometry/include/NOD_geo_menu_switch.hh index 11cc402b33b..aeefed48c7b 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_menu_switch.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_menu_switch.hh @@ -23,6 +23,11 @@ struct MenuSwitchItemsAccessor { static constexpr bool has_type = false; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_enum_definition_item_add"; + static constexpr const char *remove_item = "NODE_OT_enum_definition_item_remove"; + static constexpr const char *move_item = "NODE_OT_enum_definition_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { diff --git a/source/blender/nodes/geometry/include/NOD_geo_repeat.hh b/source/blender/nodes/geometry/include/NOD_geo_repeat.hh index a8fb5ec66b5..40bb5aa4c24 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_repeat.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_repeat.hh @@ -23,6 +23,11 @@ struct RepeatItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_repeat_zone_item_add"; + static constexpr const char *remove_item = "NODE_OT_repeat_zone_item_remove"; + static constexpr const char *move_item = "NODE_OT_repeat_zone_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { diff --git a/source/blender/nodes/geometry/include/NOD_geo_simulation.hh b/source/blender/nodes/geometry/include/NOD_geo_simulation.hh index 9d0d3164ebc..2dbfde366e1 100644 --- a/source/blender/nodes/geometry/include/NOD_geo_simulation.hh +++ b/source/blender/nodes/geometry/include/NOD_geo_simulation.hh @@ -22,6 +22,11 @@ struct SimulationItemsAccessor { static constexpr bool has_type = true; static constexpr bool has_name = true; static constexpr bool has_single_identifier_str = true; + struct operator_idnames { + static constexpr const char *add_item = "NODE_OT_simulation_zone_item_add"; + static constexpr const char *remove_item = "NODE_OT_simulation_zone_item_remove"; + static constexpr const char *move_item = "NODE_OT_simulation_zone_item_move"; + }; static socket_items::SocketItemsRef get_items_from_node(bNode &node) { diff --git a/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc b/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc index 22d43d0fbcd..9ad9badb4e0 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_attribute_capture.cc @@ -144,29 +144,9 @@ static void node_layout_ex(uiLayout *layout, bContext *C, PointerRNA *ptr) } } -static void NODE_OT_capture_attribute_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add Capture Attribute Item", __func__, "Add capture attribute item"); -} - -static void NODE_OT_capture_attribute_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove Capture Attribute Item", __func__, "Remove active capture attribute item"); -} - -static void NODE_OT_capture_attribute_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move Capture Attribute Item", __func__, "Move active capture attribute item"); -} - static void node_operators() { - WM_operatortype_append(NODE_OT_capture_attribute_item_add); - WM_operatortype_append(NODE_OT_capture_attribute_item_remove); - WM_operatortype_append(NODE_OT_capture_attribute_item_move); + socket_items::ops::make_common_operators(); } static void clean_unused_attributes(const AttributeFilter &attribute_filter, diff --git a/source/blender/nodes/geometry/nodes/node_geo_bake.cc b/source/blender/nodes/geometry/nodes/node_geo_bake.cc index d73da41ce08..3f0d8c681aa 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_bake.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_bake.cc @@ -204,28 +204,9 @@ static void draw_bake_items(const bContext *C, uiLayout *layout, PointerRNA node } } -static void NODE_OT_bake_node_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove Bake Item", __func__, "Remove active bake item"); -} - -static void NODE_OT_bake_node_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item(ot, "Add Bake Item", __func__, "Add bake item"); -} - -static void NODE_OT_bake_node_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move Bake Item", __func__, "Move active bake item"); -} - static void node_operators() { - WM_operatortype_append(NODE_OT_bake_node_item_add); - WM_operatortype_append(NODE_OT_bake_node_item_remove); - WM_operatortype_append(NODE_OT_bake_node_item_move); + socket_items::ops::make_common_operators(); } static bake::BakeSocketConfig make_bake_socket_config(const Span bake_items) diff --git a/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc b/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc index 74cb53e73ca..0d96e00f224 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_foreach_geometry_element.cc @@ -534,73 +534,11 @@ static bool node_insert_link(bNodeTree *ntree, bNode *node, bNodeLink *link) ForeachGeometryElementGenerationItemsAccessor>(*ntree, *node, *node, *link); } -static void NODE_OT_foreach_geometry_element_zone_input_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove For Each Input Item", __func__, "Remove active for-each input item"); -} - -static void NODE_OT_foreach_geometry_element_zone_input_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add For Each Input Item", __func__, "Add for-each input item"); -} - -static void NODE_OT_foreach_geometry_element_zone_input_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move For Each Input Item", __func__, "Move active for-each input item"); -} - -static void NODE_OT_foreach_geometry_element_zone_generation_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove For Each Generation Item", __func__, "Remove active for-each generation item"); -} - -static void NODE_OT_foreach_geometry_element_zone_generation_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add For Each Generation Item", __func__, "Add for-each generation item"); -} - -static void NODE_OT_foreach_geometry_element_zone_generation_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move For Each Generation Item", __func__, "Move active for-each generation item"); -} - -static void NODE_OT_foreach_geometry_element_zone_main_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove For Each Main Item", __func__, "Remove active for-each main item"); -} - -static void NODE_OT_foreach_geometry_element_zone_main_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add For Each Main Item", __func__, "Add for-each main item"); -} - -static void NODE_OT_foreach_geometry_element_zone_main_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move For Each Main Item", __func__, "Move active for-each main item"); -} - static void node_operators() { - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_input_item_add); - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_input_item_remove); - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_input_item_move); - - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_generation_item_add); - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_generation_item_remove); - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_generation_item_move); - - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_main_item_add); - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_main_item_remove); - WM_operatortype_append(NODE_OT_foreach_geometry_element_zone_main_item_move); + socket_items::ops::make_common_operators(); + socket_items::ops::make_common_operators(); + socket_items::ops::make_common_operators(); } static void node_extra_info(NodeExtraInfoParams ¶ms) diff --git a/source/blender/nodes/geometry/nodes/node_geo_menu_switch.cc b/source/blender/nodes/geometry/nodes/node_geo_menu_switch.cc index e34cd90582b..77b6876a1d7 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_menu_switch.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_menu_switch.cc @@ -433,29 +433,9 @@ static void node_layout_ex(uiLayout *layout, bContext *C, PointerRNA *ptr) } } -static void NODE_OT_enum_definition_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add Menu Item", __func__, "Add menu item"); -} - -static void NODE_OT_enum_definition_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove Menu Item", __func__, "Remove active menu item"); -} - -static void NODE_OT_enum_definition_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move Menu Item", __func__, "Move active menu item"); -} - static void node_operators() { - WM_operatortype_append(NODE_OT_enum_definition_item_add); - WM_operatortype_append(NODE_OT_enum_definition_item_remove); - WM_operatortype_append(NODE_OT_enum_definition_item_move); + socket_items::ops::make_common_operators(); } static bool node_insert_link(bNodeTree *ntree, bNode *node, bNodeLink *link) diff --git a/source/blender/nodes/geometry/nodes/node_geo_repeat.cc b/source/blender/nodes/geometry/nodes/node_geo_repeat.cc index 2678bb35f3c..287f2d45267 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_repeat.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_repeat.cc @@ -269,29 +269,9 @@ static bool node_insert_link(bNodeTree *ntree, bNode *node, bNodeLink *link) *ntree, *node, *node, *link); } -static void NODE_OT_repeat_zone_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove Repeat Zone Item", __func__, "Remove active repeat zone item"); -} - -static void NODE_OT_repeat_zone_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add Repeat Zone Item", __func__, "Add repeat zone item"); -} - -static void NODE_OT_repeat_zone_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move Repeat Zone Item", __func__, "Move active repeat zone item"); -} - static void node_operators() { - WM_operatortype_append(NODE_OT_repeat_zone_item_add); - WM_operatortype_append(NODE_OT_repeat_zone_item_remove); - WM_operatortype_append(NODE_OT_repeat_zone_item_move); + socket_items::ops::make_common_operators(); } static void node_register() diff --git a/source/blender/nodes/geometry/nodes/node_geo_simulation.cc b/source/blender/nodes/geometry/nodes/node_geo_simulation.cc index b1132da61a9..299f29dd90a 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_simulation.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_simulation.cc @@ -276,24 +276,6 @@ static void draw_simulation_state(const bContext *C, } } -static void NODE_OT_simulation_zone_item_remove(wmOperatorType *ot) -{ - socket_items::ops::remove_active_item( - ot, "Remove Simulation Zone Item", __func__, "Remove active simulation zone item"); -} - -static void NODE_OT_simulation_zone_item_add(wmOperatorType *ot) -{ - socket_items::ops::add_item( - ot, "Add Simulation Zone Item", __func__, "Add simulation zone item"); -} - -static void NODE_OT_simulation_zone_item_move(wmOperatorType *ot) -{ - socket_items::ops::move_active_item( - ot, "Move Simulation Zone Item", __func__, "Move active simulation zone item"); -} - /** Shared for simulation input and output node. */ static void node_layout_ex(uiLayout *layout, bContext *C, PointerRNA *current_node_ptr) { @@ -914,9 +896,7 @@ static void node_copy_storage(bNodeTree * /*dst_tree*/, bNode *dst_node, const b static void node_operators() { - WM_operatortype_append(NODE_OT_simulation_zone_item_add); - WM_operatortype_append(NODE_OT_simulation_zone_item_remove); - WM_operatortype_append(NODE_OT_simulation_zone_item_move); + socket_items::ops::make_common_operators(); } static bool node_insert_link(bNodeTree *ntree, bNode *node, bNodeLink *link)