void HandleDocumentDocumentParsed(object sender, EventArgs e) { parsedDoc = (T4ParsedDocument)DocumentContext.ParsedDocument; if (parsedDoc != null) { RefreshOutline(); } }
void OnParseInformationChanged(object sender, MonoDevelop.Projects.Dom.ParsedDocumentEventArgs args) { if (FileName == args.FileName && args.ParsedDocument != null) { parsedDoc = (T4ParsedDocument)args.ParsedDocument; RefreshOutline(); } }
public override void Initialize() { base.Initialize(); MonoDevelop.Projects.Dom.Parser.ProjectDomService.ParsedDocumentUpdated += OnParseInformationChanged; parsedDoc = (T4ParsedDocument)Document.ParsedDocument; if (parsedDoc != null) { RefreshOutline(); } }
void RefillOutlineStore(T4ParsedDocument doc, Gtk.TreeStore store) { if (doc == null) { return; } Gdk.Color normal = new Gdk.Color(0x00, 0x00, 0x00); Gdk.Color blue = new Gdk.Color(0x10, 0x40, 0xE0); Gdk.Color green = new Gdk.Color(0x08, 0xC0, 0x30); Gdk.Color orange = new Gdk.Color(0xFF, 0xA0, 0x00); Gdk.Color red = new Gdk.Color(0xC0, 0x00, 0x20); Gtk.TreeIter parent = Gtk.TreeIter.Zero; foreach (Mono.TextTemplating.ISegment segment in doc.TemplateSegments) { Mono.TextTemplating.Directive dir = segment as Mono.TextTemplating.Directive; if (dir != null) { parent = Gtk.TreeIter.Zero; store.AppendValues("<#@ " + dir.Name + " #>", red, segment); continue; } Mono.TextTemplating.TemplateSegment ts = segment as Mono.TextTemplating.TemplateSegment; if (ts != null) { string name; if (ts.Text.Length > 40) { name = ts.Text.Substring(0, 40) + "..."; } else { name = ts.Text; } name = name.Replace('\n', ' ').Trim(); if (name.Length == 0) { continue; } if (ts.Type == Mono.TextTemplating.SegmentType.Expression) { store.AppendValues(parent, "<#= " + name + " #>", orange, segment); } else { if (ts.Type == Mono.TextTemplating.SegmentType.Block) { name = "<#" + name + " #>"; store.AppendValues(name, blue, segment); parent = Gtk.TreeIter.Zero; } else if (ts.Type == Mono.TextTemplating.SegmentType.Helper) { name = "<#+" + name + " #>"; store.AppendValues(name, green, segment); parent = Gtk.TreeIter.Zero; } else if (ts.Type == Mono.TextTemplating.SegmentType.Content) { parent = store.AppendValues(name, normal, segment); } } } } }