Example #1
0
        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);
		}