diff --git a/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj b/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj index d0463f8b5..577a20528 100644 --- a/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj +++ b/source2/VSIP/Cosmos.VS.Package/Cosmos.VS.Package.csproj @@ -136,6 +136,7 @@ SubPropertyPageBase.cs + @@ -174,37 +175,33 @@ - - - Templates\Projects\CosmosProject %28C#%29 - Templates\Projects\CosmosProject %28C#%29 - + Templates\Projects\CosmosProject %28C#%29 - + Templates\Projects\CosmosProject %28C#%29 - + Templates\Projects\CosmosProject %28C#%29 - + Templates\Projects\CosmosProject %28C#%29 - + + Templates\Projects\CosmosProject %28C#%29 + + + Templates\Projects\CosmosProject %28C#%29 + + Templates\Projects\CosmosProject %28C#%29 - + Templates\Projects\CosmosProject %28C#%29 - - - Templates\Projects\CosmosProject %28C#%29 - - - Templates\Projects\CosmosProject %28C#%29 - + BuildPage.cs diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/Proj/CosmosProject.Cosmos b/source2/VSIP/Cosmos.VS.Package/Templates/CosmosProject.Cosmos similarity index 82% rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/Proj/CosmosProject.Cosmos rename to source2/VSIP/Cosmos.VS.Package/Templates/CosmosProject.Cosmos index 71af3844f..5c7fcde7d 100644 --- a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/Proj/CosmosProject.Cosmos +++ b/source2/VSIP/Cosmos.VS.Package/Templates/CosmosProject.Cosmos @@ -2,9 +2,9 @@ Debug 2.0 - $GeneratedGuid1$ + $CosmosProjGuid$ false - $safeprojectname$ + $CosmosProjectName$ elf @@ -32,12 +32,11 @@ false - - $safeprojectname$Kernel - $GeneratedGuid2$ + + $KernelName$ + $KernelGuid$ - \ No newline at end of file diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/GenerateCosmosProjectWizard.cs b/source2/VSIP/Cosmos.VS.Package/Templates/GenerateCosmosProjectWizard.cs new file mode 100644 index 000000000..e4404cce3 --- /dev/null +++ b/source2/VSIP/Cosmos.VS.Package/Templates/GenerateCosmosProjectWizard.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Microsoft.VisualStudio.TemplateWizard; +using System.Windows.Forms; +using System.IO; + +namespace Cosmos.VS.Package.Templates +{ + public class GenerateCosmosProjectWizard: IWizard + { + public void BeforeOpeningFile(EnvDTE.ProjectItem projectItem) + { + } + + private static string GetTemplateString() + { + var xAsm = typeof(GenerateCosmosProjectWizard).Assembly; + using (var xStream = xAsm.GetManifestResourceStream(typeof(GenerateCosmosProjectWizard), "CosmosProject.Cosmos")) + { + if (xStream == null) + { + MessageBox.Show("Could not find template manifest stream!"); + return null; + } + using (var xReader = new StreamReader(xStream)) + { + return xReader.ReadToEnd(); + } + } + } + + public void ProjectFinishedGenerating(EnvDTE.Project project) + { + //project.DTE.Solution + var xInputString = GetTemplateString(); + if (xInputString == null) + { + return; + } + + xInputString = xInputString.Replace("$KernelGuid$", mGuidKernel.ToString("b")); + xInputString = xInputString.Replace("$CosmosProjGuid$", mGuidCosmosProj.ToString("b")); + xInputString = xInputString.Replace("$KernelName$", project.Name); + xInputString = xInputString.Replace("$CosmosProjectName$", project.Name + "Boot"); + var xFilename = Path.GetDirectoryName(project.FullName); + xFilename = Path.Combine(xFilename, project.Name + "Boot"); + xFilename += ".Cosmos"; + File.WriteAllText(xFilename, xInputString); + project.DTE.Solution.AddFromFile(xFilename, false); + } + + public void ProjectItemFinishedGenerating(EnvDTE.ProjectItem projectItem) + { + } + + public void RunFinished() + { + } + + private Guid mGuidKernel; + private Guid mGuidCosmosProj; + + public void RunStarted(object automationObject, Dictionary replacementsDictionary, WizardRunKind runKind, object[] customParams) + { + mGuidKernel = Guid.NewGuid(); + mGuidCosmosProj = Guid.NewGuid(); + replacementsDictionary.Add("$KernelGuid$", mGuidKernel.ToString("B")); + replacementsDictionary.Add("$CosmosProjGuid$", mGuidCosmosProj.ToString("B")); + + } + + public bool ShouldAddProjectItem(string filePath) + { + return true; + } + } +} diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/AssemblyInfo.cs b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/AssemblyInfo.cs similarity index 100% rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/AssemblyInfo.cs rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/AssemblyInfo.cs diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/CSharpProj.vstemplate b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CSharpProj.vstemplate similarity index 78% rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/CSharpProj.vstemplate rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CSharpProj.vstemplate index 35d1dcdab..2c82c59d6 100644 --- a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/CSharpProj.vstemplate +++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CSharpProj.vstemplate @@ -1,14 +1,14 @@ - ProjKernel + CSharp Kernel A project for creating a Cosmos Kernel Kernel.ico - CSharp + Cosmos true CosmosProjectKernel - true--> + true @@ -18,6 +18,6 @@ Cosmos.VS.Package, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f4d94ac959d59ec3 - Cosmos.VS.Package.Templates.Wizards.GenerateGuidsWizard + Cosmos.VS.Package.Templates.GenerateCosmosProjectWizard \ No newline at end of file diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/CSharpProject.csproj b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CSharpProject.csproj similarity index 95% rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/CSharpProject.csproj rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CSharpProject.csproj index e4e3014dc..ac6148aae 100644 --- a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/CSharpProject.csproj +++ b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CSharpProject.csproj @@ -5,7 +5,7 @@ AnyCPU 8.0.30703 2.0 - $GeneratedGuid2$ + $KernelGuid$ Library Properties $safeprojectname$ diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CosmosProject.vstemplate b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CosmosProject.vstemplate deleted file mode 100644 index dffc9042d..000000000 --- a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/CosmosProject.vstemplate +++ /dev/null @@ -1,19 +0,0 @@ - - - Cosmos Project - A project for creating a Cosmos Kernel - Kernel.ico - Cosmos - 50 - - - - - ProjKernel\CSharpProj.vstemplate - - - Proj\CosmosProj.vstemplate - - - - diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/Kernel.cs b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/Kernel.cs similarity index 100% rename from source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/Kernel.cs rename to source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/Kernel.cs diff --git a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/Kernel.ico b/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/Kernel.ico deleted file mode 100644 index fcdc40183..000000000 Binary files a/source2/VSIP/Cosmos.VS.Package/Templates/Projects/CosmosProject (C#)/ProjKernel/Kernel.ico and /dev/null differ