Browse Source

Moved more strings to translation database.

When adding a COM reference, MSBuild "ResolveComReferences" is called immediately to generate the interop library and get code completion - the "cannot load code-completion information" error message was confusing many users.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1493 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 19 years ago
parent
commit
a4bd782875
  1. BIN
      data/resources/StringResources.cz.resources
  2. BIN
      data/resources/StringResources.de.resources
  3. BIN
      data/resources/StringResources.es-mx.resources
  4. BIN
      data/resources/StringResources.es.resources
  5. BIN
      data/resources/StringResources.nl.resources
  6. 4
      src/Main/Base/Project/Src/Gui/Pads/FileScout.cs
  7. 4
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/DefaultDotNetNodeBuilder.cs
  8. 15
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  9. 32
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  10. 4
      src/Main/Base/Project/Src/Project/IProject.cs
  11. 12
      src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs
  12. 56
      src/Main/Base/Project/Src/Services/ParserService/ParseProjectContent.cs
  13. 2
      src/Main/Base/Project/Src/Services/ParserService/ParserService.cs
  14. 7
      src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs
  15. BIN
      src/Main/StartUp/Project/Resources/StringResources.resources

BIN
data/resources/StringResources.cz.resources

Binary file not shown.

BIN
data/resources/StringResources.de.resources

Binary file not shown.

BIN
data/resources/StringResources.es-mx.resources

Binary file not shown.

BIN
data/resources/StringResources.es.resources

Binary file not shown.

BIN
data/resources/StringResources.nl.resources

Binary file not shown.

4
src/Main/Base/Project/Src/Gui/Pads/FileScout.cs

@ -528,7 +528,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -528,7 +528,7 @@ namespace ICSharpCode.SharpDevelop.Gui
rootNode.SelectedImageIndex = 6;
rootNode.Tag = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
TreeNode myFilesNode = rootNode.Nodes.Add("${res:MainWindow.Windows.FileScout.MyDocuments}");
TreeNode myFilesNode = rootNode.Nodes.Add(ResourceService.GetString("MainWindow.Windows.FileScout.MyDocuments"));
myFilesNode.ImageIndex = 7;
myFilesNode.SelectedImageIndex = 7;
try {
@ -539,7 +539,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -539,7 +539,7 @@ namespace ICSharpCode.SharpDevelop.Gui
myFilesNode.Nodes.Add("");
TreeNode computerNode = rootNode.Nodes.Add("${res:MainWindow.Windows.FileScout.MyComputer}");
TreeNode computerNode = rootNode.Nodes.Add(ResourceService.GetString("MainWindow.Windows.FileScout.MyComputer"));
computerNode.ImageIndex = 8;
computerNode.SelectedImageIndex = 8;
try {

4
src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/NodeBuilder/DefaultDotNetNodeBuilder.cs

@ -27,7 +27,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -27,7 +27,7 @@ namespace ICSharpCode.SharpDevelop.Project
if (project is MissingProject) {
CustomNode missingNode = new CustomNode();
missingNode.SetIcon("Icons.16x16.Warning");
missingNode.Text = "The project file cannot be found.";
missingNode.Text = ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.ProjectFileNotFound");
missingNode.AddTo(projectNode);
} else if (project is UnknownProject) {
string ext = Path.GetExtension(project.FileName);
@ -39,7 +39,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -39,7 +39,7 @@ namespace ICSharpCode.SharpDevelop.Project
} else {
CustomNode unknownNode = new CustomNode();
unknownNode.SetIcon("Icons.16x16.Warning");
unknownNode.Text = "No backend for project type installed.";
unknownNode.Text = ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.ProjectBrowser.NoBackendForProjectType");
unknownNode.AddTo(projectNode);
}
} else {

15
src/Main/Base/Project/Src/Project/AbstractProject.cs

@ -317,6 +317,21 @@ namespace ICSharpCode.SharpDevelop.Project @@ -317,6 +317,21 @@ namespace ICSharpCode.SharpDevelop.Project
}
}
[Browsable(false)]
public string IntermediateOutputFullPath {
get {
string outputPath = GetProperty("IntermediateOutputPath");
if (string.IsNullOrEmpty(outputPath)) {
outputPath = GetProperty("BaseIntermediateOutputPath");
if (string.IsNullOrEmpty(outputPath)) {
outputPath = "obj";
}
outputPath = Path.Combine(outputPath, activeConfiguration);
}
return Path.Combine(Directory, outputPath);
}
}
public static string GetExtension(OutputType outputType)
{
switch (outputType) {

32
src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs

@ -117,17 +117,21 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -117,17 +117,21 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
public override void Run()
{
conversionLog = new StringBuilder();
conversionLog.AppendLine("SharpDevelop Project Converter");
conversionLog.AppendLine("==============================");
conversionLog.AppendLine("");
string translatedTitle = ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.ProjectConverter");
conversionLog.AppendLine(translatedTitle);
conversionLog.Append('=', translatedTitle.Length);
conversionLog.AppendLine();
conversionLog.AppendLine();
IProject sourceProject = ProjectService.CurrentProject;
string targetProjectDirectory = sourceProject.Directory + ".ConvertedTo" + TargetLanguageName;
if (Directory.Exists(targetProjectDirectory)) {
MessageService.ShowMessage(targetProjectDirectory + " already exists, cannot convert.");
MessageService.ShowMessageFormatted("${res:ICSharpCode.SharpDevelop.Commands.Convert.TargetAlreadyExists}", targetProjectDirectory);
return;
}
conversionLog.AppendLine("Source: " + sourceProject.Directory);
conversionLog.AppendLine("Target: " + targetProjectDirectory);
conversionLog.Append(ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.SourceDirectory")).Append(": ");
conversionLog.AppendLine(sourceProject.Directory);
conversionLog.Append(ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.TargetDirectory")).Append(": ");
conversionLog.AppendLine(targetProjectDirectory);
Directory.CreateDirectory(targetProjectDirectory);
IProject targetProject = CreateProject(targetProjectDirectory, sourceProject);
@ -136,7 +140,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -136,7 +140,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
CopyItems(sourceProject, targetProject);
conversionLog.AppendLine();
AfterConversion(targetProject);
conversionLog.AppendLine("Conversion complete.");
conversionLog.AppendLine(ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.ConversionComplete"));
targetProject.Save();
targetProject.Dispose();
TreeNode node = ProjectBrowserPad.Instance.SelectedNode;
@ -152,7 +156,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -152,7 +156,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
node = node.Parent;
}
ICSharpCode.SharpDevelop.Gui.IWorkbenchWindow newFileWindow;
newFileWindow = FileService.NewFile("Conversion Results", "Text", conversionLog.ToString());
newFileWindow = FileService.NewFile(ResourceService.GetString("ICSharpCode.SharpDevelop.Commands.Convert.ConversionResults"), "Text", conversionLog.ToString());
if (newFileWindow != null) {
newFileWindow.ViewContent.IsDirty = false;
}
@ -174,8 +178,10 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -174,8 +178,10 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
p.Parse();
if (p.Errors.count > 0) {
conversionLog.AppendLine();
conversionLog.AppendLine(sourceItem.FileName + " is not converted:");
conversionLog.AppendLine("Parser found " + p.Errors.count + " error(s)");
conversionLog.AppendLine(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.Convert.IsNotConverted}",
new string[,] {{"FileName", sourceItem.FileName}}));
conversionLog.AppendLine(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.Convert.ParserErrorCount}",
new string[,] {{"ErrorCount", p.Errors.count.ToString()}}));
conversionLog.AppendLine(p.Errors.ErrorOutput);
base.ConvertFile(sourceItem, targetItem);
return;
@ -193,7 +199,11 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -193,7 +199,11 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
if (outputVisitor.Errors.count > 0) {
conversionLog.AppendLine();
conversionLog.AppendLine(outputVisitor.Errors.count + " error(s) converting " + sourceItem.FileName + ":");
conversionLog.AppendLine(StringParser.Parse("${res:ICSharpCode.SharpDevelop.Commands.Convert.ConverterErrorCount}",
new string[,] {
{"FileName", sourceItem.FileName},
{"ErrorCount", outputVisitor.Errors.count.ToString()}
}));
conversionLog.AppendLine(outputVisitor.Errors.ErrorOutput);
}

4
src/Main/Base/Project/Src/Project/IProject.cs

@ -86,6 +86,10 @@ namespace ICSharpCode.SharpDevelop.Project @@ -86,6 +86,10 @@ namespace ICSharpCode.SharpDevelop.Project
get;
}
string IntermediateOutputFullPath {
get;
}
OutputType OutputType {
get;
set;

12
src/Main/Base/Project/Src/Project/Items/ComReferenceProjectItem.cs

@ -115,6 +115,18 @@ namespace ICSharpCode.SharpDevelop.Project @@ -115,6 +115,18 @@ namespace ICSharpCode.SharpDevelop.Project
if (File.Exists(interopFileName)) {
return interopFileName;
}
// look in obj\Debug:
outputFolder = Project.IntermediateOutputFullPath;
interopFileName = Path.Combine(outputFolder, String.Concat("Interop.", Include, ".dll"));
if (File.Exists(interopFileName)) {
return interopFileName;
}
// Look for ActiveX interop.
interopFileName = GetActiveXInteropFileName(outputFolder, Include);
if (File.Exists(interopFileName)) {
return interopFileName;
}
}
}
catch (Exception) { }

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

