Browse Source

obs-scripting: Add obs_sceneitem_group_enum_items function call

Adds function call to enumerate over items contained in a source group.
PatTheMav 3 years ago
parent
commit
d9f89be35a
2 changed files with 31 additions and 0 deletions
  1. 12 0
      deps/obs-scripting/obs-scripting-lua.c
  2. 19 0
      deps/obs-scripting/obs-scripting-python.c

+ 12 - 0
deps/obs-scripting/obs-scripting-lua.c

@@ -644,6 +644,17 @@ static int scene_enum_items(lua_State *script)
 	return 1;
 }
 
+static int sceneitem_group_enum_items(lua_State *script)
+{
+	obs_sceneitem_t *sceneitem;
+	if (!ls_get_libobs_obj(obs_sceneitem_t, 1, &sceneitem))
+		return 0;
+
+	lua_newtable(script);
+	obs_sceneitem_group_enum_items(sceneitem, enum_items_proc, script);
+	return 1;
+}
+
 /* -------------------------------------------- */
 
 static void defer_hotkey_unregister(void *p_cb)
@@ -1014,6 +1025,7 @@ static void add_hook_functions(lua_State *script)
 	add_func("obs_enum_sources", enum_sources);
 	add_func("obs_source_enum_filters", source_enum_filters);
 	add_func("obs_scene_enum_items", scene_enum_items);
+	add_func("obs_sceneitem_group_enum_items", sceneitem_group_enum_items);
 	add_func("source_list_release", source_list_release);
 	add_func("sceneitem_list_release", sceneitem_list_release);
 	add_func("calldata_source", calldata_source);

+ 19 - 0
deps/obs-scripting/obs-scripting-python.c

@@ -1108,6 +1108,23 @@ static PyObject *scene_enum_items(PyObject *self, PyObject *args)
 	return list;
 }
 
+static PyObject *sceneitem_group_enum_items(PyObject *self, PyObject *args)
+{
+	PyObject *py_sceneitem;
+	obs_sceneitem_t *sceneitem;
+
+	UNUSED_PARAMETER(self);
+
+	if (!parse_args(args, "O", &py_sceneitem))
+		return python_none();
+	if (!py_to_libobs(obs_sceneitem_t, py_sceneitem, &sceneitem))
+		return python_none();
+
+	PyObject *list = PyList_New(0);
+	obs_sceneitem_group_enum_items(sceneitem, enum_items_proc, list);
+	return list;
+}
+
 /* -------------------------------------------- */
 
 static PyObject *source_list_release(PyObject *self, PyObject *args)
@@ -1235,6 +1252,8 @@ static void add_hook_functions(PyObject *module)
 		DEF_FUNC("sceneitem_list_release", sceneitem_list_release),
 		DEF_FUNC("obs_enum_sources", enum_sources),
 		DEF_FUNC("obs_scene_enum_items", scene_enum_items),
+		DEF_FUNC("obs_sceneitem_group_enum_items",
+			 sceneitem_group_enum_items),
 		DEF_FUNC("obs_remove_tick_callback",
 			 obs_python_remove_tick_callback),
 		DEF_FUNC("obs_add_tick_callback", obs_python_add_tick_callback),