diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin index b1e1e7730e..26821c8991 100644 --- a/AddIns/ICSharpCode.SharpDevelop.addin +++ b/AddIns/ICSharpCode.SharpDevelop.addin @@ -329,6 +329,11 @@ + + + diff --git a/data/templates/project/CSharp/FormsProject.xpt b/data/templates/project/CSharp/FormsProject.xpt index 57184d1e9f..dfa4a5dbef 100644 --- a/data/templates/project/CSharp/FormsProject.xpt +++ b/data/templates/project/CSharp/FormsProject.xpt @@ -64,6 +64,7 @@ namespace ${StandardNamespace} public static void Main(string[] args) { Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin index 5097d200c9..da3c3e409f 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin @@ -22,6 +22,19 @@ extensions = "*.boo"/> + + + + + + + + + + diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs index a502a634b7..0ce5c90d25 100644 --- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertBuffer.cs @@ -25,7 +25,7 @@ namespace Grunwald.BooBinding { public class ConvertBuffer : AbstractMenuCommand { - ConverterSettings ApplySettings(string fileName, CompilerErrorCollection errors, CompilerWarningCollection warnings) + public static ConverterSettings ApplySettings(string fileName, CompilerErrorCollection errors, CompilerWarningCollection warnings) { ConverterSettings settings = new ConverterSettings(fileName, errors, warnings); settings.SimplifyTypeNames = true; @@ -57,24 +57,30 @@ namespace Grunwald.BooBinding } } MessageService.ShowError(errorBuilder.ToString()); - return; + } else { + FileService.NewFile("Generated.boo", "Boo", CreateBooCode(errors, warnings, module, specials)); } - using (StringWriter w = new StringWriter()) { - foreach (CompilerError error in errors) { - w.WriteLine("ERROR: " + error.ToString()); - } - if (errors.Count > 0) - w.WriteLine(); - foreach (CompilerWarning warning in warnings) { - w.WriteLine("# WARNING: " + warning.ToString()); - } - if (warnings.Count > 0) - w.WriteLine(); - BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w); - printer.OnModule(module); - printer.Finish(); - FileService.NewFile("Generated.boo", "Boo", w.ToString()); + } + } + + public static string CreateBooCode(CompilerErrorCollection errors, CompilerWarningCollection warnings, + Module module, IList specials) + { + using (StringWriter w = new StringWriter()) { + foreach (CompilerError error in errors) { + w.WriteLine("ERROR: " + error.ToString()); + } + if (errors.Count > 0) + w.WriteLine(); + foreach (CompilerWarning warning in warnings) { + w.WriteLine("# WARNING: " + warning.ToString()); } + if (warnings.Count > 0) + w.WriteLine(); + BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w); + printer.OnModule(module); + printer.Finish(); + return w.ToString(); } } } diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertProject.cs b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertProject.cs new file mode 100644 index 0000000000..281c508cc5 --- /dev/null +++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/Src/ConvertProject.cs @@ -0,0 +1,102 @@ +/* + * Created by SharpDevelop. + * User: Daniel Grunwald + * Date: 14.01.2006 + * Time: 17:05 + */ + + +using System; +using System.Collections.Generic; +using System.IO; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Project.Converter; +using ICSharpCode.SharpDevelop.Internal.Templates; + +using ICSharpCode.NRefactory.PrettyPrinter; +using ICSharpCode.NRefactory.Parser; +using Boo.Lang.Compiler; +using Boo.Lang.Compiler.Ast; +using NRefactoryToBooConverter; + +namespace Grunwald.BooBinding +{ + public class ProjectToBooConverter : LanguageConverter + { + public override string TargetLanguageName { + get { + return BooLanguageBinding.LanguageName; + } + } + + CompilerErrorCollection errors = new CompilerErrorCollection(); + CompilerWarningCollection warnings = new CompilerWarningCollection(); + + protected override IProject CreateProject(string targetProjectDirectory, IProject sourceProject) + { + errors.Clear(); + warnings.Clear(); + + ProjectCreateInformation info = new ProjectCreateInformation(); + info.ProjectBasePath = targetProjectDirectory; + info.ProjectName = sourceProject.Name; + info.OutputProjectFileName = Path.Combine(targetProjectDirectory, Path.GetFileNameWithoutExtension(sourceProject.FileName) + ".booproj"); + return new BooProject(info); + } + + protected override void ConvertFile(FileProjectItem sourceItem, FileProjectItem targetItem) + { + string ext = Path.GetExtension(sourceItem.FileName); + if (".cs".Equals(ext, StringComparison.OrdinalIgnoreCase) || ".vb".Equals(ext, StringComparison.OrdinalIgnoreCase)) { + Module module; + IList specials; + CompileUnit compileUnit = new CompileUnit(); + using (StringReader r = new StringReader(ParserService.GetParseableFileContent(sourceItem.FileName))) { + module = Parser.ParseModule(compileUnit, r, ConvertBuffer.ApplySettings(sourceItem.VirtualName, errors, warnings), out specials); + } + if (module == null) { + conversionLog.AppendLine("Could not parse '" + sourceItem.FileName + "', see error list for details."); + base.ConvertFile(sourceItem, targetItem); + } else { + using (StringWriter w = new StringWriter()) { + BooPrinterVisitorWithComments printer = new BooPrinterVisitorWithComments(specials, w); + printer.OnModule(module); + printer.Finish(); + + targetItem.Include = Path.ChangeExtension(targetItem.Include, ".boo"); + File.WriteAllText(targetItem.FileName, w.ToString()); + } + } + } else { + base.ConvertFile(sourceItem, targetItem); + } + } + + protected override void AfterConversion(IProject targetProject) + { + base.AfterConversion(targetProject); + + if (errors.Count > 0) { + conversionLog.AppendLine(errors.Count + " conversion errors:"); + foreach (CompilerError error in errors) { + conversionLog.Append(" "); + conversionLog.AppendLine(error.ToString()); + } + conversionLog.AppendLine(); + } + if (warnings.Count > 0) { + conversionLog.AppendLine(warnings.Count + " warnings:"); + foreach (CompilerWarning warning in warnings) { + conversionLog.Append(" "); + conversionLog.AppendLine(warning.ToString()); + } + conversionLog.AppendLine(); + } + + + errors.Clear(); + warnings.Clear(); + } + } +} diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorGlobal.cs b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorGlobal.cs index 42d513dd79..bf33bca2ad 100644 --- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorGlobal.cs +++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/ConvertVisitorGlobal.cs @@ -178,7 +178,7 @@ namespace NRefactoryToBooConverter public object Visit(AttributeSection s, object data) { - if (s.AttributeTarget.ToLower() == "assembly") { + if (s.AttributeTarget.Equals("assembly", StringComparison.OrdinalIgnoreCase)) { foreach (ICSharpCode.NRefactory.Parser.AST.Attribute a in s.Attributes) { module.AssemblyAttributes.Add((B.Attribute)Visit(a, null)); } diff --git a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/Parser.cs b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/Parser.cs index 0bd11108b6..8ddcc3518b 100644 --- a/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/Parser.cs +++ b/src/AddIns/BackendBindings/Boo/NRefactoryToBooConverter/Project/Parser.cs @@ -40,6 +40,9 @@ namespace NRefactoryToBooConverter parser.Errors.Error = errorTrap.DefaultMsgError; parser.Parse(); specials = parser.Lexer.SpecialTracker.CurrentSpecials; + if (settings.IsVisualBasic) { + PreProcessingDirective.VBToCSharp(specials); + } // abort when file has errors if (errorTrap.count > 0) return null; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin index ad2777cef8..4895c59487 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin @@ -17,6 +17,14 @@ class = "ICSharpCode.Core.CSharpAmbience"/> + + + + + + + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs index 34f7c6c792..aa50090061 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs @@ -42,7 +42,7 @@ namespace CSharpBinding if (ext == null) { return false; } - return ext.ToUpper() == ".CS"; + return ext.Equals(".CS", StringComparison.OrdinalIgnoreCase); } public string GetCompiledOutputName(string fileName) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs index d1605773cc..50fe55564e 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs @@ -45,7 +45,7 @@ namespace CSharpBinding.Parser public bool CanParse(string fileName) { - return Path.GetExtension(fileName).ToUpper() == ".CS"; + return Path.GetExtension(fileName).Equals(".CS", StringComparison.OrdinalIgnoreCase); } public bool CanParse(IProject project) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs new file mode 100644 index 0000000000..da68c86a85 --- /dev/null +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBToCSharpConverter.cs @@ -0,0 +1,49 @@ +/* + * Created by SharpDevelop. + * User: Daniel Grunwald + * Date: 14.01.2006 + * Time: 14:50 + */ + +using System; +using System.Collections.Generic; +using System.IO; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Project.Converter; +using ICSharpCode.SharpDevelop.Internal.Templates; +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +namespace CSharpBinding +{ + public class VBToCSharpConverter : NRefactoryLanguageConverter + { + public override string TargetLanguageName { + get { + return CSharpLanguageBinding.LanguageName; + } + } + + protected override void ConvertFile(FileProjectItem sourceItem, FileProjectItem targetItem) + { + ConvertFile(sourceItem, targetItem, ".vb", ".cs", SupportedLanguage.VBNet, new CSharpOutputVisitor()); + } + + protected override void ConvertAst(CompilationUnit compilationUnit, List specials) + { + PreProcessingDirective.VBToCSharp(specials); + new VBNetToCSharpConvertVisitor().Visit(compilationUnit, null); + } + + protected override IProject CreateProject(string targetProjectDirectory, IProject sourceProject) + { + ProjectCreateInformation info = new ProjectCreateInformation(); + info.ProjectBasePath = targetProjectDirectory; + info.ProjectName = sourceProject.Name; + info.OutputProjectFileName = Path.Combine(targetProjectDirectory, Path.GetFileNameWithoutExtension(sourceProject.FileName) + ".csproj"); + return new CSharpProject(info); + } + } +} diff --git a/src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs b/src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs index c7f38f472f..bed2afe40b 100644 --- a/src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs +++ b/src/AddIns/BackendBindings/ILAsmBinding/Project/Src/ILAsmLanguageBinding.cs @@ -43,7 +43,7 @@ namespace ICSharpCode.ILAsmBinding if (ext == null) { return false; } - return ext.ToUpper() == ".IL"; + return ext.Equals(".IL", StringComparison.OrdinalIgnoreCase); } public string GetCompiledOutputName(string fileName) diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs index 200411b258..7b9fd3c493 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/FormattingStrategy/VBNetFormattingStrategy.cs @@ -221,7 +221,7 @@ namespace VBNetBinding.FormattingStrategy bool IsElseConstruct(string line) { - string t = StripComment(line).ToLower(); + string t = StripComment(line).ToLowerInvariant(); if (t.StartsWith("case ")) return true; if (t == "else" || t.StartsWith("elseif ")) return true; if (t == "catch" || t.StartsWith("catch ")) return true; diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs index 3dfc7f5f9a..435dae835b 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Parser/Parser.cs @@ -45,7 +45,7 @@ namespace VBNetBinding.Parser public bool CanParse(string fileName) { - return Path.GetExtension(fileName).ToUpper() == ".VB"; + return Path.GetExtension(fileName).Equals(".VB", StringComparison.OrdinalIgnoreCase); } public bool CanParse(IProject project) @@ -60,7 +60,7 @@ namespace VBNetBinding.Parser ICSharpCode.NRefactory.Parser.PreProcessingDirective directive = tracker.CurrentSpecials[i] as ICSharpCode.NRefactory.Parser.PreProcessingDirective; if (directive != null) { - if (directive.Cmd.ToLower() == "#region") + if (directive.Cmd.Equals("#region", StringComparison.OrdinalIgnoreCase)) { int deep = 1; for (int j = i + 1; j < tracker.CurrentSpecials.Count; ++j) @@ -68,13 +68,13 @@ namespace VBNetBinding.Parser ICSharpCode.NRefactory.Parser.PreProcessingDirective nextDirective = tracker.CurrentSpecials[j] as ICSharpCode.NRefactory.Parser.PreProcessingDirective; if (nextDirective != null) { - switch (nextDirective.Cmd.ToLower()) + switch (nextDirective.Cmd.ToLowerInvariant()) { case "#region": ++deep; break; case "#end": - if (nextDirective.Arg.ToLower() == "region") { + if (nextDirective.Arg.Equals("region", StringComparison.OrdinalIgnoreCase)) { --deep; if (deep == 0) { cu.FoldingRegions.Add(new FoldingRegion(directive.Arg.Trim('"'), new DomRegion(directive.StartPosition, nextDirective.EndPosition))); diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBConverter.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBConverter.cs new file mode 100644 index 0000000000..4f80e83124 --- /dev/null +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBConverter.cs @@ -0,0 +1,49 @@ +/* + * Created by SharpDevelop. + * User: Daniel Grunwald + * Date: 14.01.2006 + * Time: 14:50 + */ + +using System; +using System.Collections.Generic; +using System.IO; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Project.Converter; +using ICSharpCode.SharpDevelop.Internal.Templates; +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +namespace VBNetBinding +{ + public class CSharpToVBConverter : NRefactoryLanguageConverter + { + public override string TargetLanguageName { + get { + return VBNetLanguageBinding.LanguageName; + } + } + + protected override void ConvertFile(FileProjectItem sourceItem, FileProjectItem targetItem) + { + ConvertFile(sourceItem, targetItem, ".cs", ".vb", SupportedLanguage.CSharp, new VBNetOutputVisitor()); + } + + protected override void ConvertAst(CompilationUnit compilationUnit, List specials) + { + PreProcessingDirective.CSharpToVB(specials); + new CSharpToVBNetConvertVisitor().Visit(compilationUnit, null); + } + + protected override IProject CreateProject(string targetProjectDirectory, IProject sourceProject) + { + ProjectCreateInformation info = new ProjectCreateInformation(); + info.ProjectBasePath = targetProjectDirectory; + info.ProjectName = sourceProject.Name; + info.OutputProjectFileName = Path.Combine(targetProjectDirectory, Path.GetFileNameWithoutExtension(sourceProject.FileName) + ".vbproj"); + return new VBNetProject(info); + } + } +} diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs index 8d3299ce07..d91ec5277a 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/VBNetProject.cs @@ -72,7 +72,9 @@ namespace VBNetBinding { ParseProjectContent pc = base.CreateProjectContent(); ReferenceProjectItem vbRef = new ReferenceProjectItem(this, "Microsoft.VisualBasic"); - pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(vbRef)); + if (vbRef != null) { + pc.ReferencedContents.Add(ProjectContentRegistry.GetProjectContentForReference(vbRef)); + } MyNamespaceBuilder.BuildNamespace(this, pc); return pc; } diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs index 4106d024e7..6d5668813f 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/Src/VBNetLanguageBinding.cs @@ -43,7 +43,7 @@ namespace VBNetBinding if (ext == null) { return false; } - return ext.ToUpper() == ".VB"; + return ext.Equals(".VB", StringComparison.OrdinalIgnoreCase); } public string GetCompiledOutputName(string fileName) diff --git a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin index 6ed59331f4..cd91c6d966 100644 --- a/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin +++ b/src/AddIns/BackendBindings/VBNetBinding/Project/VBNetBinding.addin @@ -31,6 +31,14 @@ class = "VBNetBinding.Parser.TParser"/> + + + + + + + diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs index 51c1c4b3a6..9dd6bef156 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/AddNewFileCommand.cs @@ -67,7 +67,7 @@ namespace ResourceEditor object loadResource(string name) { - switch (Path.GetExtension(name).ToUpper()) { + switch (Path.GetExtension(name).ToUpperInvariant()) { case ".CUR": try { return new Cursor(name); diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs index 9c64d30eed..bad31cd0d2 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs @@ -22,8 +22,8 @@ namespace ResourceEditor // IDisplayBinding interface public bool CanCreateContentForFile(string fileName) { - return Path.GetExtension(fileName).ToUpper() == ".RESOURCES" || - Path.GetExtension(fileName).ToUpper() == ".RESX"; + return Path.GetExtension(fileName).Equals(".RESOURCES", StringComparison.OrdinalIgnoreCase) || + Path.GetExtension(fileName).Equals(".RESX", StringComparison.OrdinalIgnoreCase); } public bool CanCreateContentForLanguage(string language) @@ -87,7 +87,7 @@ namespace ResourceEditor { Save(FileName); } - + public override void Load(string filename) { resourceEditor.ResourceList.LoadFile(filename); @@ -144,7 +144,7 @@ namespace ResourceEditor public void Cut() { - if (resourceEditor.ResourceList.WriteProtected || resourceEditor.ResourceList.SelectedItems.Count < 1) + if (resourceEditor.ResourceList.WriteProtected || resourceEditor.ResourceList.SelectedItems.Count < 1) return; Hashtable tmphash = new Hashtable(); @@ -183,11 +183,11 @@ namespace ResourceEditor Hashtable tmphash = (Hashtable)dob.GetData(typeof(Hashtable)); foreach (DictionaryEntry entry in tmphash) { - object resourceValue = GetClonedResource(entry.Value); + object resourceValue = GetClonedResource(entry.Value); ResourceItem item; if (!resourceEditor.ResourceList.Resources.ContainsKey((string)entry.Key)) { - item = new ResourceItem(entry.Key.ToString(), resourceValue); + item = new ResourceItem(entry.Key.ToString(), resourceValue); } else { int count = 1; string newNameBase = entry.Key.ToString() + " "; @@ -212,7 +212,7 @@ namespace ResourceEditor /// /// A resource to clone. /// A cloned resource if the object implements - /// the ICloneable interface, otherwise the + /// the ICloneable interface, otherwise the /// object. object GetClonedResource(object resource) { @@ -224,7 +224,7 @@ namespace ResourceEditor } else { clonedResource = resource; } - + return clonedResource; } @@ -238,7 +238,7 @@ namespace ResourceEditor DialogResult rc; try { - + rc=MessageBox.Show(ResourceService.GetString("ResourceEditor.DeleteEntry.Confirm"),ResourceService.GetString("ResourceEditor.DeleteEntry.Title"),MessageBoxButtons.OKCancel); } catch { @@ -255,7 +255,7 @@ namespace ResourceEditor ////if (item.Text != null) { resourceEditor.ResourceList.Resources.Remove(item.Text); resourceEditor.ResourceList.Items.Remove(item); - // and set dirty flag + // and set dirty flag resourceEditor.ResourceList.OnChanged(); } } diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaAssociation.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaAssociation.cs index 31f7372e5b..4a914e1ddf 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaAssociation.cs +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlSchemaAssociation.cs @@ -84,7 +84,7 @@ namespace ICSharpCode.XmlEditor { XmlSchemaAssociation association = null; - switch (extension.ToLower()) { + switch (extension.ToLowerInvariant()) { case ".wxs": association = new XmlSchemaAssociation(extension, @"http://schemas.microsoft.com/wix/2003/01/wi"); break; diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs index b69708ce4c..6bd06a2796 100644 --- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs +++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlView.cs @@ -675,7 +675,7 @@ namespace ICSharpCode.XmlEditor /// void PropertyChanged(object sender, PropertyChangedEventArgs e) { - string extension = Path.GetExtension(xmlEditor.FileName).ToLower(); + string extension = Path.GetExtension(xmlEditor.FileName).ToLowerInvariant(); if (e.Key == extension) { SetDefaultSchema(extension); } else if (e.Key == XmlEditorAddInOptions.ShowAttributesWhenFoldedPropertyName) { @@ -699,7 +699,7 @@ namespace ICSharpCode.XmlEditor /// void UserSchemaAdded(object source, EventArgs e) { - SetDefaultSchema(Path.GetExtension(xmlEditor.FileName).ToLower()); + SetDefaultSchema(Path.GetExtension(xmlEditor.FileName).ToLowerInvariant()); } /// @@ -708,7 +708,7 @@ namespace ICSharpCode.XmlEditor /// void UserSchemaRemoved(object source, EventArgs e) { - SetDefaultSchema(Path.GetExtension(xmlEditor.FileName).ToLower()); + SetDefaultSchema(Path.GetExtension(xmlEditor.FileName).ToLowerInvariant()); } /// diff --git a/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs b/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs index 70322345ee..2aa23de39b 100644 --- a/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs +++ b/src/AddIns/Misc/AddinScout/Project/Src/Gui/AddInDetailsPanel.cs @@ -51,7 +51,7 @@ namespace AddInScout ListViewItem selectedItem = ((ListView)sender).SelectedItems[0]; - if (selectedItem.Text.ToLower().Equals("url")) { + if (selectedItem.Text.Equals("url", StringComparison.OrdinalIgnoreCase)) { string url = selectedItem.SubItems[1].Text; try { System.Diagnostics.Process.Start(url); @@ -59,7 +59,7 @@ namespace AddInScout // Silent: On my System the browser starts but Process.Start throws an exception. Mike 2.11.2004/Notebook/ICE 1517 on the way to DevCon Europe 2004 // MessageBox.Show("Unable to Start Browser\n" + ex.ToString()); } - } else if (selectedItem.Text.ToLower().Equals("filename")) { + } else if (selectedItem.Text.Equals("filename", StringComparison.OrdinalIgnoreCase)) { FileService.OpenFile(selectedItem.SubItems[1].Text); } diff --git a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/RemotingConfigurationHelpper.cs b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/RemotingConfigurationHelpper.cs index 3b6869084e..40b5d24fd6 100644 --- a/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/RemotingConfigurationHelpper.cs +++ b/src/AddIns/Misc/Debugger/Debugger.AddIn/Project/Src/Service/RemotingConfigurationHelpper.cs @@ -30,7 +30,7 @@ namespace ICSharpCode.SharpDevelop.Services string path = null; foreach (System.Reflection.Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { string fullFilename = assembly.Location; - if (Path.GetFileName(fullFilename).ToLower() == assemblyName.ToLower()) { + if (Path.GetFileName(fullFilename).Equals(assemblyName, StringComparison.OrdinalIgnoreCase)) { path = Path.GetDirectoryName(fullFilename); break; } @@ -67,7 +67,7 @@ namespace ICSharpCode.SharpDevelop.Services { foreach (System.Reflection.Assembly assembly in AppDomain.CurrentDomain.GetAssemblies()) { string fullFilename = assembly.Location; - if (Path.GetFileNameWithoutExtension(fullFilename).ToLower() == args.Name.ToLower() || + if (Path.GetFileNameWithoutExtension(fullFilename).Equals(args.Name, StringComparison.OrdinalIgnoreCase) || assembly.FullName == args.Name) { return assembly; } diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs index a1bc9def95..7221675bde 100644 --- a/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/EditorHighlightColor.cs @@ -212,8 +212,8 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes public string ToXml() { string str = ""; - str += "bold=\"" + bold.ToString().ToLower() + "\" "; - str += "italic=\"" + italic.ToString().ToLower() + "\" "; + str += "bold=\"" + bold.ToString().ToLowerInvariant() + "\" "; + str += "italic=\"" + italic.ToString().ToLowerInvariant() + "\" "; if (hasForeColor) { str += "color=\""; if (sysForeColor) { diff --git a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs index 0439b58626..05f211b785 100644 --- a/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs +++ b/src/AddIns/Misc/HighlightingEditor/Project/Src/Nodes/RuleSetNode.cs @@ -105,7 +105,7 @@ namespace ICSharpCode.SharpDevelop.AddIns.HighlightingEditor.Nodes { if (reference != "") return "\t\t\n\n"; - string ret = "\t\t +// // // // diff --git a/src/AddIns/Misc/PInvokeAddIn/Project/Src/InsertPInvokeSignaturesForm.cs b/src/AddIns/Misc/PInvokeAddIn/Project/Src/InsertPInvokeSignaturesForm.cs index a9a1e3404e..1b1cc3304c 100644 --- a/src/AddIns/Misc/PInvokeAddIn/Project/Src/InsertPInvokeSignaturesForm.cs +++ b/src/AddIns/Misc/PInvokeAddIn/Project/Src/InsertPInvokeSignaturesForm.cs @@ -182,7 +182,7 @@ namespace ICSharpCode.PInvokeAddIn StringBuilder signatureBuilder = new StringBuilder(); foreach (SignatureInfo info in signatures) { - if (info.Language.ToLower() == language.ToLower()) { + if (info.Language.Equals(language, StringComparison.OrdinalIgnoreCase)) { signatureBuilder.Append(GetSignature(info)); signatureBuilder.Append("\r\n"); } @@ -212,7 +212,7 @@ namespace ICSharpCode.PInvokeAddIn foreach (SignatureInfo info in signatures) { bool languageWanted = false; - if ((language == allLanguages) || (language.ToLower() == info.Language.ToLower())) { + if ((language == allLanguages) || (language.Equals(info.Language, StringComparison.OrdinalIgnoreCase))) { languageWanted = true; } @@ -313,8 +313,8 @@ namespace ICSharpCode.PInvokeAddIn { TextEditorControl textEditor = GetTextEditorControl(); if (textEditor != null) { - string fileExtension = Path.GetExtension(textEditor.ActiveTextAreaControl.TextArea.MotherTextEditorControl.FileName).ToLower(); - if (fileExtension == ".vb") { + string fileExtension = Path.GetExtension(textEditor.ActiveTextAreaControl.TextArea.MotherTextEditorControl.FileName); + if (fileExtension.Equals(".vb", StringComparison.OrdinalIgnoreCase)) { return "VB"; } } diff --git a/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs b/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs index 316ffaf849..3e8fff9e93 100644 --- a/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs +++ b/src/AddIns/Misc/StartPage/Project/Src/ICSharpCodePage.cs @@ -635,7 +635,7 @@ namespace ICSharpCode.StartPage public string Render(string section) { startPageLocation = FileUtility.Combine(Application.StartupPath, "..", "data", "resources", "startpage"); - switch (section.ToLower()) { + switch (section.ToLowerInvariant()) { case "start": ContentBarText = StringParser.Parse("${res:StartPage.StartMenu.BarNameName}"); break; @@ -655,7 +655,7 @@ namespace ICSharpCode.StartPage RenderPageTopSection(builder); RenderFirstPageBodySection(builder); - switch (section.ToLower()) { + switch (section.ToLowerInvariant()) { case "start": RenderSectionStartBody(builder); break; diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/FileSyntaxModeProvider.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/FileSyntaxModeProvider.cs index 0b76972442..257788cc3c 100644 --- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/FileSyntaxModeProvider.cs +++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Document/HighlightingStrategy/SyntaxModes/FileSyntaxModeProvider.cs @@ -58,7 +58,7 @@ namespace ICSharpCode.TextEditor.Document string[] files = Directory.GetFiles(directory); ArrayList modes = new ArrayList(); foreach (string file in files) { - if (Path.GetExtension(file).ToUpper() == ".XSHD") { + if (Path.GetExtension(file).Equals(".XSHD", StringComparison.OrdinalIgnoreCase)) { XmlTextReader reader = new XmlTextReader(file); while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element) { diff --git a/src/Libraries/NRefactory/Project/Src/Lexer/Special/PreProcessingDirective.cs b/src/Libraries/NRefactory/Project/Src/Lexer/Special/PreProcessingDirective.cs index c8e27c498f..7e663db306 100644 --- a/src/Libraries/NRefactory/Project/Src/Lexer/Special/PreProcessingDirective.cs +++ b/src/Libraries/NRefactory/Project/Src/Lexer/Special/PreProcessingDirective.cs @@ -14,7 +14,7 @@ namespace ICSharpCode.NRefactory.Parser { public class PreProcessingDirective : AbstractSpecial { - public static void VBToCSharp(List list) + public static void VBToCSharp(IList list) { for (int i = 0; i < list.Count; ++i) { if (list[i] is PreProcessingDirective) diff --git a/src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs b/src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs index 2c333957e3..9c8bed3369 100644 --- a/src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Output/IOutputASTVisitor.cs @@ -21,6 +21,10 @@ namespace ICSharpCode.NRefactory.PrettyPrinter /// public interface IOutputASTVisitor : IAstVisitor { + NodeTracker NodeTracker { + get; + } + string Text { get; } diff --git a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj index 32bc838bad..0416fa1f27 100644 --- a/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj +++ b/src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj @@ -742,6 +742,7 @@ + diff --git a/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs b/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs index c52fb6cf6a..817f5c9e08 100644 --- a/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs +++ b/src/Main/Base/Project/Src/Commands/CustomStringTagProvider.cs @@ -75,7 +75,7 @@ namespace ICSharpCode.SharpDevelop.Commands return ProjectService.CurrentProject == null ? "" : ProjectService.CurrentProject.Name; } - switch (tag.ToUpper()) { + switch (tag.ToUpperInvariant()) { case "NETSDKDIR": return FileUtility.NetSdkInstallRoot; case "ITEMPATH": diff --git a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs index dc308eae57..8410e0a8c6 100644 --- a/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs +++ b/src/Main/Base/Project/Src/Dom/NRefactoryResolver/NRefactoryASTConvertVisitor.cs @@ -191,7 +191,7 @@ namespace ICSharpCode.SharpDevelop.Dom.NRefactoryResolver AttributeTarget target = AttributeTarget.None; if (section.AttributeTarget != null && section.AttributeTarget != "") { - switch (section.AttributeTarget.ToUpper()) { + switch (section.AttributeTarget.ToUpperInvariant()) { case "ASSEMBLY": target = AttributeTarget.Assembly; break; diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs index 8541b40378..6ada4fc3ca 100644 --- a/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs +++ b/src/Main/Base/Project/Src/Gui/Dialogs/ReferenceDialog/WebReference.cs @@ -262,7 +262,7 @@ namespace ICSharpCode.SharpDevelop.Gui CodeDomProvider provider; - switch(Path.GetExtension(fileName).ToLower()) { + switch(Path.GetExtension(fileName).ToLowerInvariant()) { case ".cs": provider = new Microsoft.CSharp.CSharpCodeProvider(); break; diff --git a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs index f6d9bb0075..ae1d80e5c4 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ClassBrowser/Nodes/ReferenceFolderNode.cs @@ -104,7 +104,7 @@ namespace ICSharpCode.SharpDevelop.Gui int pos = rootNamespace.IndexOf(','); if (pos > 0) rootNamespace = rootNamespace.Substring(0, pos); - if (directory.ToLower().StartsWith(rootNamespace.ToLower())) { + if (directory.ToLowerInvariant().StartsWith(rootNamespace.ToLowerInvariant())) { directory = directory.Substring(rootNamespace.Length); } return directory; diff --git a/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs b/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs index a62ca6727d..75c17add57 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/FileScout.cs @@ -188,8 +188,8 @@ namespace ICSharpCode.SharpDevelop.Gui string key; // icon files and exe files can have their custom icons - if(Path.GetExtension(file).ToLower() == ".ico" || - Path.GetExtension(file).ToLower() == ".exe") { + if(Path.GetExtension(file).Equals(".ico", StringComparison.OrdinalIgnoreCase) || + Path.GetExtension(file).Equals(".exe", StringComparison.OrdinalIgnoreCase)) { key = file; } else { key = Path.GetExtension(file).ToLower(); @@ -258,7 +258,7 @@ namespace ICSharpCode.SharpDevelop.Gui { foreach(FileListItem fileItem in Items) { - if(fileItem.FullName.ToLower() == e.FullPath.ToLower()) { + if(fileItem.FullName.Equals(e.FullPath, StringComparison.OrdinalIgnoreCase)) { Items.Remove(fileItem); break; } @@ -269,7 +269,7 @@ namespace ICSharpCode.SharpDevelop.Gui { foreach(FileListItem fileItem in Items) { - if(fileItem.FullName.ToLower() == e.FullPath.ToLower()) { + if(fileItem.FullName.Equals(e.FullPath, StringComparison.OrdinalIgnoreCase)) { FileInfo info = new FileInfo(e.FullPath); @@ -295,7 +295,7 @@ namespace ICSharpCode.SharpDevelop.Gui { foreach(FileListItem fileItem in Items) { - if(fileItem.FullName.ToLower() == e.OldFullPath.ToLower()) { + if(fileItem.FullName.Equals(e.OldFullPath, StringComparison.OrdinalIgnoreCase)) { fileItem.FullName = e.FullPath; fileItem.Text = e.Name; break; @@ -474,18 +474,12 @@ namespace ICSharpCode.SharpDevelop.Gui void FileSelected(object sender, EventArgs e) { foreach (FileList.FileListItem item in filelister.SelectedItems) { - - switch (Path.GetExtension(item.FullName).ToUpper()) { - case ".CMBX": - case ".SLN": - ProjectService.LoadSolution(item.FullName); - break; - case ".PRJX": - // TODO: Load old projects. - break; - default: - FileService.OpenFile(item.FullName); - break; + if (ProjectService.IsSolutionExtension(Path.GetExtension(item.FullName))) { + ProjectService.LoadSolution(item.FullName); + } else if (ProjectService.IsProjectExtension(Path.GetExtension(item.FullName))) { + ProjectService.LoadProject(item.FullName); + } else { + FileService.OpenFile(item.FullName); } } } @@ -619,7 +613,7 @@ namespace ICSharpCode.SharpDevelop.Gui foreach(string dir in pathlist) { foreach(TreeNode childnode in curnode) { - if (((string)childnode.Tag).ToUpper().Equals(dir.ToUpper())) { + if (((string)childnode.Tag).Equals(dir, StringComparison.OrdinalIgnoreCase)) { SelectedNode = childnode; PopulateSubDirectory(childnode, 2); diff --git a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs index d289547fe0..9062c3ab7a 100644 --- a/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs +++ b/src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs @@ -29,7 +29,7 @@ namespace ICSharpCode.SharpDevelop.Project.Commands LanguageBindingDescriptor languageCodon = LanguageBindingService.GetCodonPerLanguageName(project.Language); for (int i = 0; i < fileFilters.Length; ++i) { for (int j = 0; j < languageCodon.Supportedextensions.Length; ++j) { - if (fileFilters[i].ToUpper().IndexOf(languageCodon.Supportedextensions[j].ToUpper()) >= 0) { + if (fileFilters[i].ToUpperInvariant().IndexOf(languageCodon.Supportedextensions[j].ToUpperInvariant()) >= 0) { return i + 1; } } diff --git a/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs b/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs index f52e86f7bd..bff16ff682 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs @@ -278,7 +278,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates string newFileDialogVisibleAttr = config.GetAttribute("newfiledialogvisible"); if (newFileDialogVisibleAttr != null && newFileDialogVisibleAttr.Length != 0) { - if (newFileDialogVisibleAttr.ToLower() == "false") + if (newFileDialogVisibleAttr.Equals("false", StringComparison.OrdinalIgnoreCase)) newFileDialogVisible = false; } diff --git a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs index e3fe29b88f..f7a3b7b37f 100644 --- a/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs +++ b/src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs @@ -172,7 +172,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates string newProjectDialogVisibleAttr = doc.DocumentElement.GetAttribute("newprojectdialogvisible"); if (newProjectDialogVisibleAttr != null && newProjectDialogVisibleAttr.Length != 0) { - if (newProjectDialogVisibleAttr.ToLower() == "false") + if (newProjectDialogVisibleAttr.Equals("false", StringComparison.OrdinalIgnoreCase)) newProjectDialogVisible = false; } diff --git a/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs b/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs index 125a831d2f..178805b7d5 100644 --- a/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs +++ b/src/Main/Base/Project/Src/Project/ConfigurationGuiHelper.cs @@ -188,7 +188,7 @@ namespace ICSharpCode.SharpDevelop.Project string oldValue = Get("True"); if (oldValue == "true" || oldValue == "false") { // keep value in lower case - Set(control.Checked.ToString().ToLower()); + Set(control.Checked.ToString().ToLowerInvariant()); } else { Set(control.Checked.ToString()); } diff --git a/src/Main/Base/Project/Src/Project/Converter/CombineToSolution.cs b/src/Main/Base/Project/Src/Project/Converter/CombineToSolution.cs index f13d80b3db..7a045841eb 100644 --- a/src/Main/Base/Project/Src/Project/Converter/CombineToSolution.cs +++ b/src/Main/Base/Project/Src/Project/Converter/CombineToSolution.cs @@ -33,7 +33,7 @@ namespace ICSharpCode.SharpDevelop.Project.Converter Match match = combineLinePattern.Match(content); while (match.Success) { string path = Path.Combine(solutionDirectory, match.Result("${FileName}")); - if (Path.GetExtension(path).ToUpper() == ".CMBX") { + if (".CMBX".Equals(Path.GetExtension(path), StringComparison.OrdinalIgnoreCase)) { ReadProjects(newSolution, path, projectFiles); } else { projectFiles.Add(path); diff --git a/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs new file mode 100644 index 0000000000..39c486f6e1 --- /dev/null +++ b/src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs @@ -0,0 +1,152 @@ +/* + * Created by SharpDevelop. + * User: Daniel Grunwald + * Date: 14.01.2006 + * Time: 14:10 + */ + +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Windows.Forms; +using ICSharpCode.Core; +using ICSharpCode.SharpDevelop.Project.Commands; +using ICSharpCode.NRefactory.Parser; +using ICSharpCode.NRefactory.Parser.AST; +using ICSharpCode.NRefactory.PrettyPrinter; + +namespace ICSharpCode.SharpDevelop.Project.Converter +{ + /// + /// Converts projects from one language to another, for example C# <-> VB + /// + public abstract class LanguageConverter : AbstractMenuCommand + { + protected abstract IProject CreateProject(string targetProjectDirectory, IProject sourceProject); + protected virtual void AfterConversion(IProject targetProject) {} + + public abstract string TargetLanguageName { get; } + + protected virtual void ConvertFile(FileProjectItem sourceItem, FileProjectItem targetItem) + { + if (!File.Exists(targetItem.FileName)) { + File.Copy(sourceItem.FileName, targetItem.FileName); + } + } + + protected virtual void CopyProperties(IProject sourceProject, IProject targetProject) + { + + } + + protected virtual void CopyItems(IProject sourceProject, IProject targetProject) + { + foreach (ProjectItem item in sourceProject.Items) { + FileProjectItem fileItem = item as FileProjectItem; + if (fileItem != null && FileUtility.IsBaseDirectory(sourceProject.Directory, fileItem.FileName)) { + FileProjectItem targetItem = new FileProjectItem(targetProject, fileItem.ItemType); + fileItem.CopyExtraPropertiesTo(targetItem); + targetItem.Include = fileItem.Include; + if (!Directory.Exists(Path.GetDirectoryName(targetItem.FileName))) { + Directory.CreateDirectory(Path.GetDirectoryName(targetItem.FileName)); + } + ConvertFile(fileItem, targetItem); + targetProject.Items.Add(targetItem); + } else { + // Adding the same item to two projects is only allowed because we will save and reload + // the target project. + targetProject.Items.Add(item); + } + } + } + + protected StringBuilder conversionLog; + + public override void Run() + { + conversionLog = new StringBuilder(); + conversionLog.AppendLine("SharpDevelop Project Converter"); + 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."); + return; + } + conversionLog.AppendLine("Source: " + sourceProject.Directory); + conversionLog.AppendLine("Target: " + targetProjectDirectory); + + Directory.CreateDirectory(targetProjectDirectory); + IProject targetProject = CreateProject(targetProjectDirectory, sourceProject); + CopyProperties(sourceProject, targetProject); + conversionLog.AppendLine(); + CopyItems(sourceProject, targetProject); + conversionLog.AppendLine(); + AfterConversion(targetProject); + conversionLog.AppendLine("Conversion complete."); + targetProject.Save(); + targetProject.Dispose(); + TreeNode node = ProjectBrowserPad.Instance.SelectedNode; + while (node != null) { + if (node is ISolutionFolderNode) { + AddExitingProjectToSolution.AddProject((ISolutionFolderNode)node, targetProject.FileName); + ProjectService.SaveSolution(); + break; + } + node = node.Parent; + } + FileService.NewFile("Conversion Results", "Text", conversionLog.ToString()); + } + } + + public abstract class NRefactoryLanguageConverter : LanguageConverter + { + protected abstract void ConvertAst(CompilationUnit compilationUnit, List specials); + + protected void ConvertFile(FileProjectItem sourceItem, FileProjectItem targetItem, + string sourceExtension, string targetExtension, + SupportedLanguage sourceLanguage, IOutputASTVisitor outputVisitor) + { + if (sourceExtension.Equals(Path.GetExtension(sourceItem.FileName), StringComparison.OrdinalIgnoreCase)) { + string code = ParserService.GetParseableFileContent(sourceItem.FileName); + IParser p = ParserFactory.CreateParser(sourceLanguage, new StringReader(code)); + 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(p.Errors.ErrorOutput); + base.ConvertFile(sourceItem, targetItem); + return; + } + + List specials = p.Lexer.SpecialTracker.CurrentSpecials; + + ConvertAst(p.CompilationUnit, specials); + + SpecialNodesInserter sni = new SpecialNodesInserter(specials, + new SpecialOutputVisitor(outputVisitor.OutputFormatter)); + outputVisitor.NodeTracker.NodeVisiting += sni.AcceptNodeStart; + outputVisitor.NodeTracker.NodeVisited += sni.AcceptNodeEnd; + outputVisitor.NodeTracker.NodeChildrenVisited += sni.AcceptNodeEnd; + outputVisitor.Visit(p.CompilationUnit, null); + sni.Finish(); + + p.Dispose(); + + if (outputVisitor.Errors.count > 0) { + conversionLog.AppendLine(); + conversionLog.AppendLine(outputVisitor.Errors.count + " error(s) converting " + sourceItem.FileName + ":"); + conversionLog.AppendLine(outputVisitor.Errors.ErrorOutput); + } + + targetItem.Include = Path.ChangeExtension(targetItem.Include, targetExtension); + File.WriteAllText(targetItem.FileName, outputVisitor.Text); + } else { + base.ConvertFile(sourceItem, targetItem); + } + } + } +} diff --git a/src/Main/Base/Project/Src/Project/MSBuildProject.cs b/src/Main/Base/Project/Src/Project/MSBuildProject.cs index 3f51ecaf96..2d8d613015 100644 --- a/src/Main/Base/Project/Src/Project/MSBuildProject.cs +++ b/src/Main/Base/Project/Src/Project/MSBuildProject.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Project protected virtual void Create(ProjectCreateInformation information) { Name = information.ProjectName; - IdGuid = "{" + Guid.NewGuid().ToString().ToUpper() + "}"; + IdGuid = "{" + Guid.NewGuid().ToString().ToUpperInvariant() + "}"; BaseConfiguration["OutputType"] = "Exe"; BaseConfiguration["RootNamespace"] = information.ProjectName; BaseConfiguration["AssemblyName"] = information.ProjectName; diff --git a/src/Main/Base/Project/Src/Project/Solution/Solution.cs b/src/Main/Base/Project/Src/Project/Solution/Solution.cs index c4ed350d25..cf6cf82231 100644 --- a/src/Main/Base/Project/Src/Project/Solution/Solution.cs +++ b/src/Main/Base/Project/Src/Project/Solution/Solution.cs @@ -218,7 +218,7 @@ namespace ICSharpCode.SharpDevelop.Project public SolutionFolder CreateFolder(string folderName) { - return new SolutionFolder(folderName, folderName, "{" + Guid.NewGuid().ToString().ToUpper() + "}"); + return new SolutionFolder(folderName, folderName, "{" + Guid.NewGuid().ToString().ToUpperInvariant() + "}"); } diff --git a/src/Main/Base/Project/Src/Services/File/RecentOpen.cs b/src/Main/Base/Project/Src/Services/File/RecentOpen.cs index b53e87d1b8..0cf65f4409 100644 --- a/src/Main/Base/Project/Src/Services/File/RecentOpen.cs +++ b/src/Main/Base/Project/Src/Services/File/RecentOpen.cs @@ -91,7 +91,7 @@ namespace ICSharpCode.Core public void AddLastFile(string name) { for (int i = 0; i < lastfile.Count; ++i) { - if (lastfile[i].ToString().ToLower() == name.ToLower()) { + if (lastfile[i].ToString().Equals(name, StringComparison.OrdinalIgnoreCase)) { lastfile.RemoveAt(i); } } @@ -126,7 +126,7 @@ namespace ICSharpCode.Core public void AddLastProject(string name) { for (int i = 0; i < lastproject.Count; ++i) { - if (lastproject[i].ToString().ToLower() == name.ToLower()) { + if (lastproject[i].ToString().Equals(name, StringComparison.OrdinalIgnoreCase)) { lastproject.RemoveAt(i); } } diff --git a/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs b/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs index bdf4fac1d7..da3d4ea65b 100644 --- a/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs +++ b/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingService.cs @@ -66,9 +66,9 @@ namespace ICSharpCode.Core public static LanguageBindingDescriptor GetCodonPerProjectFile(string fileName) { - string ext = Path.GetExtension(fileName).ToUpper(); + string ext = Path.GetExtension(fileName).ToUpperInvariant(); foreach (LanguageBindingDescriptor binding in bindings) { - if (binding.ProjectFileExtension.ToUpper() == ext) { + if (binding.ProjectFileExtension.ToUpperInvariant() == ext) { return binding; } } diff --git a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs index 8b1834e497..d6d1ff3f57 100644 --- a/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs +++ b/src/Main/Base/Project/Src/Services/ParserService/ParserService.cs @@ -400,7 +400,9 @@ namespace ICSharpCode.Core foreach (string defaultReference in defaultReferences) { ReferenceProjectItem item = new ReferenceProjectItem(null, defaultReference); IProjectContent pc = ProjectContentRegistry.GetProjectContentForReference(item); - defaultProjectContent.ReferencedContents.Add(pc); + if (pc != null) { + defaultProjectContent.ReferencedContents.Add(pc); + } } WorkbenchSingleton.Workbench.ActiveWorkbenchWindowChanged += delegate { if (WorkbenchSingleton.Workbench.ActiveWorkbenchWindow != null) { diff --git a/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs b/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs index 2c65b6dfc8..dbe7b87f28 100644 --- a/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs +++ b/src/Main/Base/Project/Src/TextEditor/Commands/ToolCommands.cs @@ -41,7 +41,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands using (ColorDialog cd = new ColorDialog()) { if (cd.ShowDialog(ICSharpCode.SharpDevelop.Gui.WorkbenchSingleton.MainForm) == DialogResult.OK) { - string ext = Path.GetExtension(textarea.FileName).ToLower(); + string ext = Path.GetExtension(textarea.FileName).ToLowerInvariant(); string colorstr; if (ext == ".cs" || ext == ".vb" || ext == ".boo") { if (cd.Color.IsKnownColor) { @@ -228,7 +228,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Commands return; } - string newGuid = Guid.NewGuid().ToString().ToUpper(); + string newGuid = Guid.NewGuid().ToString().ToUpperInvariant(); textEditor.ActiveTextAreaControl.TextArea.InsertString(newGuid); } diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs index 29c671577d..5e08a80a73 100644 --- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs +++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs @@ -231,7 +231,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor xml.Read(); do { if (xml.NodeType == XmlNodeType.Element) { - string elname = xml.Name.ToLower(); + string elname = xml.Name.ToLowerInvariant(); switch (elname) { case "filterpriority": xml.Skip(); diff --git a/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs b/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs index 056940c6c4..edf69396aa 100644 --- a/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs +++ b/src/Main/Core/Project/Src/Services/FileUtility/FileUtility.cs @@ -117,7 +117,7 @@ namespace ICSharpCode.Core string[] aPath = absPath.Split(separators); int indx = 0; for(; indx < Math.Min(bPath.Length, aPath.Length); ++indx){ - if(!bPath[indx].ToUpper().Equals(aPath[indx].ToUpper())) + if(!bPath[indx].Equals(aPath[indx], StringComparison.OrdinalIgnoreCase)) break; } diff --git a/src/Main/StartUp/Project/SharpDevelopMain.cs b/src/Main/StartUp/Project/SharpDevelopMain.cs index 7bb2e66bc7..592fb4af19 100644 --- a/src/Main/StartUp/Project/SharpDevelopMain.cs +++ b/src/Main/StartUp/Project/SharpDevelopMain.cs @@ -125,6 +125,7 @@ namespace ICSharpCode.SharpDevelop commandLineArgs = args; bool noLogo = false; + Application.SetCompatibleTextRenderingDefault(false); SplashScreenForm.SetCommandLineArgs(args); foreach (string parameter in SplashScreenForm.GetParameterList()) {