Author: davidmak
Date: 2007-05-03 17:12:55 -0400 (Thu, 03 May 2007)
New Revision: 76649
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs
Log:
* MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs: Port menu to actions api,
added Jump to command and customization of columns.
* MonoDevelop.Ide.Tasks/CommentTasksView.cs: Use SelectedTask
everywhere.
Modified: trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog
===================================================================
--- trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog 2007-05-03
20:51:36 UTC (rev 76648)
+++ trunk/monodevelop/Core/src/MonoDevelop.Ide/ChangeLog 2007-05-03
21:12:55 UTC (rev 76649)
@@ -1,3 +1,10 @@
+2007-05-03 David Makovský (Yakeen) <[EMAIL PROTECTED]>
+
+ * MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs: Port menu to actions api,
+ added Jump to command and customization of columns.
+ * MonoDevelop.Ide.Tasks/CommentTasksView.cs: Use SelectedTask
+ everywhere.
+
2007-05-03 Jeffrey Stedfast <[EMAIL PROTECTED]>
* MonoDevelop.Ide.Commands/RefactoryCommands.cs
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
2007-05-03 20:51:36 UTC (rev 76648)
+++
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs
2007-05-03 21:12:55 UTC (rev 76649)
@@ -32,15 +32,32 @@
TreeModelFilter filter;
ToggleToolButton errorBtn, warnBtn, msgBtn;
Gtk.Tooltips tips = new Gtk.Tooltips ();
- Clipboard clipboard;
Hashtable tasks = new Hashtable ();
IPadWindow window;
-
+
+ Menu menu;
+ Dictionary<ToggleAction, int> columnsActions = new
Dictionary<ToggleAction, int> ();
+ Clipboard clipboard;
+
Gdk.Pixbuf iconWarning;
Gdk.Pixbuf iconError;
Gdk.Pixbuf iconInfo;
Gdk.Pixbuf iconQuestion;
-
+
+ enum Columns
+ {
+ Type,
+ Marked,
+ Line,
+ Description,
+ File,
+ Path,
+ Task,
+ Read,
+ Weight,
+ Count
+ }
+
void IPadContent.Initialize (IPadWindow window)
{
this.window = window;
@@ -67,8 +84,6 @@
// FIXME
}
- const int COL_TYPE = 0, COL_LINE = 1, COL_DESC = 2, COL_FILE =
3, COL_PATH = 4, COL_TASK = 5, COL_READ = 6, COL_MARKED = 7, COL_READ_WEIGHT =
8;
-
public ErrorListPad ()
{
control = new VBox ();
@@ -108,21 +123,20 @@
msgBtn.SetTooltip (tips, GettextCatalog.GetString
("Show Messages"), GettextCatalog.GetString ("Show Messages"));
toolbar.Insert (msgBtn, -1);
- store = new Gtk.ListStore (
- typeof (Gdk.Pixbuf), // image
- typeof (int), // line
- typeof (string), // desc
- typeof (string), // file
- typeof (string), // path
- typeof (Task), // task
- typeof (bool), // read?
- typeof (bool), // marked?
- typeof (int)); // read? -- use Pango
weight
+ store = new Gtk.ListStore (typeof (Gdk.Pixbuf), //
image - type
+ typeof (bool), //
marked?
+ typeof (int), // line
+ typeof (string), // desc
+ typeof (string), // file
+ typeof (string), // path
+ typeof (Task), // task
+ typeof (bool), // read?
+ typeof (int)); //
read? -- use Pango weight
TreeIterCompareFunc sortFunc = new TreeIterCompareFunc
(TaskSortFunc);
- store.SetSortFunc (COL_TASK, sortFunc);
+ store.SetSortFunc ((int)Columns.Task, sortFunc);
store.DefaultSortFunc = sortFunc;
- store.SetSortColumnId (COL_TASK, SortType.Ascending);
+ store.SetSortColumnId ((int)Columns.Task,
SortType.Ascending);
TreeModelFilterVisibleFunc filterFunct = new
TreeModelFilterVisibleFunc (FilterTaskTypes);
filter = new TreeModelFilter (store, null);
@@ -134,6 +148,7 @@
view.ButtonPressEvent += new ButtonPressEventHandler
(OnButtonPressed);
view.HeadersClickable = true;
AddColumns ();
+ LoadColumnsVisibility ();
sw = new Gtk.ScrolledWindow ();
sw.ShadowType = ShadowType.In;
@@ -155,62 +170,175 @@
toolbar.ToolbarStyle = ToolbarStyle.BothHoriz;
toolbar.ShowArrow = false;
Control.ShowAll ();
+
+ CreateMenu ();
}
- [GLib.ConnectBefore]
- void OnButtonPressed (object o, ButtonPressEventArgs args)
+ void LoadColumnsVisibility ()
{
- if (args.Event.Button == 3)
- ShowPopup ();
+ string columns = (string)Runtime.Properties.GetProperty
("Monodevelop.ErrorListColumns", "TRUE;TRUE;TRUE;TRUE;TRUE;TRUE");
+ string[] tokens = columns.Split (new char[] {';'},
StringSplitOptions.RemoveEmptyEntries);
+ if (tokens.Length == 6 && view != null &&
view.Columns.Length == 6)
+ {
+ for (int i = 0; i < 6; i++)
+ {
+ bool visible;
+ if (bool.TryParse (tokens[i], out
visible))
+ view.Columns[i].Visible =
visible;
+ }
+ }
}
- void OnPopupMenu (object o, PopupMenuArgs args)
+ void StoreColumnsVisibility ()
{
- ShowPopup ();
+ string columns = String.Format
("{0};{1};{2};{3};{4};{5}",
+
view.Columns[(int)Columns.Type].Visible,
+
view.Columns[(int)Columns.Marked].Visible,
+
view.Columns[(int)Columns.Line].Visible,
+
view.Columns[(int)Columns.Description].Visible,
+
view.Columns[(int)Columns.File].Visible,
+
view.Columns[(int)Columns.Path].Visible);
+ Runtime.Properties.SetProperty
("Monodevelop.ErrorListColumns", columns);
}
- void ShowPopup ()
+ void CreateMenu ()
{
- Menu menu = new Menu ();
- menu.AccelGroup = new AccelGroup ();
+ if (menu == null)
+ {
+ ActionGroup group = new ActionGroup ("Popup");
- ImageMenuItem copy = new ImageMenuItem
(Gtk.Stock.Copy, menu.AccelGroup);
- copy.Activated += new EventHandler (OnTaskCopied);
- menu.Append (copy);
+ Action help = new Action ("help",
GettextCatalog.GetString ("Show Error Reference"),
+
GettextCatalog.GetString ("Show Error Reference"), Gtk.Stock.Help);
+ help.Activated += new EventHandler
(OnShowReference);
+ group.Add (help, "F1");
- ImageMenuItem help = new ImageMenuItem
(GettextCatalog.GetString ("Show Error Reference"));
- help.AddAccelerator ("activate", menu.AccelGroup, new
AccelKey (Gdk.Key.F1, Gdk.ModifierType.None, AccelFlags.Visible));
- help.Image = new Gtk.Image (Gtk.Stock.Help,
IconSize.Menu);
- help.Activated += new EventHandler (OnShowReference);
- menu.Append (help);
+ Action copy = new Action ("copy",
GettextCatalog.GetString ("_Copy"),
+
GettextCatalog.GetString ("Copy task"), Gtk.Stock.Copy);
+ copy.Activated += new EventHandler
(OnTaskCopied);
+ group.Add (copy, "<Control><Mod2>c");
- TreeIter dummy;
- copy.Sensitive = help.Sensitive =
view.Selection.GetSelected (out dummy);
+ Action jump = new Action ("jump",
GettextCatalog.GetString ("_Go to"),
+
GettextCatalog.GetString ("Go to task"), Gtk.Stock.JumpTo);
+ jump.Activated += new EventHandler
(OnTaskJumpto);
+ group.Add (jump);
- menu.Popup (null, null, null, 3,
Global.CurrentEventTime);
- menu.ShowAll ();
+ Action columns = new Action ("columns",
GettextCatalog.GetString ("Columns"));
+ group.Add (columns, null);
+
+ ToggleAction columnType = new ToggleAction
("columnType", GettextCatalog.GetString ("Type"),
+
GettextCatalog.GetString ("Toggle visibility of Type column"), null);
+ columnType.Toggled += new EventHandler
(OnColumnVisibilityChanged);
+ columnsActions[columnType] = (int)Columns.Type;
+ group.Add (columnType);
+
+ ToggleAction columnValidity = new ToggleAction
("columnValidity", GettextCatalog.GetString ("Validity"),
+
GettextCatalog.GetString ("Toggle visibility of Validity column"), null);
+ columnValidity.Toggled += new EventHandler
(OnColumnVisibilityChanged);
+ columnsActions[columnValidity] =
(int)Columns.Marked;
+ group.Add (columnValidity);
+
+ ToggleAction columnLine = new ToggleAction
("columnLine", GettextCatalog.GetString ("Line"),
+
GettextCatalog.GetString ("Toggle visibility of Line column"), null);
+ columnLine.Toggled += new EventHandler
(OnColumnVisibilityChanged);
+ columnsActions[columnLine] = (int)Columns.Line;
+ group.Add (columnLine);
+
+ ToggleAction columnDescription = new
ToggleAction ("columnDescription", GettextCatalog.GetString ("Description"),
+
GettextCatalog.GetString ("Toggle visibility of Description column"), null);
+ columnDescription.Toggled += new EventHandler
(OnColumnVisibilityChanged);
+ columnsActions[columnDescription] =
(int)Columns.Description;
+ group.Add (columnDescription);
+
+ ToggleAction columnFile = new ToggleAction
("columnFile", GettextCatalog.GetString ("File"),
+
GettextCatalog.GetString ("Toggle visibility of File column"), null);
+ columnFile.Toggled += new EventHandler
(OnColumnVisibilityChanged);
+ columnsActions[columnFile] = (int)Columns.File;
+ group.Add (columnFile);
+
+ ToggleAction columnPath = new ToggleAction
("columnPath", GettextCatalog.GetString ("Path"),
+
GettextCatalog.GetString ("Toggle visibility of Path column"), null);
+ columnPath.Toggled += new EventHandler
(OnColumnVisibilityChanged);
+ columnsActions[columnPath] = (int)Columns.Path;
+ group.Add (columnPath);
+
+ UIManager uiManager = new UIManager ();
+ uiManager.InsertActionGroup (group, 0);
+
+ string uiStr = "<ui><popup name='popup'>"
+ + "<menuitem action='help'/>"
+ + "<menuitem action='copy'/>"
+ + "<menuitem action='jump'/>"
+ + "<separator/>"
+ + "<menu action='columns'>"
+ + "<menuitem action='columnType' />"
+ + "<menuitem action='columnValidity' />"
+ + "<menuitem action='columnLine' />"
+ + "<menuitem action='columnDescription'
/>"
+ + "<menuitem action='columnFile' />"
+ + "<menuitem action='columnPath' />"
+ + "</menu>"
+ + "</popup></ui>";
+
+ uiManager.AddUiFromString (uiStr);
+ menu = (Menu)uiManager.GetWidget ("/popup");
+ menu.ShowAll ();
+
+ menu.Shown += delegate (object o, EventArgs
args)
+ {
+ columnType.Active =
view.Columns[(int)Columns.Type].Visible;
+ columnValidity.Active =
view.Columns[(int)Columns.Marked].Visible;
+ columnLine.Active =
view.Columns[(int)Columns.Line].Visible;
+ columnDescription.Active =
view.Columns[(int)Columns.Description].Visible;
+ columnFile.Active =
view.Columns[(int)Columns.File].Visible;
+ columnPath.Active =
view.Columns[(int)Columns.Path].Visible;
+ help.Sensitive = copy.Sensitive =
jump.Sensitive =
+ view.Selection != null &&
+
view.Selection.CountSelectedRows () > 0 &&
+ (columnType.Active ||
+ columnValidity.Active ||
+ columnLine.Active ||
+ columnDescription.Active ||
+ columnFile.Active ||
+ columnPath.Active);
+ };
+ }
}
- void OnTaskCopied (object o, EventArgs args)
+
+ [GLib.ConnectBefore]
+ void OnButtonPressed (object o, ButtonPressEventArgs args)
{
- Task task;
- TreeModel model;
- TreeIter iter;
+ if (args.Event.Button == 3)
+ menu.Popup ();
+ }
- if (view.Selection.GetSelected (out model, out iter))
- {
- task = (Task) model.GetValue (iter, COL_TASK);
+ void OnPopupMenu (object o, PopupMenuArgs args)
+ {
+ menu.Popup ();
+ }
+
+ Task SelectedTask
+ {
+ get {
+ TreeModel model;
+ TreeIter iter;
+ if (view.Selection.GetSelected (out model, out
iter))
+ {
+ return (Task)model.GetValue (iter,
(int)Columns.Task);
+ }
+ else return null; // no one selected
}
- else
- {
- // no selection
- return;
+ }
+
+ void OnTaskCopied (object o, EventArgs args)
+ {
+ Task task = SelectedTask;
+ if (task != null) {
+ clipboard = Clipboard.Get (Gdk.Atom.Intern
("CLIPBOARD", false));
+ clipboard.Text = task.ToString ();
+ clipboard = Clipboard.Get (Gdk.Atom.Intern
("PRIMARY", false));
+ clipboard.Text = task.ToString ();
}
-
- clipboard = Clipboard.Get (Gdk.Atom.Intern
("CLIPBOARD", false));
- clipboard.Text = task.ToString();
- clipboard = Clipboard.Get (Gdk.Atom.Intern ("PRIMARY",
false));
- clipboard.Text = task.ToString();
}
void OnShowReference (object o, EventArgs args)
@@ -224,42 +352,54 @@
bool GetSelectedErrorReference (out string reference)
{
- TreeIter iter;
- TreeModel model;
-
- if (view.Selection.GetSelected (out model, out iter)) {
- Task task = (Task) model.GetValue (iter,
COL_TASK);
- if (task != null && !String.IsNullOrEmpty
(task.ErrorNumber)) {
- reference = task.ErrorNumber;
- return true;
- }
+ Task task = SelectedTask;
+ if (task != null && !String.IsNullOrEmpty
(task.ErrorNumber)) {
+ reference = task.ErrorNumber;
+ return true;
}
reference = null;
return false;
}
-
+
+ void OnTaskJumpto (object o, EventArgs args)
+ {
+ Task task = SelectedTask;
+ if (task != null)
+ task.JumpToPosition ();
+ }
+
+ void OnColumnVisibilityChanged (object o, EventArgs args)
+ {
+ ToggleAction action = o as ToggleAction;
+ if (action != null)
+ {
+ view.Columns[columnsActions[action]].Visible =
action.Active;
+ StoreColumnsVisibility ();
+ }
+ }
+
void AddColumns ()
{
Gtk.CellRendererPixbuf iconRender = new
Gtk.CellRendererPixbuf ();
Gtk.CellRendererToggle toggleRender = new
Gtk.CellRendererToggle ();
toggleRender.Toggled += new ToggledHandler
(ItemToggled);
-
+
Gtk.CellRendererText line = new Gtk.CellRendererText
(), desc = new Gtk.CellRendererText () , path = new Gtk.CellRendererText (),
- file = new Gtk.CellRendererText ();
-
+ file = new Gtk.CellRendererText ();
+
TreeViewColumn col;
- col = view.AppendColumn ("!"
, iconRender , "pixbuf", COL_TYPE);
+ col = view.AppendColumn ("!", iconRender, "pixbuf",
Columns.Type);
col.Clickable = true;
col.Clicked += new EventHandler (OnResortTasks);
col.SortIndicator = true;
- view.AppendColumn (""
, toggleRender , "active" , COL_MARKED, "activatable", COL_READ);
- view.AppendColumn (GettextCatalog.GetString ("Line")
, line , "text" , COL_LINE, "weight", COL_READ_WEIGHT);
- col = view.AppendColumn (GettextCatalog.GetString
("Description") , desc , "text" , COL_DESC, "weight",
COL_READ_WEIGHT, "strikethrough", COL_MARKED);
+ view.AppendColumn ("", toggleRender, "active",
Columns.Marked);
+ view.AppendColumn (GettextCatalog.GetString ("Line"),
line, "text", Columns.Line, "weight", Columns.Weight);
+ col = view.AppendColumn (GettextCatalog.GetString
("Description"), desc, "text", Columns.Description, "weight", Columns.Weight,
"strikethrough", Columns.Marked);
col.Resizable = true;
- col = view.AppendColumn (GettextCatalog.GetString
("File") , file , "text" , COL_FILE, "weight",
COL_READ_WEIGHT);
+ col = view.AppendColumn (GettextCatalog.GetString
("File"), file, "text", Columns.File, "weight", Columns.Weight);
col.Resizable = true;
- col = view.AppendColumn (GettextCatalog.GetString
("Path") , path , "text" , COL_PATH, "weight",
COL_READ_WEIGHT);
+ col = view.AppendColumn (GettextCatalog.GetString
("Path"), path, "text", Columns.Path, "weight", Columns.Weight);
col.Resizable = true;
}
@@ -293,13 +433,7 @@
void OnRowActivated (object o, RowActivatedArgs args)
{
- Gtk.TreeIter iter;
- if (store.GetIter (out iter, args.Path)) {
- store.SetValue (iter, COL_READ, true);
- store.SetValue (iter, COL_READ_WEIGHT, (int)
Pango.Weight.Normal);
-
- ((Task) store.GetValue (iter,
COL_TASK)).JumpToPosition ();
- }
+ OnTaskJumpto (null, null);
}
public CompilerResults CompilerResults = null;
@@ -312,31 +446,31 @@
Runtime.Properties.SetProperty
("SharpDevelop.TaskList.ShowMessages", msgBtn.Active);
filter.Refilter ();
- }
-
+ }
+
bool FilterTaskTypes (TreeModel model, TreeIter iter)
{
bool canShow = false;
-
+
try {
- Task task = (Task) store.GetValue (iter,
COL_TASK);
+ Task task = (Task) store.GetValue (iter,
(int)Columns.Task);
if (task == null)
return true;
- if (task.TaskType == TaskType.Error &&
errorBtn.Active) canShow = true;
- else if (task.TaskType == TaskType.Warning &&
warnBtn.Active) canShow = true;
- else if (task.TaskType == TaskType.Comment &&
msgBtn.Active) canShow = true;
- } catch {
- //Not yet fully added
- return false;
- }
-
- return canShow;
+ if (task.TaskType == TaskType.Error &&
errorBtn.Active) canShow = true;
+ else if (task.TaskType == TaskType.Warning &&
warnBtn.Active) canShow = true;
+ else if (task.TaskType == TaskType.Comment &&
msgBtn.Active) canShow = true;
+ } catch {
+ //Not yet fully added
+ return false;
+ }
+
+ return canShow;
}
-
+
public void ShowResults (object sender, EventArgs e)
{
Clear();
-
+
foreach (Task t in Services.TaskService.Tasks) {
AddTask (t);
}
@@ -432,41 +566,43 @@
path = Path.GetDirectoryName(tmpPath);
} catch (Exception) {}
- store.AppendValues (
- stock,
- t.Line,
- t.Description,
- fileName,
- path,
- t, false, false, (int) Pango.Weight.Bold);
+ store.AppendValues (stock,
+ false,
+ t.Line,
+ t.Description,
+ fileName,
+ path,
+ t,
+ false,
+ (int) Pango.Weight.Bold);
}
-
+
void UpdateErrorsNum ()
{
errorBtn.Label = " " +
string.Format(GettextCatalog.GetPluralString("{0} Error", "{0} Errors",
IdeApp.Services.TaskService.ErrorsCount),
IdeApp.Services.TaskService.ErrorsCount);
}
-
+
void UpdateWarningsNum ()
{
warnBtn.Label = " " +
string.Format(GettextCatalog.GetPluralString("{0} Warning", "{0} Warnings",
IdeApp.Services.TaskService.WarningsCount),
IdeApp.Services.TaskService.WarningsCount);
- }
-
+ }
+
void UpdateMessagesNum ()
{
msgBtn.Label = " " +
string.Format(GettextCatalog.GetPluralString("{0} Message", "{0} Messages",
IdeApp.Services.TaskService.MessagesCount),
IdeApp.Services.TaskService.MessagesCount);
}
-
+
private void ItemToggled (object o, ToggledArgs args)
{
Gtk.TreeIter iter;
if (store.GetIterFromString(out iter, args.Path)) {
- bool val = (bool) store.GetValue(iter,
COL_MARKED);
- store.SetValue(iter, COL_MARKED, !val);
+ bool val = (bool) store.GetValue(iter,
(int)Columns.Marked);
+ store.SetValue(iter, (int)Columns.Marked, !val);
}
}
- private SortType ReverseSortOrder (TreeViewColumn col) {
- if (col.SortIndicator) {
+ private SortType ReverseSortOrder (TreeViewColumn col) {
+ if (col.SortIndicator) {
if (col.SortOrder == SortType.Ascending)
return SortType.Descending;
else
@@ -481,13 +617,13 @@
TreeViewColumn col = sender as TreeViewColumn;
col.SortOrder = ReverseSortOrder (col);
col.SortIndicator = true;
- store.SetSortColumnId (COL_TASK, col.SortOrder);
+ store.SetSortColumnId ((int)Columns.Task,
col.SortOrder);
}
private int TaskSortFunc (TreeModel model, TreeIter iter1,
TreeIter iter2)
{
- Task task1 = model.GetValue (iter1, COL_TASK) as Task;
- Task task2 = model.GetValue (iter2, COL_TASK) as Task;
+ Task task1 = model.GetValue (iter1, (int)Columns.Task)
as Task;
+ Task task2 = model.GetValue (iter2, (int)Columns.Task)
as Task;
if (task1 == null && task2 == null) return 0;
else if (task1 == null) return -1;
@@ -496,7 +632,7 @@
int compare = ((int)task1.TaskType).CompareTo
((int)task2.TaskType);
if (compare != 0)
return compare;
-
+
if (task1.FileName != null || task2.FileName != null) {
if (task1.FileName == null) return -1;
if (task2.FileName == null) return 1;
Modified:
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs
===================================================================
---
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs
2007-05-03 20:51:36 UTC (rev 76648)
+++
trunk/monodevelop/Core/src/MonoDevelop.Ide/MonoDevelop.Ide.Tasks/CommentTasksView.cs
2007-05-03 21:12:55 UTC (rev 76649)
@@ -317,20 +317,13 @@
void OnGenTaskCopied (object o, EventArgs args)
{
- Task task;
- TreeModel model;
- TreeIter iter;
-
- if (view.Selection.GetSelected (out model, out iter))
- {
- task = (Task) model.GetValue (iter,
(int)Columns.Task);
+ Task task = SelectedTask;
+ if (task != null) {
+ clipboard = Clipboard.Get (Gdk.Atom.Intern
("CLIPBOARD", false));
+ clipboard.Text = task.ToString ();
+ clipboard = Clipboard.Get (Gdk.Atom.Intern
("PRIMARY", false));
+ clipboard.Text = task.ToString ();
}
- else return; // no one selected
-
- clipboard = Clipboard.Get (Gdk.Atom.Intern
("CLIPBOARD", false));
- clipboard.Text = task.ToString ();
- clipboard = Clipboard.Get (Gdk.Atom.Intern ("PRIMARY",
false));
- clipboard.Text = task.ToString ();
}
Task SelectedTask
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches