set premultiply and added level name type

This commit is contained in:
shun_iwasawa 2017-05-09 15:07:06 +09:00
parent 9a3beb198e
commit a4bcc91cc3
4 changed files with 41 additions and 6 deletions

View file

@ -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);

View file

@ -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<QAbstractButton *> 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<QAbstractButton *> 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<QAbstractButton *> 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) {
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();

View file

@ -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);

View file

@ -1018,7 +1018,12 @@ static TFilePath getLevelPathAndSetNameWithPsdLevelName(
TFilePath retfp = xshLevel->getPath();
QString name = QString::fromStdWString(retfp.getWideName());
QStringList list = name.split("#");
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(