@ -6,6 +6,7 @@ @@ -6,6 +6,7 @@
// </file>
using System;
using System.Collections.Generic;
using System.IO;
using ICSharpCode.Core;
@ -55,7 +56,6 @@ namespace ICSharpCode.Core @@ -55,7 +56,6 @@ namespace ICSharpCode.Core
ProjectItem[] items = project.Items.ToArray();
ProjectService.ProjectItemAdded += OnProjectItemAdded;
ProjectService.ProjectItemRemoved += OnProjectItemRemoved;
ProjectService.EndBuild += OnEndBuild;
UpdateDefaultImports(items);
foreach (ProjectItem item in items) {
if (!initializing) return; // abort initialization
@ -109,13 +109,48 @@ namespace ICSharpCode.Core @@ -109,13 +109,48 @@ namespace ICSharpCode.Core
AddReference((ReferenceProjectItem)state, true);
}
// ensure that com references are built serially because we cannot invoke multiple instances of MSBuild
static Queue<System.Windows.Forms.MethodInvoker> callAfterAddComReference = new Queue<System.Windows.Forms.MethodInvoker>();
static bool buildingComReference;
void OnProjectItemAdded(object sender, ProjectItemEventArgs e)
{
if (e.Project != project) return;
ReferenceProjectItem reference = e.ProjectItem as ReferenceProjectItem;
if (reference != null) {
System.Threading.ThreadPool.QueueUserWorkItem(AddReference, reference);
if (reference.ItemType == ItemType.COMReference) {
System.Windows.Forms.MethodInvoker action = delegate {
// Compile project to ensure interop library is generated
project.Save(); // project is not yet saved when ItemAdded fires, so save it here
TaskService.BuildMessageViewCategory.AppendText("\n${res:MainWindow.CompilerMessages.CreatingCOMInteropAssembly}\n");
MSBuildEngineCallback callback = delegate {
System.Threading.ThreadPool.QueueUserWorkItem(AddReference, reference);
lock (callAfterAddComReference) {
if (callAfterAddComReference.Count > 0) {
callAfterAddComReference.Dequeue()();
} else {
buildingComReference = false;
}
}
};
if (project is MSBuildProject) {
((MSBuildProject)project).RunMSBuild("ResolveComReferences", callback);
} else {
project.Build(callback);
}
};
lock (callAfterAddComReference) {
if (buildingComReference) {
callAfterAddComReference.Enqueue(action);
} else {
buildingComReference = true;
action();
}
}
} else {
System.Threading.ThreadPool.QueueUserWorkItem(AddReference, reference);
}
}
switch (e.ProjectItem.ItemType) {
case ItemType.Import:
@ -231,25 +266,8 @@ namespace ICSharpCode.Core @@ -231,25 +266,8 @@ namespace ICSharpCode.Core
{
ProjectService.ProjectItemAdded -= OnProjectItemAdded;
ProjectService.ProjectItemRemoved -= OnProjectItemRemoved;
ProjectService.EndBuild -= OnEndBuild;
initializing = false;
base.Dispose();
}
void OnEndBuild(object source, EventArgs e)
{
AddComReferences();
}
void AddComReferences()
{
if (project != null) {
foreach (ProjectItem item in project.Items) {
if (item.ItemType == ItemType.COMReference) {
System.Threading.ThreadPool.QueueUserWorkItem(AddReference, item as ReferenceProjectItem);
}
}
}
}
}
}

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

@ -64,7 +64,7 @@ namespace ICSharpCode.Core @@ -64,7 +64,7 @@ namespace ICSharpCode.Core
foreach (IProjectContent pc in AllProjectContents) {
yield return pc;
}
foreach (IProjectContent pc in ProjectContentRegistry.LoadedProjectContents) {
foreach (IProjectContent pc in ProjectContentRegistry.GetLoadedProjectContents()) {
yield return pc;
}
}

7
src/Main/Base/Project/Src/Services/ParserService/ProjectContentRegistry.cs

@ -65,9 +65,10 @@ namespace ICSharpCode.Core @@ -65,9 +65,10 @@ namespace ICSharpCode.Core
}
}
public static IEnumerable<IProjectContent> LoadedProjectContents {
get {
return contents.Values;
public static ICollection<IProjectContent> GetLoadedProjectContents()
{
lock (contents) { // we need to return a copy because we have to lock
return new List<IProjectContent>(contents.Values);
}
}

BIN
src/Main/StartUp/Project/Resources/StringResources.resources

Binary file not shown.
Loading…
Cancel
Save