From a4bcc91cc3dff70cec263738540db3d68e09693c Mon Sep 17 00:00:00 2001 From: shun_iwasawa Date: Tue, 9 May 2017 15:07:06 +0900 Subject: [PATCH] set premultiply and added level name type --- toonz/sources/toonz/iocommand.cpp | 9 ++++++-- toonz/sources/toonz/psdsettingspopup.cpp | 24 +++++++++++++++++++++- toonz/sources/toonz/psdsettingspopup.h | 3 ++- toonz/sources/toonzlib/txshsimplelevel.cpp | 11 ++++++++-- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/toonz/sources/toonz/iocommand.cpp b/toonz/sources/toonz/iocommand.cpp index 0287f337..1ee0c40d 100644 --- a/toonz/sources/toonz/iocommand.cpp +++ b/toonz/sources/toonz/iocommand.cpp @@ -1242,10 +1242,11 @@ bool IoCmd::saveSceneIfNeeded(QString msg) { //--- If both the level and scene is clean, then open the quit confirmation // dialog - //if (!isLevelOrSceneIsDirty && msg == "Quit") { + // if (!isLevelOrSceneIsDirty && msg == "Quit") { // QString question("Are you sure ?"); // int ret = - // DVGui::MsgBox(question, QObject::tr("OK"), QObject::tr("Cancel"), 0); + // DVGui::MsgBox(question, QObject::tr("OK"), QObject::tr("Cancel"), + // 0); // if (ret == 0 || ret == 2) { // // cancel (or closed message box window) // return false; @@ -2122,6 +2123,7 @@ static int loadPSDResource(IoCmd::LoadResourceArguments &args, } else { TFilePath psdpath = popup->getPsdPath(i); TXshLevel *xl = 0; + try { xl = ::loadResource(scene, psdpath, args.castFolder, row0, col0, row1, col1, !popup->subxsheet()); @@ -2129,6 +2131,9 @@ static int loadPSDResource(IoCmd::LoadResourceArguments &args, error(QString::fromStdWString(e.getMessage())); } if (xl) { + if (xl->getSimpleLevel()) // just in case + xl->getSimpleLevel()->getProperties()->setDoPremultiply(true); + // lo importo nell'xsheet if (popup->subxsheet() && childXsh) { childXsh->exposeLevel(0, subCol0, xl); diff --git a/toonz/sources/toonz/psdsettingspopup.cpp b/toonz/sources/toonz/psdsettingspopup.cpp index b4ad75e9..0d2cbc9a 100644 --- a/toonz/sources/toonz/psdsettingspopup.cpp +++ b/toonz/sources/toonz/psdsettingspopup.cpp @@ -169,9 +169,19 @@ PsdSettingsPopup::PsdSettingsPopup() m_createSubXSheet->setMaximumHeight(WidgetHeight); m_createSubXSheet->setEnabled(false); + m_levelNameType = new QComboBox(); + QStringList types; + types << tr("FileName#LayerName") << tr("LayerName"); + m_levelNameType->addItems(types); + m_levelNameType->setFixedHeight(WidgetHeight); + m_levelNameType->setEnabled(false); + QLabel *modeLbl = new QLabel(tr("Load As:")); modeLbl->setObjectName("TitleTxtLabel"); + QLabel *levelNameLbl = new QLabel(tr("Level Name:")); + levelNameLbl->setObjectName("TitleTxtLabel"); + QGridLayout *gridMode = new QGridLayout(); gridMode->setColumnMinimumWidth(0, 65); gridMode->setMargin(0); @@ -179,6 +189,8 @@ PsdSettingsPopup::PsdSettingsPopup() gridMode->addWidget(m_loadMode, 0, 1, Qt::AlignLeft); gridMode->addWidget(m_modeDescription, 1, 1, Qt::AlignLeft); gridMode->addWidget(m_createSubXSheet, 2, 1, Qt::AlignLeft); + gridMode->addWidget(levelNameLbl, 3, 0, Qt::AlignRight); + gridMode->addWidget(m_levelNameType, 3, 1, Qt::AlignLeft); QHBoxLayout *modeLayout = new QHBoxLayout; modeLayout->addLayout(gridMode); modeLayout->addStretch(); @@ -247,11 +259,16 @@ bool PsdSettingsPopup::subxsheet() { return (m_createSubXSheet->isEnabled() && m_createSubXSheet->isChecked()); } +int PsdSettingsPopup::levelNameType() { + return m_levelNameType->currentIndex(); +} + void PsdSettingsPopup::onModeChanged(const QString &mode) { if (mode == "Single Image") { m_mode = FLAT; m_modeDescription->setText(modesDescription[0]); m_createSubXSheet->setEnabled(false); + m_levelNameType->setEnabled(false); QList buttons = m_psdFolderOptions->buttons(); while (!buttons.isEmpty()) { QAbstractButton *btn = buttons.takeFirst(); @@ -261,6 +278,7 @@ void PsdSettingsPopup::onModeChanged(const QString &mode) { m_mode = FRAMES; m_modeDescription->setText(modesDescription[1]); m_createSubXSheet->setEnabled(false); + m_levelNameType->setEnabled(false); QList buttons = m_psdFolderOptions->buttons(); while (!buttons.isEmpty()) { QAbstractButton *btn = buttons.takeFirst(); @@ -274,6 +292,7 @@ void PsdSettingsPopup::onModeChanged(const QString &mode) { m_mode = COLUMNS; m_modeDescription->setText(modesDescription[2]); m_createSubXSheet->setEnabled(true); + m_levelNameType->setEnabled(true); QList buttons = m_psdFolderOptions->buttons(); while (!buttons.isEmpty()) { QAbstractButton *btn = buttons.takeFirst(); @@ -342,7 +361,10 @@ void PsdSettingsPopup::doPsdParser() { int layerId = m_psdparser->getLevelId(i); std::string name = m_path.getName(); if (layerId > 0 && m_mode != FRAMES) { - name += "#" + std::to_string(layerId); + if (m_levelNameType->currentIndex() == 0) // FileName#LevelName + name += "#" + std::to_string(layerId); + else // LevelName + name += "##" + std::to_string(layerId); } if (mode != "") name += mode; name += m_path.getDottedType(); diff --git a/toonz/sources/toonz/psdsettingspopup.h b/toonz/sources/toonz/psdsettingspopup.h index 1b3a7a1b..9e004984 100644 --- a/toonz/sources/toonz/psdsettingspopup.h +++ b/toonz/sources/toonz/psdsettingspopup.h @@ -44,7 +44,7 @@ class PsdSettingsPopup final : public DVGui::Dialog { Mode m_mode; QPushButton *m_okBtn; QPushButton *m_cancelBtn; - QComboBox *m_loadMode; + QComboBox *m_loadMode, *m_levelNameType; DVGui::CheckBox *m_createSubXSheet; QButtonGroup *m_psdFolderOptions; @@ -70,6 +70,7 @@ public: bool isFolder(int levelIndex); bool isSubFolder(int levelIndex, int frameIndex); bool subxsheet(); + int levelNameType(); int getFolderOption(); int getSubfolderLevelIndex(int psdLevelIndex, int frameIndex); diff --git a/toonz/sources/toonzlib/txshsimplelevel.cpp b/toonz/sources/toonzlib/txshsimplelevel.cpp index 49eb7210..4f6d243a 100644 --- a/toonz/sources/toonzlib/txshsimplelevel.cpp +++ b/toonz/sources/toonzlib/txshsimplelevel.cpp @@ -1017,8 +1017,13 @@ static TFilePath getLevelPathAndSetNameWithPsdLevelName( TXshSimpleLevel *xshLevel) { TFilePath retfp = xshLevel->getPath(); - QString name = QString::fromStdWString(retfp.getWideName()); - QStringList list = name.split("#"); + QString name = QString::fromStdWString(retfp.getWideName()); + bool removeFileName = name.contains("##"); + if (removeFileName) { + retfp = TFilePath( + QString::fromStdWString(retfp.getWideString()).replace("##", "#")); + } + QStringList list = name.split("#", QString::SkipEmptyParts); if (list.size() >= 2 && list.at(1) != "frames") { bool hasLayerId; @@ -1037,6 +1042,8 @@ static TFilePath getLevelPathAndSetNameWithPsdLevelName( std::wstring wLevelName = list.join("#").toStdWString(); retfp = retfp.withName(wLevelName); + if (removeFileName) wLevelName = list[1].toStdWString(); + TLevelSet *levelSet = xshLevel->getScene()->getLevelSet(); if (levelSet && levelSet->hasLevel(