diff options
author | MichalMoskal <unknown> | 2010-11-09 01:31:30 +0000 |
---|---|---|
committer | MichalMoskal <unknown> | 2010-11-09 01:31:30 +0000 |
commit | 48130b22b197754f03f27a1da1f1c70d47d65900 (patch) | |
tree | d2c570cac971014e6096ab51e14f2cde2d022cd2 /Source/ModelViewer/TreeSkeleton.cs | |
parent | ea1898f88e2edcecf3a58923fcd1a5d2b87219a8 (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.cs | 20 |
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);
+ }
+ }
}
}
|