Browse Source

Move all code related to file/project templates to SharpDevelop.Templates.

pull/32/merge
Daniel Grunwald 13 years ago
parent
commit
571a8d08bb
  1. 2
      .gitignore
  2. 1
      src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs
  3. 1
      src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs
  4. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MSBuildProjectHelper.cs
  5. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs
  6. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/WebProjectTests.cs
  7. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpProjectBinding.cs
  8. 23
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpFullParseInformation.cs
  9. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs
  10. 1
      src/AddIns/BackendBindings/CppBinding/CppBinding/CppProjectBinding.cs
  11. 1
      src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs
  12. 1
      src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs
  13. 1
      src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs
  14. 1
      src/AddIns/BackendBindings/WixBinding/Project/Src/WixProjectBinding.cs
  15. 1
      src/AddIns/BackendBindings/WixBinding/Test/Gui/AddWixProjectNodeTestFixture.cs
  16. 1
      src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixExtensionNodeTestFixture.cs
  17. 1
      src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixLibraryNodeTestFixture.cs
  18. 1
      src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithLibraryItemsTestFixture.cs
  19. 1
      src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithUnexpandedLibraryItemsTestFixture.cs
  20. 1
      src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithWixExtensionItemsTestFixture.cs
  21. 1
      src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixExtensionTestFixture.cs
  22. 1
      src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixLibraryTestFixture.cs
  23. 1
      src/AddIns/BackendBindings/WixBinding/Test/Project/CreateNewWixProjectObjectTestFixture.cs
  24. 1
      src/AddIns/BackendBindings/WixBinding/Test/Project/CreateWixProjectItemTests.cs
  25. 1
      src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs
  26. 1
      src/AddIns/BackendBindings/WixBinding/Test/Project/WixNodeBuilderCanBuildWixProjectTestFixture.cs
  27. 1
      src/AddIns/BackendBindings/WixBinding/Test/Utils/WixBindingTestsHelper.cs
  28. 1
      src/AddIns/BackendBindings/WixBinding/Test/Utils/WixProjectWithOverriddenSave.cs
  29. 1
      src/AddIns/Misc/PackageManagement/Project/Src/InstallProjectTemplatePackagesCommand.cs
  30. 1
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs
  31. 1
      src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs
  32. 1
      src/AddIns/Misc/PackageManagement/Test/Src/InstallProjectTemplatePackagesCommandTests.cs
  33. 1
      src/AddIns/Misc/TextTemplating/Test/Helpers/ProjectHelper.cs
  34. 1
      src/AddIns/Misc/TextTemplating/Test/Helpers/TestableProject.cs
  35. 1
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs
  36. 1
      src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyResolverTests.cs
  37. 17
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  38. 0
      src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/BooleanTypeConverter.cs
  39. 7
      src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs
  40. 2
      src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
  41. 1
      src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs
  42. 2
      src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.xaml.cs
  43. 1
      src/Main/Base/Project/Src/Gui/Pads/ProjectBrowser/Commands/FolderNodeCommands.cs
  44. 2
      src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs
  45. 2
      src/Main/Base/Project/Src/Internal/Templates/StringParserPropertyContainer.cs
  46. 3
      src/Main/Base/Project/Src/Internal/Templates/TemplateCategoryComparer.cs
  47. 2
      src/Main/Base/Project/Src/Internal/Templates/TemplateCategorySortOrderFile.cs
  48. 84
      src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs
  49. 1
      src/Main/Base/Project/Src/Project/AbstractProject.cs
  50. 1
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  51. 1
      src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs
  52. 5
      src/Main/Base/Project/Templates/ITemplateService.cs
  53. 79
      src/Main/Base/Project/Templates/TextTemplate.cs
  54. 85
      src/Main/Base/Project/Util/SharpDevelopExtensions.cs
  55. 9
      src/Main/Base/Test/Templates/CategorySortOrderTests.cs
  56. 3
      src/Main/Base/Test/Templates/FileTemplateCategoryComparerTests.cs
  57. 3
      src/Main/Base/Test/Templates/ProjectTemplateCategoryComparerTests.cs
  58. 1
      src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs
  59. 7
      src/Main/SharpDevelop/Services/UIService.cs
  60. 12
      src/Main/SharpDevelop/SharpDevelop.csproj
  61. 0
      src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedProperty.cs
  62. 4
      src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedTypeDescriptor.cs
  63. 4
      src/Main/SharpDevelop/Templates/CustomizationObject/TemplateTypeConverter.cs
  64. 3
      src/Main/SharpDevelop/Templates/File/FileDescriptionTemplate.cs
  65. 3
      src/Main/SharpDevelop/Templates/File/FileTemplateImpl.cs
  66. 2
      src/Main/SharpDevelop/Templates/File/ScriptRunner.cs
  67. 3
      src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs
  68. 2
      src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs
  69. 3
      src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs
  70. 28
      src/Main/SharpDevelop/Templates/TemplateService.cs

2
.gitignore vendored

