void OutlineTreeDataFunc(Gtk.TreeViewColumn column, Gtk.CellRenderer cell, Gtk.TreeModel model, Gtk.TreeIter iter) { Gtk.CellRendererText txtRenderer = (Gtk.CellRendererText)cell; RazorOutlineNode n = (RazorOutlineNode)model.GetValue(iter, 0); txtRenderer.Text = n.Name; }
void BuildTreeChildren(Gtk.TreeStore store, Gtk.TreeIter parent, XContainer p, IList <Block> blocks) { foreach (XNode node in p.Nodes) { var el = node as XElement; if (el == null) { var startLoc = node.Region.Begin; var endLoc = node.Region.End; var doc = defaultEditor; var blocksBetween = blocks.Where(n => n.Start.AbsoluteIndex >= doc.LocationToOffset(startLoc.Line, startLoc.Column) && n.Start.AbsoluteIndex <= doc.LocationToOffset(endLoc.Line, endLoc.Column)); foreach (var block in blocksBetween) { var outlineNode = new RazorOutlineNode(block) { Location = new MonoDevelop.Ide.Editor.DocumentRegion(doc.OffsetToLocation(block.Start.AbsoluteIndex), doc.OffsetToLocation(block.Start.AbsoluteIndex + block.Length)) }; if (!parent.Equals(Gtk.TreeIter.Zero)) { store.AppendValues(parent, outlineNode); } else { store.AppendValues(outlineNode); } } continue; } Gtk.TreeIter childIter; if (!parent.Equals(Gtk.TreeIter.Zero)) { childIter = store.AppendValues(parent, new RazorOutlineNode(el)); } else { childIter = store.AppendValues(new RazorOutlineNode(el)); } BuildTreeChildren(store, childIter, el, blocks); } }
void SelectNode(RazorOutlineNode n) { EditorSelect(n.Location); }