Browse Source

Fixed SD2-750: Project templates should be able to include external files

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/2.0@1276 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 20 years ago
parent
commit
dd68c9529f
  1. 3
      src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj
  2. 26
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/DefaultAssemblyInfo.boo
  3. 30
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt
  4. 30
      src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt
  5. 11
      src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs
  6. 2
      src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs
  7. 14
      src/Main/Base/Project/Src/Internal/Templates/Project/CombineDescriptor.cs
  8. 4
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs
  9. 6
      src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

3
src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.csproj

@ -83,6 +83,9 @@
<Compile Include="Src\ConvertProject.cs" /> <Compile Include="Src\ConvertProject.cs" />
<EmbeddedResource Include="Resources\BuildOptions.xfrm" /> <EmbeddedResource Include="Resources\BuildOptions.xfrm" />
<Compile Include="Src\BuildOptions.cs" /> <Compile Include="Src\BuildOptions.cs" />
<None Include="Templates\DefaultAssemblyInfo.boo">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="BooBinding.addin"> <Content Include="BooBinding.addin">

26
src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/DefaultAssemblyInfo.boo

@ -0,0 +1,26 @@
import System.Reflection
import System.Runtime.CompilerServices
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle('')]
[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.0.0")]

30
src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/FormsProject.xpt

@ -70,35 +70,7 @@ partial class MainForm(System.Windows.Forms.Form):
self.Name = 'MainForm' self.Name = 'MainForm'
]]></File> ]]></File>
<File name="AssemblyInfo.boo"> <File name="AssemblyInfo.boo" src="DefaultAssemblyInfo.boo"/>
<![CDATA[import System.Reflection
import System.Runtime.CompilerServices
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle('')]
[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.0.0")]
]]></File>
</Files> </Files>
</Project> </Project>
</Combine> </Combine>

30
src/AddIns/BackendBindings/Boo/BooBinding/Project/Templates/Library.xpt

@ -38,35 +38,7 @@ class MyClass:
pass pass
]]></File> ]]></File>
<File name="AssemblyInfo.boo"> <File name="AssemblyInfo.boo" src="DefaultAssemblyInfo.boo"/>
<![CDATA[import System.Reflection
import System.Runtime.CompilerServices
// Information about this assembly is defined by the following
// attributes.
//
// change them to the information which is associated with the assembly
// you compile.
[assembly: AssemblyTitle('')]
[assembly: AssemblyDescription('')]
[assembly: AssemblyConfiguration('')]
[assembly: AssemblyCompany('')]
[assembly: AssemblyProduct('')]
[assembly: AssemblyCopyright('')]
[assembly: AssemblyTrademark('')]
[assembly: AssemblyCulture('')]
// The assembly version has following format :
//
// Major.Minor.Build.Revision
//
// You can specify all values by your own or you can build default build and revision
// numbers with the '*' character (the default):
[assembly: AssemblyVersion("1.0.0.0")]
]]></File>
</Files> </Files>
</Project> </Project>
</Combine> </Combine>

11
src/Main/Base/Project/Src/Internal/Templates/File/FileDescriptionTemplate.cs

@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
} }
} }
public FileDescriptionTemplate(XmlElement xml) public FileDescriptionTemplate(XmlElement xml, string hintPath)
{ {
name = xml.GetAttribute("name"); name = xml.GetAttribute("name");
language = xml.GetAttribute("language"); language = xml.GetAttribute("language");
@ -39,8 +39,17 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
copyToOutputDirectory = xml.GetAttribute("copyToOutputDirectory"); copyToOutputDirectory = xml.GetAttribute("copyToOutputDirectory");
dependentUpon = xml.GetAttribute("dependentUpon"); dependentUpon = xml.GetAttribute("dependentUpon");
subType = xml.GetAttribute("subType"); subType = xml.GetAttribute("subType");
if (xml.HasAttribute("src")) {
try {
content = File.ReadAllText(Path.Combine(hintPath, xml.GetAttribute("src")));
} catch (Exception e) {
content = "Error reading content from " + Path.Combine(hintPath, xml.GetAttribute("src")) + ":\n" + e.ToString();
LoggingService.Warn(content);
}
} else {
content = xml.InnerText; content = xml.InnerText;
} }
}
/// <summary> /// <summary>
/// Sets MSBuild properties. /// Sets MSBuild properties.

2
src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs

@ -311,7 +311,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
XmlNodeList nodes = files.ChildNodes; XmlNodeList nodes = files.ChildNodes;
foreach (XmlNode filenode in nodes) { foreach (XmlNode filenode in nodes) {
if (filenode is XmlElement) { if (filenode is XmlElement) {
this.files.Add(new FileDescriptionTemplate((XmlElement)filenode)); this.files.Add(new FileDescriptionTemplate((XmlElement)filenode, Path.GetDirectoryName(filename)));
} }
} }

14
src/Main/Base/Project/Src/Internal/Templates/Project/CombineDescriptor.cs

