Skip to content

Commit 44c722b

Browse files
committed
Fix GetGroupSceneItemList
* Fix string conversion in GetGroupSceneItemList. * Refactor get scene list method in test client and support top level groups.
1 parent 8f11569 commit 44c722b

File tree

2 files changed

+35
-6
lines changed

2 files changed

+35
-6
lines changed

TestClient/MainWindow.cs

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ You should have received a copy of the GNU General Public License along
2525
using OBSWebsocketDotNet;
2626
using OBSWebsocketDotNet.Types;
2727
using OBSWebsocketDotNet.Types.Events;
28+
using Newtonsoft.Json;
2829

2930
namespace TestClient
3031
{
@@ -329,17 +330,45 @@ private void btnConnect_Click(object sender, EventArgs e)
329330

330331
private void btnListScenes_Click(object sender, EventArgs e)
331332
{
332-
var scenes = obs.ListScenes();
333+
var scenes = obs.GetSceneList().Scenes;
333334

334335
tvScenes.Nodes.Clear();
335336
foreach (var scene in scenes)
336337
{
337338
var node = new TreeNode(scene.Name);
338-
var sources = new List<SceneItemDetails>();
339-
sources.AddRange(obs.GetSceneItemList(scene.Name));
340-
foreach (var item in sources)
339+
var itemList = obs.GetSceneItemList(scene.Name);
340+
var groupList = obs.GetGroupList();
341+
groupList.RemoveAll(x => !itemList.Any(y => y.SourceName.Equals(x)));
342+
343+
if (groupList.Count > 0)
344+
{
345+
foreach (var name in groupList)
346+
{
347+
var group = new ObsScene { Name = name, Items = new List<SceneItemDetails>() };
348+
var parentNode = node.Nodes.Add(group.Name);
349+
350+
foreach (var item in obs.GetGroupSceneItemList(group.Name))
351+
{
352+
group.Items.Add(JsonConvert.DeserializeObject<SceneItemDetails>(item.ToString()));
353+
}
354+
355+
if (group.Items.Count() > 0)
356+
{
357+
foreach (var groupSceneItem in group.Items)
358+
{
359+
parentNode.Nodes.Add(groupSceneItem.SourceName);
360+
}
361+
}
362+
}
363+
}
364+
365+
var items = obs.GetSceneItemList(scene.Name).Where(x => !(bool)groupList?.Any(y => y.Equals(x.SourceName)));
366+
if (items != null && items.Count() > 0)
341367
{
342-
node.Nodes.Add(item.SourceName);
368+
foreach (var item in items)
369+
{
370+
node.Nodes.Add(item.SourceName);
371+
}
343372
}
344373

345374
tvScenes.Nodes.Add(node);

obs-websocket-dotnet/OBSWebsocket_Requests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1742,7 +1742,7 @@ public List<JObject> GetGroupSceneItemList(string sceneName)
17421742
};
17431743

17441744
var response = SendRequest(nameof(GetGroupSceneItemList), request);
1745-
return JsonConvert.DeserializeObject<List<JObject>>((string)response["sceneItems"]);
1745+
return JsonConvert.DeserializeObject<List<JObject>>(response["sceneItems"].ToString());
17461746
}
17471747

17481748
/// <summary>

0 commit comments

Comments
 (0)