protected override void DoRecursivelyResolve(Dictionary <string, DataDefinition> local, Dictionary <string, DataDefinition> global, Dictionary <string, Dictionary <string, DataDefinition> > referenceableDefinitions) { if (DefKey != null) { var key = DefKey.ToLower(); Dictionary <string, DataDefinition> defs = null; if (local.ContainsKey(key)) { defs = local; } else if (global.ContainsKey(key)) { defs = global; } if (defs != null) { var def = defs[key] as ReferenceDefinition; foreach (var keydef in def.Keys) { var childDef = def.Definitions[keydef.Item1]; childDef.RecursivelyResolve(local, global, referenceableDefinitions); var keyframeDef = new KeyframeDefinition(); keyframeDef.CreateFrom(childDef); KeyframeDefinitions.Add(keyframeDef); Keys.Add(new Tuple <KeyframeDefinition, string>(keyframeDef, keydef.Item2)); } } else { throw new Exception("Failed to find key " + DefKey + "!"); } } foreach (var key in DefKeys) { Dictionary <string, DataDefinition> defs = null; if (local.ContainsKey(key.Item1.ToLower())) { defs = local; } else if (global.ContainsKey(key.Item1.ToLower())) { defs = global; } if (defs != null) { var childDef = defs[key.Item1.ToLower()]; childDef.RecursivelyResolve(local, global, referenceableDefinitions); var keyframeDef = new KeyframeDefinition(); keyframeDef.CreateFrom(childDef); KeyframeDefinitions.Add(keyframeDef); Keys.Add(new Tuple <KeyframeDefinition, string>(keyframeDef, key.Item2)); } else if (key.Item1 != "---") { throw new Exception("Failed to find key " + key.Item1 + "!"); } } foreach (var def in KeyframeDefinitions) { def.RecursivelyResolve(local, global, referenceableDefinitions); } }
protected override void DoRecursivelyResolve(Dictionary <string, DataDefinition> local, Dictionary <string, DataDefinition> global, Dictionary <string, Dictionary <string, DataDefinition> > referenceableDefinitions) { if (DefKey != null) { var key = DefKey.ToLower(); Dictionary <string, DataDefinition> defs = null; if (local.ContainsKey(key)) { defs = local; } else if (global.ContainsKey(key)) { defs = global; } if (defs != null) { var def = defs[key] as ReferenceDefinition; Keys = def.Keys; ListCollectionView lcv = new ListCollectionView(Keys); lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2")); ItemsSource = lcv; } else { throw new Exception("Failed to find key " + DefKey + "!"); } } foreach (var key in Keys) { Dictionary <string, DataDefinition> defs = null; if (local.ContainsKey(key.Item1.ToLower())) { defs = local; } else if (global.ContainsKey(key.Item1.ToLower())) { defs = global; } if (defs != null) { var def = defs[key.Item1.ToLower()]; if (def is GraphNodeDefinition) { Definitions[key.Item1] = def as GraphNodeDefinition; } else if (key.Item1 != "---") { throw new Exception("Tried to add definition of type " + def.GetType() + " (key = " + key.Item1 + ") to graph reference!"); } } else { throw new Exception("Failed to find key " + key.Item1 + "!"); } } if (Keys.Count == 0) { Keys.Add(new Tuple <string, string>("---", "---")); ListCollectionView lcv = new ListCollectionView(Keys); lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2")); ItemsSource = lcv; Definitions["---"] = new GraphStructDefinition(); } }
public override void RecursivelyResolve(Dictionary <string, DataDefinition> local, Dictionary <string, DataDefinition> global, Dictionary <string, Dictionary <string, DataDefinition> > referenceableDefinitions) { if (DefKey != null) { var key = DefKey.ToLower(); Dictionary <string, DataDefinition> defs = null; if (local.ContainsKey(key)) { defs = local; } else if (global.ContainsKey(key)) { defs = global; } if (defs != null) { var def = defs[key] as ReferenceDefinition; Keys = def.Keys; ListCollectionView lcv = new ListCollectionView(Keys); lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2")); ItemsSource = lcv; } else { Message.Show("Failed to find key " + DefKey + "!", "Reference Resolve Failed", "Ok"); } } foreach (var key in Keys) { Dictionary <string, DataDefinition> defs = null; if (local.ContainsKey(key.Item1.ToLower())) { defs = local; } else if (global.ContainsKey(key.Item1.ToLower())) { defs = global; } if (defs != null) { Definitions[key.Item1] = defs[key.Item1.ToLower()]; } else if (key.Item1 != "---") { Message.Show("Failed to find key " + key.Item1 + "!", "Reference Resolve Failed", "Ok"); } } if (Keys.Count == 0) { Keys.Add(new Tuple <string, string>("---", "---")); ListCollectionView lcv = new ListCollectionView(Keys); lcv.GroupDescriptions.Add(new PropertyGroupDescription("Item2")); ItemsSource = lcv; Definitions["---"] = new DummyDefinition(); } }