subfolder popup for camera capture
This commit is contained in:
parent
3ef2b1fec3
commit
e56ea89194
17 changed files with 878 additions and 148 deletions
Binary file not shown.
Binary file not shown.
|
@ -91,7 +91,10 @@
|
|||
|
||||
QWidget {
|
||||
color: @m_baseTxtColor;
|
||||
.baseBG;
|
||||
.baseBG;
|
||||
&:disabled{
|
||||
color: @m_disabledTxtColor;
|
||||
}
|
||||
}
|
||||
|
||||
QFrame {
|
||||
|
@ -359,6 +362,10 @@ QGroupBox {
|
|||
&::indicator {
|
||||
&:extend(QCheckBox::indicator all);
|
||||
}
|
||||
&:disabled{
|
||||
color: @m_base_darkH;
|
||||
border-color: @m_disabledTxtColor;
|
||||
}
|
||||
}
|
||||
|
||||
QSplitter::handle
|
||||
|
@ -1382,6 +1389,10 @@ QDialog #dialogButtonFrame {
|
|||
qproperty-icon: url("@{image_url}/gear.png");
|
||||
}
|
||||
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("@{image_url}/subfolder.png");
|
||||
}
|
||||
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
&:hover {
|
||||
|
|
|
@ -12,6 +12,9 @@ QWidget {
|
|||
color: #e6e6e6;
|
||||
background-color: #303030;
|
||||
}
|
||||
QWidget:disabled {
|
||||
color: #808080;
|
||||
}
|
||||
QFrame {
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
|
@ -363,6 +366,10 @@ QGroupBox::title {
|
|||
margin: -2px 0 0 0;
|
||||
padding: 0 3px;
|
||||
}
|
||||
QGroupBox:disabled {
|
||||
color: #0c0c0c;
|
||||
border-color: #808080;
|
||||
}
|
||||
QSplitter::handle {
|
||||
background-color: #707070;
|
||||
}
|
||||
|
@ -1371,6 +1378,9 @@ QDialog #dialogButtonFrame {
|
|||
#GearButton {
|
||||
qproperty-icon: url("../gray_072/imgs/gear.png");
|
||||
}
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("../gray_072/imgs/subfolder.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,9 @@ QWidget {
|
|||
color: #e6e6e6;
|
||||
background-color: #303030;
|
||||
}
|
||||
QWidget:disabled {
|
||||
color: #808080;
|
||||
}
|
||||
QFrame {
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
|
@ -363,6 +366,10 @@ QGroupBox::title {
|
|||
margin: -2px 0 0 0;
|
||||
padding: 0 3px;
|
||||
}
|
||||
QGroupBox:disabled {
|
||||
color: #0c0c0c;
|
||||
border-color: #808080;
|
||||
}
|
||||
QSplitter::handle {
|
||||
background-color: #707070;
|
||||
}
|
||||
|
@ -1371,6 +1378,9 @@ QDialog #dialogButtonFrame {
|
|||
#GearButton {
|
||||
qproperty-icon: url("../gray_072/imgs/gear.png");
|
||||
}
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("../gray_072/imgs/subfolder.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
|
|
|
@ -90,6 +90,9 @@
|
|||
QWidget {
|
||||
color: @m_baseTxtColor;
|
||||
.baseBG;
|
||||
&:disabled{
|
||||
color: @m_disabledTxtColor;
|
||||
}
|
||||
}
|
||||
|
||||
QFrame {
|
||||
|
@ -357,6 +360,10 @@ QGroupBox {
|
|||
&::indicator {
|
||||
&:extend(QCheckBox::indicator all);
|
||||
}
|
||||
&:disabled{
|
||||
color: @m_base_darkH;
|
||||
border-color: @m_disabledTxtColor;
|
||||
}
|
||||
}
|
||||
|
||||
QSplitter::handle
|
||||
|
@ -1381,6 +1388,10 @@ QDialog #dialogButtonFrame {
|
|||
qproperty-icon: url("@{image_url}/gear.png");
|
||||
}
|
||||
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("@{image_url}/subfolder.png");
|
||||
}
|
||||
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
&:hover {
|
||||
|
|
|
@ -12,6 +12,9 @@ QWidget {
|
|||
color: #e6e6e6;
|
||||
background-color: #484848;
|
||||
}
|
||||
QWidget:disabled {
|
||||
color: #808080;
|
||||
}
|
||||
QFrame {
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
|
@ -363,6 +366,10 @@ QGroupBox::title {
|
|||
margin: -2px 0 0 0;
|
||||
padding: 0 3px;
|
||||
}
|
||||
QGroupBox:disabled {
|
||||
color: #202020;
|
||||
border-color: #808080;
|
||||
}
|
||||
QSplitter::handle {
|
||||
background-color: #888888;
|
||||
}
|
||||
|
@ -1371,6 +1378,9 @@ QDialog #dialogButtonFrame {
|
|||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("imgs/subfolder.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
|
|
|
@ -12,6 +12,9 @@ QWidget {
|
|||
color: #e6e6e6;
|
||||
background-color: #484848;
|
||||
}
|
||||
QWidget:disabled {
|
||||
color: #808080;
|
||||
}
|
||||
QFrame {
|
||||
margin: 0px;
|
||||
border: 0px;
|
||||
|
@ -363,6 +366,10 @@ QGroupBox::title {
|
|||
margin: -2px 0 0 0;
|
||||
padding: 0 3px;
|
||||
}
|
||||
QGroupBox:disabled {
|
||||
color: #202020;
|
||||
border-color: #808080;
|
||||
}
|
||||
QSplitter::handle {
|
||||
background-color: #888888;
|
||||
}
|
||||
|
@ -1371,6 +1378,9 @@ QDialog #dialogButtonFrame {
|
|||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("imgs/subfolder.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
|
|
BIN
stuff/config/qss/gray_072/imgs/subfolder.png
Normal file
BIN
stuff/config/qss/gray_072/imgs/subfolder.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -1203,6 +1203,10 @@ QDialog #dialogButtonFrame {
|
|||
qproperty-icon: url("@{image_url}/gear.png");
|
||||
}
|
||||
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("@{image_url}/subfolder.png");
|
||||
}
|
||||
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
&:hover {
|
||||
|
|
|
@ -1106,6 +1106,9 @@ QDialog #dialogButtonFrame {
|
|||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("imgs/subfolder.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
|
|
|
@ -1106,6 +1106,9 @@ QDialog #dialogButtonFrame {
|
|||
#GearButton {
|
||||
qproperty-icon: url("imgs/gear.png");
|
||||
}
|
||||
#SubfolderButton {
|
||||
qproperty-icon: url("imgs/subfolder.png");
|
||||
}
|
||||
#StartupLabel {
|
||||
padding: 3px;
|
||||
}
|
||||
|
|
BIN
stuff/config/qss/gray_128/imgs/subfolder.png
Normal file
BIN
stuff/config/qss/gray_128/imgs/subfolder.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 17 KiB |
|
@ -76,6 +76,17 @@ using namespace DVGui;
|
|||
|
||||
// Connected camera
|
||||
TEnv::StringVar CamCapCameraName("CamCapCameraName", "");
|
||||
// Camera resolution
|
||||
TEnv::StringVar CamCapCameraResolution("CamCapCameraResolution", "");
|
||||
// Whether to open save-in popup on launch
|
||||
TEnv::IntVar CamCapOpenSaveInPopupOnLaunch("CamCapOpenSaveInPopupOnLaunch", 0);
|
||||
// SaveInFolderPopup settings
|
||||
TEnv::IntVar CamCapSaveInPopupSubFolder("CamCapSaveInPopupSubFolder", 0);
|
||||
TEnv::StringVar CamCapSaveInPopupProject("CamCapSaveInPopupProject", "");
|
||||
TEnv::StringVar CamCapSaveInPopupEpisode("CamCapSaveInPopupEpisode", "1");
|
||||
TEnv::StringVar CamCapSaveInPopupSequence("CamCapSaveInPopupSequence", "1");
|
||||
TEnv::StringVar CamCapSaveInPopupScene("CamCapSaveInPopupScene", "1");
|
||||
TEnv::IntVar CamCapSaveInPopupAutoSubName("CamCapSaveInPopupAutoSubName", 1);
|
||||
|
||||
namespace {
|
||||
|
||||
|
@ -569,6 +580,292 @@ void LevelNameLineEdit::onEditingFinished() {
|
|||
|
||||
//=============================================================================
|
||||
|
||||
PencilTestSaveInFolderPopup::PencilTestSaveInFolderPopup(QWidget* parent)
|
||||
: Dialog(parent, true, false, "PencilTestSaveInFolder") {
|
||||
setWindowTitle("Create the Destination Subfolder to Save");
|
||||
|
||||
m_parentFolderField = new FileField(
|
||||
this, QString("+%1").arg(QString::fromStdString(TProject::Extras)));
|
||||
|
||||
m_subFolderCB = new QCheckBox(tr("Create Subfolder"), this);
|
||||
|
||||
QFrame* subFolderFrame = new QFrame(this);
|
||||
|
||||
QGroupBox* infoGroupBox = new QGroupBox(tr("Infomation"), this);
|
||||
QGroupBox* subNameGroupBox = new QGroupBox(tr("Subfolder Name"), this);
|
||||
|
||||
m_projectField = new QLineEdit(this);
|
||||
m_episodeField = new QLineEdit(this);
|
||||
m_sequenceField = new QLineEdit(this);
|
||||
m_sceneField = new QLineEdit(this);
|
||||
|
||||
m_autoSubNameCB = new QCheckBox(tr("Auto Format:"), this);
|
||||
m_subNameFormatCombo = new QComboBox(this);
|
||||
m_subFolderNameField = new QLineEdit(this);
|
||||
|
||||
QCheckBox* showPopupOnLaunchCB =
|
||||
new QCheckBox(tr("Show This on Launch of the Camera Capture"), this);
|
||||
|
||||
QPushButton* okBtn = new QPushButton(tr("OK"), this);
|
||||
QPushButton* cancelBtn = new QPushButton(tr("Cancel"), this);
|
||||
|
||||
//---- properties
|
||||
|
||||
m_subFolderCB->setChecked(CamCapSaveInPopupSubFolder != 0);
|
||||
subFolderFrame->setEnabled(CamCapSaveInPopupSubFolder != 0);
|
||||
|
||||
// project name
|
||||
QString prjName = QString::fromStdString(CamCapSaveInPopupProject.getValue());
|
||||
if (prjName.isEmpty()) {
|
||||
prjName = TProjectManager::instance()
|
||||
->getCurrentProject()
|
||||
->getName()
|
||||
.getQString();
|
||||
}
|
||||
m_projectField->setText(prjName);
|
||||
|
||||
m_episodeField->setText(
|
||||
QString::fromStdString(CamCapSaveInPopupEpisode.getValue()));
|
||||
m_sequenceField->setText(
|
||||
QString::fromStdString(CamCapSaveInPopupSequence.getValue()));
|
||||
m_sceneField->setText(
|
||||
QString::fromStdString(CamCapSaveInPopupScene.getValue()));
|
||||
|
||||
m_autoSubNameCB->setChecked(CamCapSaveInPopupAutoSubName != 0);
|
||||
m_subNameFormatCombo->setEnabled(CamCapSaveInPopupAutoSubName != 0);
|
||||
QStringList items;
|
||||
items << tr("C- + Sequence + Scene") << tr("Sequence + Scene")
|
||||
<< tr("Episode + Sequence + Scene")
|
||||
<< tr("Project + Episode + Sequence + Scene");
|
||||
m_subNameFormatCombo->addItems(items);
|
||||
|
||||
showPopupOnLaunchCB->setChecked(CamCapOpenSaveInPopupOnLaunch != 0);
|
||||
|
||||
addButtonBarWidget(okBtn, cancelBtn);
|
||||
|
||||
//---- layout
|
||||
m_topLayout->setMargin(10);
|
||||
m_topLayout->setSpacing(10);
|
||||
{
|
||||
QHBoxLayout* saveInLay = new QHBoxLayout();
|
||||
saveInLay->setMargin(0);
|
||||
saveInLay->setSpacing(3);
|
||||
{
|
||||
saveInLay->addWidget(new QLabel(tr("Save In:"), this), 0);
|
||||
saveInLay->addWidget(m_parentFolderField, 1);
|
||||
}
|
||||
m_topLayout->addLayout(saveInLay);
|
||||
|
||||
m_topLayout->addWidget(m_subFolderCB, 0, Qt::AlignLeft);
|
||||
|
||||
QVBoxLayout* subFolderLay = new QVBoxLayout();
|
||||
subFolderLay->setMargin(0);
|
||||
subFolderLay->setSpacing(10);
|
||||
{
|
||||
QGridLayout* infoLay = new QGridLayout();
|
||||
infoLay->setMargin(10);
|
||||
infoLay->setHorizontalSpacing(3);
|
||||
infoLay->setVerticalSpacing(10);
|
||||
{
|
||||
infoLay->addWidget(new QLabel(tr("Project:"), this), 0, 0);
|
||||
infoLay->addWidget(m_projectField, 0, 1);
|
||||
|
||||
infoLay->addWidget(new QLabel(tr("Episode:"), this), 1, 0);
|
||||
infoLay->addWidget(m_episodeField, 1, 1);
|
||||
|
||||
infoLay->addWidget(new QLabel(tr("Sequence:"), this), 2, 0);
|
||||
infoLay->addWidget(m_sequenceField, 2, 1);
|
||||
|
||||
infoLay->addWidget(new QLabel(tr("Scene:"), this), 3, 0);
|
||||
infoLay->addWidget(m_sceneField, 3, 1);
|
||||
}
|
||||
infoLay->setColumnStretch(0, 0);
|
||||
infoLay->setColumnStretch(1, 1);
|
||||
infoGroupBox->setLayout(infoLay);
|
||||
subFolderLay->addWidget(infoGroupBox, 0);
|
||||
|
||||
QGridLayout* subNameLay = new QGridLayout();
|
||||
subNameLay->setMargin(10);
|
||||
subNameLay->setHorizontalSpacing(3);
|
||||
subNameLay->setVerticalSpacing(10);
|
||||
{
|
||||
subNameLay->addWidget(m_autoSubNameCB, 0, 0);
|
||||
subNameLay->addWidget(m_subNameFormatCombo, 0, 1);
|
||||
|
||||
subNameLay->addWidget(new QLabel(tr("Subfolder Name:"), this), 1, 0);
|
||||
subNameLay->addWidget(m_subFolderNameField, 1, 1);
|
||||
}
|
||||
subNameLay->setColumnStretch(0, 0);
|
||||
subNameLay->setColumnStretch(1, 1);
|
||||
subNameGroupBox->setLayout(subNameLay);
|
||||
subFolderLay->addWidget(subNameGroupBox, 0);
|
||||
}
|
||||
subFolderFrame->setLayout(subFolderLay);
|
||||
m_topLayout->addWidget(subFolderFrame);
|
||||
|
||||
m_topLayout->addWidget(showPopupOnLaunchCB, 0, Qt::AlignLeft);
|
||||
|
||||
m_topLayout->addStretch(1);
|
||||
}
|
||||
|
||||
resize(300, 400);
|
||||
|
||||
//---- signal-slot connection
|
||||
bool ret = true;
|
||||
|
||||
ret = ret && connect(m_subFolderCB, SIGNAL(clicked(bool)), subFolderFrame,
|
||||
SLOT(setEnabled(bool)));
|
||||
ret = ret && connect(m_projectField, SIGNAL(textEdited(const QString&)), this,
|
||||
SLOT(updateSubFolderName()));
|
||||
ret = ret && connect(m_episodeField, SIGNAL(textEdited(const QString&)), this,
|
||||
SLOT(updateSubFolderName()));
|
||||
ret = ret && connect(m_sequenceField, SIGNAL(textEdited(const QString&)),
|
||||
this, SLOT(updateSubFolderName()));
|
||||
ret = ret && connect(m_sceneField, SIGNAL(textEdited(const QString&)), this,
|
||||
SLOT(updateSubFolderName()));
|
||||
ret = ret && connect(m_autoSubNameCB, SIGNAL(clicked(bool)), this,
|
||||
SLOT(onAutoSubNameCBClicked(bool)));
|
||||
|
||||
ret = ret && connect(showPopupOnLaunchCB, SIGNAL(clicked(bool)), this,
|
||||
SLOT(onShowPopupOnLaunchCBClicked(bool)));
|
||||
|
||||
ret = ret && connect(okBtn, SIGNAL(clicked(bool)), this, SLOT(onOkPressed()));
|
||||
ret = ret && connect(cancelBtn, SIGNAL(clicked(bool)), this, SLOT(reject()));
|
||||
|
||||
assert(ret);
|
||||
|
||||
updateSubFolderName();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
QString PencilTestSaveInFolderPopup::getPath() {
|
||||
if (!m_subFolderCB->isChecked()) return m_parentFolderField->getPath();
|
||||
|
||||
return m_parentFolderField->getPath() + "\\" + m_subFolderNameField->text();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
namespace {
|
||||
QString formatString(QString inStr, int charNum) {
|
||||
if (inStr.isEmpty()) return QString("0").rightJustified(charNum, '0');
|
||||
|
||||
QString numStr, postStr;
|
||||
// find the first non-digit character
|
||||
int index = inStr.indexOf(QRegExp("[^0-9]"), 0);
|
||||
|
||||
if (index == -1) // only digits
|
||||
numStr = inStr;
|
||||
else if (index == 0) // only post strings
|
||||
return inStr;
|
||||
else { // contains both
|
||||
numStr = inStr.left(index);
|
||||
postStr = inStr.right(inStr.length() - index);
|
||||
}
|
||||
return numStr.rightJustified(charNum, '0') + postStr;
|
||||
}
|
||||
};
|
||||
|
||||
void PencilTestSaveInFolderPopup::updateSubFolderName() {
|
||||
if (!m_autoSubNameCB->isChecked()) return;
|
||||
|
||||
QString episodeStr = formatString(m_episodeField->text(), 3);
|
||||
QString sequenceStr = formatString(m_sequenceField->text(), 3);
|
||||
QString sceneStr = formatString(m_sceneField->text(), 4);
|
||||
|
||||
QString str;
|
||||
|
||||
switch (m_subNameFormatCombo->currentIndex()) {
|
||||
case 0: // C- + Sequence + Scene
|
||||
str = QString("C-%1-%2").arg(sequenceStr).arg(sceneStr);
|
||||
break;
|
||||
case 1: // Sequence + Scene
|
||||
str = QString("%1-%2").arg(sequenceStr).arg(sceneStr);
|
||||
break;
|
||||
case 2: // Episode + Sequence + Scene
|
||||
str = QString("%1-%2-%3").arg(episodeStr).arg(sequenceStr).arg(sceneStr);
|
||||
break;
|
||||
case 3: // Project + Episode + Sequence + Scene
|
||||
str = QString("%1-%2-%3-%4")
|
||||
.arg(m_projectField->text())
|
||||
.arg(episodeStr)
|
||||
.arg(sequenceStr)
|
||||
.arg(sceneStr);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
m_subFolderNameField->setText(str);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void PencilTestSaveInFolderPopup::onAutoSubNameCBClicked(bool on) {
|
||||
m_subNameFormatCombo->setEnabled(on);
|
||||
updateSubFolderName();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void PencilTestSaveInFolderPopup::onShowPopupOnLaunchCBClicked(bool on) {
|
||||
CamCapOpenSaveInPopupOnLaunch = (on) ? 1 : 0;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
void PencilTestSaveInFolderPopup::onOkPressed() {
|
||||
if (!m_subFolderCB->isChecked()) {
|
||||
accept();
|
||||
return;
|
||||
}
|
||||
|
||||
// check the subFolder value
|
||||
QString subFolderName = m_subFolderNameField->text();
|
||||
if (subFolderName.isEmpty()) {
|
||||
DVGui::MsgBox(WARNING, tr("Subfolder name should not be empty."));
|
||||
return;
|
||||
}
|
||||
|
||||
int index = subFolderName.indexOf(QRegExp("[\\]:;|=,\\[\\*\\.\"/\\\\]"), 0);
|
||||
if (index >= 0) {
|
||||
DVGui::MsgBox(WARNING, tr("Subfolder name should not contain following "
|
||||
"characters: * . \" / \\ [ ] : ; | = , "));
|
||||
return;
|
||||
}
|
||||
|
||||
TFilePath fp(m_parentFolderField->getPath());
|
||||
fp += TFilePath(subFolderName);
|
||||
TFilePath actualFp =
|
||||
TApp::instance()->getCurrentScene()->getScene()->decodeFilePath(fp);
|
||||
|
||||
if (QFileInfo::exists(actualFp.getQString())) {
|
||||
DVGui::MsgBox(WARNING,
|
||||
tr("Folder %1 already exists.").arg(actualFp.getQString()));
|
||||
return;
|
||||
}
|
||||
|
||||
// save the current properties to env data
|
||||
CamCapSaveInPopupSubFolder = (m_subFolderCB->isChecked()) ? 1 : 0;
|
||||
CamCapSaveInPopupProject = m_projectField->text().toStdString();
|
||||
CamCapSaveInPopupEpisode = m_episodeField->text().toStdString();
|
||||
CamCapSaveInPopupSequence = m_sequenceField->text().toStdString();
|
||||
CamCapSaveInPopupScene = m_sceneField->text().toStdString();
|
||||
CamCapSaveInPopupAutoSubName = (m_autoSubNameCB->isChecked()) ? 1 : 0;
|
||||
|
||||
// create folder
|
||||
try {
|
||||
TSystem::mkDir(actualFp);
|
||||
} catch (...) {
|
||||
MsgBox(CRITICAL, tr("It is not possible to create the %1 folder.")
|
||||
.arg(toQString(actualFp)));
|
||||
return;
|
||||
}
|
||||
|
||||
accept();
|
||||
}
|
||||
|
||||
//=============================================================================
|
||||
|
||||
PencilTestPopup::PencilTestPopup()
|
||||
// set the parent 0 in order to enable the popup behind the main window
|
||||
: Dialog(0, false, false, "PencilTest"),
|
||||
|
@ -643,6 +940,11 @@ PencilTestPopup::PencilTestPopup()
|
|||
#else
|
||||
m_captureFilterSettingsBtn = 0;
|
||||
#endif
|
||||
|
||||
QPushButton* subfolderButton = new QPushButton(tr("Subfolder"), this);
|
||||
|
||||
m_saveInFolderPopup = new PencilTestSaveInFolderPopup(this);
|
||||
|
||||
//----
|
||||
|
||||
m_resolutionCombo->setMaximumWidth(fontMetrics().width("0000 x 0000") + 25);
|
||||
|
@ -702,168 +1004,171 @@ PencilTestPopup::PencilTestPopup()
|
|||
tr("Video Capture Filter Settings..."));
|
||||
}
|
||||
|
||||
subfolderButton->setObjectName("SubfolderButton");
|
||||
subfolderButton->setIconSize(QSize(15, 15));
|
||||
m_saveInFileFld->setMaximumWidth(380);
|
||||
|
||||
m_saveInFolderPopup->hide();
|
||||
|
||||
//---- layout ----
|
||||
QHBoxLayout* mainLay = new QHBoxLayout();
|
||||
mainLay->setMargin(0);
|
||||
mainLay->setSpacing(10);
|
||||
m_topLayout->setMargin(10);
|
||||
m_topLayout->setSpacing(10);
|
||||
{
|
||||
QVBoxLayout* leftLay = new QVBoxLayout();
|
||||
leftLay->setMargin(5);
|
||||
leftLay->setSpacing(10);
|
||||
QHBoxLayout* camLay = new QHBoxLayout();
|
||||
camLay->setMargin(0);
|
||||
camLay->setSpacing(3);
|
||||
{
|
||||
QHBoxLayout* camLay = new QHBoxLayout();
|
||||
camLay->setMargin(0);
|
||||
camLay->setSpacing(3);
|
||||
{
|
||||
camLay->addWidget(new QLabel(tr("Camera:"), this), 0);
|
||||
camLay->addWidget(m_cameraListCombo, 1);
|
||||
camLay->addWidget(refreshCamListButton, 0);
|
||||
camLay->addWidget(new QLabel(tr("Camera:"), this), 0);
|
||||
camLay->addWidget(m_cameraListCombo, 1);
|
||||
camLay->addWidget(refreshCamListButton, 0);
|
||||
camLay->addSpacing(10);
|
||||
camLay->addWidget(new QLabel(tr("Resolution:"), this), 0);
|
||||
camLay->addWidget(m_resolutionCombo, 1);
|
||||
|
||||
if (m_captureFilterSettingsBtn) {
|
||||
camLay->addSpacing(10);
|
||||
camLay->addWidget(new QLabel(tr("Resolution:"), this), 0);
|
||||
camLay->addWidget(m_resolutionCombo, 1);
|
||||
|
||||
if (m_captureFilterSettingsBtn) {
|
||||
camLay->addSpacing(10);
|
||||
camLay->addWidget(m_captureFilterSettingsBtn);
|
||||
}
|
||||
|
||||
camLay->addStretch(0);
|
||||
camLay->addWidget(m_captureFilterSettingsBtn);
|
||||
}
|
||||
leftLay->addLayout(camLay, 0);
|
||||
leftLay->addWidget(m_cameraViewfinder, 1);
|
||||
}
|
||||
mainLay->addLayout(leftLay, 1);
|
||||
|
||||
QVBoxLayout* rightLay = new QVBoxLayout();
|
||||
rightLay->setMargin(0);
|
||||
rightLay->setSpacing(5);
|
||||
camLay->addStretch(0);
|
||||
camLay->addSpacing(15);
|
||||
camLay->addWidget(new QLabel(tr("Save In:"), this), 0);
|
||||
camLay->addWidget(m_saveInFileFld, 1);
|
||||
|
||||
camLay->addSpacing(10);
|
||||
camLay->addWidget(subfolderButton, 0);
|
||||
}
|
||||
m_topLayout->addLayout(camLay, 0);
|
||||
|
||||
QHBoxLayout* bottomLay = new QHBoxLayout();
|
||||
bottomLay->setMargin(0);
|
||||
bottomLay->setSpacing(10);
|
||||
{
|
||||
QVBoxLayout* fileLay = new QVBoxLayout();
|
||||
fileLay->setMargin(10);
|
||||
fileLay->setSpacing(10);
|
||||
bottomLay->addWidget(m_cameraViewfinder, 1);
|
||||
|
||||
QVBoxLayout* rightLay = new QVBoxLayout();
|
||||
rightLay->setMargin(0);
|
||||
rightLay->setSpacing(5);
|
||||
{
|
||||
QGridLayout* levelLay = new QGridLayout();
|
||||
levelLay->setMargin(0);
|
||||
levelLay->setHorizontalSpacing(3);
|
||||
levelLay->setVerticalSpacing(10);
|
||||
QVBoxLayout* fileLay = new QVBoxLayout();
|
||||
fileLay->setMargin(10);
|
||||
fileLay->setSpacing(10);
|
||||
{
|
||||
levelLay->addWidget(new QLabel(tr("Name:"), this), 0, 0,
|
||||
Qt::AlignRight);
|
||||
levelLay->addWidget(m_levelNameEdit, 0, 1);
|
||||
levelLay->addWidget(nextLevelButton, 0, 2);
|
||||
QGridLayout* levelLay = new QGridLayout();
|
||||
levelLay->setMargin(0);
|
||||
levelLay->setHorizontalSpacing(3);
|
||||
levelLay->setVerticalSpacing(10);
|
||||
{
|
||||
levelLay->addWidget(new QLabel(tr("Name:"), this), 0, 0,
|
||||
Qt::AlignRight);
|
||||
levelLay->addWidget(m_levelNameEdit, 0, 1);
|
||||
levelLay->addWidget(nextLevelButton, 0, 2);
|
||||
|
||||
levelLay->addWidget(new QLabel(tr("Frame:"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
levelLay->addWidget(m_frameNumberEdit, 1, 1);
|
||||
levelLay->addWidget(new QLabel(tr("Frame:"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
levelLay->addWidget(m_frameNumberEdit, 1, 1);
|
||||
}
|
||||
levelLay->setColumnStretch(0, 0);
|
||||
levelLay->setColumnStretch(1, 1);
|
||||
levelLay->setColumnStretch(2, 0);
|
||||
fileLay->addLayout(levelLay, 0);
|
||||
|
||||
QHBoxLayout* fileTypeLay = new QHBoxLayout();
|
||||
fileTypeLay->setMargin(0);
|
||||
fileTypeLay->setSpacing(3);
|
||||
{
|
||||
fileTypeLay->addWidget(new QLabel(tr("File Type:"), this), 0);
|
||||
fileTypeLay->addWidget(m_fileTypeCombo, 1);
|
||||
fileTypeLay->addSpacing(10);
|
||||
fileTypeLay->addWidget(m_fileFormatOptionButton);
|
||||
}
|
||||
fileLay->addLayout(fileTypeLay, 0);
|
||||
|
||||
fileLay->addWidget(m_saveOnCaptureCB, 0);
|
||||
}
|
||||
levelLay->setColumnStretch(0, 0);
|
||||
levelLay->setColumnStretch(1, 1);
|
||||
levelLay->setColumnStretch(2, 0);
|
||||
fileLay->addLayout(levelLay, 0);
|
||||
fileFrame->setLayout(fileLay);
|
||||
rightLay->addWidget(fileFrame, 0);
|
||||
|
||||
QHBoxLayout* fileTypeLay = new QHBoxLayout();
|
||||
fileTypeLay->setMargin(0);
|
||||
fileTypeLay->setSpacing(3);
|
||||
QGridLayout* imageLay = new QGridLayout();
|
||||
imageLay->setMargin(10);
|
||||
imageLay->setHorizontalSpacing(3);
|
||||
imageLay->setVerticalSpacing(10);
|
||||
{
|
||||
fileTypeLay->addWidget(new QLabel(tr("File Type:"), this), 0);
|
||||
fileTypeLay->addWidget(m_fileTypeCombo, 1);
|
||||
fileTypeLay->addSpacing(10);
|
||||
fileTypeLay->addWidget(m_fileFormatOptionButton);
|
||||
}
|
||||
fileLay->addLayout(fileTypeLay, 0);
|
||||
|
||||
QHBoxLayout* saveInLay = new QHBoxLayout();
|
||||
saveInLay->setMargin(0);
|
||||
saveInLay->setSpacing(3);
|
||||
{
|
||||
saveInLay->addWidget(new QLabel(tr("Save In:"), this), 0);
|
||||
saveInLay->addWidget(m_saveInFileFld, 1);
|
||||
}
|
||||
fileLay->addLayout(saveInLay, 0);
|
||||
|
||||
fileLay->addWidget(m_saveOnCaptureCB, 0);
|
||||
}
|
||||
fileFrame->setLayout(fileLay);
|
||||
rightLay->addWidget(fileFrame, 0);
|
||||
|
||||
QGridLayout* imageLay = new QGridLayout();
|
||||
imageLay->setMargin(10);
|
||||
imageLay->setHorizontalSpacing(3);
|
||||
imageLay->setVerticalSpacing(10);
|
||||
{
|
||||
imageLay->addWidget(new QLabel(tr("Color type:"), this), 0, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_colorTypeCombo, 0, 1);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("Threshold:"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_thresholdFld, 1, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("Contrast:"), this), 2, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_contrastFld, 2, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("Brightness:"), this), 3, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_brightnessFld, 3, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(m_upsideDownCB, 4, 0, 1, 3, Qt::AlignLeft);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("BG reduction:"), this), 5, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_bgReductionFld, 5, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(m_captureWhiteBGButton, 6, 0, 1, 3);
|
||||
}
|
||||
imageLay->setColumnStretch(0, 0);
|
||||
imageLay->setColumnStretch(1, 0);
|
||||
imageLay->setColumnStretch(2, 1);
|
||||
imageFrame->setLayout(imageLay);
|
||||
rightLay->addWidget(imageFrame, 0);
|
||||
|
||||
QGridLayout* displayLay = new QGridLayout();
|
||||
displayLay->setMargin(10);
|
||||
displayLay->setHorizontalSpacing(3);
|
||||
displayLay->setVerticalSpacing(10);
|
||||
{
|
||||
displayLay->addWidget(m_onionSkinCB, 0, 0, 1, 2);
|
||||
|
||||
displayLay->addWidget(new QLabel(tr("Opacity(%):"), this), 1, 0,
|
||||
imageLay->addWidget(new QLabel(tr("Color type:"), this), 0, 0,
|
||||
Qt::AlignRight);
|
||||
displayLay->addWidget(m_onionOpacityFld, 1, 1);
|
||||
displayLay->addWidget(m_loadImageButton, 2, 0, 1, 2);
|
||||
imageLay->addWidget(m_colorTypeCombo, 0, 1);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("Threshold:"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_thresholdFld, 1, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("Contrast:"), this), 2, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_contrastFld, 2, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("Brightness:"), this), 3, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_brightnessFld, 3, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(m_upsideDownCB, 4, 0, 1, 3, Qt::AlignLeft);
|
||||
|
||||
imageLay->addWidget(new QLabel(tr("BG reduction:"), this), 5, 0,
|
||||
Qt::AlignRight);
|
||||
imageLay->addWidget(m_bgReductionFld, 5, 1, 1, 2);
|
||||
|
||||
imageLay->addWidget(m_captureWhiteBGButton, 6, 0, 1, 3);
|
||||
}
|
||||
imageLay->setColumnStretch(0, 0);
|
||||
imageLay->setColumnStretch(1, 0);
|
||||
imageLay->setColumnStretch(2, 1);
|
||||
imageFrame->setLayout(imageLay);
|
||||
rightLay->addWidget(imageFrame, 0);
|
||||
|
||||
QGridLayout* displayLay = new QGridLayout();
|
||||
displayLay->setMargin(10);
|
||||
displayLay->setHorizontalSpacing(3);
|
||||
displayLay->setVerticalSpacing(10);
|
||||
{
|
||||
displayLay->addWidget(m_onionSkinCB, 0, 0, 1, 2);
|
||||
|
||||
displayLay->addWidget(new QLabel(tr("Opacity(%):"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
displayLay->addWidget(m_onionOpacityFld, 1, 1);
|
||||
displayLay->addWidget(m_loadImageButton, 2, 0, 1, 2);
|
||||
}
|
||||
displayLay->setColumnStretch(0, 0);
|
||||
displayLay->setColumnStretch(1, 1);
|
||||
// displayLay->setColumnStretch(2, 1);
|
||||
displayFrame->setLayout(displayLay);
|
||||
rightLay->addWidget(displayFrame);
|
||||
|
||||
QGridLayout* timerLay = new QGridLayout();
|
||||
timerLay->setMargin(10);
|
||||
timerLay->setHorizontalSpacing(3);
|
||||
timerLay->setVerticalSpacing(10);
|
||||
{
|
||||
timerLay->addWidget(m_timerCB, 0, 0, 1, 2);
|
||||
|
||||
timerLay->addWidget(new QLabel(tr("Interval(sec):"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
timerLay->addWidget(m_timerIntervalFld, 1, 1);
|
||||
}
|
||||
timerLay->setColumnStretch(0, 0);
|
||||
timerLay->setColumnStretch(1, 1);
|
||||
timerFrame->setLayout(timerLay);
|
||||
rightLay->addWidget(timerFrame);
|
||||
|
||||
rightLay->addStretch(1);
|
||||
|
||||
rightLay->addWidget(m_captureButton, 0);
|
||||
rightLay->addSpacing(20);
|
||||
rightLay->addWidget(closeButton, 0);
|
||||
rightLay->addSpacing(10);
|
||||
}
|
||||
displayLay->setColumnStretch(0, 0);
|
||||
displayLay->setColumnStretch(1, 1);
|
||||
// displayLay->setColumnStretch(2, 1);
|
||||
displayFrame->setLayout(displayLay);
|
||||
rightLay->addWidget(displayFrame);
|
||||
|
||||
QGridLayout* timerLay = new QGridLayout();
|
||||
timerLay->setMargin(10);
|
||||
timerLay->setHorizontalSpacing(3);
|
||||
timerLay->setVerticalSpacing(10);
|
||||
{
|
||||
timerLay->addWidget(m_timerCB, 0, 0, 1, 2);
|
||||
|
||||
timerLay->addWidget(new QLabel(tr("Interval(sec):"), this), 1, 0,
|
||||
Qt::AlignRight);
|
||||
timerLay->addWidget(m_timerIntervalFld, 1, 1);
|
||||
}
|
||||
timerLay->setColumnStretch(0, 0);
|
||||
timerLay->setColumnStretch(1, 1);
|
||||
timerFrame->setLayout(timerLay);
|
||||
rightLay->addWidget(timerFrame);
|
||||
|
||||
rightLay->addStretch(1);
|
||||
|
||||
rightLay->addWidget(m_captureButton, 0);
|
||||
rightLay->addSpacing(20);
|
||||
rightLay->addWidget(closeButton, 0);
|
||||
bottomLay->addLayout(rightLay, 0);
|
||||
}
|
||||
mainLay->addLayout(rightLay, 0);
|
||||
m_topLayout->addLayout(bottomLay, 1);
|
||||
}
|
||||
m_topLayout->addLayout(mainLay);
|
||||
|
||||
//---- signal-slot connections ----
|
||||
bool ret = true;
|
||||
|
@ -904,6 +1209,8 @@ PencilTestPopup::PencilTestPopup()
|
|||
if (m_captureFilterSettingsBtn)
|
||||
ret = ret && connect(m_captureFilterSettingsBtn, SIGNAL(pressed()), this,
|
||||
SLOT(onCaptureFilterSettingsBtnPressed()));
|
||||
ret = ret && connect(subfolderButton, SIGNAL(clicked(bool)), this,
|
||||
SLOT(openSaveInFolderPopup()));
|
||||
assert(ret);
|
||||
|
||||
refreshCameraList();
|
||||
|
@ -915,6 +1222,15 @@ PencilTestPopup::PencilTestPopup()
|
|||
onCameraListComboActivated(startupCamIndex);
|
||||
}
|
||||
|
||||
QString resStr = QString::fromStdString(CamCapCameraResolution.getValue());
|
||||
if (m_currentCamera && !resStr.isEmpty()) {
|
||||
int startupResolutionIndex = m_resolutionCombo->findText(resStr);
|
||||
if (startupResolutionIndex > 0) {
|
||||
m_resolutionCombo->setCurrentIndex(startupResolutionIndex);
|
||||
onResolutionComboActivated(resStr);
|
||||
}
|
||||
}
|
||||
|
||||
onNextName();
|
||||
}
|
||||
|
||||
|
@ -1076,6 +1392,9 @@ void PencilTestPopup::onResolutionComboActivated(const QString& itemText) {
|
|||
|
||||
m_currentCamera->start();
|
||||
m_cameraViewfinder->setImage(QImage());
|
||||
|
||||
// update env
|
||||
CamCapCameraResolution = itemText.toStdString();
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -1606,4 +1925,24 @@ void PencilTestPopup::onCaptureFilterSettingsBtnPressed() {
|
|||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
OpenPopupCommandHandler<PencilTestPopup> openPencilTestPopup(MI_PencilTest);
|
||||
void PencilTestPopup::openSaveInFolderPopup() {
|
||||
if (m_saveInFolderPopup->exec()) {
|
||||
QString oldPath = m_saveInFileFld->getPath();
|
||||
m_saveInFileFld->setPath(m_saveInFolderPopup->getPath());
|
||||
if (oldPath == m_saveInFileFld->getPath()) onNextName();
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
OpenPopupCommandHandler<PencilTestPopup> openPencilTestPopup(MI_PencilTest);
|
||||
|
||||
// specialized in order to call openSaveInFolderPopup()
|
||||
template <>
|
||||
void OpenPopupCommandHandler<PencilTestPopup>::execute() {
|
||||
if (!m_popup) m_popup = new PencilTestPopup();
|
||||
m_popup->show();
|
||||
m_popup->raise();
|
||||
m_popup->activateWindow();
|
||||
if (CamCapOpenSaveInPopupOnLaunch != 0) m_popup->openSaveInFolderPopup();
|
||||
}
|
|
@ -121,6 +121,31 @@ signals:
|
|||
void levelNameEdited();
|
||||
};
|
||||
|
||||
//=============================================================================
|
||||
// PencilTestSaveInFolderPopup
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class PencilTestSaveInFolderPopup : public DVGui::Dialog {
|
||||
Q_OBJECT
|
||||
|
||||
DVGui::FileField* m_parentFolderField;
|
||||
QLineEdit *m_projectField, *m_episodeField, *m_sequenceField, *m_sceneField,
|
||||
*m_subFolderNameField;
|
||||
|
||||
QCheckBox *m_subFolderCB, *m_autoSubNameCB;
|
||||
QComboBox* m_subNameFormatCombo;
|
||||
|
||||
public:
|
||||
PencilTestSaveInFolderPopup(QWidget* parent = 0);
|
||||
QString getPath();
|
||||
|
||||
protected slots:
|
||||
void updateSubFolderName();
|
||||
void onAutoSubNameCBClicked(bool);
|
||||
void onShowPopupOnLaunchCBClicked(bool);
|
||||
void onOkPressed();
|
||||
};
|
||||
|
||||
//=============================================================================
|
||||
// PencilTestPopup
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -151,6 +176,8 @@ class PencilTestPopup : public DVGui::Dialog {
|
|||
// used only for Windows
|
||||
QPushButton* m_captureFilterSettingsBtn;
|
||||
|
||||
PencilTestSaveInFolderPopup* m_saveInFolderPopup;
|
||||
|
||||
int m_timerId;
|
||||
QString m_cacheImagePath;
|
||||
bool m_captureWhiteBGCue;
|
||||
|
@ -189,6 +216,9 @@ protected slots:
|
|||
|
||||
void onCaptureButtonClicked(bool);
|
||||
void onCaptureFilterSettingsBtnPressed();
|
||||
|
||||
public slots:
|
||||
void openSaveInFolderPopup();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -117,6 +117,31 @@
|
|||
<translation>二つの列が選択されていないので、マッチラインを合成できません。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AudioRecordingPopup</name>
|
||||
<message>
|
||||
<source>Audio Recording</source>
|
||||
<translation>録音</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save and Insert</source>
|
||||
<translation>保存して挿入</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sync with XSheet</source>
|
||||
<translation>タイムシートと同期する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source> </source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The microphone is not available:
|
||||
Please select a different device or check the microphone.</source>
|
||||
<translation>マイクが使用できません:
|
||||
別のデバイスを選択するか、マイクを確認して下さい。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AutocenterPopup</name>
|
||||
<message>
|
||||
|
@ -4480,6 +4505,14 @@ Do you want to create it?</source>
|
|||
<source>&Startup Popup...</source>
|
||||
<translation>スタートアップウィンドウ(&S) ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>&Fast Render to MP4</source>
|
||||
<translation>MP4ムービーをレンダリング (&F)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Record Audio</source>
|
||||
<translation>録音する</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MatchlinesDialog</name>
|
||||
|
@ -5043,6 +5076,10 @@ What do you want to do?</source>
|
|||
<source>Warning</source>
|
||||
<translation>警告</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Render</source>
|
||||
<translation>レンダリング</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>OverwriteDialog</name>
|
||||
|
@ -5302,6 +5339,113 @@ Do you want to overwrite it?</source>
|
|||
<source>Video Capture Filter Settings...</source>
|
||||
<translation>ビデオキャプチャ設定 ...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Load Selected Image</source>
|
||||
<translation>選択した画像を読み込み</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subfolder</source>
|
||||
<translation>カットフォルダ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No image selected. Please select an image in the Xsheet.</source>
|
||||
<translation>画像が選択されていません。タイムシート内から選択して下さい。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected image is not in a raster level.</source>
|
||||
<translation>選択された画像はラスターレベルではありません。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The selected image size does not match the current camera settings.</source>
|
||||
<translation>選択された画像のサイズが、現在のカメラサイズと一致しません。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PencilTestSaveInFolderPopup</name>
|
||||
<message>
|
||||
<source>Create Subfolder</source>
|
||||
<translation>カットフォルダを作成する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Infomation</source>
|
||||
<translation>基本情報</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subfolder Name</source>
|
||||
<translation>フォルダ名</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto Format:</source>
|
||||
<translation>自動生成:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Show This on Launch of the Camera Capture</source>
|
||||
<translation>”カメラから取り込む”起動時にこのポップアップを表示する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OK</source>
|
||||
<translation>OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation>キャンセル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>C- + Sequence + Scene</source>
|
||||
<translation>C- + シーン + カット</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sequence + Scene</source>
|
||||
<translation>シーン + カット</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode + Sequence + Scene</source>
|
||||
<translation>話数 + シーン + カット</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project + Episode + Sequence + Scene</source>
|
||||
<translation>作品名 + 話数 + シーン + カット</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Save In:</source>
|
||||
<translation>作成場所:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project:</source>
|
||||
<translation>作品名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Episode:</source>
|
||||
<translation>話数:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sequence:</source>
|
||||
<translation>シーン:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Scene:</source>
|
||||
<translation>カット番号:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subfolder Name:</source>
|
||||
<translation>フォルダ名:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subfolder name should not be empty.</source>
|
||||
<translation>フォルダ名を入力してください。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Subfolder name should not contain following characters: * . " / \ [ ] : ; | = , </source>
|
||||
<translation>フォルダ名に次のいずれかを含む事はできません: * . " / \ [ ] : ; | = , </translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Folder %1 already exists.</source>
|
||||
<translation>フォルダ %1 は既に存在します。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>It is not possible to create the %1 folder.</source>
|
||||
<translation>%1 フォルダを作成できません。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PltGizmoPopup</name>
|
||||
|
@ -6009,6 +6153,40 @@ Do you want to overwrite it?</source>
|
|||
<source>Show Startup Window when OpenToonz Starts</source>
|
||||
<translation>OpenToonzの起動時にスタートアップウィンドウを表示する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Numpad keys are assigned to the following commands.
|
||||
Is it OK to release these shortcuts?</source>
|
||||
<translation>数字キーは既に以下のコマンドのショートカットに割り当てられています。
|
||||
これらのショートカットを解除してもよろしいですか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>OK</source>
|
||||
<translation>OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation>キャンセル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Numpad and Tab keys for Switching Styles</source>
|
||||
<translation>数字キーとTabキーでスタイルを選択する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use Arrow Key to Shift Cell Selection</source>
|
||||
<translation>矢印キーでコマ選択を移動する</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable to Input Cells without Double Clicking</source>
|
||||
<translation>ダブルクリックなしでシートのコマを入力できるようにする</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Please indicate where you would like exports from Fast Render(MP4) to go.</source>
|
||||
<translation>”MP4ムービーのレンダリング”コマンドの出力先を指定してください。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Fast Render Path: </source>
|
||||
<translation>保存先のパス:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PreferencesPopup::FormatProperties</name>
|
||||
|
@ -7690,6 +7868,14 @@ Do you want to overwrite it?</source>
|
|||
Are you sure?</source>
|
||||
<translation>%1 を削除します。よろしいですか?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>FFmpeg not found, please set the location in the Preferences and restart.</source>
|
||||
<translation>FFmpegが見つかりません。環境設定でパスを指定し、OpenToonzを再起動してください。</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Skipping frame.</source>
|
||||
<translation>フレームをスキップしています。</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>RenameAsToonzPopup</name>
|
||||
|
@ -10196,6 +10382,45 @@ Please refer to the user guide for details.</source>
|
|||
<translation>離散サンプリング</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>XsheetGUI::ColumnTransparencyPopup</name>
|
||||
<message>
|
||||
<source>None</source>
|
||||
<translation>なし</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Red</source>
|
||||
<translation>赤</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Green</source>
|
||||
<translation>緑</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Blue</source>
|
||||
<translation>青</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DarkYellow</source>
|
||||
<translation>暗い黄色</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DarkCyan</source>
|
||||
<translation>暗いシアン</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>DarkMagenta</source>
|
||||
<translation>暗いマゼンタ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>N.B. Filter doesn't affect vector levels</source>
|
||||
<translation>※ カラーフィルタはベクターレベルには適用されません</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter:</source>
|
||||
<translation>フィルタ:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>XsheetGUI::NoteArea</name>
|
||||
<message>
|
||||
|
|
|
@ -28,6 +28,29 @@
|
|||
<translation>置き換え</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AddWordButton</name>
|
||||
<message>
|
||||
<source>Character</source>
|
||||
<translation>キャラクター</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Part</source>
|
||||
<translation>部位</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Suffix</source>
|
||||
<translation>接尾辞</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New</source>
|
||||
<translation>新規作成</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Add New Word for %1</source>
|
||||
<translation>%1 に新しい単語を追加する</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AdjustPaletteDialog</name>
|
||||
<message>
|
||||
|
@ -385,6 +408,17 @@ Possibly the preset file has been corrupted</source>
|
|||
<translation>スローアウト:</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>EasyInputArea</name>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation>警告</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 is already registered</source>
|
||||
<translation>%1 は既に登録されています</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FileField</name>
|
||||
<message>
|
||||
|
@ -1178,6 +1212,21 @@ Select FX nodes and related links before copying or cutting the selection you wa
|
|||
<translation type="vanished">ファイル名は次の記号のどれかを含むことができません: --- \ / : ? " | --- </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NewWordDialog</name>
|
||||
<message>
|
||||
<source>OK</source>
|
||||
<translation>OK</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cancel</source>
|
||||
<translation>キャンセル</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enter new word</source>
|
||||
<translation>単語を入力してください</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PageViewer</name>
|
||||
<message>
|
||||
|
@ -2204,7 +2253,7 @@ Apply</source>
|
|||
</message>
|
||||
<message>
|
||||
<source>Apply</source>
|
||||
<translation>適用</translation>
|
||||
<translation type="vanished">適用</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Style Name</source>
|
||||
|
@ -2214,6 +2263,14 @@ Apply</source>
|
|||
<source>Name Editor: # %1</source>
|
||||
<translation>スタイル名を編集: # %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Apply and Next</source>
|
||||
<translation>適用して次へ</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Easy Inputs</source>
|
||||
<translation>簡易入力</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>TMessageViewer</name>
|
||||
|
@ -2255,4 +2312,11 @@ Apply</source>
|
|||
<translation>通常の色</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>WordButton</name>
|
||||
<message>
|
||||
<source>Remove %1</source>
|
||||
<translation type="unfinished">%1 を削除</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
||||
|
|
Loading…
Reference in a new issue