public void Clear() { foreach (var g in BackGraphs.ToArray()) { UnregisterBackGraph(g); } }
public void RegisterBackGraph(IGraph <TSourceItem, TSourceEdge> root) { if (!BackGraphs.Contains(root)) { BackGraphs.Add(root); root.GraphChange -= this.BackGraphChange; root.GraphChange += this.BackGraphChange; root.ChangeData -= this.BackGraphChangeData; root.ChangeData += this.BackGraphChangeData; } }
public void UnregisterBackGraph(IGraph <TSourceItem, TSourceEdge> root, bool forced) { root = BackGraphsOf(root).FirstOrDefault(); var remove = forced || !ScenesOfBackGraph(root).Any(); if (root != null && remove) { root.GraphChange -= this.BackGraphChange; root.ChangeData -= this.BackGraphChangeData; BackGraphs.Remove(root); } }
public IEnumerable <IGraph <TSourceItem, TSourceEdge> > BackGraphsOf(IGraph <TSourceItem, TSourceEdge> graph) { return(BackGraphs.Where(g => g == graph || g.UnWrapped() == graph || g.RootSink() == graph)); }