|
var strProjectPath;
var strProjectName;
var strAppClassName;
function OnFinish(selProj, selObj)
{
try
{
strProjectPath = wizard.FindSymbol('PROJECT_PATH');
strProjectName = wizard.FindSymbol('PROJECT_NAME');
wizard.AddSymbol("SAFE_PROJECT_NAME", CreateSafeName(strProjectName));
wizard.AddSymbol("PROJECT_NAME_UCASE", strProjectName.toUpperCase());
wizard.AddSymbol("SAFE_PROJECT_NAME_UCASE", CreateSafeName(strProjectName).toUpperCase());
strAppClassName = "C" + CreateSafeName(strProjectName) + "App";
wizard.AddSymbol("APP_CLASS_NAME", strAppClassName);
wizard.AddSymbol("APP_FULLSCREEN", wizard.FindSymbol('LST_WINMODE')=='WM_FULL');
wizard.AddSymbol("APP_ASK_FULLSCREEN", wizard.FindSymbol('LST_WINMODE')=='WM_ASK');
selProj = CreateCustomProject(strProjectName, strProjectPath);
AddConfig(selProj, strProjectName);
AddFilters(selProj);
var InfFile = CreateCustomInfFile();
AddFilesToCustomProj(selProj, strProjectName, strProjectPath, InfFile);
PchSettings(selProj);
InfFile.Delete();
selProj.Object.Save();
}
catch(e)
{
if (e.description.length != 0)
SetErrorInfo(e);
return e.number
}
}
function CreateCustomProject(strProjectName, strProjectPath)
{
try
{
var strProjTemplatePath = wizard.FindSymbol('PROJECT_TEMPLATE_PATH');
var strProjTemplate = '';
strProjTemplate = strProjTemplatePath + '\\default.vcproj';
var Solution = dte.Solution;
var strSolutionName = "";
if (wizard.FindSymbol("CLOSE_SOLUTION"))
{
Solution.Close();
strSolutionName = wizard.FindSymbol("VS_SOLUTION_NAME");
if (strSolutionName.length)
{
var strSolutionPath = strProjectPath.substr(0, strProjectPath.length - strProjectName.length);
Solution.Create(strSolutionPath, strSolutionName);
}
}
var strProjectNameWithExt = '';
strProjectNameWithExt = strProjectName + '.vcproj';
var oTarget = wizard.FindSymbol("TARGET");
var prj;
if (wizard.FindSymbol("WIZARD_TYPE") == vsWizardAddSubProject) // vsWizardAddSubProject
{
var prjItem = oTarget.AddFromTemplate(strProjTemplate, strProjectNameWithExt);
prj = prjItem.SubProject;
}
else
{
prj = oTarget.AddFromTemplate(strProjTemplate, strProjectPath, strProjectNameWithExt);
}
return prj;
}
catch(e)
{
throw e;
}
}
function AddFilters(proj)
{
try
{
// Add the folders to your project
var group = proj.Object.AddFilter('Source Files');
group.Filter = "cpp;c;cxx;def;odl;idl;hpj;bat;asm";
var group = proj.Object.AddFilter('Header Files');
group.Filter = "h;hpp;hxx;hm;inl;inc";
var group = proj.Object.AddFilter('Resource files');
group.Filter = "rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe";
}
catch(e)
{
throw e;
}
}
function AddConfig(proj, strProjectName)
{
try
{
// Debug config
var config = proj.Object.Configurations('Debug');
config.IntermediateDirectory = 'Debug';
config.OutputDirectory = 'Debug';
// Compiler settings
var CLTool = config.Tools('VCCLCompilerTool');
CLTool.DebugInformationFormat = debugEditAndContinue;
CLTool.Optimization = optimizeDisabled;
CLTool.RuntimeLibrary = runtimeLibraryOption.rtSingleThreadedDebug;
// Linker settings
var LinkTool = config.Tools('VCLinkerTool');
LinkTool.AdditionalDependencies = "opengl32.lib glu32.lib";
LinkTool.GenerateDebugInformation = true;
// Release config
config = proj.Object.Configurations('Release');
config.IntermediateDirectory = 'Release';
config.OutputDirectory = 'Release';
// Linker settings
var LinkTool = config.Tools('VCLinkerTool');
LinkTool.AdditionalDependencies = "opengl32.lib glu32.lib";
}
catch(e)
{
throw e;
}
}
function PchSettings(proj)
{
// TODO: specify pch settings
}
function DelFile(fso, strWizTempFile)
{
try
{
if (fso.FileExists(strWizTempFile))
{
var tmpFile = fso.GetFile(strWizTempFile);
tmpFile.Delete();
}
}
catch(e)
{
throw e;
}
}
function CreateCustomInfFile()
{
try
{
var fso, TemplatesFolder, TemplateFiles, strTemplate;
fso = new ActiveXObject('Scripting.FileSystemObject');
var TemporaryFolder = 2;
var tfolder = fso.GetSpecialFolder(TemporaryFolder);
var strTempFolder = tfolder.Drive + '\\' + tfolder.Name;
var strWizTempFile = strTempFolder + "\\" + fso.GetTempName();
var strTemplatePath = wizard.FindSymbol('TEMPLATES_PATH');
var strInfFile = strTemplatePath + '\\Templates.inf';
wizard.RenderTemplate(strInfFile, strWizTempFile);
var WizTempFile = fso.GetFile(strWizTempFile);
return WizTempFile;
}
catch(e)
{
throw e;
}
}
function GetTargetName(strName, strProjectName)
{
try
{
// TODO: set the name of the rendered file based on the template filename
var strTarget = strName;
if (strName == 'readme.txt')
strTarget = 'ReadMe.txt';
if (strName == 'OGLBase.h')
strTarget = strProjectName + '.h';
if (strName == 'OGLBase.cpp')
strTarget = strProjectName + '.cpp';
if (strName == 'OGLBase.rc')
strTarget = strProjectName + '.rc';
return strTarget;
}
catch(e)
{
throw e;
}
}
function AddFilesToCustomProj(proj, strProjectName, strProjectPath, InfFile)
{
try
{
var projItems = proj.ProjectItems
var strTemplatePath = wizard.FindSymbol('TEMPLATES_PATH');
var strTpl = '';
var strName = '';
var strTextStream = InfFile.OpenAsTextStream(1, -2);
while (!strTextStream.AtEndOfStream)
{
strTpl = strTextStream.ReadLine();
if (strTpl != '')
{
strName = strTpl;
var strTarget = GetTargetName(strName, strProjectName);
var strTemplate = strTemplatePath + '\\' + strTpl;
var strFile = strProjectPath + '\\' + strTarget;
var bCopyOnly = false; //"true" will only copy the file from strTemplate to strTarget without rendering/adding to the project
var strExt = strName.substr(strName.lastIndexOf("."));
if(strExt==".bmp" || strExt==".ico" || strExt==".gif" || strExt==".rtf" || strExt==".css")
bCopyOnly = true;
wizard.RenderTemplate(strTemplate, strFile, bCopyOnly);
proj.Object.AddFile(strFile);
}
}
strTextStream.Close();
}
catch(e)
{
throw e;
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.