Change API events view to show { } sections in sub-nodes

This commit is contained in:
baldurk
2015-10-30 10:59:17 +01:00
parent 685032e78c
commit 7769e1d672
+22 -9
View File
@@ -83,8 +83,8 @@ namespace renderdocui.Windows
apiEvents.BeginUpdate();
apiEvents.Nodes.Clear();
Regex rgx = new Regex("^\\s*[{}]?");
string replacement = "";
Regex rgxopen = new Regex("^\\s*{");
Regex rgxclose = new Regex("^\\s*}");
FetchDrawcall draw = m_Core.CurDrawcall;
@@ -99,19 +99,32 @@ namespace renderdocui.Windows
string[] lines = ev.eventDesc.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None);
TreelistView.Node node = apiEvents.Nodes.Add(new TreelistView.Node(new object[] { ev.eventID, lines[0] }));
TreelistView.Node root = new TreelistView.Node(new object[] { ev.eventID, lines[0] });
for (int i = 1; i < lines.Length; i++)
int i=1;
if (i < lines.Length && lines[i].Trim() == "{")
i++;
List<TreelistView.Node> nodestack = new List<TreelistView.Node>();
nodestack.Add(root);
for (; i < lines.Length; i++)
{
string l = rgx.Replace(lines[i], replacement);
if (l.Length > 0)
node.Nodes.Add(new TreelistView.Node(new object[] { "", l }));
if (rgxopen.IsMatch(lines[i]))
nodestack.Add(nodestack.Last().Nodes.LastNode);
else if (rgxclose.IsMatch(lines[i]))
nodestack.RemoveAt(nodestack.Count - 1);
else if(lines[i].Trim().Length > 0 && nodestack.Count > 0)
nodestack.Last().Nodes.Add(new TreelistView.Node(new object[] { "", lines[i].Trim() }));
}
if (ev.eventID == draw.eventID)
node.Bold = true;
root.Bold = true;
node.Tag = (object)ev;
root.Tag = (object)ev;
apiEvents.Nodes.Add(root);
}
if (apiEvents.Nodes.Count > 0)