/// <summary> /// Gets the path to a specified iter. /// </summary> /// <param name="iter">The iter to get the path of.</param> /// <returns>The TreePath corresponding to the given iter.</returns> public TreePath GetPath(TreeIter iter) { if (iter.Stamp != this.Stamp) { throw new InvalidDataException("The given iter was not valid for this model."); } var result = new TreePath(); var node = this.Tree.GetNode((ulong)iter.UserData); if (node == null) { return(result); } while (node.ParentOffset > -1) { var parentNode = this.Tree.GetNode((ulong)node.ParentOffset); ulong nodeOffset = this.Tree.GetNodeOffset(node); result.PrependIndex(parentNode.ChildOffsets.IndexOf(nodeOffset)); node = parentNode; } result.PrependIndex(this.Tree.Root.ChildOffsets.IndexOf((ulong)iter.UserData)); return(result); }
TreePath PathFromNode(object node) { if (node == null) { return(new TreePath()); } object work = node; TreePath path = new TreePath(); if (work is MemberInfo) { Type parent = (work as MemberInfo).ReflectedType; path.PrependIndex(Array.IndexOf(parent.GetMembers(), work)); work = parent; } if (work is Type) { Assembly assm = (work as Type).Assembly; path.PrependIndex(Array.IndexOf(assm.GetTypes(), work)); work = assm; } if (work is Assembly) { path.PrependIndex(Array.IndexOf(assemblies, node)); } return(path); }
private void CreatePath(TreePath path) { var parent = this.Parent as Node; if (parent != null) { var index = parent.IndexOf(this); path.PrependIndex(index); parent.CreatePath(path); } else { var index = this.Tree.Nodes.Cast <Node>().TakeWhile(node => !node.Equals(this)).Count(); path.PrependIndex(index); } }
public TreePath GetPath(TreeIter iter) { Node node = (Node)iter; TreePath result = new TreePath(); if (node == null) { return(result); } while (node.Parent != null) { result.PrependIndex(node.Parent.Children.IndexOf(node)); node = node.Parent; } result.PrependIndex(nodes.IndexOf(node)); return(result); }
public TreePath GetPath(TreeIter iter) { var element = getNode(iter); var path = new TreePath(); if (element == null) { return(path); } while (element.Parent != null) { path.PrependIndex(element.ElementsBeforeSelf().Count()); element = element.Parent; } path.PrependIndex(0); return(path); }
public TreePath GetPath(TreeIter iter) { var path = new TreePath(); var node = GetNode(iter); while (node != null) { path.PrependIndex(node.Index); node = node.Parent; } return(path); }
TreePath PathFromNode(object node) { if (node == null) { return(new TreePath()); } object work = node; TreePath path = new TreePath(); path.PrependIndex(caches.IndexOf(work as Geocache)); return(path); }