TFilePath ExportScenePopup::createNewProject() { TProjectManager *pm = TProjectManager::instance(); TFilePath projectName(m_newProjectName->text().toStdWString()); if (projectName == TFilePath()) { MsgBox(WARNING, tr("The project name cannot be empty or contain any of the following characters:(new line) \\ / : * ? \" |")); return TFilePath(); } if (projectName.isAbsolute()) { // bad project name MsgBox(WARNING, tr("The project name cannot be empty or contain any of the following characters:(new line) \\ / : * ? \" |")); return TFilePath(); } if (pm->getProjectPathByName(projectName) != TFilePath()) { // project already exists MsgBox(WARNING, tr("The project name you specified is already used.")); return TFilePath(); } TFilePath currentProjectRoot; DvDirModelFileFolderNode *node = dynamic_cast<DvDirModelFileFolderNode *>(m_projectTreeView->getCurrentNode()); if (node) currentProjectRoot = node->getPath(); else currentProjectRoot = pm->getCurrentProjectRoot(); TFilePath projectFolder = currentProjectRoot + projectName; TFilePath projectPath = pm->projectFolderToProjectPath(projectFolder); TProject *project = new TProject(); TProjectP currentProject = pm->getCurrentProject(); assert(currentProject); int i; for (i = 0; i < (int)currentProject->getFolderCount(); i++) project->setFolder(currentProject->getFolderName(i), currentProject->getFolder(i)); project->save(projectPath); DvDirModel::instance()->refreshFolder(currentProjectRoot); return projectPath; }