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.Color = GetColor (severity);
});
treeviewInspections.HeadersVisible = false;
treeviewInspections.Model = treeStore;
GetAllSeverities ();
FillInspectors (null);
}