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

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

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

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

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

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

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

Loading…
Cancel
Save