Browse Source

SdStatusBar.BeginTask: reset WorkDone to 0.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2687 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
baecdf2d5e
  1. 3
      src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs
  2. 2
      src/Main/Base/Project/Src/Project/CustomTool.cs
  3. 25
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
  4. 29
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

3
src/Main/Base/Project/Src/Gui/Components/StatusBar/SdStatusBar.cs

@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -98,7 +98,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
if (highlighted) {
txtStatusBarPanel.BackColor = SystemColors.Highlight;
txtStatusBarPanel.ForeColor = Color.White;
txtStatusBarPanel.ForeColor = Color.White;
} else if (txtStatusBarPanel.BackColor == SystemColors.Highlight) {
txtStatusBarPanel.BackColor = SystemColors.Control;
txtStatusBarPanel.ForeColor = SystemColors.ControlText;
@ -126,6 +126,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -126,6 +126,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
taskName = name;
this.totalWork = totalWork;
this.workDone = 0;
if (this.IsHandleCreated) {
this.BeginInvoke(new MethodInvoker(MakeVisible));
}

2
src/Main/Base/Project/Src/Project/CustomTool.cs

@ -456,7 +456,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -456,7 +456,7 @@ namespace ICSharpCode.SharpDevelop.Project
run.context.MessageView.AppendLine("Custom tool '" + run.baseItem.CustomTool + "' failed.");
if (run.showMessageBoxOnErrors) {
MessageService.ShowError("Custom tool '" + run.baseItem.CustomTool
+ "'failed:" + Environment.NewLine + ex.ToString());
+ "' failed:" + Environment.NewLine + ex.ToString());
}
}
if (run.context.RunningSeparateThread) {

25
src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs

@ -10,6 +10,7 @@ using System.Collections.Generic; @@ -10,6 +10,7 @@ using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.SharpDevelop
{
@ -41,15 +42,15 @@ namespace ICSharpCode.SharpDevelop @@ -41,15 +42,15 @@ namespace ICSharpCode.SharpDevelop
return string.Format("[{0}: {1}]", GetType().Name, project.Name);
}
internal void Initialize1()
internal void Initialize1(IProgressMonitor progressMonitor)
{
ICollection<ProjectItem> items = project.Items;
ProjectService.ProjectItemAdded += OnProjectItemAdded;
ProjectService.ProjectItemRemoved += OnProjectItemRemoved;
UpdateDefaultImports(items);
StatusBarService.ProgressMonitor.BeginTask("Resolving references for " + project.Name, 0, false);
progressMonitor.BeginTask("Resolving references for " + project.Name, 0, false);
project.ResolveAssemblyReferences();
StatusBarService.ProgressMonitor.Done();
progressMonitor.Done();
foreach (ProjectItem item in items) {
if (!initializing) return; // abort initialization
if (item.ItemType == ItemType.Reference
@ -63,7 +64,7 @@ namespace ICSharpCode.SharpDevelop @@ -63,7 +64,7 @@ namespace ICSharpCode.SharpDevelop
OnReferencedContentsChanged(EventArgs.Empty);
}
internal void ReInitialize1()
internal void ReInitialize1(IProgressMonitor progressMonitor)
{
lock (ReferencedContents) {
ReferencedContents.Clear();
@ -73,7 +74,7 @@ namespace ICSharpCode.SharpDevelop @@ -73,7 +74,7 @@ namespace ICSharpCode.SharpDevelop
ProjectService.ProjectItemAdded -= OnProjectItemAdded;
ProjectService.ProjectItemRemoved -= OnProjectItemRemoved;
initializing = true;
Initialize1();
Initialize1(progressMonitor);
initializing = false;
}
@ -212,20 +213,20 @@ namespace ICSharpCode.SharpDevelop @@ -212,20 +213,20 @@ namespace ICSharpCode.SharpDevelop
return project.Items.Count;
}
internal void ReInitialize2()
internal void ReInitialize2(IProgressMonitor progressMonitor)
{
if (initializing) return;
initializing = true;
Initialize2();
Initialize2(progressMonitor);
}
internal void Initialize2()
internal void Initialize2(IProgressMonitor progressMonitor)
{
if (!initializing) return;
int progressStart = StatusBarService.ProgressMonitor.WorkDone;
int progressStart = progressMonitor.WorkDone;
ParseableFileContentEnumerator enumerator = new ParseableFileContentEnumerator(project);
try {
StatusBarService.ProgressMonitor.TaskName = "${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing} " + project.Name + "...";
progressMonitor.TaskName = "${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing} " + project.Name + "...";
IProjectContent[] referencedContents;
lock (this.ReferencedContents) {
@ -242,7 +243,7 @@ namespace ICSharpCode.SharpDevelop @@ -242,7 +243,7 @@ namespace ICSharpCode.SharpDevelop
while (enumerator.MoveNext()) {
int i = enumerator.Index;
if ((i % 5) == 2)
StatusBarService.ProgressMonitor.WorkDone = progressStart + i;
progressMonitor.WorkDone = progressStart + i;
ParserService.ParseFile(this, enumerator.CurrentFileName, enumerator.CurrentFileContent, true);
@ -250,7 +251,7 @@ namespace ICSharpCode.SharpDevelop @@ -250,7 +251,7 @@ namespace ICSharpCode.SharpDevelop
}
} finally {
initializing = false;
StatusBarService.ProgressMonitor.WorkDone = progressStart + enumerator.ItemCount;
progressMonitor.WorkDone = progressStart + enumerator.ItemCount;
enumerator.Dispose();
}
}

29
src/Main/Base/Project/Src/Services/ParserService/ParserService.cs

@ -154,6 +154,7 @@ namespace ICSharpCode.SharpDevelop @@ -154,6 +154,7 @@ namespace ICSharpCode.SharpDevelop
static void LoadSolutionProjectsInternal()
{
IProgressMonitor progressMonitor = StatusBarService.ProgressMonitor;
List<ParseProjectContent> createdContents = new List<ParseProjectContent>();
foreach (IProject project in ProjectService.OpenSolution.Projects) {
try {
@ -173,31 +174,32 @@ namespace ICSharpCode.SharpDevelop @@ -173,31 +174,32 @@ namespace ICSharpCode.SharpDevelop
foreach (ParseProjectContent newContent in createdContents) {
if (abortLoadSolutionProjectsThread) return;
try {
newContent.Initialize1();
newContent.Initialize1(progressMonitor);
workAmount += newContent.GetInitializationWorkAmount();
} catch (Exception e) {
MessageService.ShowError(e, "Error while initializing project references:" + newContent);
}
}
StatusBarService.ProgressMonitor.BeginTask("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing}...", workAmount, false);
progressMonitor.BeginTask("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing}...", workAmount, false);
foreach (ParseProjectContent newContent in createdContents) {
if (abortLoadSolutionProjectsThread) break;
try {
newContent.Initialize2();
newContent.Initialize2(progressMonitor);
} catch (Exception e) {
MessageService.ShowError(e, "Error while initializing project contents:" + newContent);
}
}
StatusBarService.ProgressMonitor.Done();
progressMonitor.Done();
}
static void InitAddedProject(object state)
{
ParseProjectContent newContent = (ParseProjectContent)state;
newContent.Initialize1();
StatusBarService.ProgressMonitor.BeginTask("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing}...", newContent.GetInitializationWorkAmount(), false);
newContent.Initialize2();
StatusBarService.ProgressMonitor.Done();
IProgressMonitor progressMonitor = StatusBarService.ProgressMonitor;
newContent.Initialize1(progressMonitor);
progressMonitor.BeginTask("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing}...", newContent.GetInitializationWorkAmount(), false);
newContent.Initialize2(progressMonitor);
progressMonitor.Done();
}
#region Reparse projects
@ -223,13 +225,14 @@ namespace ICSharpCode.SharpDevelop @@ -223,13 +225,14 @@ namespace ICSharpCode.SharpDevelop
{
bool parsing = false;
ParseProjectContent job;
IProgressMonitor progressMonitor = StatusBarService.ProgressMonitor;
while (true) {
// get next job
lock (reParse1) {
if (reParse1.Count > 0) {
if (parsing) {
StatusBarService.ProgressMonitor.Done();
progressMonitor.Done();
}
parsing = false;
job = reParse1.Dequeue();
@ -239,7 +242,7 @@ namespace ICSharpCode.SharpDevelop @@ -239,7 +242,7 @@ namespace ICSharpCode.SharpDevelop
foreach (ParseProjectContent ppc in reParse2) {
workAmount += ppc.GetInitializationWorkAmount();
}
StatusBarService.ProgressMonitor.BeginTask("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing}...", workAmount, false);
progressMonitor.BeginTask("${res:ICSharpCode.SharpDevelop.Internal.ParserService.Parsing}...", workAmount, false);
}
parsing = true;
job = reParse2.Dequeue();
@ -247,7 +250,7 @@ namespace ICSharpCode.SharpDevelop @@ -247,7 +250,7 @@ namespace ICSharpCode.SharpDevelop
// all jobs done
reParseThread = null;
if (parsing) {
StatusBarService.ProgressMonitor.Done();
progressMonitor.Done();
}
LoggingService.Info("reParse thread finished all jobs");
return;
@ -257,10 +260,10 @@ namespace ICSharpCode.SharpDevelop @@ -257,10 +260,10 @@ namespace ICSharpCode.SharpDevelop
// execute job
if (parsing) {
LoggingService.Info("reparsing code for " + job.Project);
job.ReInitialize2();
job.ReInitialize2(progressMonitor);
} else {
LoggingService.Debug("reloading references for " + job.Project);
job.ReInitialize1();
job.ReInitialize1(progressMonitor);
}
}
}

Loading…
Cancel
Save