55
56
Gtk.TreeStore treeStore = new Gtk.TreeStore (typeof(string), typeof(bool), typeof(CodeActionProvider));
57
Dictionary<CodeActionProvider, bool> providerStates = new Dictionary<CodeActionProvider, bool> ();
59
void GetAllProviderStates ()
61
string disabledNodes = PropertyService.Get ("ContextActions." + mimeType, "");
62
foreach (var node in RefactoringService.ContextAddinNodes.Where (n => n.MimeType == mimeType)) {
63
providerStates [node] = disabledNodes.IndexOf (node.IdString) < 0;
57
67
public ContextActionPanelWidget (string mimeType)
59
69
this.mimeType = mimeType;
71
81
if (!treeStore.GetIterFromString (out iter, args.Path))
73
bool enabled = (bool)treeStore.GetValue (iter, 1);
74
treeStore.SetValue (iter, 1, !enabled);
83
var provider = (CodeActionProvider)treeStore.GetValue (iter, 2);
84
providerStates [provider] = !providerStates [provider];
85
treeStore.SetValue (iter, 1, providerStates [provider]);
76
87
col.PackStart (togRender, false);
77
88
col.AddAttribute (togRender, "active", 1);
93
104
FillTreeStore (searchentryFilter.Entry.Text.Trim ());
96
void HandleTreeviewContextActionsSelectionChanged (object sender, EventArgs e)
98
this.labelDescription.Text = "";
100
if (!treeviewContextActions.Selection.GetSelected (out iter))
102
var actionNode = (CodeActionProvider)treeStore.GetValue (iter, 2);
103
this.labelDescription.Markup = "<b>" + actionNode.Title + "</b>" + Environment.NewLine + actionNode.Description;
106
107
public void FillTreeStore (string filter)
108
109
treeStore.Clear ();
109
string disabledNodes = PropertyService.Get ("ContextActions." + mimeType, "");
110
foreach (var node in RefactoringService.ContextAddinNodes.Where (n => n.MimeType == mimeType)) {
110
foreach (var node in providerStates.Keys) {
111
111
if (!string.IsNullOrEmpty (filter) && node.Title.IndexOf (filter, StringComparison.OrdinalIgnoreCase) < 0)
114
bool isEnabled = disabledNodes.IndexOf (node.IdString) < 0;
115
114
var title = node.Title;
116
115
if (!string.IsNullOrEmpty (filter)) {
117
116
var idx = title.IndexOf (filter, StringComparison.OrdinalIgnoreCase);
118
117
title = title.Substring (0, idx) + "<span bgcolor=\"yellow\">" + title.Substring (idx, filter.Length) + "</span>" + title.Substring (idx + filter.Length);
121
treeStore.AppendValues (title, isEnabled, node);
120
treeStore.AppendValues (title, providerStates [node], node);
124
void HandleTreeviewContextActionsSelectionChanged (object sender, EventArgs e)
126
this.labelDescription.Text = "";
128
if (!treeviewContextActions.Selection.GetSelected (out iter))
130
var actionNode = (CodeActionProvider)treeStore.GetValue (iter, 2);
131
this.labelDescription.Markup = "<b>" + actionNode.Title + "</b>" + Environment.NewLine + actionNode.Description;
125
134
public void ApplyChanges ()
127
136
var sb = new StringBuilder ();
129
if (!treeStore.GetIterFirst (out iter))
132
bool enabled = (bool)treeStore.GetValue (iter, 1);
133
var node = (CodeActionProvider)treeStore.GetValue (iter, 2);
138
sb.Append (node.IdString);
140
} while (treeStore.IterNext (ref iter));
137
foreach (var kv in providerStates) {
142
sb.Append (kv.Key.IdString);
141
144
PropertyService.Set ("ContextActions." + mimeType, sb.ToString ());