////////////////////////////////////////////////////////////////////////////////
//
// Code::Blocks new file wizard script
//
// Project: C/C++ source file
// Author:  Yiannis Mandravellos
//
////////////////////////////////////////////////////////////////////////////////

function BeginWizard()
{
    // this is the text that will appear in the start (intro) page
    local intro_msg = _T("Welcome to the new C/C++ source file wizard!\n" +
                         "This wizard will guide you to create a new C/C++ source file.\n\n" +
                         "When you 're ready to proceed, please click \"Next\"...");

    // add builtin pages
    Wizard.AddInfoPage(_T("CFileIntro"), intro_msg); // intro
    Wizard.AddGenericSingleChoiceListPage(_T("CFileLanguagePage"), _T("Please select the language for the file."), _T("C;C++"), 1); // select language
    Wizard.AddFilePathPage(false); // select filename (no header guard for source files)
}

function OnLeave_CFileLanguagePage(fwd)
{
    if (fwd)
    {
        if (Wizard.GetListboxSelection(_T("GenericChoiceList")) == 0)
            Wizard.SetFilePathSelectionFilter(_T("C files (*.c;*.C)|*.c;*.C")); // C
        else
            Wizard.SetFilePathSelectionFilter(_T("C++ files (*.cpp;*.cxx;*.cc)|*.cpp;*.cxx;*.cc")); // C++
    }
    return true; // allow it
}

function CreateFiles()
{
    local fname = Wizard.GetFileName();
    local ed    = GetEditorManager();
    if (IsNull(ed))
    {
        ShowError(_T("The wizard could not locate the editor manager."));
    }

    local ed_new = ed.New(fname);
    if (IsNull(ed_new))
    {
        ShowError(_T("The wizard could not create a new file.\n" +
                     "Maybe the target folder is write-protected?"));
    }
    else
    {
        // succeeded -> add file to project if needed
        if (Wizard.GetFileAddToProject())
        {
            AddFileToTargets(Wizard, fname);
        }
    }
    return fname;
}