@ -15,7 +15,7 @@ bin/ @@ -15,7 +15,7 @@ bin/
/src/Tools/UpdateAssemblyInfo/bin
/src/Setup/SharpDevelop.Setup.wixproj.user
/src/Main/ICSharpCode.SharpDevelop.Sda/ICSharpCode.SharpDevelop.Sda.dll.config
/src/Main/SharpDevelop/SharpDevelop.exe.config
/src/Main/SharpDevelop/app.config
/src/Main/GlobalAssemblyInfo.cs
/src/AddIns/Misc/UsageDataCollector/UsageDataCollector.AddIn/AnalyticsMonitor.AppProperties.cs

1
src/AddIns/Analysis/CodeCoverage/Test/Coverage/OpenCoverSettingsTestFixture.cs

@ -9,7 +9,6 @@ using System.Xml; @@ -9,7 +9,6 @@ using System.Xml;
using ICSharpCode.CodeCoverage;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using Rhino.Mocks;

1
src/AddIns/Analysis/UnitTesting/Test/Utils/MockCSharpProject.cs

@ -6,7 +6,6 @@ using ICSharpCode.Core; @@ -6,7 +6,6 @@ using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem.Implementation;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Rhino.Mocks;

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/MSBuildProjectHelper.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Rhino.Mocks;

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/TestableProject.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Rhino.Mocks;
using Dom = ICSharpCode.SharpDevelop.Dom;

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/WebProjectTests.cs

@ -10,7 +10,6 @@ using System.Xml.Linq; @@ -10,7 +10,6 @@ using System.Xml.Linq;
using AspNet.Mvc.Tests.Helpers;
using ICSharpCode.AspNet.Mvc;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using NUnit.Framework;
using Rhino.Mocks;

1
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpProjectBinding.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using System;
using System.Xml;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
namespace CSharpBinding

23
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/CSharpFullParseInformation.cs