@ -28,17 +28,17 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
internal List<ProjectDescriptor> projectDescriptors = new List<ProjectDescriptor>(); internal List<ProjectDescriptor> projectDescriptors = new List<ProjectDescriptor>();
internal List<SolutionFolderDescriptor> solutionFoldersDescriptors = new List<SolutionFolderDescriptor>(); internal List<SolutionFolderDescriptor> solutionFoldersDescriptors = new List<SolutionFolderDescriptor>();
internal void Read(XmlElement element) internal void Read(XmlElement element, string hintPath)
{ {
name = element.GetAttribute("name"); name = element.GetAttribute("name");
foreach (XmlNode node in element.ChildNodes) { foreach (XmlNode node in element.ChildNodes) {
if (node != null) { if (node != null) {
switch (node.Name) { switch (node.Name) {
case "Project": case "Project":
projectDescriptors.Add(ProjectDescriptor.CreateProjectDescriptor((XmlElement)node)); projectDescriptors.Add(ProjectDescriptor.CreateProjectDescriptor((XmlElement)node, hintPath));
break; break;
case "SolutionFolder": case "SolutionFolder":
solutionFoldersDescriptors.Add(new SolutionFolderDescriptor((XmlElement)node)); solutionFoldersDescriptors.Add(new SolutionFolderDescriptor((XmlElement)node, hintPath));
break; break;
} }
} }
@ -64,9 +64,9 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
return true; return true;
} }
public SolutionFolderDescriptor(XmlElement element) public SolutionFolderDescriptor(XmlElement element, string hintPath)
{ {
Read(element); Read(element, hintPath);
} }
public SolutionFolderDescriptor(string name) public SolutionFolderDescriptor(string name)
@ -143,7 +143,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
return combineLocation; return combineLocation;
} }
public static CombineDescriptor CreateCombineDescriptor(XmlElement element) public static CombineDescriptor CreateCombineDescriptor(XmlElement element, string hintPath)
{ {
CombineDescriptor combineDescriptor = new CombineDescriptor(element.Attributes["name"].InnerText); CombineDescriptor combineDescriptor = new CombineDescriptor(element.Attributes["name"].InnerText);
@ -155,7 +155,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
combineDescriptor.startupProject = element["Options"]["StartupProject"].InnerText; combineDescriptor.startupProject = element["Options"]["StartupProject"].InnerText;
} }
combineDescriptor.mainFolder.Read(element); combineDescriptor.mainFolder.Read(element, hintPath);
return combineDescriptor; return combineDescriptor;
} }
} }

4
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectDescriptor.cs

@ -221,7 +221,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
} }
} }
public static ProjectDescriptor CreateProjectDescriptor(XmlElement element) public static ProjectDescriptor CreateProjectDescriptor(XmlElement element, string hintPath)
{ {
ProjectDescriptor projectDescriptor = new ProjectDescriptor(element.Attributes["name"].InnerText, element.Attributes["directory"].InnerText); ProjectDescriptor projectDescriptor = new ProjectDescriptor(element.Attributes["name"].InnerText, element.Attributes["directory"].InnerText);
@ -234,7 +234,7 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
foreach (XmlNode node in element["Files"].ChildNodes) { foreach (XmlNode node in element["Files"].ChildNodes) {
if (node != null && node.Name == "File") { if (node != null && node.Name == "File") {
XmlElement filenode = (XmlElement)node; XmlElement filenode = (XmlElement)node;
projectDescriptor.files.Add(new FileDescriptionTemplate(filenode)); projectDescriptor.files.Add(new FileDescriptionTemplate(filenode, hintPath));
} }
} }
} }

6
src/Main/Base/Project/Src/Internal/Templates/Project/ProjectTemplate.cs

@ -199,13 +199,13 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
} }
if (doc.DocumentElement["Solution"] != null) { if (doc.DocumentElement["Solution"] != null) {
combineDescriptor = CombineDescriptor.CreateCombineDescriptor(doc.DocumentElement["Solution"]); combineDescriptor = CombineDescriptor.CreateCombineDescriptor(doc.DocumentElement["Solution"], Path.GetDirectoryName(fileName));
} else if (doc.DocumentElement["Combine"] != null) { } else if (doc.DocumentElement["Combine"] != null) {
combineDescriptor = CombineDescriptor.CreateCombineDescriptor(doc.DocumentElement["Combine"]); combineDescriptor = CombineDescriptor.CreateCombineDescriptor(doc.DocumentElement["Combine"], Path.GetDirectoryName(fileName));
} }
if (doc.DocumentElement["Project"] != null) { if (doc.DocumentElement["Project"] != null) {
projectDescriptor = ProjectDescriptor.CreateProjectDescriptor(doc.DocumentElement["Project"]); projectDescriptor = ProjectDescriptor.CreateProjectDescriptor(doc.DocumentElement["Project"], Path.GetDirectoryName(fileName));
} }
// Read Actions; // Read Actions;

Loading…
Cancel
Save