diff --git a/toonz/sources/include/toonz/tproject.h b/toonz/sources/include/toonz/tproject.h index 0898213..d8ec955 100644 --- a/toonz/sources/include/toonz/tproject.h +++ b/toonz/sources/include/toonz/tproject.h @@ -146,6 +146,7 @@ public: TFilePath projectNameToProjectPath(const TFilePath &projectName); TFilePath projectFolderToProjectPath(const TFilePath &projectFolder); TFilePath getProjectPathByName(const TFilePath &projectName); + TFilePath getProjectPathByProjectFolder(const TFilePath &projectFolder); TProjectP loadSceneProject(const TFilePath &scenePath); void getFolderNames(std::vector &names); diff --git a/toonz/sources/toonz/projectpopup.cpp b/toonz/sources/toonz/projectpopup.cpp index 1e907cc..999468b 100644 --- a/toonz/sources/toonz/projectpopup.cpp +++ b/toonz/sources/toonz/projectpopup.cpp @@ -347,13 +347,14 @@ void ProjectPopup::updateChooseProjectCombo() { m_projectPaths.clear(); m_chooseProjectCombo->clear(); - TFilePath sandboxFp = TProjectManager::instance()->getSandboxProjectFolder() + - "sandbox_otprj.xml"; + TProjectManager *pm = TProjectManager::instance(); + + TFilePath sandboxFp = pm->getSandboxProjectFolder() + "sandbox_otprj.xml"; m_projectPaths.push_back(sandboxFp); m_chooseProjectCombo->addItem("sandbox"); std::vector prjRoots; - TProjectManager::instance()->getProjectRoots(prjRoots); + pm->getProjectRoots(prjRoots); for (int i = 0; i < prjRoots.size(); i++) { TFilePathSet fps; TSystem::readDirectory_Dir_ReadExe(fps, prjRoots[i]); @@ -361,15 +362,16 @@ void ProjectPopup::updateChooseProjectCombo() { TFilePathSet::iterator it; for (it = fps.begin(); it != fps.end(); ++it) { TFilePath fp(*it); - if (TProjectManager::instance()->isProject(fp)) { - m_projectPaths.push_back( - TProjectManager::instance()->projectFolderToProjectPath(fp)); - m_chooseProjectCombo->addItem(QString::fromStdString(fp.getName())); + if (pm->isProject(fp)) { + m_projectPaths.push_back(pm->projectFolderToProjectPath(fp)); + TFilePath prjFile = pm->getProjectPathByProjectFolder(fp); + m_chooseProjectCombo->addItem( + QString::fromStdString(prjFile.getName())); } } } // Add in project of current project if outside known Project root folders - TProjectP currentProject = TProjectManager::instance()->getCurrentProject(); + TProjectP currentProject = pm->getCurrentProject(); TFilePath currentProjectFP = currentProject->getProjectPath(); if (m_projectPaths.indexOf(currentProjectFP) == -1) { m_projectPaths.push_back(currentProjectFP); @@ -377,8 +379,7 @@ void ProjectPopup::updateChooseProjectCombo() { QString::fromStdString(currentProject->getName().getName())); } for (int i = 0; i < m_projectPaths.size(); i++) { - if (TProjectManager::instance()->getCurrentProjectPath() == - m_projectPaths[i]) { + if (pm->getCurrentProjectPath() == m_projectPaths[i]) { m_chooseProjectCombo->setCurrentIndex(i); break; } diff --git a/toonz/sources/toonz/startuppopup.cpp b/toonz/sources/toonz/startuppopup.cpp index e49fb68..ebb8ea9 100644 --- a/toonz/sources/toonz/startuppopup.cpp +++ b/toonz/sources/toonz/startuppopup.cpp @@ -508,13 +508,14 @@ void StartupPopup::updateProjectCB() { m_projectPaths.clear(); m_projectsCB->clear(); - TFilePath sandboxFp = TProjectManager::instance()->getSandboxProjectFolder() + - "sandbox_otprj.xml"; + TProjectManager *pm = TProjectManager::instance(); + + TFilePath sandboxFp = pm->getSandboxProjectFolder() + "sandbox_otprj.xml"; m_projectPaths.push_back(sandboxFp); m_projectsCB->addItem("sandbox"); std::vector prjRoots; - TProjectManager::instance()->getProjectRoots(prjRoots); + pm->getProjectRoots(prjRoots); for (int i = 0; i < prjRoots.size(); i++) { TFilePathSet fps; TSystem::readDirectory_Dir_ReadExe(fps, prjRoots[i]); @@ -522,15 +523,15 @@ void StartupPopup::updateProjectCB() { TFilePathSet::iterator it; for (it = fps.begin(); it != fps.end(); ++it) { TFilePath fp(*it); - if (TProjectManager::instance()->isProject(fp)) { - m_projectPaths.push_back( - TProjectManager::instance()->projectFolderToProjectPath(fp)); - m_projectsCB->addItem(QString::fromStdString(fp.getName())); + if (pm->isProject(fp)) { + m_projectPaths.push_back(pm->projectFolderToProjectPath(fp)); + TFilePath prjFile = pm->getProjectPathByProjectFolder(fp); + m_projectsCB->addItem(QString::fromStdString(prjFile.getName())); } } } // Add in project of current project if outside known Project root folders - TProjectP currentProject = TProjectManager::instance()->getCurrentProject(); + TProjectP currentProject = pm->getCurrentProject(); TFilePath currentProjectFP = currentProject->getProjectPath(); if (m_projectPaths.indexOf(currentProjectFP) == -1) { m_projectPaths.push_back(currentProjectFP); @@ -539,8 +540,7 @@ void StartupPopup::updateProjectCB() { } int i; for (i = 0; i < m_projectPaths.size(); i++) { - if (TProjectManager::instance()->getCurrentProjectPath() == - m_projectPaths[i]) { + if (pm->getCurrentProjectPath() == m_projectPaths[i]) { m_projectsCB->setCurrentIndex(i); break; } diff --git a/toonz/sources/toonzlib/tproject.cpp b/toonz/sources/toonzlib/tproject.cpp index 5b132c8..cafd8f0 100644 --- a/toonz/sources/toonzlib/tproject.cpp +++ b/toonz/sources/toonzlib/tproject.cpp @@ -810,6 +810,14 @@ TFilePath TProjectManager::projectPathToProjectName( assert(projectPath.isAbsolute()); TFilePath projectFolder = projectPath.getParentDir(); if (m_projectsRoots.empty()) addDefaultProjectsRoot(); + + std::wstring fpName = projectPath.getWideName(); + for (int i = 0; i < prjSuffixCount; ++i) { + // std::wstring::size_type const i = fpName.find(prjSuffix[i]); + if (fpName.find(prjSuffix[i]) != std::wstring::npos) + return TFilePath(fpName.substr(0, fpName.find(prjSuffix[i]))); + } + int i; for (i = 0; i < (int)m_projectsRoots.size(); i++) { if (m_projectsRoots[i].isAncestorOf(projectFolder)) @@ -877,6 +885,15 @@ TFilePath TProjectManager::getProjectPathByName(const TFilePath &projectName) { } //------------------------------------------------------------------- + +TFilePath TProjectManager::getProjectPathByProjectFolder( + const TFilePath &projectFolder) { + assert(!projectFolder.isAbsolute()); + TFilePath projectPath = searchProjectPath(projectFolder); + return projectPathToProjectName(projectPath); +} + +//------------------------------------------------------------------- /*! Gets all project folder names and put them in the passed vector \b names. \note All previous data contained in \b names are lost.*/