@ -17,7 +17,7 @@ namespace CSharpBinding.Parser @@ -17,7 +17,7 @@ namespace CSharpBinding.Parser
{
public class CSharpFullParseInformation : ParseInformation
{
readonly SyntaxTree compilationUnit;
readonly SyntaxTree syntaxTree;
internal List<NewFolding> newFoldings;
public CSharpFullParseInformation(CSharpUnresolvedFile unresolvedFile, ITextSourceVersion parsedVersion, SyntaxTree compilationUnit)
@ -27,7 +27,7 @@ namespace CSharpBinding.Parser @@ -27,7 +27,7 @@ namespace CSharpBinding.Parser
throw new ArgumentNullException("unresolvedFile");
if (compilationUnit == null)
throw new ArgumentNullException("compilationUnit");
this.compilationUnit = compilationUnit;
this.syntaxTree = compilationUnit;
}
public new CSharpUnresolvedFile UnresolvedFile {
@ -35,14 +35,25 @@ namespace CSharpBinding.Parser @@ -35,14 +35,25 @@ namespace CSharpBinding.Parser
}
public SyntaxTree SyntaxTree {
get { return compilationUnit; }
get { return syntaxTree; }
}
static readonly object ResolverCacheKey = new object();
public CSharpAstResolver GetResolver(ICompilation compilation)
{
return (CSharpAstResolver)compilation.CacheManager.GetOrAddShared(
this, _ => new CSharpAstResolver(compilation, compilationUnit, UnresolvedFile)
);
// Cache the resolver within the compilation.
// (caching in the parse information could prevent the compilation from being garbage-collected)
// Also, don't cache CSharpAstResolvers for every file - doing so would require too much memory,
// and we rarely usually only need to access the same file several times.
// So we use a static key to get the resolver, and verify that it belongs to this parse information.
var resolver = compilation.CacheManager.GetShared(ResolverCacheKey) as CSharpAstResolver;
if (resolver == null || resolver.RootNode != syntaxTree || resolver.UnresolvedFile != UnresolvedFile) {
resolver = new CSharpAstResolver(compilation, syntaxTree, UnresolvedFile);
compilation.CacheManager.SetShared(ResolverCacheKey, resolver);
}
return resolver;
}
public override IEnumerable<NewFolding> GetFoldings(IDocument document, out int firstErrorOffset)

1
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/CSharpProject.cs

@ -12,7 +12,6 @@ using ICSharpCode.Core; @@ -12,7 +12,6 @@ using ICSharpCode.Core;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Project.Converter;
using ICSharpCode.SharpDevelop.Refactoring;

1
src/AddIns/BackendBindings/CppBinding/CppBinding/CppProjectBinding.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.CppBinding.Project;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.CppBinding

1
src/AddIns/BackendBindings/CppBinding/CppBinding/Project/CppProject.cs

@ -8,7 +8,6 @@ using System.Linq; @@ -8,7 +8,6 @@ using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Construction;
using Microsoft.Build.Exceptions;

1
src/AddIns/BackendBindings/FSharpBinding/FSharpProject.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Exceptions;
using System.IO;

1
src/AddIns/BackendBindings/WixBinding/Project/Src/Project/WixProject.cs

@ -10,7 +10,6 @@ using System.IO; @@ -10,7 +10,6 @@ using System.IO;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.WixBinding

1
src/AddIns/BackendBindings/WixBinding/Project/Src/WixProjectBinding.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using System;
using System.Xml;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.WixBinding

1
src/AddIns/BackendBindings/WixBinding/Test/Gui/AddWixProjectNodeTestFixture.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixExtensionNodeTestFixture.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using Microsoft.Build.Evaluation;

1
src/AddIns/BackendBindings/WixBinding/Test/Gui/DeleteWixLibraryNodeTestFixture.cs

@ -5,7 +5,6 @@ using System; @@ -5,7 +5,6 @@ using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using Microsoft.Build.Evaluation;

1
src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithLibraryItemsTestFixture.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithUnexpandedLibraryItemsTestFixture.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Gui/WixProjectWithWixExtensionItemsTestFixture.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixExtensionTestFixture.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using System.Linq;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Project/AddWixLibraryTestFixture.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using System.Linq;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Project/CreateNewWixProjectObjectTestFixture.cs

@ -6,7 +6,6 @@ using System.Linq; @@ -6,7 +6,6 @@ using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using Microsoft.Build.Construction;

1
src/AddIns/BackendBindings/WixBinding/Test/Project/CreateWixProjectItemTests.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using System.Collections.Generic;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Project/WixInstallerPathTests.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Project/WixNodeBuilderCanBuildWixProjectTestFixture.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using System;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using NUnit.Framework;

1
src/AddIns/BackendBindings/WixBinding/Test/Utils/WixBindingTestsHelper.cs

@ -9,7 +9,6 @@ using System.Resources; @@ -9,7 +9,6 @@ using System.Resources;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using Microsoft.Build.Evaluation;

1
src/AddIns/BackendBindings/WixBinding/Test/Utils/WixProjectWithOverriddenSave.cs

@ -1,7 +1,6 @@ @@ -1,7 +1,6 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.WixBinding;
using System;

1
src/AddIns/Misc/PackageManagement/Project/Src/InstallProjectTemplatePackagesCommand.cs

@ -6,7 +6,6 @@ using System.Collections.Generic; @@ -6,7 +6,6 @@ using System.Collections.Generic;
using System.Linq;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;

1
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/ProjectHelper.cs

@ -6,7 +6,6 @@ using System.Collections.Generic; @@ -6,7 +6,6 @@ using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Rhino.Mocks;

1
src/AddIns/Misc/PackageManagement/Test/Src/Helpers/TestableProject.cs

@ -5,7 +5,6 @@ using System; @@ -5,7 +5,6 @@ using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
namespace PackageManagement.Tests.Helpers

1
src/AddIns/Misc/PackageManagement/Test/Src/InstallProjectTemplatePackagesCommandTests.cs

@ -7,7 +7,6 @@ using System.Windows.Input; @@ -7,7 +7,6 @@ using System.Windows.Input;
using ICSharpCode.PackageManagement;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;
using NUnit.Framework;

1
src/AddIns/Misc/TextTemplating/Test/Helpers/ProjectHelper.cs

@ -3,7 +3,6 @@ @@ -3,7 +3,6 @@
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.Build.Evaluation;
using Rhino.Mocks;

1
src/AddIns/Misc/TextTemplating/Test/Helpers/TestableProject.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using System.CodeDom.Compiler;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using Microsoft.CSharp;

1
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyPathResolverTests.cs

@ -4,7 +4,6 @@ @@ -4,7 +4,6 @@
using System;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextTemplating;

1
src/AddIns/Misc/TextTemplating/Test/Src/TextTemplatingAssemblyResolverTests.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.TextTemplating;
using NUnit.Framework;

17
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -213,7 +213,7 @@ @@ -213,7 +213,7 @@
<DependentUpon>FontSelector.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\StringParserPropertyContainer.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\BooleanTypeConverter.cs" />
<Compile Include="Src\Gui\Components\SideBar\TextEditorSideBar.cs" />
<Compile Include="Src\Gui\Components\StringListEditorDialog.xaml.cs" />
<Compile Include="Src\Gui\Components\StringListEditorXaml.xaml.cs">
@ -234,6 +234,8 @@ @@ -234,6 +234,8 @@
<DependentUpon>OutputWindowOptionsPanel.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Internal\Templates\StringParserPropertyContainer.cs" />
<Compile Include="Src\Internal\Templates\TemplateCategoryComparer.cs" />
<Compile Include="Src\Project\MSBuildConfigurationOrPlatformNameCollection.cs" />
<Compile Include="Templates\FileTemplate.cs" />
<Compile Include="Templates\FileTemplateOptions.cs" />
@ -244,6 +246,7 @@ @@ -244,6 +246,7 @@
<Compile Include="Templates\ProjectTemplateResult.cs" />
<Compile Include="Templates\TemplateBase.cs" />
<Compile Include="Templates\TemplateLoadException.cs" />
<Compile Include="Templates\TextTemplate.cs" />
<Compile Include="Util\AtomicBoolean.cs" />
<Compile Include="Util\ChrootFileSystem.cs" />
<Compile Include="Util\ComparerExtensions.cs" />
@ -465,10 +468,6 @@ @@ -465,10 +468,6 @@
<Compile Include="Src\Internal\ConditionEvaluators\WriteableSolutionEvaluator.cs" />
<Compile Include="Src\Internal\Doozers\IOptionPanel.cs" />
<Compile Include="Src\Internal\ExternalTool\ExternalTool.cs" />
<Compile Include="Src\Internal\Templates\Project\ProjectTemplate.cs" />
<Compile Include="Src\Internal\Templates\File\FileDescriptionTemplate.cs" />
<Compile Include="Src\Internal\Templates\File\FileTemplate.cs" />
<Compile Include="Src\Internal\Templates\TextTemplate.cs" />
<Compile Include="Src\Project\BeforeBuildCustomToolFileNameFilter.cs" />
<Compile Include="Src\Project\BeforeBuildCustomToolProjectItems.cs" />
<Compile Include="Src\Project\BeforeBuildCustomToolRunner.cs" />
@ -549,8 +548,6 @@ @@ -549,8 +548,6 @@
<Compile Include="Src\Internal\ConditionEvaluators\ProjectActiveEvaluator.cs" />
<Compile Include="Src\Services\AmbienceService\AmbienceService.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\WindowOpenEvaluator.cs" />
<Compile Include="Src\Internal\Templates\Project\ProjectDescriptor.cs" />
<Compile Include="Src\Internal\Templates\Project\SolutionDescriptor.cs" />
<Compile Include="Src\Gui\ContentInterfaces\IEditable.cs" />
<Compile Include="Src\Gui\ContentInterfaces\IPositionable.cs" />
<Compile Include="Src\Commands\EditCommands.cs" />
@ -634,12 +631,7 @@ @@ -634,12 +631,7 @@
<Compile Include="Src\Internal\ConditionEvaluators\ActiveViewContentUntitledEvaluator.cs" />
<Compile Include="Src\Services\Debugger\DebuggerService.cs" />
<Compile Include="Src\Gui\Pads\CompilerMessageView\CompilerMessageView.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\LocalizedTypeDescriptor.cs" />
<Compile Include="Src\Internal\Templates\File\ScriptRunner.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\CustomTypeConverter\BooleanTypeConverter.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\CustomTypeConverter\TemplateTypeConverter.cs" />
<Compile Include="Src\Internal\Templates\StandardHeaders.cs" />
<Compile Include="Src\Gui\Components\LocalizedPropertyGrid\LocalizedProperty.cs" />
<Compile Include="Src\Internal\ConditionEvaluators\IsProcessRunningEvaluator.cs" />
<Compile Include="Src\Internal\Doozers\PadDoozer.cs" />
<Compile Include="Src\Gui\Pads\CompilerMessageView\MessageViewCategory.cs" />
@ -774,7 +766,6 @@ @@ -774,7 +766,6 @@
<Compile Include="Src\Gui\Pads\ProjectBrowser\TreeNodes\WebReferenceNode.cs" />
<Compile Include="Src\Gui\Dialogs\ReferenceDialog\WebReferenceChanges.cs" />
<Compile Include="Src\Project\Converter\LanguageConverter.cs" />
<Compile Include="Src\Gui\Dialogs\TemplateCategoryComparer.cs" />
<Compile Include="Src\Internal\Templates\TemplateCategorySortOrderFile.cs" />
<Compile Include="Src\Gui\Dialogs\ReferenceDialog\HttpAuthenticationHeader.cs" />
<Compile Include="Src\Gui\Dialogs\ReferenceDialog\UserCredentialsDialog.cs" />

0
src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/BooleanTypeConverter.cs → src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/BooleanTypeConverter.cs

7
src/Main/Base/Project/Src/Gui/Components/SideBar/TextEditorSideBar.cs

@ -4,9 +4,10 @@ @@ -4,9 +4,10 @@
using System;
using System.IO;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Templates;
using ICSharpCode.SharpDevelop.Widgets.SideBar;
using ICSharpCode.SharpDevelop.Internal.Templates;
namespace ICSharpCode.SharpDevelop.Gui
{
@ -36,11 +37,11 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -36,11 +37,11 @@ namespace ICSharpCode.SharpDevelop.Gui
private void Initialize()
{
foreach (TextTemplate template in TextTemplate.TextTemplates) {
foreach (TextTemplateGroup template in SD.Templates.TextTemplates) {
SideTab tab = new SideTab(this, template.Name);
tab.DisplayName = StringParser.Parse(tab.Name);
tab.CanSaved = false;
foreach (TextTemplate.Entry entry in template.Entries) {
foreach (TextTemplate entry in template.Entries) {
tab.Items.Add(SideTabItemFactory.CreateSideTabItem(entry.Display, entry.Value));
}
tab.CanBeDeleted = tab.CanDragDrop = false;

2
src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs

@ -20,8 +20,6 @@ using ICSharpCode.SharpDevelop.Templates; @@ -20,8 +20,6 @@ using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Gui
{
using ICSharpCode.SharpDevelop.Internal.Templates;
/// <summary>
/// This class is for creating a new "empty" file
/// </summary>

1
src/Main/Base/Project/Src/Gui/Dialogs/NewProjectDialog.cs

@ -9,7 +9,6 @@ using System.Linq; @@ -9,7 +9,6 @@ using System.Linq;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project.Commands;
using ICSharpCode.SharpDevelop.WinForms;
using Microsoft.Build.Exceptions;

2
src/Main/Base/Project/Src/Gui/Dialogs/OptionPanels/IDEOptions/EditStandardHeaderPanel.xaml.cs

@ -5,7 +5,7 @@ using System; @@ -5,7 +5,7 @@ using System;
using System.Windows.Controls;
using System.Windows.Media;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Gui.OptionPanels
{

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

@ -8,7 +8,6 @@ using System.IO; @@ -8,7 +8,6 @@ using System.IO;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Project.Commands

2
src/Main/Base/Project/Src/Internal/Templates/StandardHeaders.cs

@ -8,7 +8,7 @@ using System.IO; @@ -8,7 +8,7 @@ using System.IO;
using System.Xml;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
public class StandardHeader
{

2
src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/StringParserPropertyContainer.cs → src/Main/Base/Project/Src/Internal/Templates/StringParserPropertyContainer.cs

@ -7,7 +7,7 @@ using System.Collections.Generic; @@ -7,7 +7,7 @@ using System.Collections.Generic;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Gui
namespace ICSharpCode.SharpDevelop.Templates
{
/// <summary>
/// Contains values for localized properties.

3
src/Main/Base/Project/Src/Gui/Dialogs/TemplateCategoryComparer.cs → src/Main/Base/Project/Src/Internal/Templates/TemplateCategoryComparer.cs

@ -3,9 +3,8 @@ @@ -3,9 +3,8 @@
using System;
using System.Collections;
using ICSharpCode.SharpDevelop.Internal.Templates;
namespace ICSharpCode.SharpDevelop.Gui
namespace ICSharpCode.SharpDevelop.Templates
{
public interface ICategory
{

2
src/Main/Base/Project/Src/Internal/Templates/TemplateCategorySortOrderFile.cs

@ -8,7 +8,7 @@ using System.Xml; @@ -8,7 +8,7 @@ using System.Xml;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
/// <summary>
/// File that defines the sort order for the file and project template

84
src/Main/Base/Project/Src/Internal/Templates/TextTemplate.cs

@ -1,84 +0,0 @@ @@ -1,84 +0,0 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Internal.Templates
{
/// <summary>
/// This class defines and holds text templates
/// they're a bit similar than code templates, but they're
/// not inserted automaticaly
/// </summary>
public class TextTemplate
{
public static List<TextTemplate> TextTemplates = new List<TextTemplate>();
string name = null;
List<Entry> entries = new List<Entry>();
public string Name {
get {
return name;
}
}
public List<Entry> Entries {
get {
return entries;
}
}
public class Entry
{
public string Display;
public string Value;
public Entry(XmlElement el)
{
this.Display = el.Attributes["display"].InnerText;
this.Value = el.Attributes["value"].InnerText;
}
public override string ToString()
{
return Display;
}
}
public TextTemplate(string filename)
{
try {
XmlDocument doc = new XmlDocument();
doc.Load(filename);
name = doc.DocumentElement.Attributes["name"].InnerText;
XmlNodeList nodes = doc.DocumentElement.ChildNodes;
foreach (XmlElement entrynode in nodes) {
entries.Add(new Entry(entrynode));
}
} catch (Exception e) {
throw new System.IO.FileLoadException("Can't load standard sidebar template file", filename, e);
}
}
static void LoadTextTemplate(string filename)
{
TextTemplates.Add(new TextTemplate(filename));
}
static TextTemplate()
{
List<string> files = FileUtility.SearchDirectory(Path.Combine(PropertyService.DataDirectory, "options", "textlib"), "*.xml");
foreach (string file in files) {
LoadTextTemplate(file);
}
}
}
}

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

@ -19,7 +19,6 @@ using ICSharpCode.SharpDevelop.Debugging; @@ -19,7 +19,6 @@ using ICSharpCode.SharpDevelop.Debugging;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Gui.OptionPanels;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Refactoring;
using ICSharpCode.SharpDevelop.Workbench;

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

@ -12,7 +12,6 @@ using System.Windows.Forms; @@ -12,7 +12,6 @@ using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.NRefactory;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project.Commands;
using Microsoft.Build.Construction;

1
src/Main/Base/Project/Src/Services/ProjectBinding/IProjectBinding.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Internal.Templates;
namespace ICSharpCode.SharpDevelop.Project
{

5
src/Main/Base/Project/Templates/ITemplateService.cs

@ -26,6 +26,11 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -26,6 +26,11 @@ namespace ICSharpCode.SharpDevelop.Templates
/// </summary>
void UpdateTemplates();
/// <summary>
/// Gets the list of text templates.
/// </summary>
IEnumerable<TextTemplateGroup> TextTemplates { get; }
/// <summary>
/// Loads a file template (.xft or .xpt file) from disk.
/// </summary>

79
src/Main/Base/Project/Templates/TextTemplate.cs

@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Templates
{
/// <summary>
/// This class defines and holds text templates
/// they're a bit similar than code templates, but they're
/// not inserted automaticaly.
/// They are shown in the Tools pad (TextEditorSideBar).
/// </summary>
public class TextTemplateGroup
{
string name;
IReadOnlyList<TextTemplate> entries;
public string Name {
get { return name; }
}
public IReadOnlyList<TextTemplate> Entries {
get { return entries; }
}
public TextTemplateGroup(string name, IReadOnlyList<TextTemplate> entries)
{
this.name = name;
this.entries = entries;
}
internal static TextTemplateGroup Load(string filename)
{
try {
XmlDocument doc = new XmlDocument();
doc.Load(filename);
string name = doc.DocumentElement.Attributes["name"].InnerText;
List<TextTemplate> entries = new List<TextTemplate>();
foreach (XmlElement el in doc.DocumentElement.ChildNodes) {
string display = el.Attributes["display"].InnerText;
string value = el.Attributes["value"].InnerText;
entries.Add(new TextTemplate(display, value));
}
return new TextTemplateGroup(name, entries);
} catch (Exception e) {
throw new System.IO.FileLoadException("Can't load standard sidebar template file", filename, e);
}
}
}
public class TextTemplate
{
public string Display { get; private set; }
public string Value { get; private set; }
public TextTemplate(string display, string value)
{
if (display == null)
throw new ArgumentNullException("display");
if (value == null)
throw new ArgumentNullException("value");
this.Display = display;
this.Value = value;
}
public override string ToString()
{
return Display;
}
}
}

85
src/Main/Base/Project/Util/SharpDevelopExtensions.cs

@ -262,11 +262,92 @@ namespace ICSharpCode.SharpDevelop @@ -262,11 +262,92 @@ namespace ICSharpCode.SharpDevelop
return result;
}
public static IEnumerable<T> DistinctBy<T, K>(this IEnumerable<T> input, Func<T, K> keySelector)
public static IEnumerable<T> DistinctBy<T, K>(this IEnumerable<T> source, Func<T, K> keySelector) where K : IEquatable<K>
{
return input.Distinct(KeyComparer.Create(keySelector));
// Don't just use .Distinct(KeyComparer.Create(keySelector)) - that would evaluate the keySelector multiple times.
var hashSet = new HashSet<K>();
foreach (var element in source) {
if (hashSet.Add(keySelector(element))) {
yield return element;
}
}
}
/// <summary>
/// Returns the minimum element.
/// </summary>
/// <exception cref="InvalidOperationException">The input sequence is empty</exception>
public static T MinBy<T, K>(this IEnumerable<T> source, Func<T, K> keySelector) where K : IComparable<K>
{
return source.MinBy(keySelector, Comparer<K>.Default);
}
/// <summary>
/// Returns the minimum element.
/// </summary>
/// <exception cref="InvalidOperationException">The input sequence is empty</exception>
public static T MinBy<T, K>(this IEnumerable<T> source, Func<T, K> keySelector, IComparer<K> keyComparer)
{
if (source == null)
throw new ArgumentNullException("source");
if (keySelector == null)
throw new ArgumentNullException("selector");
if (keyComparer == null)
keyComparer = Comparer<K>.Default;
using (var enumerator = source.GetEnumerator()) {
if (!enumerator.MoveNext())
throw new InvalidOperationException("Sequence contains no elements");
T minElement = enumerator.Current;
K minKey = keySelector(minElement);
while (enumerator.MoveNext()) {
T element = enumerator.Current;
K key = keySelector(element);
if (keyComparer.Compare(key, minKey) < 0) {
minElement = element;
minKey = key;
}
}
return minElement;
}
}
/// <summary>
/// Returns the maximum element.
/// </summary>
/// <exception cref="InvalidOperationException">The input sequence is empty</exception>
public static T MaxBy<T, K>(this IEnumerable<T> source, Func<T, K> keySelector) where K : IComparable<K>
{
return source.MaxBy(keySelector, Comparer<K>.Default);
}
/// <summary>
/// Returns the maximum element.
/// </summary>
/// <exception cref="InvalidOperationException">The input sequence is empty</exception>
public static T MaxBy<T, K>(this IEnumerable<T> source, Func<T, K> keySelector, IComparer<K> keyComparer)
{
if (source == null)
throw new ArgumentNullException("source");
if (keySelector == null)
throw new ArgumentNullException("selector");
if (keyComparer == null)
keyComparer = Comparer<K>.Default;
using (var enumerator = source.GetEnumerator()) {
if (!enumerator.MoveNext())
throw new InvalidOperationException("Sequence contains no elements");
T maxElement = enumerator.Current;
K maxKey = keySelector(maxElement);
while (enumerator.MoveNext()) {
T element = enumerator.Current;
K key = keySelector(element);
if (keyComparer.Compare(key, maxKey) > 0) {
maxElement = element;
maxKey = key;
}
}
return maxElement;
}
}
/// <summary>
/// Returns the index of the first element for which <paramref name="predicate"/> returns true.

9
src/Main/Base/Test/Templates/CategorySortOrderTests.cs

@ -1,14 +1,15 @@ @@ -1,14 +1,15 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project.Dialogs;
using NUnit.Framework;
using System;
using System.IO;
using System.Xml;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project.Dialogs;
using ICSharpCode.SharpDevelop.Templates;
using NUnit.Framework;
namespace ICSharpCode.SharpDevelop.Tests.Templates
{
[TestFixture]

3
src/Main/Base/Test/Templates/FileTemplateCategoryComparerTests.cs

@ -1,10 +1,11 @@ @@ -1,10 +1,11 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project.Dialogs;
using ICSharpCode.SharpDevelop.Templates;
using NUnit.Framework;
using System;
namespace ICSharpCode.SharpDevelop.Tests.Templates
{

3
src/Main/Base/Test/Templates/ProjectTemplateCategoryComparerTests.cs

@ -1,10 +1,11 @@ @@ -1,10 +1,11 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project.Dialogs;
using ICSharpCode.SharpDevelop.Templates;
using NUnit.Framework;
using System;
namespace ICSharpCode.SharpDevelop.Tests.Templates
{

1
src/Main/Base/Test/WebReferences/WebReferenceTestHelper.cs

@ -2,7 +2,6 @@ @@ -2,7 +2,6 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Internal.Templates;
using System;
using System.Collections.Generic;
using ICSharpCode.Core;

7
src/Main/SharpDevelop/Services/UIService.cs

@ -8,7 +8,6 @@ using System.Windows.Forms; @@ -8,7 +8,6 @@ using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Internal.Templates;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Project.Commands;
using ICSharpCode.SharpDevelop.Project.Dialogs;
@ -32,6 +31,9 @@ namespace ICSharpCode.SharpDevelop @@ -32,6 +31,9 @@ namespace ICSharpCode.SharpDevelop
public FileTemplateResult ShowNewFileDialog(IProject project, DirectoryName directory, IEnumerable<FileTemplate> templates)
{
#if DEBUG
SD.Templates.UpdateTemplates();
#endif
using (NewFileDialog nfd = new NewFileDialog(project, directory, templates ?? SD.Templates.FileTemplates)) {
if (nfd.ShowDialog(SD.WinForms.MainWin32Window) == DialogResult.OK)
return nfd.result;
@ -42,6 +44,9 @@ namespace ICSharpCode.SharpDevelop @@ -42,6 +44,9 @@ namespace ICSharpCode.SharpDevelop
public ProjectTemplateResult ShowNewProjectDialog(ISolutionFolder solutionFolder, IEnumerable<ProjectTemplate> templates)
{
#if DEBUG
SD.Templates.UpdateTemplates();
#endif
using (NewProjectDialog npdlg = new NewProjectDialog(createNewSolution: solutionFolder == null, projectTemplates: templates ?? SD.Templates.ProjectTemplates)) {
npdlg.SolutionFolder = solutionFolder;
if (solutionFolder != null) {

12
src/Main/SharpDevelop/SharpDevelop.csproj

@ -150,6 +150,15 @@ @@ -150,6 +150,15 @@
<Compile Include="Startup\App.xaml.cs" />
<Compile Include="Startup\SharpDevelopMain.cs" />
<Compile Include="Startup\SplashScreen.cs" />
<Compile Include="Templates\CustomizationObject\LocalizedProperty.cs" />
<Compile Include="Templates\CustomizationObject\LocalizedTypeDescriptor.cs" />
<Compile Include="Templates\CustomizationObject\TemplateTypeConverter.cs" />
<Compile Include="Templates\File\FileDescriptionTemplate.cs" />
<Compile Include="Templates\File\FileTemplateImpl.cs" />
<Compile Include="Templates\File\ScriptRunner.cs" />
<Compile Include="Templates\Project\ProjectDescriptor.cs" />
<Compile Include="Templates\Project\ProjectTemplateImpl.cs" />
<Compile Include="Templates\Project\SolutionDescriptor.cs" />
<Compile Include="Templates\TemplateFileDoozer.cs" />
<Compile Include="Templates\TemplateService.cs" />
<Compile Include="WinForms\SDWindowsFormsHost.cs" />
@ -291,6 +300,9 @@ @@ -291,6 +300,9 @@
<Folder Include="Project\Build\MSBuildEngine" />
<Folder Include="Project\Configuration" />
<Folder Include="Services" />
<Folder Include="Templates\CustomizationObject" />
<Folder Include="Templates\File" />
<Folder Include="Templates\Project" />
<Folder Include="WinForms" />
<Folder Include="OptionPanels" />
<Folder Include="Startup" />

0
src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedProperty.cs → src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedProperty.cs

4
src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/LocalizedTypeDescriptor.cs → src/Main/SharpDevelop/Templates/CustomizationObject/LocalizedTypeDescriptor.cs

@ -5,9 +5,9 @@ using System; @@ -5,9 +5,9 @@ using System;
using System.Collections;
using System.ComponentModel;
namespace ICSharpCode.SharpDevelop.Gui
namespace ICSharpCode.SharpDevelop.Templates
{
public class LocalizedTypeDescriptor : ICustomTypeDescriptor
class LocalizedTypeDescriptor : ICustomTypeDescriptor
{
string defaultProperty = null;
ArrayList properties = new ArrayList();

4
src/Main/Base/Project/Src/Gui/Components/LocalizedPropertyGrid/CustomTypeConverter/TemplateTypeConverter.cs → src/Main/SharpDevelop/Templates/CustomizationObject/TemplateTypeConverter.cs

@ -6,9 +6,7 @@ using System.Collections; @@ -6,9 +6,7 @@ using System.Collections;
using System.ComponentModel;
using System.Globalization;
using ICSharpCode.SharpDevelop.Internal.Templates;
namespace ICSharpCode.SharpDevelop.Gui
namespace ICSharpCode.SharpDevelop.Templates
{
internal class CustomTypeConverter : TypeConverter
{

3
src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs → src/Main/SharpDevelop/Templates/File/FileDescriptionTemplate.cs

@ -9,9 +9,8 @@ using System.Xml; @@ -9,9 +9,8 @@ using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
internal class FileDescriptionTemplate
{

3
src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs → src/Main/SharpDevelop/Templates/File/FileTemplateImpl.cs

@ -12,9 +12,8 @@ using System.Xml; @@ -12,9 +12,8 @@ using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
internal class TemplateProperty
{

2
src/Main/Base/Project/Src/Internal/Templates/File/ScriptRunner.cs → src/Main/SharpDevelop/Templates/File/ScriptRunner.cs

@ -11,7 +11,7 @@ using System.Text; @@ -11,7 +11,7 @@ using System.Text;
using System.Text.RegularExpressions;
using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
internal class ScriptRunner
{

3
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs → src/Main/SharpDevelop/Templates/Project/ProjectDescriptor.cs

@ -14,11 +14,10 @@ using ICSharpCode.SharpDevelop.Editor; @@ -14,11 +14,10 @@ using ICSharpCode.SharpDevelop.Editor;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Parser;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;
using Microsoft.Build.Exceptions;
using Import = System.Collections.Generic.KeyValuePair<string, string>;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
/// <summary>
/// This class is used inside the solution templates for projects.

2
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs → src/Main/SharpDevelop/Templates/Project/ProjectTemplateImpl.cs

@ -13,7 +13,7 @@ using ICSharpCode.Core; @@ -13,7 +13,7 @@ using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
/// <summary>
/// This class defines and holds the new project templates.

3
src/Main/Base/Project/Src/Internal/Templates/Project/SolutionDescriptor.cs → src/Main/SharpDevelop/Templates/Project/SolutionDescriptor.cs

@ -8,9 +8,8 @@ using System.Xml; @@ -8,9 +8,8 @@ using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Templates;
namespace ICSharpCode.SharpDevelop.Internal.Templates
namespace ICSharpCode.SharpDevelop.Templates
{
internal class SolutionDescriptor
{

28
src/Main/SharpDevelop/Templates/TemplateService.cs

@ -8,7 +8,6 @@ using System.Linq; @@ -8,7 +8,6 @@ using System.Linq;
using System.Xml;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.Internal.Templates;
namespace ICSharpCode.SharpDevelop.Templates
{
@ -16,32 +15,45 @@ namespace ICSharpCode.SharpDevelop.Templates @@ -16,32 +15,45 @@ namespace ICSharpCode.SharpDevelop.Templates
{
const string TemplatePath = "/SharpDevelop/BackendBindings/Templates";
Lazy<IReadOnlyList<TemplateBase>> allTemplates;
Lazy<IReadOnlyList<TemplateBase>> projectAndFileTemplates;
Lazy<IReadOnlyList<TextTemplateGroup>> textTemplates;
public TemplateService()
{
allTemplates = new Lazy<IReadOnlyList<TemplateBase>>(LoadTemplates);
projectAndFileTemplates = new Lazy<IReadOnlyList<TemplateBase>>(LoadProjectAndFileTemplates);
}
public IEnumerable<FileTemplate> FileTemplates {
get { return allTemplates.Value.OfType<FileTemplate>(); }
get { return projectAndFileTemplates.Value.OfType<FileTemplate>(); }
}
public IEnumerable<ProjectTemplate> ProjectTemplates {
get { return allTemplates.Value.OfType<ProjectTemplate>(); }
get { return projectAndFileTemplates.Value.OfType<ProjectTemplate>(); }
}
public void UpdateTemplates()
{
var newTemplates = LoadTemplates();
allTemplates = new Lazy<IReadOnlyList<TemplateBase>>(() => newTemplates);
var newTemplates = LoadProjectAndFileTemplates();
projectAndFileTemplates = new Lazy<IReadOnlyList<TemplateBase>>(() => newTemplates);
}
IReadOnlyList<TemplateBase> LoadTemplates()
IReadOnlyList<TemplateBase> LoadProjectAndFileTemplates()
{
return SD.AddInTree.BuildItems<TemplateBase>(TemplatePath, this, false);
}
public IEnumerable<TextTemplateGroup> TextTemplates {
get { return textTemplates.Value; }
}
IReadOnlyList<TextTemplateGroup> LoadTextTemplates()
{
var dir = PropertyService.DataDirectory.Combine(DirectoryName.Create("options/textlib"));
return SD.FileSystem.GetFiles(dir, "*.xml")
.Select(file => TextTemplateGroup.Load(file))
.ToList();
}
public TemplateBase LoadTemplate(FileName fileName)
{
var fileSystem = SD.FileSystem;

Loading…
Cancel
Save