|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "studiopalettecmd.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tapp.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tpalettehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshlevelhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tscenehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tundo.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tcolorstyles.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tsystem.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/icongenerator.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzutil.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tconvert.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/studiopalette.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/levelset.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshsimplelevel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/txshleveltypes.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/sceneproperties.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// Mi serve per effettuare il cambiamento della StudioPalette corrente
|
|
Toshihiro Shimizu |
890ddd |
#include "studiopaletteviewer.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*! \namespace StudioPaletteCmd
|
|
Shinya Kitaoka |
120a6e |
\brief Provides a collection of methods to manage \b
|
|
Shinya Kitaoka |
120a6e |
StudioPalette.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
namespace {
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// PaletteAssignUndo
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class PaletteAssignUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TPaletteP m_targetPalette, m_oldPalette, m_newPalette;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
PaletteAssignUndo(const TPaletteP &targetPalette, const TPaletteP &oldPalette,
|
|
Shinya Kitaoka |
120a6e |
const TPaletteP &newPalette)
|
|
Shinya Kitaoka |
120a6e |
: m_targetPalette(targetPalette)
|
|
Shinya Kitaoka |
120a6e |
, m_oldPalette(oldPalette)
|
|
Shinya Kitaoka |
120a6e |
, m_newPalette(newPalette) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const {
|
|
Shinya Kitaoka |
120a6e |
m_targetPalette->assign(m_oldPalette.getPointer());
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
void redo() const {
|
|
Shinya Kitaoka |
120a6e |
m_targetPalette->assign(m_newPalette.getPointer());
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int getSize() const {
|
|
Shinya Kitaoka |
120a6e |
return sizeof(*this) +
|
|
Shinya Kitaoka |
120a6e |
(m_targetPalette->getStyleCount() + m_oldPalette->getStyleCount() +
|
|
Shinya Kitaoka |
120a6e |
m_newPalette->getStyleCount()) *
|
|
Shinya Kitaoka |
120a6e |
100;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// StudioPaletteAssignUndo
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class StudioPaletteAssignUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TPaletteP m_oldPalette, m_newPalette;
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_fp;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
StudioPaletteAssignUndo(const TFilePath &targetPath,
|
|
Shinya Kitaoka |
120a6e |
const TPaletteP &oldPalette,
|
|
Shinya Kitaoka |
120a6e |
const TPaletteP &newPalette)
|
|
Shinya Kitaoka |
120a6e |
: m_fp(targetPath), m_oldPalette(oldPalette), m_newPalette(newPalette) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette *sp = StudioPalette::instance();
|
|
Shinya Kitaoka |
120a6e |
sp->setPalette(m_fp, m_oldPalette.getPointer());
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
void redo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette *sp = StudioPalette::instance();
|
|
Shinya Kitaoka |
120a6e |
sp->setPalette(m_fp, m_newPalette.getPointer());
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
int getSize() const {
|
|
Shinya Kitaoka |
120a6e |
return sizeof(*this) +
|
|
Shinya Kitaoka |
120a6e |
(m_oldPalette->getStyleCount() + m_newPalette->getStyleCount()) *
|
|
Shinya Kitaoka |
120a6e |
100;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// DeletePaletteUndo
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class DeletePaletteUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_palettePath;
|
|
Shinya Kitaoka |
120a6e |
TPaletteP m_palette;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
DeletePaletteUndo(const TFilePath &palettePath) : m_palettePath(palettePath) {
|
|
Shinya Kitaoka |
120a6e |
m_palette = StudioPalette::instance()->getPalette(m_palettePath);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->setPalette(m_palettePath, m_palette->clone());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
void redo() const { StudioPalette::instance()->deletePalette(m_palettePath); }
|
|
Shinya Kitaoka |
120a6e |
int getSize() const { return sizeof(*this) + sizeof(TPalette); }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// CreatePaletteUndo
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class CreatePaletteUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_palettePath;
|
|
Shinya Kitaoka |
120a6e |
TPaletteP m_palette;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
CreatePaletteUndo(const TFilePath &palettePath) : m_palettePath(palettePath) {
|
|
Shinya Kitaoka |
120a6e |
m_palette = StudioPalette::instance()->getPalette(m_palettePath);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const { StudioPalette::instance()->deletePalette(m_palettePath); }
|
|
Shinya Kitaoka |
120a6e |
void redo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->setPalette(m_palettePath, m_palette->clone());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
int getSize() const { return sizeof(*this) + sizeof(TPalette); }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// DeleteFolderUndo
|
|
Shinya Kitaoka |
120a6e |
// Oss.: l'undo non ricorda eventuali sottoFolder o palette, si limita a
|
|
Shinya Kitaoka |
120a6e |
// ricreare
|
|
Toshihiro Shimizu |
890ddd |
// il folder!!!
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class DeleteFolderUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_folderPath;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
DeleteFolderUndo(const TFilePath &folderPath) : m_folderPath(folderPath) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->createFolder(m_folderPath.getParentDir(),
|
|
Shinya Kitaoka |
120a6e |
m_folderPath.getWideName());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
void redo() const { StudioPalette::instance()->deleteFolder(m_folderPath); }
|
|
Shinya Kitaoka |
120a6e |
int getSize() const { return sizeof(*this) + sizeof(TPalette); }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// CreateFolderUndo
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class CreateFolderUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_folderPath;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
CreateFolderUndo(const TFilePath &folderPath) : m_folderPath(folderPath) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const { StudioPalette::instance()->deleteFolder(m_folderPath); }
|
|
Shinya Kitaoka |
120a6e |
void redo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->createFolder(m_folderPath.getParentDir(),
|
|
Shinya Kitaoka |
120a6e |
m_folderPath.getWideName());
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
int getSize() const { return sizeof(*this) + sizeof(TPalette); }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Shinya Kitaoka |
120a6e |
// MovePaletteUndo
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class MovePaletteUndo : public TUndo {
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_dstPath, m_srcPath;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
MovePaletteUndo(const TFilePath &dstPath, const TFilePath &srcPath)
|
|
Shinya Kitaoka |
120a6e |
: m_dstPath(dstPath), m_srcPath(srcPath) {}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
void undo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->movePalette(m_srcPath, m_dstPath);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
void redo() const {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->movePalette(m_dstPath, m_srcPath);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
int getSize() const { return sizeof(*this); }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Shinya Kitaoka |
120a6e |
} // namespace
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::loadIntoCurrentPalette() {
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// ColorController *cc = ColorController::instance();
|
|
Shinya Kitaoka |
120a6e |
// TPalette *palette = cc->getStudioPalette();
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = TApp::instance()->getCurrentPalette()->getPalette();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
wstring gname = palette->getGlobalName();
|
|
Shinya Kitaoka |
120a6e |
TFilePath fp = StudioPalette::instance()->getPalettePath(gname);
|
|
Shinya Kitaoka |
120a6e |
if (fp != TFilePath()) loadIntoCurrentPalette(fp);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
if (!palette->isCleanupPalette())
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentLevel()->getLevel()->setPaletteDirtyFlag(true);
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->setDirtyFlag(true);
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::loadIntoCurrentPalette(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// ColorController *cc = ColorController::instance();
|
|
Shinya Kitaoka |
120a6e |
// int styleId = cc->getCurrentStyleIndex();
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
int styleId = app->getCurrentPalette()->getStyleIndex();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = StudioPalette::instance()->getPalette(fp, true);
|
|
Shinya Kitaoka |
120a6e |
if (!palette) return;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
TPalette *current = !palette->isCleanupPalette()
|
|
Shinya Kitaoka |
120a6e |
? app->getCurrentPalette()->getPalette()
|
|
Shinya Kitaoka |
120a6e |
: app->getCurrentScene()
|
|
Shinya Kitaoka |
120a6e |
->getScene()
|
|
Shinya Kitaoka |
120a6e |
->getProperties()
|
|
Shinya Kitaoka |
120a6e |
->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
// ? cc->getCleanupPalette()
|
|
Shinya Kitaoka |
120a6e |
// : cc->getLevelPalette();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (!current) return;
|
|
Shinya Kitaoka |
120a6e |
TPalette *old = current->clone();
|
|
Shinya Kitaoka |
120a6e |
while (palette->getStyleCount() < current->getStyleCount()) {
|
|
Shinya Kitaoka |
120a6e |
int index = palette->getStyleCount();
|
|
Shinya Kitaoka |
120a6e |
assert(index < current->getStyleCount());
|
|
Shinya Kitaoka |
120a6e |
TColorStyle *style = current->getStyle(index)->clone();
|
|
Shinya Kitaoka |
120a6e |
palette->addStyle(style);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
current->assign(palette);
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// if(cc->getCurrentStylePalette() == current &&
|
|
Shinya Kitaoka |
120a6e |
// styleId>=current->getStyleCount())
|
|
Shinya Kitaoka |
120a6e |
// cc->setCurrentStyle(1);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(
|
|
Shinya Kitaoka |
120a6e |
new PaletteAssignUndo(current, old, current->clone()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
if ( // current == cc->getCurrentStylePalette() &&
|
|
Shinya Kitaoka |
120a6e |
app->getCurrentLevel()->getLevel()) {
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *sl = app->getCurrentLevel()->getSimpleLevel();
|
|
Shinya Kitaoka |
120a6e |
if (sl) {
|
|
Shinya Kitaoka |
120a6e |
sl->invalidateIcons();
|
|
Shinya Kitaoka |
120a6e |
sl->setDirtyFlag(true);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
app->instance()->getCurrentLevel()->notifyLevelChange();
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
app->getCurrentPalette()->notifyPaletteChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::mergeIntoCurrentPalette(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
// ColorController *cc = ColorController::instance();
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = StudioPalette::instance()->getPalette(fp);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
TPalette *current = !palette->isCleanupPalette()
|
|
Shinya Kitaoka |
120a6e |
? app->getCurrentPalette()->getPalette()
|
|
Shinya Kitaoka |
120a6e |
: app->getCurrentScene()
|
|
Shinya Kitaoka |
120a6e |
->getScene()
|
|
Shinya Kitaoka |
120a6e |
->getProperties()
|
|
Shinya Kitaoka |
120a6e |
->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
// ? cc->getCleanupPalette()
|
|
Shinya Kitaoka |
120a6e |
// : cc->getLevelPalette();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
if (!current) return;
|
|
Shinya Kitaoka |
120a6e |
TPalette *old = current->clone();
|
|
Shinya Kitaoka |
120a6e |
current->merge(palette);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(
|
|
Shinya Kitaoka |
120a6e |
new PaletteAssignUndo(current, old, current->clone()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
app->getCurrentPalette()->notifyPaletteChanged();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
if ( // current == cc->getCurrentStylePalette() &&
|
|
Shinya Kitaoka |
120a6e |
app->getCurrentLevel()->getLevel())
|
|
Shinya Kitaoka |
120a6e |
app->getCurrentLevel()->getLevel()->setDirtyFlag(true);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::replaceWithCurrentPalette(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// ColorController *cc = ColorController::instance();
|
|
Shinya Kitaoka |
120a6e |
StudioPalette *sp = StudioPalette::instance();
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = sp->getPalette(fp);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
TPalette *current = !palette->isCleanupPalette()
|
|
Shinya Kitaoka |
120a6e |
? TApp::instance()->getCurrentPalette()->getPalette()
|
|
Shinya Kitaoka |
120a6e |
: TApp::instance()
|
|
Shinya Kitaoka |
120a6e |
->getCurrentScene()
|
|
Shinya Kitaoka |
120a6e |
->getScene()
|
|
Shinya Kitaoka |
120a6e |
->getProperties()
|
|
Shinya Kitaoka |
120a6e |
->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
// ? cc->getCleanupPalette()
|
|
Shinya Kitaoka |
120a6e |
// : cc->getLevelPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!current) return;
|
|
Shinya Kitaoka |
120a6e |
TPalette *old = palette->clone();
|
|
Shinya Kitaoka |
120a6e |
palette->assign(current);
|
|
Shinya Kitaoka |
120a6e |
sp->setPalette(fp, current);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(
|
|
Shinya Kitaoka |
120a6e |
new StudioPaletteAssignUndo(fp, old, current->clone()));
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// Cambio la studioPalette corrente
|
|
Shinya Kitaoka |
120a6e |
// ColorController::instance()->setStudioPalette(palette);
|
|
Shinya Kitaoka |
120a6e |
DAFARE::setCurrentStudioPalette(current);
|
|
Shinya Kitaoka |
120a6e |
DAFARE::setDirtyFlag(true);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteSwitched();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::loadIntoCleanupPalette(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// ColorController *cc = ColorController::instance();
|
|
Shinya Kitaoka |
120a6e |
// int styleId = cc->getCurrentStyleIndex();
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = StudioPalette::instance()->getPalette(fp, true);
|
|
Shinya Kitaoka |
120a6e |
if (!palette) return;
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// TPalette *current = cc->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
TPalette *current = TApp::instance()
|
|
Shinya Kitaoka |
120a6e |
->getCurrentScene()
|
|
Shinya Kitaoka |
120a6e |
->getScene()
|
|
Shinya Kitaoka |
120a6e |
->getProperties()
|
|
Shinya Kitaoka |
120a6e |
->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
assert(current);
|
|
Shinya Kitaoka |
120a6e |
TPalette *old = current->clone();
|
|
Shinya Kitaoka |
120a6e |
current->assign(palette);
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// if(cc->getCurrentStylePalette() == current &&
|
|
Shinya Kitaoka |
120a6e |
// styleId>=current->getStyleCount())
|
|
Shinya Kitaoka |
120a6e |
// cc->setCurrentStyle(1);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(
|
|
Shinya Kitaoka |
120a6e |
new PaletteAssignUndo(current, old, current->clone()));
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::replaceWithCleanupPalette(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// ColorController *cc = ColorController::instance();
|
|
Shinya Kitaoka |
120a6e |
StudioPalette *sp = StudioPalette::instance();
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = sp->getPalette(fp);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
// DA FARE
|
|
Shinya Kitaoka |
120a6e |
// TPalette *current = cc->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
TPalette *current = TApp::instance()
|
|
Shinya Kitaoka |
120a6e |
->getCurrentScene()
|
|
Shinya Kitaoka |
120a6e |
->getScene()
|
|
Shinya Kitaoka |
120a6e |
->getProperties()
|
|
Shinya Kitaoka |
120a6e |
->getCleanupPalette();
|
|
Shinya Kitaoka |
120a6e |
if (!current) return;
|
|
Shinya Kitaoka |
120a6e |
TPalette *old = palette->clone();
|
|
Shinya Kitaoka |
120a6e |
palette->assign(current);
|
|
Shinya Kitaoka |
120a6e |
sp->setPalette(fp, current);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(
|
|
Shinya Kitaoka |
120a6e |
new StudioPaletteAssignUndo(fp, old, current->clone()));
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteSwitched();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::updateAllLinkedStyles() {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette *sp = StudioPalette::instance();
|
|
Shinya Kitaoka |
120a6e |
TApp *app = TApp::instance();
|
|
Shinya Kitaoka |
120a6e |
ToonzScene *scene = app->getCurrentScene()->getScene();
|
|
Shinya Kitaoka |
120a6e |
TLevelSet *levelSet = scene->getLevelSet();
|
|
Shinya Kitaoka |
120a6e |
for (int i = 0; i < levelSet->getLevelCount(); i++) {
|
|
Shinya Kitaoka |
120a6e |
TXshLevel *xl = levelSet->getLevel(i);
|
|
Shinya Kitaoka |
120a6e |
TXshSimpleLevel *sl = xl ? xl->getSimpleLevel() : 0;
|
|
Shinya Kitaoka |
120a6e |
if (!sl) continue;
|
|
Shinya Kitaoka |
120a6e |
TPalette *palette = sl->getPalette();
|
|
Shinya Kitaoka |
120a6e |
if (palette) {
|
|
Shinya Kitaoka |
120a6e |
sp->updateLinkedColors(palette);
|
|
Shinya Kitaoka |
120a6e |
if (sl->getType() == TZP_XSHLEVEL) {
|
|
Shinya Kitaoka |
120a6e |
std::vector<tframeid> fids;</tframeid>
|
|
Shinya Kitaoka |
120a6e |
sl->getFids(fids);
|
|
Shinya Kitaoka |
120a6e |
std::vector<tframeid>::iterator it;</tframeid>
|
|
Shinya Kitaoka |
120a6e |
for (it = fids.begin(); it != fids.end(); ++it) {
|
|
Shinya Kitaoka |
120a6e |
TFrameId fid = *it;
|
|
Shinya Kitaoka |
120a6e |
string id = sl->getImageId(fid);
|
|
Shinya Kitaoka |
120a6e |
IconGenerator::instance()->invalidate(sl, fid);
|
|
Shinya Kitaoka |
120a6e |
// ImageManager::instance()->invalidate(id);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentPalette()->notifyPaletteChanged();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Delete palette identified by \b fp in \b StudioPalette. If there are any
|
|
Shinya Kitaoka |
120a6e |
problems in loading send an error message.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::deletePalette(const TFilePath &fp) {
|
|
Shinya Kitaoka |
120a6e |
TUndo *undo = new DeletePaletteUndo(fp);
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->deletePalette(fp);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(undo);
|
|
Shinya Kitaoka |
120a6e |
} catch (TException &e) {
|
|
Shinya Kitaoka |
120a6e |
delete undo;
|
|
Shinya Kitaoka |
120a6e |
error("Can't delete palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Shinya Kitaoka |
120a6e |
} catch (...) {
|
|
Shinya Kitaoka |
120a6e |
delete undo;
|
|
Shinya Kitaoka |
120a6e |
error("Can't delete palette");
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Move palette from TFilePath \b srcPath to \b TFilePath \b dstPath. If there
|
|
Shinya Kitaoka |
120a6e |
are any problems in moving send an error message.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::movePalette(const TFilePath &dstPath,
|
|
Shinya Kitaoka |
120a6e |
const TFilePath &srcPath) {
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
TSystem::touchParentDir(dstPath);
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->movePalette(dstPath, srcPath);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(new MovePaletteUndo(dstPath, srcPath));
|
|
Shinya Kitaoka |
120a6e |
} catch (TException &e) {
|
|
Shinya Kitaoka |
120a6e |
error("Can't rename palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Shinya Kitaoka |
120a6e |
} catch (...) {
|
|
Shinya Kitaoka |
120a6e |
error("Can't rename palette");
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Create palette \b palette in folder \b folderName with name \b paletteName.
|
|
Shinya Kitaoka |
120a6e |
If there are any problems send an error message.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
TFilePath StudioPaletteCmd::createPalette(const TFilePath &folderName,
|
|
Shinya Kitaoka |
120a6e |
string paletteName,
|
|
Shinya Kitaoka |
120a6e |
const TPalette *palette) {
|
|
Shinya Kitaoka |
120a6e |
TFilePath palettePath;
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
if (!TFileStatus(folderName).doesExist()) TSystem::mkDir(folderName);
|
|
Shinya Kitaoka |
120a6e |
palettePath =
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->createPalette(folderName, paletteName);
|
|
Shinya Kitaoka |
120a6e |
if (palette) StudioPalette::instance()->setPalette(palettePath, palette);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(new CreatePaletteUndo(palettePath));
|
|
Shinya Kitaoka |
120a6e |
} catch (TException &e) {
|
|
Shinya Kitaoka |
120a6e |
error("Can't create palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Shinya Kitaoka |
120a6e |
} catch (...) {
|
|
Shinya Kitaoka |
120a6e |
error("Can't create palette");
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return palettePath;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Add a folder in StudioPalette TFilePath \b parentFolderPath. If there
|
|
Shinya Kitaoka |
120a6e |
are any problems send an error message.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
TFilePath StudioPaletteCmd::addFolder(const TFilePath &parentFolderPath) {
|
|
Shinya Kitaoka |
120a6e |
TFilePath folderPath;
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
folderPath = StudioPalette::instance()->createFolder(parentFolderPath);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(new CreateFolderUndo(folderPath));
|
|
Shinya Kitaoka |
120a6e |
} catch (TException &e) {
|
|
Shinya Kitaoka |
120a6e |
error("Can't create palette folder: " +
|
|
Shinya Kitaoka |
120a6e |
QString(toString(e.getMessage()).c_str()));
|
|
Shinya Kitaoka |
120a6e |
} catch (...) {
|
|
Shinya Kitaoka |
120a6e |
error("Can't create palette folder");
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
return folderPath;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
/*! Delete folder \b folderPath. If there are any problems in deleting send an
|
|
Shinya Kitaoka |
120a6e |
error message.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::deleteFolder(const TFilePath &folderPath) {
|
|
Shinya Kitaoka |
120a6e |
TUndo *undo = new DeleteFolderUndo(folderPath);
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
StudioPalette::instance()->deleteFolder(folderPath);
|
|
Shinya Kitaoka |
120a6e |
TUndoManager::manager()->add(undo);
|
|
Shinya Kitaoka |
120a6e |
} catch (TException &e) {
|
|
Shinya Kitaoka |
120a6e |
delete undo;
|
|
Shinya Kitaoka |
120a6e |
error("Can't delete palette: " + QString(toString(e.getMessage()).c_str()));
|
|
Shinya Kitaoka |
120a6e |
} catch (...) {
|
|
Shinya Kitaoka |
120a6e |
delete undo;
|
|
Shinya Kitaoka |
120a6e |
error("Can't delete palette");
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void StudioPaletteCmd::scanPalettes(const TFilePath &folder,
|
|
Shinya Kitaoka |
120a6e |
const TFilePath &sourcePath) {
|
|
Shinya Kitaoka |
120a6e |
error("uh oh");
|
|
Toshihiro Shimizu |
890ddd |
}
|