Browse Source

overworked task subsystem a bit.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@21 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Mike Krüger 21 years ago
parent
commit
77802490a8
  1. 10
      src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs
  2. 2
      src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  4. 8
      src/Main/Base/Project/Src/Commands/BuildCommands.cs
  5. 6
      src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs
  6. 141
      src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs
  7. 110
      src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs
  8. 11
      src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs
  9. 1
      src/Main/Base/Project/Src/Services/Tasks/Task.cs
  10. 22
      src/Main/Base/Project/Src/Services/Tasks/TaskEventHandler.cs
  11. 224
      src/Main/Base/Project/Src/Services/Tasks/TaskService.cs
  12. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs
  13. 70
      src/SharpDevelop.sln

10
src/AddIns/Misc/NUnitPad/Project/Src/Gui/TestTreeView.cs

@ -198,7 +198,7 @@ namespace ICSharpCode.NUnitPad @@ -198,7 +198,7 @@ namespace ICSharpCode.NUnitPad
testRunnerCategory.ClearText();
}
TaskService.Tasks.Clear();
TaskService.Clear();
TreeNode selectedNode = treeView.SelectedNode;
@ -221,7 +221,7 @@ namespace ICSharpCode.NUnitPad @@ -221,7 +221,7 @@ namespace ICSharpCode.NUnitPad
}
// If any tasks bring task view to front.
if (TaskService.Tasks.Count > 0) {
if (TaskService.TaskCount > 0) {
IWorkbench Workbench = ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.Workbench;
PadDescriptor padDescriptor = Workbench.GetPad(typeof(OpenTaskView));
@ -339,8 +339,7 @@ namespace ICSharpCode.NUnitPad @@ -339,8 +339,7 @@ namespace ICSharpCode.NUnitPad
LineRef.Line,
TaskType.Error);
TaskService.Tasks.Add(Task);
TaskService.NotifyTaskChange();
TaskService.Add(Task);
}
} else if (!result.Executed) {
@ -370,8 +369,7 @@ namespace ICSharpCode.NUnitPad @@ -370,8 +369,7 @@ namespace ICSharpCode.NUnitPad
LineRef.Line,
TaskType.Warning);
TaskService.Tasks.Add(Task);
TaskService.NotifyTaskChange();
TaskService.Add(Task);
}
}

2
src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextAreaMouseHandler.cs

