|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "savepresetpopup.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Tnz6 includes
|
|
Toshihiro Shimizu |
890ddd |
#include "menubarcommandids.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "filebrowsermodel.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tapp.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/menubarcommand.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tfxhandle.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tcolumnfx.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzfolders.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzBase includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tfx.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tmacrofx.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tsystem.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tstream.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tfxattributes.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qpushbutton></qpushbutton>
|
|
Toshihiro Shimizu |
890ddd |
#include <qmainwindow></qmainwindow>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// SavePresetPopup
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
SavePresetPopup::SavePresetPopup()
|
|
Shinya Kitaoka |
120a6e |
: Dialog(TApp::instance()->getMainWindow(), true, true, "SavePreset") {
|
|
Shinya Kitaoka |
120a6e |
setWindowTitle(tr("Save Preset"));
|
|
Shinya Kitaoka |
120a6e |
addWidget(tr("Preset Name:"), m_nameFld = new DVGui::LineEdit(this));
|
|
Shinya Kitaoka |
120a6e |
m_nameFld->setMinimumWidth(170);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QPushButton *okBtn = new QPushButton(tr("Save"), this);
|
|
Shinya Kitaoka |
120a6e |
okBtn->setDefault(true);
|
|
Shinya Kitaoka |
120a6e |
QPushButton *cancelBtn = new QPushButton(tr("Cancel"), this);
|
|
Shinya Kitaoka |
120a6e |
connect(okBtn, SIGNAL(clicked()), this, SLOT(onOkBtn()));
|
|
Shinya Kitaoka |
120a6e |
connect(cancelBtn, SIGNAL(clicked()), this, SLOT(reject()));
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
addButtonBarWidget(okBtn, cancelBtn);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
SavePresetPopup::~SavePresetPopup() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool SavePresetPopup::apply() {
|
|
Shinya Kitaoka |
120a6e |
TFxHandle *fxHandle = TApp::instance()->getCurrentFx();
|
|
Shinya Kitaoka |
120a6e |
TFx *fx = fxHandle->getFx();
|
|
Shinya Kitaoka |
120a6e |
if (TZeraryColumnFx *zfx = dynamic_cast<tzerarycolumnfx *="">(fx))</tzerarycolumnfx>
|
|
Shinya Kitaoka |
120a6e |
fx = zfx->getZeraryFx();
|
|
Shinya Kitaoka |
120a6e |
if (!fx) return 0;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TMacroFx *macroFx = dynamic_cast<tmacrofx *="">(fx);</tmacrofx>
|
|
Shinya Kitaoka |
120a6e |
bool isMacro = macroFx != 0;
|
|
Shinya Kitaoka |
120a6e |
std::wstring name = m_nameFld->text().toStdWString();
|
|
Shinya Kitaoka |
120a6e |
if (name.empty()) return 0;
|
|
Shinya Kitaoka |
120a6e |
TFilePath fp = ToonzFolder::getFxPresetFolder() + "presets" +
|
|
Shinya Kitaoka |
120a6e |
fx->getFxType() + (name + (isMacro ? L".macrofx" : L".fx"));
|
|
Shinya Kitaoka |
120a6e |
if (!TFileStatus(fp.getParentDir()).doesExist()) {
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
TFilePath parent = fp.getParentDir();
|
|
Shinya Kitaoka |
120a6e |
TSystem::mkDir(parent);
|
|
Shinya Kitaoka |
120a6e |
DvDirModel::instance()->refreshFolder(parent.getParentDir());
|
|
Shinya Kitaoka |
120a6e |
} catch (...) {
|
|
Shinya Kitaoka |
120a6e |
DVGui::error(
|
|
Shinya Kitaoka |
120a6e |
tr("It is not possible to create the preset folder %1.")
|
|
Shinya Kitaoka |
120a6e |
.arg(QString::fromStdString(fp.getParentDir().getName())));
|
|
Shinya Kitaoka |
120a6e |
return 0;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
if (TFileStatus(fp).doesExist()) {
|
|
Shinya Kitaoka |
120a6e |
if (DVGui::MsgBox(tr("Do you want to overwrite?"), tr("Yes"), tr("No")) ==
|
|
Shinya Kitaoka |
120a6e |
2)
|
|
Shinya Kitaoka |
120a6e |
return 0;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
if (isMacro) {
|
|
Shinya Kitaoka |
120a6e |
TOStream os(fp);
|
|
Shinya Kitaoka |
120a6e |
TFx *fx2 = fx->clone(false);
|
|
Shinya Kitaoka |
120a6e |
fx2->getAttributes()->passiveCacheDataIdx() = -1;
|
|
Shinya Kitaoka |
120a6e |
os << fx2;
|
|
Shinya Kitaoka |
120a6e |
delete fx2;
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
TOStream os(fp);
|
|
Shinya Kitaoka |
120a6e |
fx->savePreset(os);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
fxHandle->notifyFxPresetSaved();
|
|
Shinya Kitaoka |
120a6e |
return true;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void SavePresetPopup::onOkBtn() {
|
|
Shinya Kitaoka |
120a6e |
if (apply()) accept();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
OpenPopupCommandHandler<savepresetpopup> openSavePresetPopup(MI_SavePreset);</savepresetpopup>
|