Example #1
0
//==============================================================================
Project* NewProjectWizard::runWizard (Component* ownerWindow_,
                                      const String& projectName,
                                      const File& targetFolder_)
{
    ownerWindow = ownerWindow_;
    appTitle = projectName;
    targetFolder = targetFolder_;

    if (! targetFolder.exists())
    {
        if (! targetFolder.createDirectory())
            failedFiles.add (targetFolder.getFullPathName());
    }
    else if (FileHelpers::containsAnyNonHiddenFiles (targetFolder))
    {
        if (! AlertWindow::showOkCancelBox (AlertWindow::InfoIcon, "New Juce Project",
                                            "The folder you chose isn't empty - are you sure you want to create the project there?\n\nAny existing files with the same names may be overwritten by the new files."))
            return nullptr;
    }

    projectFile = targetFolder.getChildFile (File::createLegalFileName (appTitle))
                              .withFileExtension (Project::projectFileExtension);

    ScopedPointer<Project> project (new Project (projectFile));
    project->addDefaultModules (true);

    if (failedFiles.size() == 0)
    {
        project->setFile (projectFile);
        project->setTitle (appTitle);
        project->getBundleIdentifier() = project->getDefaultBundleIdentifier();

        if (! initialiseProject (*project))
            return nullptr;

        if (project->save (false, true) != FileBasedDocument::savedOk)
            return nullptr;

        project->setChangedFlag (false);
    }

    if (failedFiles.size() > 0)
    {
        AlertWindow::showMessageBox (AlertWindow::WarningIcon,
                                     "Errors in Creating Project!",
                                     "The following files couldn't be written:\n\n"
                                        + failedFiles.joinIntoString ("\n", 0, 10));
        return nullptr;
    }

    return project.release();
}