Seems almost extremely easy. :D
Few things to point out:
-The scripts will need _("") macros to get i18n. I don't know how easy will be it to do with AngelScript in middle. HeroMyth?
-Languages other than C/C++, two options: having different wizards for each language, or having all in one wizard.
On "having all in one wizard" option, this for example:
if (IsCpp)
{
// C++ source file
result = "console/cpp";
}
else
{
// C source file
result = "console/c";
}
can become:
if( Wizard.GetLanguageID() == "cpp")
result = "console/cpp"; // C++ source file
if( Wizard.GetLanguageID() == "c")
result = "console/c"; // C source file
if( Wizard.GetLanguageID() == "d")
result = "console/d"; // D source file
if( Wizard.GetLanguageID() == "fortran")
result = "console/fortran"; // Fortran source file
if( Wizard.GetLanguageID() == "python")
result = "console/python"; // Python source file
Actually it would make more sense, as a lot of languages can share the Wizard (Console, wxWidgets projects, etc).
There are more things, but that suffices. :)
Thanks Takeshi.
The main reason I hold this back (although it is ready), is because scripting doesn't work in all platforms yet. This would make it impossible to create a new project on those platforms...
Yes, I'm worried about the same. So I think C::B should be useable without scripting (at least for now, AngelScript should be an optional dependency).
That's why I think the dependencies are good to be ifdef'ed (except when ifdef'ing introduce too much cruft in the code).
Actually AngelScript works on all platforms (I think), but only when using AS_MAX_PORTABILITY, and AFAIK only the asCALL_GENERIC calling convention is available.
C::B could introduce a header with things like
#ifdef AS_MAX_PORTABILITY
#define ... asCALL_GENERIC
#else
#define ... ...
#endif