diff --git a/stuff/profiles/layouts/OpenToonz/room1_menubar.xml b/stuff/profiles/layouts/OpenToonz/room1_menubar.xml index 13bae22..373e4b1 100644 --- a/stuff/profiles/layouts/OpenToonz/room1_menubar.xml +++ b/stuff/profiles/layouts/OpenToonz/room1_menubar.xml @@ -9,6 +9,7 @@ MI_LoadScene MI_SaveScene MI_SaveSceneAs + MI_SaveAll MI_OpenRecentScene MI_RevertScene diff --git a/stuff/profiles/layouts/OpenToonz/room2_menubar.xml b/stuff/profiles/layouts/OpenToonz/room2_menubar.xml index d503306..64f3972 100644 --- a/stuff/profiles/layouts/OpenToonz/room2_menubar.xml +++ b/stuff/profiles/layouts/OpenToonz/room2_menubar.xml @@ -16,6 +16,7 @@ MI_LoadScene MI_SaveScene MI_SaveSceneAs + MI_SaveAll MI_OpenRecentScene MI_RevertScene diff --git a/stuff/profiles/layouts/OpenToonz/room3_menubar.xml b/stuff/profiles/layouts/OpenToonz/room3_menubar.xml index 6b15f61..b090854 100644 --- a/stuff/profiles/layouts/OpenToonz/room3_menubar.xml +++ b/stuff/profiles/layouts/OpenToonz/room3_menubar.xml @@ -4,6 +4,7 @@ MI_LoadFolder MI_SaveLevel MI_SaveLevelAs + MI_SaveAll MI_OpenRecentLevel MI_ExportLevel MI_LevelSettings diff --git a/stuff/profiles/layouts/OpenToonz/room4_menubar.xml b/stuff/profiles/layouts/OpenToonz/room4_menubar.xml index b37b517..544b309 100644 --- a/stuff/profiles/layouts/OpenToonz/room4_menubar.xml +++ b/stuff/profiles/layouts/OpenToonz/room4_menubar.xml @@ -3,6 +3,7 @@ MI_LoadScene MI_SaveScene MI_SaveSceneAs + MI_SaveAll MI_OpenRecentScene MI_RevertScene diff --git a/toonz/sources/toonz/iocommand.cpp b/toonz/sources/toonz/iocommand.cpp index 7bddb5a..a9c34d0 100644 --- a/toonz/sources/toonz/iocommand.cpp +++ b/toonz/sources/toonz/iocommand.cpp @@ -1667,66 +1667,22 @@ bool IoCmd::saveLevel(TXshSimpleLevel *sl) bool IoCmd::saveAll() { -#ifdef BRAVODEMO - return false; -#else // try to save as much as possible // if anything is wrong, return false - bool result = true; - // save scene - if (!saveScene()) - { - result = false; - } + bool result = saveScene(); TApp *app = TApp::instance(); ToonzScene* scene = app->getCurrentScene()->getScene(); - TLevelSet* levelSet = scene->getLevelSet(); - int numLevels = levelSet->getLevelCount(); - // save levels of scene - for (int i = 0; i < numLevels; ++i) - { - TXshLevel* level = levelSet->getLevel(i); - TXshSimpleLevel *sl = level->getSimpleLevel(); - if (sl) - { - if (sl->getPath() == TFilePath()) - { - result = false; - continue; - } - - TFilePath path = scene->decodeFilePath(sl->getPath()); - if (path == TFilePath()) - { - result = false; - continue; - } - if (path.getWideString()[0] == L'+') - { - result = false; - continue; - } - if (!path.isAbsolute()) - { - result = false; - continue; - } - if (!saveLevel(path, sl, true)) - { - result = false; - continue; - } - sl->setDirtyFlag(false); - } - } - + + SceneResources resources(scene, 0); + resources.save(scene->getScenePath()); + resources.updatePaths(); + // for update title bar - // should we call this for all the levels? - app->getCurrentLevel()->notifyLevelChange(); + app->getCurrentLevel()->notifyLevelTitleChange(); + app->getCurrentPalette()->notifyPaletteTitleChanged(); return result; -#endif } //=========================================================================== diff --git a/toonz/sources/toonzlib/sceneresources.cpp b/toonz/sources/toonzlib/sceneresources.cpp index 98d3758..97ec48c 100644 --- a/toonz/sources/toonzlib/sceneresources.cpp +++ b/toonz/sources/toonzlib/sceneresources.cpp @@ -256,13 +256,13 @@ void SceneLevel::save() //Questo controllo viene fatto qui e non nella copia o nel salvataggio del livello perche' in generale //non si vuole che il livello unpainted venga copiato con il livello. if (actualFp.getType() == "tlv") { - TFilePath oldUnpaintedLevelPath = oldActualPath.getParentDir() + TFilePath(oldActualPath.getName() + "-unpainted." + oldActualPath.getType()); - TFilePath unpaintedLevelPath = actualFp.getParentDir() + TFilePath(actualFp.getName() + "-unpainted." + actualFp.getType()); - if (TSystem::doesExistFileOrLevel(oldUnpaintedLevelPath) && !TSystem::doesExistFileOrLevel(unpaintedLevelPath)) + TFilePath oldUnpaintedLevelPath = oldActualPath.getParentDir() + "nopaint\\" + TFilePath(oldActualPath.getName() + "_np." + oldActualPath.getType()); + TFilePath unpaintedLevelPath = actualFp.getParentDir() + "nopaint\\" + TFilePath(actualFp.getName() + "_np." + actualFp.getType()); + if (TSystem::doesExistFileOrLevel(oldUnpaintedLevelPath) && !TSystem::doesExistFileOrLevel(unpaintedLevelPath) && TSystem::touchParentDir(unpaintedLevelPath)) TSystem::copyFile(unpaintedLevelPath, oldUnpaintedLevelPath); TFilePath oldUnpaintedPalettePath = oldUnpaintedLevelPath.withType("tpl"); TFilePath unpaintedPalettePath = unpaintedLevelPath.withType("tpl"); - if (TSystem::doesExistFileOrLevel(oldUnpaintedPalettePath) && !TSystem::doesExistFileOrLevel(unpaintedPalettePath)) + if (TSystem::doesExistFileOrLevel(oldUnpaintedPalettePath) && !TSystem::doesExistFileOrLevel(unpaintedPalettePath) && TSystem::touchParentDir(unpaintedPalettePath)) TSystem::copyFile(unpaintedPalettePath, oldUnpaintedPalettePath); } } catch (...) {