void HandleDocumentDocumentParsed(object sender, EventArgs e)
 {
     parsedDoc = (T4ParsedDocument)DocumentContext.ParsedDocument;
     if (parsedDoc != null)
     {
         RefreshOutline();
     }
 }
Пример #2
0
 void OnParseInformationChanged(object sender, MonoDevelop.Projects.Dom.ParsedDocumentEventArgs args)
 {
     if (FileName == args.FileName && args.ParsedDocument != null)
     {
         parsedDoc = (T4ParsedDocument)args.ParsedDocument;
         RefreshOutline();
     }
 }
Пример #3
0
 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);
                        }
                    }
                }
            }
        }