public CodeIssuePanelWidget(string mimeType) { this.mimeType = mimeType; // ReSharper disable once DoNotCallOverridableMethodsInConstructor Build(); // ensure selected row remains visible treeviewInspections.SizeAllocated += (o, args) => { TreeIter iter; if (treeviewInspections.Selection.GetSelected(out iter)) { var path = treeviewInspections.Model.GetPath(iter); treeviewInspections.ScrollToCell(path, treeviewInspections.Columns[0], false, 0f, 0f); } }; treeviewInspections.TooltipColumn = 2; treeviewInspections.HasTooltip = true; var toggleRenderer = new CellRendererToggle(); toggleRenderer.Toggled += delegate(object o, ToggledArgs args) { TreeIter iter; if (treeStore.GetIterFromString(out iter, args.Path)) { var provider = (Tuple <CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue(iter, 1); enableState[provider] = !enableState[provider]; } }; var titleCol = new TreeViewColumn(); treeviewInspections.AppendColumn(titleCol); titleCol.PackStart(toggleRenderer, false); titleCol.Sizing = TreeViewColumnSizing.Autosize; titleCol.SetCellDataFunc(toggleRenderer, delegate(TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter) { var provider = (Tuple <CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue(iter, 1); if (provider == null) { toggleRenderer.Visible = false; return; } toggleRenderer.Visible = true; toggleRenderer.Active = enableState[provider]; }); var cellRendererText = new CellRendererText { Ellipsize = Pango.EllipsizeMode.End }; titleCol.PackStart(cellRendererText, true); titleCol.AddAttribute(cellRendererText, "markup", 0); titleCol.Expand = true; searchentryFilter.ForceFilterButtonVisible = true; searchentryFilter.RoundedShape = true; searchentryFilter.HasFrame = true; searchentryFilter.Ready = true; searchentryFilter.Visible = true; searchentryFilter.Entry.Changed += ApplyFilter; var comboRenderer = new CustomCellRenderer { Alignment = Pango.Alignment.Center }; var col = treeviewInspections.AppendColumn("Severity", comboRenderer); col.Sizing = TreeViewColumnSizing.GrowOnly; col.MinWidth = 100; col.Expand = false; var comboBoxStore = new ListStore(typeof(string), typeof(DiagnosticSeverity)); comboBoxStore.AppendValues(GetDescription(DiagnosticSeverity.Hidden), DiagnosticSeverity.Hidden); comboBoxStore.AppendValues(GetDescription(DiagnosticSeverity.Error), DiagnosticSeverity.Error); comboBoxStore.AppendValues(GetDescription(DiagnosticSeverity.Warning), DiagnosticSeverity.Warning); comboBoxStore.AppendValues(GetDescription(DiagnosticSeverity.Info), DiagnosticSeverity.Info); comboRenderer.Model = comboBoxStore; comboRenderer.Mode = CellRendererMode.Activatable; comboRenderer.TextColumn = 0; comboRenderer.Editable = true; comboRenderer.HasEntry = false; comboRenderer.Edited += delegate(object o, EditedArgs args) { TreeIter iter; if (!treeStore.GetIterFromString(out iter, args.Path)) { return; } TreeIter storeIter; if (!comboBoxStore.GetIterFirst(out storeIter)) { return; } do { if ((string)comboBoxStore.GetValue(storeIter, 0) == args.NewText) { var provider = (Tuple <CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue(iter, 1); var severity = (DiagnosticSeverity)comboBoxStore.GetValue(storeIter, 1); severities[provider] = severity; return; } } while (comboBoxStore.IterNext(ref storeIter)); }; col.SetCellDataFunc(comboRenderer, delegate(TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter) { var provider = (Tuple <CodeDiagnosticDescriptor, DiagnosticDescriptor>)treeStore.GetValue(iter, 1); if (provider == null) { comboRenderer.Visible = false; return; } var severity = severities[provider]; if (!severity.HasValue) { comboRenderer.Visible = false; return; } comboRenderer.Visible = true; comboRenderer.Text = GetDescription(severity.Value); comboRenderer.Icon = GetIcon(severity.Value); }); treeviewInspections.HeadersVisible = false; treeviewInspections.Model = treeStore; GetAllSeverities(); FillInspectors(null); }
public CodeIssuePanelWidget (string mimeType) { this.mimeType = mimeType; // ReSharper disable once DoNotCallOverridableMethodsInConstructor Build (); // ensure selected row remains visible treeviewInspections.SizeAllocated += (o, args) => { TreeIter iter; if (treeviewInspections.Selection.GetSelected (out iter)) { var path = treeviewInspections.Model.GetPath (iter); treeviewInspections.ScrollToCell (path, treeviewInspections.Columns[0], false, 0f, 0f); } }; treeviewInspections.TooltipColumn = 2; treeviewInspections.HasTooltip = true; var toggleRenderer = new CellRendererToggle (); toggleRenderer.Toggled += delegate(object o, ToggledArgs args) { TreeIter iter; if (treeStore.GetIterFromString (out iter, args.Path)) { var provider = (BaseCodeIssueProvider)treeStore.GetValue (iter, 1); enableState[provider] = !enableState[provider]; } }; var titleCol = new TreeViewColumn (); treeviewInspections.AppendColumn (titleCol); titleCol.PackStart (toggleRenderer, false); titleCol.Sizing = TreeViewColumnSizing.Autosize; titleCol.SetCellDataFunc (toggleRenderer, delegate (TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter) { var provider = (BaseCodeIssueProvider)model.GetValue (iter, 1); if (provider == null) { toggleRenderer.Visible = false; return; } toggleRenderer.Visible = true; toggleRenderer.Active = enableState[provider]; }); var cellRendererText = new CellRendererText { Ellipsize = Pango.EllipsizeMode.End }; titleCol.PackStart (cellRendererText, true); titleCol.AddAttribute (cellRendererText, "markup", 0); titleCol.Expand = true; searchentryFilter.ForceFilterButtonVisible = true; searchentryFilter.RoundedShape = true; searchentryFilter.HasFrame = true; searchentryFilter.Ready = true; searchentryFilter.Visible = true; searchentryFilter.Entry.Changed += ApplyFilter; var comboRenderer = new CustomCellRenderer { Alignment = Pango.Alignment.Center }; var col = treeviewInspections.AppendColumn ("Severity", comboRenderer); col.Sizing = TreeViewColumnSizing.GrowOnly; col.MinWidth = 100; col.Expand = false; var comboBoxStore = new ListStore (typeof(string), typeof(Severity)); // comboBoxStore.AppendValues (GetDescription (Severity.None), Severity.None); comboBoxStore.AppendValues (GetDescription (Severity.Error), Severity.Error); comboBoxStore.AppendValues (GetDescription (Severity.Warning), Severity.Warning); comboBoxStore.AppendValues (GetDescription (Severity.Hint), Severity.Hint); comboBoxStore.AppendValues (GetDescription (Severity.Suggestion), Severity.Suggestion); comboRenderer.Model = comboBoxStore; comboRenderer.Mode = CellRendererMode.Activatable; comboRenderer.TextColumn = 0; comboRenderer.Editable = true; comboRenderer.HasEntry = false; comboRenderer.Edited += delegate(object o, EditedArgs args) { TreeIter iter; if (!treeStore.GetIterFromString (out iter, args.Path)) return; TreeIter storeIter; if (!comboBoxStore.GetIterFirst (out storeIter)) return; do { if ((string)comboBoxStore.GetValue (storeIter, 0) == args.NewText) { var provider = (BaseCodeIssueProvider)treeStore.GetValue (iter, 1); var severity = (Severity)comboBoxStore.GetValue (storeIter, 1); severities[provider] = severity; return; } } while (comboBoxStore.IterNext (ref storeIter)); }; col.SetCellDataFunc (comboRenderer, delegate (TreeViewColumn treeColumn, CellRenderer cell, TreeModel model, TreeIter iter) { var provider = (BaseCodeIssueProvider)model.GetValue (iter, 1); if (provider == null) { comboRenderer.Visible = false; return; } var severity = severities[provider]; comboRenderer.Visible = true; comboRenderer.Text = GetDescription (severity); comboRenderer.Icon = GetIcon (severity); }); treeviewInspections.HeadersVisible = false; treeviewInspections.Model = treeStore; GetAllSeverities (); FillInspectors (null); }