Browse Source

Fixed wildcards support (SD2-1170)

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2072 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
387ea3ce1b
  1. 5
      src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/DesignerResourceService.cs
  2. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  3. 2
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs
  4. 4
      src/Main/Base/Project/Src/Project/Items/ProjectItem.cs
  5. 2
      src/Main/Base/Project/Src/Project/MSBuildBasedProject.cs
  6. 2
      src/Main/Base/Project/Src/Project/MSBuildInternals.cs
  7. 10
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
  8. 4
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  9. 12
      src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs
  10. 3
      src/Main/Base/Project/Src/Util/Linq.cs

5
src/AddIns/DisplayBindings/FormsDesigner/Project/Src/Services/DesignerResourceService.cs

@ -255,10 +255,7 @@ namespace ICSharpCode.FormsDesigner.Services
string sourceFileName = null; string sourceFileName = null;
if (project != null && formFileName != null) { if (project != null && formFileName != null) {
// Try to find the source file name by using the project dependencies first. // Try to find the source file name by using the project dependencies first.
FileProjectItem sourceItem = Linq.Find(project.Items, delegate(ProjectItem item) { FileProjectItem sourceItem = project.FindFile(formFileName);
FileProjectItem fpi = item as FileProjectItem;
return fpi != null && fpi.FileName != null && FileUtility.IsEqualFileName(fpi.FileName, formFileName);
}) as FileProjectItem;
if (sourceItem != null && sourceItem.DependentUpon != null && sourceItem.DependentUpon.Length > 0) { if (sourceItem != null && sourceItem.DependentUpon != null && sourceItem.DependentUpon.Length > 0) {
sourceFileName = Path.GetFileNameWithoutExtension(sourceItem.DependentUpon); sourceFileName = Path.GetFileNameWithoutExtension(sourceItem.DependentUpon);
} }

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs

@ -74,7 +74,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
if (!FileUtility.IsBaseDirectory(project.Directory, directoryName)) if (!FileUtility.IsBaseDirectory(project.Directory, directoryName))
continue; continue;
LoggingService.Debug("Searching for child items in " + project.Name); LoggingService.Debug("Searching for child items in " + project.Name);
foreach (ProjectItem item in Linq.ToArray(project.Items)) { foreach (ProjectItem item in project.Items) {
FileProjectItem fileItem = item as FileProjectItem; FileProjectItem fileItem = item as FileProjectItem;
if (fileItem == null) if (fileItem == null)
continue; continue;

2
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/TreeNodes/DirectoryNode.cs

@ -653,7 +653,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (sourceProject != null) { if (sourceProject != null) {
string sourceDirectory = Path.GetDirectoryName(fileName); string sourceDirectory = Path.GetDirectoryName(fileName);
bool dependendElementsCopied = false; bool dependendElementsCopied = false;
foreach (ProjectItem item in Linq.ToArray(sourceProject.Items)) { foreach (ProjectItem item in sourceProject.Items) {
FileProjectItem fileItem = item as FileProjectItem; FileProjectItem fileItem = item as FileProjectItem;
if (fileItem == null) if (fileItem == null)
continue; continue;

4
src/Main/Base/Project/Src/Project/Items/ProjectItem.cs

@ -136,7 +136,7 @@ namespace ICSharpCode.SharpDevelop.Project
get { get {
lock (SyncRoot) { lock (SyncRoot) {
if (buildItem != null) if (buildItem != null)
return buildItem.Include; return buildItem.FinalItemSpec;
else else
return virtualInclude; return virtualInclude;
} }
@ -144,7 +144,7 @@ namespace ICSharpCode.SharpDevelop.Project
set { set {
lock (SyncRoot) { lock (SyncRoot) {
if (buildItem != null) if (buildItem != null)
buildItem.Include = value; buildItem.Include = MSBuildInternals.Escape(value);
else else
virtualInclude = value ?? ""; virtualInclude = value ?? "";
fileNameCache = null; fileNameCache = null;

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

@ -92,7 +92,7 @@ namespace ICSharpCode.SharpDevelop.Project
default: default:
if (this.AvailableFileItemTypes.Contains(new ItemType(item.Name)) if (this.AvailableFileItemTypes.Contains(new ItemType(item.Name))
|| SafeFileExists(this.Directory, item.Include)) || SafeFileExists(this.Directory, item.FinalItemSpec))
{ {
return new FileProjectItem(this, item); return new FileProjectItem(this, item);
} else { } else {

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

@ -75,7 +75,7 @@ namespace ICSharpCode.SharpDevelop.Project
throw new ArgumentNullException("item"); throw new ArgumentNullException("item");
if (item.IsAddedToProject) if (item.IsAddedToProject)
throw new ArgumentException("item is already added to project", "item"); throw new ArgumentException("item is already added to project", "item");
MSBuild.BuildItem newItem = group.AddNewItem(item.ItemType.ToString(), item.Include); MSBuild.BuildItem newItem = group.AddNewItem(item.ItemType.ToString(), item.Include, true);
foreach (string name in item.MetadataNames) { foreach (string name in item.MetadataNames) {
newItem.SetMetadata(name, item.GetMetadata(name)); newItem.SetMetadata(name, item.GetMetadata(name));
} }

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

@ -43,7 +43,7 @@ namespace ICSharpCode.SharpDevelop
internal void Initialize1() internal void Initialize1()
{ {
ProjectItem[] items = Linq.ToArray(project.Items); ICollection<ProjectItem> items = project.Items;
ProjectService.ProjectItemAdded += OnProjectItemAdded; ProjectService.ProjectItemAdded += OnProjectItemAdded;
ProjectService.ProjectItemRemoved += OnProjectItemRemoved; ProjectService.ProjectItemRemoved += OnProjectItemRemoved;
UpdateDefaultImports(items); UpdateDefaultImports(items);
@ -148,7 +148,7 @@ namespace ICSharpCode.SharpDevelop
} }
} }
if (e.ProjectItem.ItemType == ItemType.Import) { if (e.ProjectItem.ItemType == ItemType.Import) {
UpdateDefaultImports(Linq.ToArray(project.Items)); UpdateDefaultImports(project.Items);
} else if (e.ProjectItem.ItemType == ItemType.Compile) { } else if (e.ProjectItem.ItemType == ItemType.Compile) {
if (System.IO.File.Exists(e.ProjectItem.FileName)) { if (System.IO.File.Exists(e.ProjectItem.FileName)) {
ParserService.EnqueueForParsing(e.ProjectItem.FileName); ParserService.EnqueueForParsing(e.ProjectItem.FileName);
@ -176,7 +176,7 @@ namespace ICSharpCode.SharpDevelop
} }
if (e.ProjectItem.ItemType == ItemType.Import) { if (e.ProjectItem.ItemType == ItemType.Import) {
UpdateDefaultImports(Linq.ToArray(project.Items)); UpdateDefaultImports(project.Items);
} else if (e.ProjectItem.ItemType == ItemType.Compile) { } else if (e.ProjectItem.ItemType == ItemType.Compile) {
ParserService.ClearParseInformation(e.ProjectItem.FileName); ParserService.ClearParseInformation(e.ProjectItem.FileName);
} }
@ -184,7 +184,7 @@ namespace ICSharpCode.SharpDevelop
int languageDefaultImportCount = -1; int languageDefaultImportCount = -1;
void UpdateDefaultImports(ProjectItem[] items) void UpdateDefaultImports(ICollection<ProjectItem> items)
{ {
if (languageDefaultImportCount < 0) { if (languageDefaultImportCount < 0) {
languageDefaultImportCount = (DefaultImports != null) ? DefaultImports.Usings.Count : 0; languageDefaultImportCount = (DefaultImports != null) ? DefaultImports.Usings.Count : 0;
@ -208,7 +208,7 @@ namespace ICSharpCode.SharpDevelop
internal int GetInitializationWorkAmount() internal int GetInitializationWorkAmount()
{ {
return Linq.Count(project.Items); return project.Items.Count;
} }
internal void ReInitialize2() internal void ReInitialize2()

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

@ -111,6 +111,10 @@ namespace ICSharpCode.SharpDevelop
projectContents.Clear(); projectContents.Clear();
parsings.Clear(); parsings.Clear();
} }
lock (parseQueue) {
parseQueue.Clear();
}
lastUpdateHash.Clear();
} }
static Thread loadSolutionProjectsThread; static Thread loadSolutionProjectsThread;

12
src/Main/Base/Project/Src/Services/ProjectService/ParseableFileContentEnumerator.cs

@ -62,17 +62,17 @@ namespace ICSharpCode.SharpDevelop.Project
{ {
} }
ProjectItem[] projectItems; IList<ProjectItem> projectItems;
bool isOnMainThread; bool isOnMainThread;
Encoding defaultEncoding; Encoding defaultEncoding;
public ParseableFileContentEnumerator(IProject project) : this(Linq.ToArray(project.Items)) { } public ParseableFileContentEnumerator(IProject project) : this(project.Items) { }
public ParseableFileContentEnumerator(ProjectItem[] projectItems) public ParseableFileContentEnumerator(IList<ProjectItem> projectItems)
{ {
isOnMainThread = !WorkbenchSingleton.InvokeRequired; isOnMainThread = !WorkbenchSingleton.InvokeRequired;
this.projectItems = projectItems; this.projectItems = projectItems;
if (projectItems.Length > 0) { if (projectItems.Count > 0) {
nextItem = projectItems[0]; nextItem = projectItems[0];
} }
defaultEncoding = ParserService.DefaultFileEncoding; defaultEncoding = ParserService.DefaultFileEncoding;
@ -93,7 +93,7 @@ namespace ICSharpCode.SharpDevelop.Project
public int ItemCount { public int ItemCount {
get { get {
return projectItems.Length; return projectItems.Count;
} }
} }
@ -106,7 +106,7 @@ namespace ICSharpCode.SharpDevelop.Project
public bool MoveNext() public bool MoveNext()
{ {
ProjectItem item = nextItem; ProjectItem item = nextItem;
nextItem = (++index < projectItems.Length) ? projectItems[index] : null; nextItem = (++index < projectItems.Count) ? projectItems[index] : null;
if (item == null) return false; if (item == null) return false;
if (item.ItemType != ItemType.Compile) if (item.ItemType != ItemType.Compile)
return MoveNext(); return MoveNext();

3
src/Main/Base/Project/Src/Util/Linq.cs

@ -94,6 +94,9 @@ namespace ICSharpCode.SharpDevelop
public static int Count<T>(IEnumerable<T> input) public static int Count<T>(IEnumerable<T> input)
{ {
if (input is ICollection<T>) {
return ((ICollection<T>)input).Count;
}
int count = 0; int count = 0;
using (IEnumerator<T> e = input.GetEnumerator()) { using (IEnumerator<T> e = input.GetEnumerator()) {
while (e.MoveNext()) while (e.MoveNext())

Loading…
Cancel
Save