@ -185,7 +185,7 @@ namespace ICSharpCode.TextEditor @@ -185,7 +185,7 @@ namespace ICSharpCode.TextEditor
return;
}
textArea.Caret.Position = realmousepos;
if (minSelection != nilPoint) {
if (minSelection != nilPoint && textArea.SelectionManager.SelectionCollection.Count > 0) {
ISelection selection = textArea.SelectionManager.SelectionCollection[0];
Point min = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? maxSelection : minSelection;
Point max = textArea.SelectionManager.GreaterEqPos(minSelection, maxSelection) ? minSelection : maxSelection;

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -617,6 +617,7 @@ @@ -617,6 +617,7 @@
<Compile Include="Src\TextEditor\Actions.cs" />
<Compile Include="Src\TextEditor\CharacterEncodings.cs" />
<Compile Include="Src\TextEditor\XmlFormattingStrategy.cs" />
<Compile Include="Src\Services\Tasks\TaskEventHandler.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj">

8
src/Main/Base/Project/Src/Commands/BuildCommands.cs

@ -20,19 +20,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -20,19 +20,18 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
public static void ClearTasks()
{
TaskService.BuildMessageViewCategory.ClearText();
TaskService.Tasks.Clear();
TaskService.Clear();
}
public static void ShowResults(CompilerResults results)
{
if (results != null) {
foreach (CompilerError error in results.Errors) {
TaskService.Tasks.Add(new Task(error));
TaskService.Add(new Task(error));
}
if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
}
TaskService.NotifyTaskChange();
}
}
@ -87,12 +86,11 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -87,12 +86,11 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
{
if (results != null) {
foreach (CompilerError error in results.Errors) {
TaskService.Tasks.Add(new Task(error));
TaskService.Add(new Task(error));
}
if (results.Errors.Count > 0) {
WorkbenchSingleton.Workbench.GetPad(typeof(ErrorList)).BringPadToFront();
}
TaskService.NotifyTaskChange();
}
}

6
src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs

@ -66,11 +66,11 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -66,11 +66,11 @@ namespace ICSharpCode.SharpDevelop.Commands
{
switch (tag) {
case "TaskService.Warnings":
return TaskService.Warnings.ToString();
return TaskService.GetCount(TaskType.Warning).ToString();
case "TaskService.Errors":
return TaskService.Errors.ToString();
return TaskService.GetCount(TaskType.Error).ToString();
case "TaskService.Messages":
return TaskService.Messages.ToString();
return TaskService.GetCount(TaskType.Message).ToString();
}
switch (tag.ToUpper()) {

141
src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorList.cs

@ -98,7 +98,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -98,7 +98,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Activation = ItemActivation.OneClick;
ListViewResize(this, EventArgs.Empty);
TaskService.TasksChanged += new EventHandler(ShowResults);
TaskService.Cleared += new EventHandler(TaskServiceCleared);
TaskService.Added += new TaskEventHandler(TaskServiceAdded);
TaskService.Removed += new TaskEventHandler(TaskServiceRemoved);
ProjectService.EndBuild += new EventHandler(ProjectServiceEndBuild);
@ -156,7 +158,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -156,7 +158,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void ProjectServiceEndBuild(object sender, EventArgs e)
{
if (TaskService.Tasks.Count > 0) {
if (TaskService.TaskCount > 0) {
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName);
}
}
@ -203,61 +205,81 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -203,61 +205,81 @@ namespace ICSharpCode.SharpDevelop.Gui
public CompilerResults CompilerResults = null;
void AddTasks(ICollection col)
void AddTask(Task task)
{
foreach (Task task in col) {
int imageIndex = 0;
switch (task.TaskType) {
case TaskType.Warning:
imageIndex = 1;
if (!ShowWarnings) {
continue;
}
break;
case TaskType.Error:
imageIndex = 0;
if (!ShowErrors) {
continue;
}
break;
case TaskType.Message:
imageIndex = 3;
if (!ShowMessages) {
continue;
}
break;
default:
continue;
}
string tmpPath;
if (task.Project != null && task.FileName != null) {
tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
} else {
tmpPath = task.FileName;
int imageIndex = 0;
switch (task.TaskType) {
case TaskType.Warning:
imageIndex = 1;
if (!ShowWarnings) {
return;
}
break;
case TaskType.Error:
imageIndex = 0;
if (!ShowErrors) {
return;
}
break;
case TaskType.Message:
imageIndex = 3;
if (!ShowMessages) {
return;
}
break;
default:
return;
}
string tmpPath;
if (task.Project != null && task.FileName != null) {
tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
} else {
tmpPath = task.FileName;
}
string fileName = tmpPath;
string path = tmpPath;
try {
fileName = Path.GetFileName(tmpPath);
} catch (Exception) {}
try {
path = Path.GetDirectoryName(tmpPath);
} catch (Exception) {}
ListViewItem item = new ListViewItem(new string[] {
String.Empty,
(task.Line + 1).ToString(),
FormatDescription(task.Description),
fileName,
path
});
item.ImageIndex = item.StateImageIndex = imageIndex;
item.Tag = task;
listView.Items.Add(item);
}
void TaskServiceCleared(object sender, EventArgs e)
{
listView.Items.Clear();
}
void TaskServiceAdded(object sender, TaskEventArgs e)
{
AddTask(e.Task);
}
void TaskServiceRemoved(object sender, TaskEventArgs e)
{
Task task = e.Task;
for (int i = 0; i < listView.Items.Count; ++i) {
if ((Task)listView.Items[i].Tag == task) {
listView.Items.RemoveAt(i);
break;
}
string fileName = tmpPath;
string path = tmpPath;
try {
fileName = Path.GetFileName(tmpPath);
} catch (Exception) {}
try {
path = Path.GetDirectoryName(tmpPath);
} catch (Exception) {}
ListViewItem item = new ListViewItem(new string[] {
String.Empty,
(task.Line + 1).ToString(),
FormatDescription(task.Description),
fileName,
path
});
item.ImageIndex = item.StateImageIndex = imageIndex;
item.Tag = task;
listView.Items.Add(item);
}
}
@ -290,14 +312,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -290,14 +312,11 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.BeginUpdate();
listView.Items.Clear();
AddTasks(TaskService.Tasks);
foreach (Task task in TaskService.Tasks) {
AddTask(task);
}
listView.EndUpdate();
}
public void ShowResults(object sender, EventArgs e)
{
WorkbenchSingleton.SafeThreadCall(this, "InternalShowResults");
}
}
}

110
src/Main/Base/Project/Src/Gui/Pads/OpenTaskView.cs

@ -55,7 +55,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -55,7 +55,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Activation = ItemActivation.OneClick;
ListViewResize(this, EventArgs.Empty);
TaskService.TasksChanged += new EventHandler(ShowResults);
TaskService.Cleared += new EventHandler(TaskServiceCleared);
TaskService.Added += new TaskEventHandler(TaskServiceAdded);
TaskService.Removed += new TaskEventHandler(TaskServiceRemoved);
ProjectService.EndBuild += new EventHandler(SelectTaskView);
@ -109,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -109,7 +111,7 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectTaskView(object sender, EventArgs e)
{
if (TaskService.Tasks.Count > 0) {
if (TaskService.TaskCount > 0) {
WorkbenchSingleton.SafeThreadCall(this, "SelectTaskView2");
}
}
@ -117,13 +119,6 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -117,13 +119,6 @@ namespace ICSharpCode.SharpDevelop.Gui
void SelectTaskView2()
{
WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this.GetType().FullName);
// if (WorkbenchSingleton.Workbench.WorkbenchLayout.IsVisible(this)) {
// } else {
// if ((bool)PropertyService.Get("SharpDevelop.ShowTaskListAfterBuild", true)) {
// WorkbenchSingleton.Workbench.WorkbenchLayout.ShowPad(this);
// WorkbenchSingleton.Workbench.WorkbenchLayout.ActivatePad(this);
// }
// }
}
void ListViewItemActivate(object sender, EventArgs e)
@ -168,49 +163,65 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -168,49 +163,65 @@ namespace ICSharpCode.SharpDevelop.Gui
public CompilerResults CompilerResults = null;
void AddTasks(ICollection col)
void AddTask(Task task)
{
foreach (Task task in col) {
int imageIndex = 0;
switch (task.TaskType) {
case TaskType.Comment:
imageIndex = 3;
break;
default:
continue;
}
string tmpPath;
if (task.Project != null && task.FileName != null) {
tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
} else {
tmpPath = task.FileName;
int imageIndex = 3;
string tmpPath;
if (task.Project != null && task.FileName != null) {
tmpPath = FileUtility.GetRelativePath(task.Project.Directory, task.FileName);
} else {
tmpPath = task.FileName;
}
string fileName = tmpPath;
string path = tmpPath;
try {
fileName = Path.GetFileName(tmpPath);
} catch (Exception) {}
try {
path = Path.GetDirectoryName(tmpPath);
} catch (Exception) {}
ListViewItem item = new ListViewItem(new string[] {
String.Empty,
(task.Line + 1).ToString(),
FormatDescription(task.Description),
fileName,
path
});
item.ImageIndex = item.StateImageIndex = imageIndex;
item.Tag = task;
listView.Items.Add(item);
}
void TaskServiceCleared(object sender, EventArgs e)
{
listView.Items.Clear();
}
void TaskServiceAdded(object sender, TaskEventArgs e)
{
if (e.Task.TaskType == TaskType.Comment) {
AddTask(e.Task);
}
}
void TaskServiceRemoved(object sender, TaskEventArgs e)
{
Task task = e.Task;
for (int i = 0; i < listView.Items.Count; ++i) {
if ((Task)listView.Items[i].Tag == task) {
listView.Items.RemoveAt(i);
break;
}
string fileName = tmpPath;
string path = tmpPath;
try {
fileName = Path.GetFileName(tmpPath);
} catch (Exception) {}
try {
path = Path.GetDirectoryName(tmpPath);
} catch (Exception) {}
ListViewItem item = new ListViewItem(new string[] {
String.Empty,
(task.Line + 1).ToString(),
FormatDescription(task.Description),
fileName,
path
});
item.ImageIndex = item.StateImageIndex = imageIndex;
item.Tag = task;
listView.Items.Add(item);
}
}
/// <summary>
/// Removes new lines, carriage returns and tab characters from
/// the list view task description and replaces them with a space.
@ -234,8 +245,9 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -234,8 +245,9 @@ namespace ICSharpCode.SharpDevelop.Gui
listView.Items.Clear();
AddTasks(TaskService.Tasks);
AddTasks(TaskService.CommentTasks);
foreach (Task task in TaskService.CommentTasks) {
AddTask(task);
}
listView.EndUpdate();
}

11
src/Main/Base/Project/Src/Services/ParserService/CaseSensitiveProjectContent.cs

@ -106,14 +106,9 @@ namespace ICSharpCode.Core @@ -106,14 +106,9 @@ namespace ICSharpCode.Core
public void UpdateCompilationUnit(ICompilationUnit oldUnit, ICompilationUnit parserOutput, string fileName, bool updateCommentTags)
{
if (updateCommentTags) {
TaskService.RemoveCommentTasks(fileName);
if (parserOutput.TagComments.Count > 0) {
foreach (Tag tag in parserOutput.TagComments) {
TaskService.CommentTasks.Add(new Task(fileName, tag.Key + tag.CommentString, tag.Region.BeginColumn, tag.Region.BeginLine, TaskType.Comment));
}
TaskService.NotifyTaskChange();
}
TaskService.UpdateCommentTags(fileName, parserOutput.TagComments);
}
if (oldUnit != null) {
@ -462,7 +457,7 @@ namespace ICSharpCode.Core @@ -462,7 +457,7 @@ namespace ICSharpCode.Core
return false;
}
// TODO: check inner classes for protected members too
// TODO: check inner classes for protected members too.
// TODO: look for FullyQualifiedName == FullyQualifiedName. Must be replaced by a function wich pays attention to the case.
// Look at NRefactoryResolver.IsSameName. Also pay attention if you can put this Function in IClass, and if you have to
// compare the names instead of the FullyQualifiedNames

1
src/Main/Base/Project/Src/Services/Tasks/Task.cs

@ -18,6 +18,7 @@ namespace ICSharpCode.Core @@ -18,6 +18,7 @@ namespace ICSharpCode.Core
Error,
Warning,
Message,
Comment,
}

22
src/Main/Base/Project/Src/Services/Tasks/TaskEventHandler.cs

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
using System;
namespace ICSharpCode.Core
{
public delegate void TaskEventHandler(object sender, TaskEventArgs e);
public class TaskEventArgs : EventArgs
{
Task task;
public Task Task {
get {
return task;
}
}
public TaskEventArgs(Task task)
{
this.task = task;
}
}
}

224
src/Main/Base/Project/Src/Services/Tasks/TaskService.cs

@ -7,18 +7,17 @@ @@ -7,18 +7,17 @@
using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Dom;
namespace ICSharpCode.Core
{
public class TaskService
{
static ArrayList tasks = new ArrayList();
static ArrayList commentTasks = new ArrayList();
static List<Task> tasks = new List<Task>();
static MessageViewCategory buildMessageViewCategory = new MessageViewCategory("Build", "${res:MainWindow.Windows.OutputWindow.BuildCategory}");
public static MessageViewCategory BuildMessageViewCategory {
@ -27,66 +26,66 @@ namespace ICSharpCode.Core @@ -27,66 +26,66 @@ namespace ICSharpCode.Core
}
}
public static ArrayList Tasks {
get {
return tasks;
public class TaskEnumerator {
public IEnumerator<Task> GetEnumerator()
{
foreach (Task task in tasks) {
if (task.TaskType != TaskType.Comment) {
yield return task;
}
}
}
}
public static ArrayList CommentTasks {
public static int TaskCount {
get {
return commentTasks;
return tasks.Count - GetCount(TaskType.Comment);
}
}
static int warnings = 0;
static int errors = 0;
static int messages = 0;
static int comments = 0;
public static int Warnings {
public static TaskEnumerator Tasks {
get {
return warnings;
return new TaskEnumerator();
}
}
public static int Errors {
get {
return errors;
public class CommentTaskEnumerator {
public IEnumerator<Task> GetEnumerator()
{
foreach (Task task in tasks) {
if (task.TaskType == TaskType.Comment) {
yield return task;
}
}
}
}
public static int Messages {
public static CommentTaskEnumerator CommentTasks {
get {
return messages;
return new CommentTaskEnumerator();
}
}
public static int Comments {
get {
return comments;
static Dictionary<TaskType, int> taskCount = new Dictionary<TaskType, int>();
public static int GetCount(TaskType type)
{
if (!taskCount.ContainsKey(type)) {
return 0;
}
return taskCount[type];
}
public static bool SomethingWentWrong {
get {
return errors + warnings > 0;
return GetCount(TaskType.Error) + GetCount(TaskType.Warning) > 0;
}
}
public static bool HasCriticalErrors(bool treatWarningsAsErrors)
{
if (treatWarningsAsErrors) {
return errors + warnings > 0;
return SomethingWentWrong;
} else {
return errors > 0;
}
}
static void OnTasksChanged(EventArgs e)
{
if (TasksChanged != null) {
TasksChanged(null, e);
return GetCount(TaskType.Error) > 0;
}
}
@ -100,93 +99,134 @@ namespace ICSharpCode.Core @@ -100,93 +99,134 @@ namespace ICSharpCode.Core
static void ProjectServiceSolutionClosed(object sender, EventArgs e)
{
tasks.Clear();
commentTasks.Clear();
NotifyTaskChange();
Clear();
}
static void CheckFileRemove(object sender, FileEventArgs e)
{
bool somethingChanged = false;
for (int i = 0; i < tasks.Count; ++i) {
Task curTask = (Task)tasks[i];
bool doRemoveTask = false;
try {
doRemoveTask = Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.FileName);
} catch {
doRemoveTask = curTask.FileName == e.FileName;
}
if (doRemoveTask) {
tasks.RemoveAt(i);
Task curTask = tasks[i];
if (FileUtility.IsEqualFile(curTask.FileName, e.FileName)) {
Remove(curTask);
--i;
somethingChanged = true;
}
}
if (somethingChanged) {
NotifyTaskChange();
}
}
static void CheckFileRename(object sender, FileRenameEventArgs e)
{
bool somethingChanged = false;
foreach (Task curTask in tasks) {
if (Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.SourceFile)) {
for (int i = 0; i < tasks.Count; ++i) {
Task curTask = tasks[i];
if (FileUtility.IsEqualFile(curTask.FileName, e.SourceFile)) {
Remove(curTask);
curTask.FileName = Path.GetFullPath(e.TargetFile);
somethingChanged = true;
Add(curTask);
--i;
}
}
}
public static void Clear()
{
taskCount.Clear();
tasks.Clear();
OnCleared(EventArgs.Empty);
}
public static void Add(Task task)
{
tasks.Add(task);
if (!taskCount.ContainsKey(task.TaskType)) {
taskCount[task.TaskType] = 1;
} else {
taskCount[task.TaskType]++;
}
OnAdded(new TaskEventArgs(task));
}
public static void Remove(Task task)
{
if (tasks.Contains(task)) {
tasks.Remove(task);
taskCount[task.TaskType]--;
OnRemoved(new TaskEventArgs(task));
}
}
public static void UpdateCommentTags(string fileName, List<Tag> tagComments)
{
if (fileName == null || tagComments == null) {
return;
}
List<Task> newTasks = new List<Task>();
foreach (Tag tag in tagComments) {
newTasks.Add(new Task(fileName,
tag.Key + tag.CommentString,
tag.Region.BeginColumn,
tag.Region.BeginLine,
TaskType.Comment));
}
List<Task> oldTasks = new List<Task>();
foreach (Task task in CommentTasks) {
if (FileUtility.IsEqualFile(task.FileName, fileName)) {
oldTasks.Add(task);
}
}
foreach (Task curTask in commentTasks) {
if (Path.GetFullPath(curTask.FileName) == Path.GetFullPath(e.SourceFile)) {
curTask.FileName = Path.GetFullPath(e.TargetFile);
somethingChanged = true;
for (int i = 0; i < newTasks.Count; ++i) {
for (int j = 0; j < oldTasks.Count; ++j) {
if (newTasks[i].Line == oldTasks[j].Line &&
newTasks[i].Column == oldTasks[j].Column &&
newTasks[i].Description == oldTasks[j].Description) {
newTasks[i] = null;
oldTasks[j] = null;
++i;
if (i >= newTasks.Count) {
break;
}
}
}
}
foreach (Task task in newTasks) {
if (task != null) {
Add(task);
}
}
if (somethingChanged) {
NotifyTaskChange();
foreach (Task task in oldTasks) {
if (task != null) {
Remove(task);
}
}
}
public static void RemoveCommentTasks(string fileName)
static void OnCleared(EventArgs e)
{
bool removed = false;
for (int i = 0; i < commentTasks.Count; ++i) {
Task task = (Task)commentTasks[i];
if (Path.GetFullPath(task.FileName) == Path.GetFullPath(fileName)) {
commentTasks.RemoveAt(i);
removed = true;
--i;
}
if (Cleared != null) {
Cleared(null, e);
}
if (removed) {
NotifyTaskChange();
}
static void OnAdded(TaskEventArgs e)
{
if (Added != null) {
Added(null, e);
}
}
public static void NotifyTaskChange()
static void OnRemoved(TaskEventArgs e)
{
warnings = errors = comments = 0;
foreach (Task task in tasks) {
switch (task.TaskType) {
case TaskType.Warning:
++warnings;
break;
case TaskType.Error:
++errors;
break;
default:
++comments;
break;
}
if (Removed != null) {
Removed(null, e);
}
OnTasksChanged(null);
}
public static event EventHandler TasksChanged;
public static event TaskEventHandler Added;
public static event TaskEventHandler Removed;
public static event EventHandler Cleared;
}
}

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/ErrorDrawer.cs

@ -42,8 +42,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -42,8 +42,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
this.textEditor = textEditor;
TaskService.TasksChanged += new EventHandler(SetErrors);
// TODO: Tasks Changed!!!
// TaskService.TasksChanged += new EventHandler(SetErrors);
textEditor.FileNameChanged += new EventHandler(SetErrors);
}

70
src/SharpDevelop.sln

@ -1,31 +1,5 @@ @@ -1,31 +1,5 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# SharpDevelop 2.0.0.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "AddIns", "AddIns", "{14A277EE-7DF1-4529-B639-7D1EF334C1C5}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
@ -60,6 +34,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE @@ -60,6 +34,32 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Backends", "Backends", "{FE
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CSharpBinding", "AddIns\BackendBindings\CSharpBinding\Project\CSharpBinding.csproj", "{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libraries", "Libraries", "{9421EDF4-9769-4BE9-B5A6-C87DE221D73C}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.extensions.dll", "Tools\NUnit\src\NUnitFramework\extensions\nunit.extensions.dll.csproj", "{98B10E98-003C-45A0-9587-119142E39986}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NRefactory", "Libraries\NRefactory\Project\NRefactory.csproj", "{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.TextEditor", "Libraries\ICSharpCode.TextEditor\Project\ICSharpCode.TextEditor.csproj", "{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WinFormsUI", "Libraries\DockPanel_Src\WinFormsUI\WinFormsUI.csproj", "{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.core.dll", "Tools\NUnit\src\NUnitFramework\core\nunit.core.dll.csproj", "{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "nunit.framework.dll", "Tools\NUnit\src\NUnitFramework\framework\nunit.framework.dll.csproj", "{83DD7E12-A705-4DBA-9D71-09C8973D9382}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{5A3EBEBA-0560-41C1-966B-23F7D03A5486}"
ProjectSection(SolutionItems) = postProject
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StartUp", "Main\StartUp\Project\StartUp.csproj", "{1152B71B-3C05-4598-B20D-823B5D40559E}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Core", "Main\Core\Project\ICSharpCode.Core.csproj", "{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpDevelop", "Main\Base\Project\ICSharpCode.SharpDevelop.csproj", "{2748AD25-9C63-4E12-877B-4DCE96FBED54}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@ -133,15 +133,6 @@ Global @@ -133,15 +133,6 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{4EA396ED-64AD-4AD0-A67A-AB363F3E0C79} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
{CE5B42B7-6E8C-4385-9E97-F4023FC16BF2} = {14A277EE-7DF1-4529-B639-7D1EF334C1C5}
@ -154,5 +145,14 @@ Global @@ -154,5 +145,14 @@ Global
{7D7E92DF-ACEB-4B69-92C8-8AC7A703CD57} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{CBC6C247-747B-4908-B09A-4D2E0F640B6B} = {4EA396ED-64AD-4AD0-A67A-AB363F3E0C79}
{1F1AC7CD-D154-45BB-8EAF-804CA8055F5A} = {FEB825FA-4AD8-425D-8E4A-B5A18EE1B81C}
{83DD7E12-A705-4DBA-9D71-09C8973D9382} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{D3C782BA-178E-4235-A3BA-8C11DEBB6BEE} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2D18BE89-D210-49EB-A9DD-2246FBB3DF6D} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{3A9AE6AA-BC07-4A2F-972C-581E3AE2F195} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{98B10E98-003C-45A0-9587-119142E39986} = {9421EDF4-9769-4BE9-B5A6-C87DE221D73C}
{2748AD25-9C63-4E12-877B-4DCE96FBED54} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{35CEF10F-2D4C-45F2-9DD1-161E0FEC583C} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
{1152B71B-3C05-4598-B20D-823B5D40559E} = {5A3EBEBA-0560-41C1-966B-23F7D03A5486}
EndGlobalSection
EndGlobal

Loading…
Cancel
Save