summaryrefslogtreecommitdiff
path: root/Source/ModelViewer/TreeSkeleton.cs
diff options
context:
space:
mode:
authorGravatar MichalMoskal <unknown>2010-11-09 01:31:30 +0000
committerGravatar MichalMoskal <unknown>2010-11-09 01:31:30 +0000
commit48130b22b197754f03f27a1da1f1c70d47d65900 (patch)
treed2c570cac971014e6096ab51e14f2cde2d022cd2 /Source/ModelViewer/TreeSkeleton.cs
parentea1898f88e2edcecf3a58923fcd1a5d2b87219a8 (diff)
Implement different levels of view (normal, expert, etc).
Display functions and pointer sets in VCC
Diffstat (limited to 'Source/ModelViewer/TreeSkeleton.cs')
-rw-r--r--Source/ModelViewer/TreeSkeleton.cs20
1 files changed, 19 insertions, 1 deletions
diff --git a/Source/ModelViewer/TreeSkeleton.cs b/Source/ModelViewer/TreeSkeleton.cs
index eb0b3059..0c7e6607 100644
--- a/Source/ModelViewer/TreeSkeleton.cs
+++ b/Source/ModelViewer/TreeSkeleton.cs
@@ -65,7 +65,11 @@ namespace Microsoft.Boogie.ModelViewer
public bool Expandable
{
- get { return displayNodes.Any(d => d != null && d.Children.Count() > 0); }
+ get {
+ if (wasExpanded)
+ return children.Count > 0;
+ return displayNodes.Any(d => d != null && d.Children.Count() > 0);
+ }
}
public bool Expanded
@@ -132,6 +136,8 @@ namespace Microsoft.Boogie.ModelViewer
var dn = displayNodes[i];
if (dn == null) continue;
foreach (var child in dn.Children) {
+ if (child.ViewLevel > main.viewOpts.ViewLevel)
+ continue;
SkeletonItem skelChild;
var name = child.Name;
if (!created.TryGetValue(name, out skelChild)) {
@@ -183,6 +189,18 @@ namespace Microsoft.Boogie.ModelViewer
parents.Reverse();
return main.langModel.PathName(parents);
}
+
+ public void SyncWith(Dictionary<SkeletonItem, SkeletonItem> mapping, SkeletonItem old)
+ {
+ mapping[old] = this;
+ Expanded = old.Expanded;
+ var oldCh = old.children.ToDictionary(c => c.name);
+ foreach (var c in children) {
+ SkeletonItem oc;
+ if (oldCh.TryGetValue(c.name, out oc))
+ c.SyncWith(mapping, oc);
+ }
+ }
}
}