void Gui::openRecentFile() { QAction *action = qobject_cast<QAction *>( sender() ); if (action) { QFileInfo f( action->data().toString() ); QString path = f.path() + QLatin1Char('/'); QString filename = path + f.fileName(); int openedProject = appPTR->isProjectAlreadyOpened( filename.toStdString() ); if (openedProject != -1) { AppInstance* instance = appPTR->getAppInstance(openedProject); if (instance) { GuiAppInstance* guiApp = dynamic_cast<GuiAppInstance*>(instance); assert(guiApp); if (guiApp) { guiApp->getGui()->activateWindow(); return; } } } ///if the current graph has no value, just load the project in the same window if ( _imp->_appInstance->getProject()->isGraphWorthLess() ) { _imp->_appInstance->getProject()->loadProject( path, f.fileName() ); } else { CLArgs cl; AppInstance* newApp = appPTR->newAppInstance(cl, false); newApp->getProject()->loadProject( path, f.fileName() ); } } }
bool GuiAppInstance::findAndTryLoadUntitledAutoSave() { if ( !appPTR->getCurrentSettings()->isAutoSaveEnabledForUnsavedProjects() ) { return false; } QDir savesDir( Project::autoSavesDir() ); QStringList entries = savesDir.entryList(QDir::Files | QDir::NoDotAndDotDot); QStringList foundAutosaves; for (int i = 0; i < entries.size(); ++i) { const QString & entry = entries.at(i); QString searchStr( QLatin1Char('.') ); searchStr.append( QString::fromUtf8(NATRON_PROJECT_FILE_EXT) ); searchStr.append( QString::fromUtf8(".autosave") ); int suffixPos = entry.indexOf(searchStr); if ( (suffixPos == -1) || entry.contains( QString::fromUtf8("RENDER_SAVE") ) ) { continue; } foundAutosaves << entry; } if ( foundAutosaves.empty() ) { return false; } QString text = tr("An auto-saved project was found with no associated project file.\n" "Would you like to restore it? Clicking No will remove this auto-save."); appPTR->hideSplashScreen(); StandardButtonEnum ret = Dialogs::questionDialog(tr("Auto-save").toStdString(), text.toStdString(), false, StandardButtons(eStandardButtonYes | eStandardButtonNo), eStandardButtonYes); if ( (ret == eStandardButtonNo) || (ret == eStandardButtonEscape) ) { Project::clearAutoSavesDir(); return false; } for (int i = 0; i < foundAutosaves.size(); ++i) { const QString& autoSaveFileName = foundAutosaves[i]; if (i == 0) { //Load the first one into the current instance of Natron, then open-up new instances if ( !getProject()->loadProject(savesDir.path() + QLatin1Char('/'), autoSaveFileName, true) ) { return false; } } else { CLArgs cl; AppInstance* newApp = appPTR->newAppInstance(cl, false); if ( !newApp->getProject()->loadProject(savesDir.path() + QLatin1Char('/'), autoSaveFileName, true) ) { return false; } } } return true; } // findAndTryLoadAutoSave