|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "psdsettingspopup.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Tnz6 includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tapp.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzQt includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonzqt/checkbox.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzLib includes
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/toonzscene.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "toonz/tscenehandle.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tconvert.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qpushbutton></qpushbutton>
|
|
Toshihiro Shimizu |
890ddd |
#include <qlabel></qlabel>
|
|
Toshihiro Shimizu |
890ddd |
#include <qcombobox></qcombobox>
|
|
Toshihiro Shimizu |
890ddd |
#include <qradiobutton></qradiobutton>
|
|
Toshihiro Shimizu |
890ddd |
#include <qsize></qsize>
|
|
Toshihiro Shimizu |
890ddd |
#include <qstringlist></qstringlist>
|
|
Toshihiro Shimizu |
890ddd |
#include <qtreewidgetitem></qtreewidgetitem>
|
|
Toshihiro Shimizu |
890ddd |
#include <qmainwindow></qmainwindow>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
using namespace DVGui;
|
|
Toshihiro Shimizu |
890ddd |
#define REF_LAYER_BY_NAME
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
199e29 |
QStringList modesDescription;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Per adesso non appare
|
|
Shinya Kitaoka |
120a6e |
// Costruisce la stringa delle info della psd da caricare che comparirà nel
|
|
Shinya Kitaoka |
120a6e |
// popup:
|
|
Toshihiro Shimizu |
890ddd |
// Path, Dimensioni, numero di livelli, ecc..
|
|
Campbell Barton |
ccd505 |
static void doPSDInfo(TFilePath psdpath, QTreeWidget *psdTree) {
|
|
Shinya Kitaoka |
120a6e |
psdTree->clear();
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
TPSDReader *psdreader = new TPSDReader(psdpath);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
TPSDHeaderInfo header = psdreader->getPSDHeaderInfo();
|
|
Shinya Kitaoka |
120a6e |
int width = header.cols;
|
|
Shinya Kitaoka |
120a6e |
int height = header.rows;
|
|
Shinya Kitaoka |
120a6e |
int depth = header.depth;
|
|
Shinya Kitaoka |
120a6e |
int channels = header.channels;
|
|
Shinya Kitaoka |
120a6e |
int layersCount = header.layersCount;
|
|
Shinya Kitaoka |
120a6e |
QString filename =
|
|
Shinya Kitaoka |
120a6e |
QString::fromStdString(psdpath.getName() + psdpath.getDottedType());
|
|
Shinya Kitaoka |
120a6e |
QString parentDir =
|
|
Shinya Kitaoka |
120a6e |
QString::fromStdWString(psdpath.getParentDir().getWideString());
|
|
Shinya Kitaoka |
120a6e |
QString dimension = QString::number(width) + "x" + QString::number(height);
|
|
Shinya Kitaoka |
120a6e |
QList<qtreewidgetitem *=""> items;</qtreewidgetitem>
|
|
Shinya Kitaoka |
120a6e |
items.append(new QTreeWidgetItem(
|
|
Shinya Kitaoka |
120a6e |
(QTreeWidget *)0, QStringList(QString("Filename: %1").arg(filename))));
|
|
Shinya Kitaoka |
120a6e |
items.append(new QTreeWidgetItem(
|
|
Shinya Kitaoka |
120a6e |
(QTreeWidget *)0,
|
|
Shinya Kitaoka |
120a6e |
QStringList(QString("Parent dir: %1").arg(parentDir))));
|
|
Shinya Kitaoka |
120a6e |
items.append(new QTreeWidgetItem(
|
|
Shinya Kitaoka |
120a6e |
(QTreeWidget *)0,
|
|
Shinya Kitaoka |
120a6e |
QStringList(QString("Dimension: %1").arg(dimension))));
|
|
Shinya Kitaoka |
120a6e |
items.append(new QTreeWidgetItem(
|
|
Shinya Kitaoka |
120a6e |
(QTreeWidget *)0,
|
|
Shinya Kitaoka |
120a6e |
QStringList(QString("Depth: %1").arg(QString::number(depth)))));
|
|
Shinya Kitaoka |
120a6e |
items.append(new QTreeWidgetItem(
|
|
Shinya Kitaoka |
120a6e |
(QTreeWidget *)0,
|
|
Shinya Kitaoka |
120a6e |
QStringList(QString("Channels: %1").arg(QString::number(channels)))));
|
|
Shinya Kitaoka |
120a6e |
QTreeWidgetItem *layersItem = new QTreeWidgetItem((QTreeWidget *)0);
|
|
Shinya Kitaoka |
120a6e |
int count = 0;
|
|
Shinya Kitaoka |
120a6e |
QList<qtreewidgetitem *=""> layersItemChildren;</qtreewidgetitem>
|
|
Shinya Kitaoka |
120a6e |
layersItemChildren.append(layersItem);
|
|
Shinya Kitaoka |
120a6e |
int scavenge = 0;
|
|
Shinya Kitaoka |
120a6e |
for (int i = layersCount - 1; i >= 0; i--) {
|
|
Shinya Kitaoka |
120a6e |
TPSDLayerInfo *li = psdreader->getLayerInfo(i);
|
|
Shinya Kitaoka |
120a6e |
int width = li->right - li->left;
|
|
Shinya Kitaoka |
120a6e |
int height = li->bottom - li->top;
|
|
Shinya Kitaoka |
120a6e |
QString layerName = li->name;
|
|
Shinya Kitaoka |
120a6e |
if (strcmp(li->name, "") == 0 ||
|
|
Shinya Kitaoka |
120a6e |
strcmp(li->name, "") == 0) {
|
|
Shinya Kitaoka |
120a6e |
scavenge--;
|
|
Shinya Kitaoka |
120a6e |
} else if (li->section > 0 && li->section <= 3) {
|
|
Shinya Kitaoka |
120a6e |
QTreeWidgetItem *child = new QTreeWidgetItem((QTreeWidget *)0);
|
|
Shinya Kitaoka |
120a6e |
child->setText(0, layerName);
|
|
Shinya Kitaoka |
120a6e |
layersItemChildren[scavenge]->addChild(child);
|
|
Shinya Kitaoka |
120a6e |
layersItemChildren.append(child);
|
|
Shinya Kitaoka |
120a6e |
scavenge++;
|
|
Shinya Kitaoka |
120a6e |
} else if (width > 0 && height > 0) {
|
|
Shinya Kitaoka |
120a6e |
if (scavenge >= 0) {
|
|
Shinya Kitaoka |
120a6e |
layersItemChildren[scavenge]->addChild(new QTreeWidgetItem(
|
|
Shinya Kitaoka |
120a6e |
(QTreeWidget *)0, QStringList(QString("%1").arg(layerName))));
|
|
Shinya Kitaoka |
120a6e |
count++;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
QString layerItemText =
|
|
Shinya Kitaoka |
120a6e |
"Layers: " +
|
|
Shinya Kitaoka |
120a6e |
QString::number(count); //+" ("+QString::number(layersCount)+")";
|
|
Shinya Kitaoka |
120a6e |
layersItem->setText(0, layerItemText);
|
|
Shinya Kitaoka |
120a6e |
items.append(layersItem);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
psdTree->insertTopLevelItems(0, items);
|
|
Shinya Kitaoka |
120a6e |
} catch (TImageException &e) {
|
|
Shinya Kitaoka |
120a6e |
error(QString::fromStdString(::to_string(e.getMessage())));
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
// PsdSettingsPopup
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
PsdSettingsPopup::PsdSettingsPopup()
|
|
Shinya Kitaoka |
120a6e |
: Dialog(TApp::instance()->getMainWindow(), true, true, "PsdSettings")
|
|
Shinya Kitaoka |
120a6e |
, m_mode(FLAT) {
|
|
Shinya Kitaoka |
120a6e |
bool ret = true;
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
setWindowTitle(tr("Load PSD File"));
|
|
Shinya Kitaoka |
120a6e |
|
|
shun-iwasawa |
199e29 |
if (modesDescription.isEmpty()) {
|
|
shun-iwasawa |
199e29 |
modesDescription
|
|
shun-iwasawa |
199e29 |
<< tr("Flatten visible document layers into a single image. Layer "
|
|
shun-iwasawa |
199e29 |
"styles are maintained.")
|
|
shun-iwasawa |
199e29 |
<< tr("Load document layers as frames into a single xsheet column.")
|
|
shun-iwasawa |
199e29 |
<< tr("Load document layers as xhseet columns.");
|
|
shun-iwasawa |
199e29 |
}
|
|
shun-iwasawa |
199e29 |
|
|
Shinya Kitaoka |
120a6e |
m_filename = new QLabel(tr(""));
|
|
Shinya Kitaoka |
120a6e |
m_filename->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
m_filename->setFixedHeight(WidgetHeight);
|
|
Shinya Kitaoka |
120a6e |
m_parentDir = new QLabel(tr(""));
|
|
Shinya Kitaoka |
120a6e |
m_parentDir->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
|
|
Shinya Kitaoka |
120a6e |
m_parentDir->setFixedHeight(WidgetHeight);
|
|
Shinya Kitaoka |
fd19c4 |
QLabel *nmLbl = new QLabel(tr("Name:"));
|
|
shun_iwasawa |
b102ca |
nmLbl->setObjectName("TitleTxtLabel");
|
|
Shinya Kitaoka |
fd19c4 |
QLabel *ptLbl = new QLabel(tr("Path:"));
|
|
shun_iwasawa |
b102ca |
ptLbl->setObjectName("TitleTxtLabel");
|
|
Shinya Kitaoka |
120a6e |
QGridLayout *grid = new QGridLayout();
|
|
Shinya Kitaoka |
120a6e |
grid->setColumnMinimumWidth(0, 65);
|
|
Shinya Kitaoka |
120a6e |
grid->addWidget(nmLbl, 0, 0, Qt::AlignRight);
|
|
Shinya Kitaoka |
120a6e |
grid->addWidget(m_filename, 0, 1, Qt::AlignLeft);
|
|
Shinya Kitaoka |
120a6e |
grid->addWidget(ptLbl, 1, 0, Qt::AlignRight);
|
|
Shinya Kitaoka |
120a6e |
grid->addWidget(m_parentDir, 1, 1, Qt::AlignLeft);
|
|
Shinya Kitaoka |
120a6e |
QHBoxLayout *layinfo = new QHBoxLayout;
|
|
Shinya Kitaoka |
120a6e |
layinfo->addLayout(grid);
|
|
Shinya Kitaoka |
120a6e |
layinfo->addStretch();
|
|
Shinya Kitaoka |
120a6e |
addLayout(layinfo, false);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
/*
|
|
Shinya Kitaoka |
120a6e |
m_psdTree = new QTreeWidget();
|
|
Shinya Kitaoka |
120a6e |
m_psdTree->setIconSize(QSize(21,17));
|
|
Shinya Kitaoka |
120a6e |
m_psdTree->setColumnCount(1);
|
|
Shinya Kitaoka |
120a6e |
m_psdTree->setMaximumHeight(7*WidgetHeight);
|
|
Shinya Kitaoka |
120a6e |
m_psdTree->setHeaderLabel("PSD Info");
|
|
Shinya Kitaoka |
120a6e |
addWidget(m_psdTree); */
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
addSeparator();
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_loadMode = new QComboBox();
|
|
shun-iwasawa |
199e29 |
m_loadMode->addItem(tr("Single Image"), QString("Single Image"));
|
|
shun-iwasawa |
199e29 |
m_loadMode->addItem(tr("Frames"), QString("Frames"));
|
|
shun-iwasawa |
199e29 |
m_loadMode->addItem(tr("Columns"), QString("Columns"));
|
|
Shinya Kitaoka |
120a6e |
m_loadMode->setFixedHeight(WidgetHeight);
|
|
Shinya Kitaoka |
120a6e |
m_loadMode->setFixedWidth(120);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription = new QTextEdit(modesDescription[0]);
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription->setFixedHeight(40);
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription->setMinimumWidth(250);
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription->setReadOnly(true);
|
|
Shinya Kitaoka |
120a6e |
m_createSubXSheet = new CheckBox(tr("Expose in a Sub-xsheet"));
|
|
Shinya Kitaoka |
120a6e |
m_createSubXSheet->setMaximumHeight(WidgetHeight);
|
|
Shinya Kitaoka |
120a6e |
m_createSubXSheet->setEnabled(false);
|
|
Shinya Kitaoka |
120a6e |
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType = new QComboBox();
|
|
shun_iwasawa |
a4bcc9 |
QStringList types;
|
|
shun_iwasawa |
a4bcc9 |
types << tr("FileName#LayerName") << tr("LayerName");
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType->addItems(types);
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType->setFixedHeight(WidgetHeight);
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType->setEnabled(false);
|
|
shun_iwasawa |
a4bcc9 |
|
|
Shinya Kitaoka |
120a6e |
QLabel *modeLbl = new QLabel(tr("Load As:"));
|
|
shun_iwasawa |
b102ca |
modeLbl->setObjectName("TitleTxtLabel");
|
|
Shinya Kitaoka |
120a6e |
|
|
shun_iwasawa |
a4bcc9 |
QLabel *levelNameLbl = new QLabel(tr("Level Name:"));
|
|
shun_iwasawa |
a4bcc9 |
levelNameLbl->setObjectName("TitleTxtLabel");
|
|
shun_iwasawa |
a4bcc9 |
|
|
Shinya Kitaoka |
120a6e |
QGridLayout *gridMode = new QGridLayout();
|
|
Shinya Kitaoka |
120a6e |
gridMode->setColumnMinimumWidth(0, 65);
|
|
Shinya Kitaoka |
120a6e |
gridMode->setMargin(0);
|
|
Shinya Kitaoka |
120a6e |
gridMode->addWidget(modeLbl, 0, 0, Qt::AlignRight);
|
|
Shinya Kitaoka |
120a6e |
gridMode->addWidget(m_loadMode, 0, 1, Qt::AlignLeft);
|
|
Shinya Kitaoka |
120a6e |
gridMode->addWidget(m_modeDescription, 1, 1, Qt::AlignLeft);
|
|
Shinya Kitaoka |
120a6e |
gridMode->addWidget(m_createSubXSheet, 2, 1, Qt::AlignLeft);
|
|
shun_iwasawa |
a4bcc9 |
gridMode->addWidget(levelNameLbl, 3, 0, Qt::AlignRight);
|
|
shun_iwasawa |
a4bcc9 |
gridMode->addWidget(m_levelNameType, 3, 1, Qt::AlignLeft);
|
|
Shinya Kitaoka |
120a6e |
QHBoxLayout *modeLayout = new QHBoxLayout;
|
|
Shinya Kitaoka |
120a6e |
modeLayout->addLayout(gridMode);
|
|
Shinya Kitaoka |
120a6e |
modeLayout->addStretch();
|
|
Shinya Kitaoka |
120a6e |
addLayout(modeLayout, false);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
addSeparator(tr("Group Option"));
|
|
Shinya Kitaoka |
120a6e |
m_psdFolderOptions = new QButtonGroup(this);
|
|
Shinya Kitaoka |
120a6e |
QList<qstring> folderOptionsList;</qstring>
|
|
Shinya Kitaoka |
120a6e |
folderOptionsList << tr("Ignore groups");
|
|
Shinya Kitaoka |
120a6e |
folderOptionsList << tr(
|
|
Shinya Kitaoka |
120a6e |
"Expose layers in a group as columns in a sub-xsheet");
|
|
Shinya Kitaoka |
120a6e |
folderOptionsList << tr("Expose layers in a group as frames in a column");
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
QGridLayout *gridButton = new QGridLayout();
|
|
Shinya Kitaoka |
120a6e |
gridButton->setColumnMinimumWidth(0, 70);
|
|
Shinya Kitaoka |
120a6e |
int i;
|
|
Shinya Kitaoka |
120a6e |
for (i = 0; i < folderOptionsList.count(); i++) {
|
|
Shinya Kitaoka |
120a6e |
QRadioButton *radioButton = new QRadioButton(folderOptionsList.at(i));
|
|
Shinya Kitaoka |
120a6e |
if (i == 0) radioButton->setChecked(true);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
radioButton->setMaximumHeight(WidgetHeight);
|
|
Shinya Kitaoka |
120a6e |
if (m_mode != COLUMNS) {
|
|
Shinya Kitaoka |
120a6e |
radioButton->setEnabled(false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
m_psdFolderOptions->addButton(radioButton);
|
|
Shinya Kitaoka |
120a6e |
m_psdFolderOptions->setId(radioButton, i);
|
|
Shinya Kitaoka |
120a6e |
gridButton->addWidget(radioButton, i, 1);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
QHBoxLayout *folderOptLayout = new QHBoxLayout;
|
|
Shinya Kitaoka |
120a6e |
folderOptLayout->addLayout(gridButton);
|
|
Shinya Kitaoka |
120a6e |
folderOptLayout->addStretch();
|
|
Shinya Kitaoka |
120a6e |
addLayout(folderOptLayout, false);
|
|
Shinya Kitaoka |
120a6e |
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_loadMode, SIGNAL(currentIndexChanged(const QString &)),
|
|
shun-iwasawa |
199e29 |
SLOT(onModeChanged()));
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
Shinya Kitaoka |
120a6e |
ret = ret && connect(m_psdFolderOptions, SIGNAL(buttonClicked(int)), this,
|
|
Shinya Kitaoka |
120a6e |
SLOT(onFolderOptionChange(int)));
|
|
Shinya Kitaoka |
120a6e |
assert(ret);
|
|
shun-iwasawa |
199e29 |
m_okBtn = new QPushButton(tr("OK"), this);
|
|
shun-iwasawa |
199e29 |
m_cancelBtn = new QPushButton(tr("Cancel"), this);
|
|
Shinya Kitaoka |
120a6e |
connect(m_okBtn, SIGNAL(clicked()), this, SLOT(onOk()));
|
|
Shinya Kitaoka |
120a6e |
connect(m_cancelBtn, SIGNAL(clicked()), this, SLOT(close()));
|
|
Shinya Kitaoka |
120a6e |
addButtonBarWidget(m_okBtn, m_cancelBtn);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void PsdSettingsPopup::setPath(const TFilePath &path) {
|
|
Shinya Kitaoka |
120a6e |
m_path = path;
|
|
Shinya Kitaoka |
120a6e |
// doPSDInfo(path,m_psdTree);
|
|
Shinya Kitaoka |
120a6e |
QString filename =
|
|
Shinya Kitaoka |
120a6e |
QString::fromStdString(path.getName()); //+psdpath.getDottedType());
|
|
Shinya Kitaoka |
120a6e |
QString pathLbl =
|
|
Shinya Kitaoka |
120a6e |
QString::fromStdWString(path.getParentDir().getWideString());
|
|
Shinya Kitaoka |
120a6e |
m_filename->setText(filename);
|
|
Shinya Kitaoka |
120a6e |
m_parentDir->setText(pathLbl);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void PsdSettingsPopup::onOk() {
|
|
Shinya Kitaoka |
120a6e |
doPsdParser();
|
|
Shinya Kitaoka |
120a6e |
accept();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool PsdSettingsPopup::subxsheet() {
|
|
Shinya Kitaoka |
120a6e |
return (m_createSubXSheet->isEnabled() && m_createSubXSheet->isChecked());
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun_iwasawa |
a4bcc9 |
int PsdSettingsPopup::levelNameType() {
|
|
shun_iwasawa |
a4bcc9 |
return m_levelNameType->currentIndex();
|
|
shun_iwasawa |
a4bcc9 |
}
|
|
shun_iwasawa |
a4bcc9 |
|
|
shun-iwasawa |
199e29 |
void PsdSettingsPopup::onModeChanged() {
|
|
shun-iwasawa |
199e29 |
QString mode = m_loadMode->currentData().toString();
|
|
Shinya Kitaoka |
120a6e |
if (mode == "Single Image") {
|
|
Shinya Kitaoka |
120a6e |
m_mode = FLAT;
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription->setText(modesDescription[0]);
|
|
Shinya Kitaoka |
120a6e |
m_createSubXSheet->setEnabled(false);
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType->setEnabled(false);
|
|
Shinya Kitaoka |
120a6e |
QList<qabstractbutton *=""> buttons = m_psdFolderOptions->buttons();</qabstractbutton>
|
|
Shinya Kitaoka |
120a6e |
while (!buttons.isEmpty()) {
|
|
Shinya Kitaoka |
120a6e |
QAbstractButton *btn = buttons.takeFirst();
|
|
Shinya Kitaoka |
120a6e |
btn->setEnabled(false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
} else if (mode == "Frames") {
|
|
Shinya Kitaoka |
120a6e |
m_mode = FRAMES;
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription->setText(modesDescription[1]);
|
|
Shinya Kitaoka |
120a6e |
m_createSubXSheet->setEnabled(false);
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType->setEnabled(false);
|
|
Shinya Kitaoka |
120a6e |
QList<qabstractbutton *=""> buttons = m_psdFolderOptions->buttons();</qabstractbutton>
|
|
Shinya Kitaoka |
120a6e |
while (!buttons.isEmpty()) {
|
|
Shinya Kitaoka |
120a6e |
QAbstractButton *btn = buttons.takeFirst();
|
|
Shinya Kitaoka |
120a6e |
btn->setEnabled(false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
} else if (mode == "Columns") {
|
|
Shinya Kitaoka |
120a6e |
if (m_psdFolderOptions->checkedId() == 2 ||
|
|
Shinya Kitaoka |
120a6e |
m_psdFolderOptions->checkedId() == 1)
|
|
Shinya Kitaoka |
120a6e |
m_mode = FOLDER;
|
|
Shinya Kitaoka |
120a6e |
else
|
|
Shinya Kitaoka |
120a6e |
m_mode = COLUMNS;
|
|
Shinya Kitaoka |
120a6e |
m_modeDescription->setText(modesDescription[2]);
|
|
Shinya Kitaoka |
120a6e |
m_createSubXSheet->setEnabled(true);
|
|
shun_iwasawa |
a4bcc9 |
m_levelNameType->setEnabled(true);
|
|
Shinya Kitaoka |
120a6e |
QList<qabstractbutton *=""> buttons = m_psdFolderOptions->buttons();</qabstractbutton>
|
|
Shinya Kitaoka |
120a6e |
while (!buttons.isEmpty()) {
|
|
Shinya Kitaoka |
120a6e |
QAbstractButton *btn = buttons.takeFirst();
|
|
Shinya Kitaoka |
120a6e |
btn->setEnabled(true);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
} else {
|
|
Shinya Kitaoka |
120a6e |
assert(false);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void PsdSettingsPopup::onFolderOptionChange(int id) {
|
|
Shinya Kitaoka |
120a6e |
switch (id) {
|
|
Shinya Kitaoka |
120a6e |
case 0: // Ignore Folder
|
|
Shinya Kitaoka |
120a6e |
m_mode = COLUMNS;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
case 1: // Fodler as SUBXSHEET
|
|
Shinya Kitaoka |
120a6e |
m_mode = FOLDER;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
case 2: // Frames
|
|
Shinya Kitaoka |
120a6e |
m_mode = FOLDER;
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
default:
|
|
Shinya Kitaoka |
120a6e |
assert(0);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
int PsdSettingsPopup::getFolderOption() {
|
|
Shinya Kitaoka |
120a6e |
return m_psdFolderOptions->checkedId();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void PsdSettingsPopup::doPsdParser() {
|
|
Shinya Kitaoka |
120a6e |
TFilePath psdpath =
|
|
Shinya Kitaoka |
120a6e |
TApp::instance()->getCurrentScene()->getScene()->decodeFilePath(m_path);
|
|
Shinya Kitaoka |
120a6e |
std::string mode = "";
|
|
Shinya Kitaoka |
120a6e |
switch (m_mode) {
|
|
Shinya Kitaoka |
120a6e |
case FLAT: {
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
case FRAMES: {
|
|
Shinya Kitaoka |
120a6e |
mode = "#frames";
|
|
Shinya Kitaoka |
120a6e |
std::string name =
|
|
Shinya Kitaoka |
120a6e |
psdpath.getName() + "#1" + mode + psdpath.getDottedType();
|
|
Shinya Kitaoka |
120a6e |
psdpath = psdpath.getParentDir() + TFilePath(name);
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
case COLUMNS: {
|
|
Shinya Kitaoka |
120a6e |
std::string name = psdpath.getName() + "#1" + psdpath.getDottedType();
|
|
Shinya Kitaoka |
120a6e |
psdpath = psdpath.getParentDir() + TFilePath(name);
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
case FOLDER: {
|
|
Shinya Kitaoka |
120a6e |
mode = "#group";
|
|
Shinya Kitaoka |
120a6e |
std::string name =
|
|
Shinya Kitaoka |
120a6e |
psdpath.getName() + "#1" + mode + psdpath.getDottedType();
|
|
Shinya Kitaoka |
120a6e |
psdpath = psdpath.getParentDir() + TFilePath(name);
|
|
Shinya Kitaoka |
120a6e |
break;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
default: {
|
|
Shinya Kitaoka |
120a6e |
assert(false);
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
try {
|
|
Shinya Kitaoka |
120a6e |
m_psdparser = new TPSDParser(psdpath);
|
|
Shinya Kitaoka |
120a6e |
m_psdLevelPaths.clear();
|
|
Shinya Kitaoka |
120a6e |
for (int i = 0; i < m_psdparser->getLevelsCount(); i++) {
|
|
Shinya Kitaoka |
120a6e |
int layerId = m_psdparser->getLevelId(i);
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_path.getName();
|
|
Shinya Kitaoka |
120a6e |
if (layerId > 0 && m_mode != FRAMES) {
|
|
shun_iwasawa |
a4bcc9 |
if (m_levelNameType->currentIndex() == 0) // FileName#LevelName
|
|
shun_iwasawa |
a4bcc9 |
name += "#" + std::to_string(layerId);
|
|
shun_iwasawa |
a4bcc9 |
else // LevelName
|
|
shun_iwasawa |
a4bcc9 |
name += "##" + std::to_string(layerId);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
if (mode != "") name += mode;
|
|
Shinya Kitaoka |
120a6e |
name += m_path.getDottedType();
|
|
Shinya Kitaoka |
120a6e |
TFilePath psdpath = m_path.getParentDir() + TFilePath(name);
|
|
Shinya Kitaoka |
120a6e |
m_psdLevelPaths.push_back(psdpath);
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Shinya Kitaoka |
120a6e |
} catch (TImageException &e) {
|
|
Shinya Kitaoka |
120a6e |
error(QString::fromStdString(::to_string(e.getMessage())));
|
|
Shinya Kitaoka |
120a6e |
return;
|
|
Shinya Kitaoka |
120a6e |
}
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
TFilePath PsdSettingsPopup::getPsdPath(int levelIndex) {
|
|
Shinya Kitaoka |
120a6e |
assert(levelIndex >= 0 && levelIndex < m_psdLevelPaths.size());
|
|
Shinya Kitaoka |
120a6e |
return m_psdLevelPaths[levelIndex];
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
TFilePath PsdSettingsPopup::getPsdFramePath(int levelIndex, int frameIndex) {
|
|
Shinya Kitaoka |
120a6e |
int layerId = m_psdparser->getLevelId(levelIndex);
|
|
Shinya Kitaoka |
120a6e |
int frameId = m_psdparser->getFrameId(layerId, frameIndex);
|
|
Shinya Kitaoka |
120a6e |
std::string name = m_path.getName();
|
|
Shinya Kitaoka |
120a6e |
if (frameId > 0) name += "#" + std::to_string(frameId);
|
|
Shinya Kitaoka |
120a6e |
name += m_path.getDottedType();
|
|
Shinya Kitaoka |
120a6e |
TFilePath psdpath = TApp::instance()
|
|
Shinya Kitaoka |
120a6e |
->getCurrentScene()
|
|
Shinya Kitaoka |
120a6e |
->getScene()
|
|
Shinya Kitaoka |
120a6e |
->decodeFilePath(m_path)
|
|
Shinya Kitaoka |
120a6e |
.getParentDir() +
|
|
Shinya Kitaoka |
120a6e |
TFilePath(name);
|
|
Shinya Kitaoka |
120a6e |
return psdpath;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
int PsdSettingsPopup::getFramesCount(int levelIndex) {
|
|
Shinya Kitaoka |
120a6e |
// assert(levelIndex>=0 && levelIndex
|
|
Shinya Kitaoka |
120a6e |
// return m_levels[levelIndex].framesCount;
|
|
Shinya Kitaoka |
120a6e |
int levelId = m_psdparser->getLevelId(levelIndex);
|
|
Shinya Kitaoka |
120a6e |
return m_psdparser->getFramesCount(levelId);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
bool PsdSettingsPopup::isFolder(int levelIndex) {
|
|
Shinya Kitaoka |
120a6e |
// assert(levelIndex>=0 && levelIndex
|
|
Shinya Kitaoka |
120a6e |
// return m_levels[levelIndex].isFolder;
|
|
Shinya Kitaoka |
120a6e |
return m_psdparser->isFolder(levelIndex);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
bool PsdSettingsPopup::isSubFolder(int levelIndex, int frameIndex) {
|
|
Shinya Kitaoka |
120a6e |
return m_psdparser->isSubFolder(levelIndex, frameIndex);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Shinya Kitaoka |
120a6e |
int PsdSettingsPopup::getSubfolderLevelIndex(int psdLevelIndex,
|
|
Shinya Kitaoka |
120a6e |
int frameIndex) {
|
|
Shinya Kitaoka |
120a6e |
int levelId = m_psdparser->getLevelId(psdLevelIndex);
|
|
Shinya Kitaoka |
120a6e |
int frameId = m_psdparser->getFrameId(levelId, frameIndex);
|
|
Shinya Kitaoka |
120a6e |
int subFolderIndex = m_psdparser->getLevelIndexById(frameId);
|
|
Shinya Kitaoka |
120a6e |
return subFolderIndex;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//-----------------------------------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// OpenPopupCommandHandler<psdsettingspopup></psdsettingspopup>
|
|
Shinya Kitaoka |
120a6e |
// openPsdSettingsPopup(MI_SceneSettings);
|