|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
#include "startuppopup.h"
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// Tnz6 includes
|
|
Jeremy Bullock |
bfe861 |
#include "mainwindow.h"
|
|
Jeremy Bullock |
bfe861 |
#include "tapp.h"
|
|
Jeremy Bullock |
bfe861 |
#include "iocommand.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toutputproperties.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonzqt/flipconsole.h"
|
|
Jeremy Bullock |
bfe861 |
#include "menubarcommandids.h"
|
|
Jeremy Bullock |
bfe861 |
#include "tenv.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/stage.h"
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// TnzQt includes
|
|
Jeremy Bullock |
bfe861 |
#include "toonzqt/menubarcommand.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonzqt/gutil.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonzqt/doublefield.h"
|
|
justburner |
be2476 |
#include "toonzqt/icongenerator.h"
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// TnzLib includes
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/toonzscene.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/txsheet.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/levelproperties.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/sceneproperties.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/tcamera.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/tscenehandle.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/txsheethandle.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/preferences.h"
|
|
Jeremy Bullock |
bfe861 |
#include "toonz/tproject.h"
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// TnzCore includes
|
|
Jeremy Bullock |
bfe861 |
#include "tsystem.h"
|
|
Jeremy Bullock |
bfe861 |
#include "filebrowsermodel.h"
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// Qt includes
|
|
Jeremy Bullock |
bfe861 |
#include <qhboxlayout></qhboxlayout>
|
|
Jeremy Bullock |
bfe861 |
#include <qcombobox></qcombobox>
|
|
Jeremy Bullock |
bfe861 |
#include <qpushbutton></qpushbutton>
|
|
Jeremy Bullock |
bfe861 |
#include <qmainwindow></qmainwindow>
|
|
Jeremy Bullock |
bfe861 |
#include <qapplication></qapplication>
|
|
Jeremy Bullock |
bfe861 |
#include <qdesktopwidget></qdesktopwidget>
|
|
Jeremy Bullock |
bfe861 |
#include <qmessagebox></qmessagebox>
|
|
Jeremy Bullock |
bfe861 |
#include <qtextstream></qtextstream>
|
|
Jeremy Bullock |
bfe861 |
#include <qframe></qframe>
|
|
Jeremy Bullock |
bfe861 |
#include <qgroupbox></qgroupbox>
|
|
justburner |
be2476 |
#include <qpainter></qpainter>
|
|
justburner |
be2476 |
#include <qscrollbar></qscrollbar>
|
|
justburner |
be2476 |
#include <qmouseevent></qmouseevent>
|
|
justburner |
be2476 |
#include <qdesktopservices></qdesktopservices>
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
using namespace std;
|
|
Jeremy Bullock |
bfe861 |
using namespace DVGui;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
namespace {
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// the first value in the preset list
|
|
Jeremy Bullock |
bfe861 |
const QString custom = QObject::tr("<custom>");</custom>
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
ce17cf |
void removeAll(QLayout *layout) {
|
|
Jeremy Bullock |
ce17cf |
QLayoutItem *child;
|
|
Jeremy Bullock |
ce17cf |
while (layout->count() != 0) {
|
|
Jeremy Bullock |
ce17cf |
child = layout->takeAt(0);
|
|
Jeremy Bullock |
ce17cf |
if (child->layout() != 0) {
|
|
Jeremy Bullock |
ce17cf |
removeAll(child->layout());
|
|
Jeremy Bullock |
ce17cf |
} else if (child->widget() != 0) {
|
|
Jeremy Bullock |
ce17cf |
delete child->widget();
|
|
Jeremy Bullock |
ce17cf |
}
|
|
Jeremy Bullock |
ce17cf |
|
|
Jeremy Bullock |
ce17cf |
delete child;
|
|
Jeremy Bullock |
ce17cf |
}
|
|
Jeremy Bullock |
ce17cf |
}
|
|
Jeremy Bullock |
ce17cf |
|
|
Jeremy Bullock |
bfe861 |
QString removeZeros(QString srcStr) {
|
|
Jeremy Bullock |
bfe861 |
if (!srcStr.contains('.')) return srcStr;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
for (int i = srcStr.length() - 1; i >= 0; i--) {
|
|
Jeremy Bullock |
bfe861 |
if (srcStr.at(i) == '0')
|
|
Jeremy Bullock |
bfe861 |
srcStr.chop(1);
|
|
Jeremy Bullock |
bfe861 |
else if (srcStr.at(i) == '.') {
|
|
Jeremy Bullock |
bfe861 |
srcStr.chop(1);
|
|
Jeremy Bullock |
bfe861 |
break;
|
|
Jeremy Bullock |
bfe861 |
} else
|
|
Jeremy Bullock |
bfe861 |
break;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
return srcStr;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
} // namespace
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//=============================================================================
|
|
Jeremy Bullock |
bfe861 |
/*! \class StartupPopup
|
|
Jeremy Bullock |
bfe861 |
\brief The StartupPopup class provides a modal dialog to
|
|
Jeremy Bullock |
bfe861 |
bring up recent files or create a new scene.
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
Inherits \b Dialog.
|
|
Jeremy Bullock |
bfe861 |
*/
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
StartupPopup::StartupPopup()
|
|
Jeremy Bullock |
bfe861 |
: Dialog(TApp::instance()->getMainWindow(), true, true, "StartupPopup") {
|
|
Jeremy Bullock |
bfe861 |
setWindowTitle(tr("OpenToonz Startup"));
|
|
Jeremy Bullock |
bfe861 |
|
|
manongjohn |
ca8bef |
m_projectBox = new QGroupBox(tr("Current Project"), this);
|
|
justburner |
be2476 |
m_scenesTab = new QTabWidget();
|
|
manongjohn |
ca8bef |
m_recentBox = new QGroupBox(tr("Recent Scenes [Project]"), this);
|
|
Jeremy Bullock |
bfe861 |
m_projectBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
|
|
Jeremy Bullock |
bfe861 |
m_nameFld = new LineEdit(this);
|
|
Jeremy Bullock |
bfe861 |
m_pathFld = new FileField(this);
|
|
Jeremy Bullock |
bfe861 |
m_sceneNameLabel = new QLabel(tr("Scene Name:"));
|
|
Jeremy Bullock |
bfe861 |
m_widthLabel = new QLabel(tr("Width:"), this);
|
|
Jeremy Bullock |
bfe861 |
m_widthFld = new MeasuredDoubleLineEdit(this);
|
|
Jeremy Bullock |
bfe861 |
m_heightLabel = new QLabel(tr("Height:"), this);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld = new MeasuredDoubleLineEdit(this);
|
|
Jeremy Bullock |
bfe861 |
m_dpiLabel = new QLabel(tr("DPI:"), this);
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld = new DoubleLineEdit(this, 120);
|
|
Jeremy Bullock |
bfe861 |
m_resXLabel = new QLabel(tr("X"), this);
|
|
Jeremy Bullock |
bfe861 |
m_resXFld = new DoubleLineEdit(this);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld = new DoubleLineEdit(this);
|
|
Jeremy Bullock |
bfe861 |
m_resTextLabel = new QLabel(tr("Resolution:"), this);
|
|
Jeremy Bullock |
bfe861 |
m_fpsLabel = new QLabel(tr("Frame Rate:"), this);
|
|
Jeremy Bullock |
bfe861 |
m_fpsFld = new DoubleLineEdit(this, 24.0);
|
|
Jeremy Bullock |
bfe861 |
m_cameraSettingsWidget = new CameraSettingsWidget(false);
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo = new QComboBox(this);
|
|
Jeremy Bullock |
bfe861 |
m_unitsCB = new QComboBox(this);
|
|
Jeremy Bullock |
bfe861 |
m_addPresetBtn = new QPushButton(tr("Add"), this);
|
|
Jeremy Bullock |
bfe861 |
m_removePresetBtn = new QPushButton(tr("Remove"), this);
|
|
Jeremy Bullock |
bfe861 |
m_showAtStartCB = new QCheckBox(tr("Show this at startup"), this);
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveOnCB = new QCheckBox(tr("Automatically Save Every "));
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld = new IntLineEdit(this, 10);
|
|
Jeremy Bullock |
bfe861 |
QPushButton *createButton = new QPushButton(tr("Create Scene"), this);
|
|
Jeremy Bullock |
bfe861 |
QPushButton *newProjectButton = new QPushButton(tr("New Project..."), this);
|
|
Jeremy Bullock |
bfe861 |
QPushButton *loadOtherSceneButton =
|
|
Jeremy Bullock |
bfe861 |
new QPushButton(tr("Open Another Scene..."), this);
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
m_projectsCB = new QComboBox(this);
|
|
Jeremy Bullock |
bfe861 |
QStringList type;
|
|
Jeremy Bullock |
bfe861 |
type << tr("pixel") << tr("cm") << tr("mm") << tr("inch") << tr("field");
|
|
Jeremy Bullock |
bfe861 |
m_unitsCB->addItems(type);
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
QPushButton *openProjectButton = new QPushButton(tr("Open Project..."), this);
|
|
justburner |
be2476 |
QPushButton *exploreProjectButton =
|
|
justburner |
be2476 |
new QPushButton(tr("Explore Folder"), this);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
m_existingList = new StartupScenesList(this, QSize(96, 54));
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
// Exclude all character which cannot fit in a filepath (Win).
|
|
Jeremy Bullock |
bfe861 |
// Dots are also prohibited since they are internally managed by Toonz.
|
|
Jeremy Bullock |
bfe861 |
QRegExp rx("[^\\\\/:?*.\"<>|]+");
|
|
Jeremy Bullock |
bfe861 |
m_nameFld->setValidator(new QRegExpValidator(rx, this));
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setMeasure("camera.lx");
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setMeasure("camera.ly");
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setRange(0.1, (std::numeric_limits<double>::max)());</double>
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setRange(0.1, (std::numeric_limits<double>::max)());</double>
|
|
Jeremy Bullock |
bfe861 |
m_fpsFld->setRange(1.0, (std::numeric_limits<double>::max)());</double>
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setRange(1.0, (std::numeric_limits<double>::max)());</double>
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setRange(0.1, (std::numeric_limits<double>::max)());</double>
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setRange(0.1, (std::numeric_limits<double>::max)());</double>
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld->setRange(1, (std::numeric_limits<int>::max)());</int>
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveOnCB->setChecked(Preferences::instance()->isAutosaveEnabled());
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveOnCB->setStyleSheet("QCheckBox{ background-color: none; }");
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld->setEnabled(m_autoSaveOnCB->isChecked());
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld->setValue(Preferences::instance()->getAutosavePeriod());
|
|
Jeremy Bullock |
bfe861 |
m_showAtStartCB->setChecked(Preferences::instance()->isStartupPopupEnabled());
|
|
Jeremy Bullock |
bfe861 |
m_showAtStartCB->setStyleSheet("QCheckBox{ background-color: none; }");
|
|
Jeremy Bullock |
bfe861 |
m_addPresetBtn->setStyleSheet(
|
|
Jeremy Bullock |
bfe861 |
"QPushButton { padding-left: 4px; padding-right: 4px;}");
|
|
Jeremy Bullock |
bfe861 |
m_removePresetBtn->setStyleSheet(
|
|
Jeremy Bullock |
bfe861 |
"QPushButton { padding-left: 4px; padding-right: 4px;}");
|
|
Jeremy Bullock |
bfe861 |
QLabel *label = new QLabel();
|
|
konero |
7bed16 |
label->setPixmap(QPixmap(generateIconPixmap("opentoonz_logo")));
|
|
Jeremy Bullock |
bfe861 |
m_projectBox->setObjectName("SolidLineFrame");
|
|
justburner |
be2476 |
m_scenesTab->setObjectName("SolidLineFrame");
|
|
Jeremy Bullock |
bfe861 |
m_recentBox->setObjectName("SolidLineFrame");
|
|
Jeremy Bullock |
bfe861 |
m_projectBox->setContentsMargins(10, 10, 10, 10);
|
|
justburner |
be2476 |
m_scenesTab->setContentsMargins(10, 10, 10, 10);
|
|
Jeremy Bullock |
bfe861 |
m_recentBox->setContentsMargins(10, 10, 10, 10);
|
|
Jeremy Bullock |
bfe861 |
m_recentBox->setFixedWidth(200);
|
|
justburner |
be2476 |
m_scenesTab->setMinimumWidth(480);
|
|
Jeremy Bullock |
bfe861 |
m_projectBox->setMinimumWidth(480);
|
|
Jeremy Bullock |
89f1cf |
m_buttonFrame->setFixedHeight(34);
|
|
manongjohn |
ca8bef |
|
|
Jeremy Bullock |
bfe861 |
//--- layout
|
|
Jeremy Bullock |
bfe861 |
m_topLayout->setMargin(0);
|
|
Jeremy Bullock |
bfe861 |
m_topLayout->setSpacing(0);
|
|
Jeremy Bullock |
bfe861 |
{
|
|
Jeremy Bullock |
bfe861 |
QGridLayout *guiLay = new QGridLayout();
|
|
justburner |
be2476 |
QGridLayout *projectLay = new QGridLayout();
|
|
Jeremy Bullock |
bfe861 |
QGridLayout *newSceneLay = new QGridLayout();
|
|
justburner |
be2476 |
QWidget *newSceneWidget = new QWidget();
|
|
Jeremy Bullock |
bfe861 |
m_recentSceneLay = new QVBoxLayout();
|
|
Jeremy Bullock |
bfe861 |
guiLay->setMargin(10);
|
|
Jeremy Bullock |
bfe861 |
guiLay->setVerticalSpacing(10);
|
|
Jeremy Bullock |
bfe861 |
guiLay->setHorizontalSpacing(10);
|
|
Jeremy Bullock |
bfe861 |
|
|
konero |
7bed16 |
guiLay->addWidget(label, 0, 0, 1, 2, Qt::AlignCenter);
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
//--- Project
|
|
Jeremy Bullock |
bfe861 |
projectLay->setSpacing(8);
|
|
Jeremy Bullock |
bfe861 |
projectLay->setMargin(8);
|
|
Jeremy Bullock |
bfe861 |
{
|
|
justburner |
be2476 |
projectLay->addWidget(m_projectsCB, 0, 0, 1, 3);
|
|
justburner |
be2476 |
projectLay->addWidget(newProjectButton, 1, 0);
|
|
justburner |
be2476 |
projectLay->addWidget(openProjectButton, 1, 1);
|
|
justburner |
be2476 |
projectLay->addWidget(exploreProjectButton, 1, 2);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_projectBox->setLayout(projectLay);
|
|
Jeremy Bullock |
bfe861 |
guiLay->addWidget(m_projectBox, 1, 0, 1, 1, Qt::AlignCenter);
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
//--- Existing scenes
|
|
justburner |
be2476 |
m_scenesTab->addTab(m_existingList, tr("Open Existing Scene"));
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
//--- New scene
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->setMargin(8);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->setVerticalSpacing(8);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->setHorizontalSpacing(8);
|
|
Jeremy Bullock |
bfe861 |
{
|
|
Jeremy Bullock |
bfe861 |
// Scene Name
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_sceneNameLabel, 0, 0,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_nameFld, 0, 1, 1, 3);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// Save In
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(new QLabel(tr("Save In:")), 1, 0,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_pathFld, 1, 1, 1, 3);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(new QLabel(tr("Camera Size:")), 2, 0,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
QHBoxLayout *resListLay = new QHBoxLayout();
|
|
Jeremy Bullock |
bfe861 |
resListLay->setSpacing(3);
|
|
Jeremy Bullock |
bfe861 |
resListLay->setMargin(1);
|
|
Jeremy Bullock |
bfe861 |
{
|
|
Jeremy Bullock |
bfe861 |
resListLay->addWidget(m_presetCombo, 1);
|
|
Jeremy Bullock |
bfe861 |
resListLay->addWidget(m_addPresetBtn, 0);
|
|
Jeremy Bullock |
bfe861 |
resListLay->addWidget(m_removePresetBtn, 0);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addLayout(resListLay, 2, 1, 1, 3, Qt::AlignLeft);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// Width - Height
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_widthLabel, 3, 0,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_widthFld, 3, 1);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_heightLabel, 3, 2,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_heightFld, 3, 3);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_resTextLabel, 4, 0, 1, 1, Qt::AlignRight);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_resXFld, 4, 1);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_resXLabel, 4, 2, 1, 1, Qt::AlignCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_resYFld, 4, 3);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(new QLabel(tr("Units:")), 5, 0,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_unitsCB, 5, 1, 1, 1);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_dpiLabel, 5, 2,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_dpiFld, 5, 3, 1, 1);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_fpsLabel, 6, 0,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignRight | Qt::AlignVCenter);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(m_fpsFld, 6, 1, 1, 1);
|
|
Jeremy Bullock |
bfe861 |
newSceneLay->addWidget(createButton, 7, 1, 1, 3, Qt::AlignLeft);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
justburner |
be2476 |
newSceneWidget->setLayout(newSceneLay);
|
|
justburner |
be2476 |
m_scenesTab->addTab(newSceneWidget, tr("Create a New Scene"));
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
guiLay->addWidget(m_scenesTab, 2, 0, 4, 1, Qt::AlignTop);
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
//--- Recent scenes
|
|
shun_iwasawa |
b81709 |
m_recentSceneLay->setMargin(5);
|
|
shun_iwasawa |
b81709 |
m_recentSceneLay->setSpacing(2);
|
|
Jeremy Bullock |
bfe861 |
{
|
|
Jeremy Bullock |
bfe861 |
// Recent Scene List
|
|
Jeremy Bullock |
bfe861 |
m_recentBox->setLayout(m_recentSceneLay);
|
|
manongjohn |
ca8bef |
guiLay->addWidget(m_recentBox, 1, 1, 4, 1,
|
|
manongjohn |
ca8bef |
Qt::AlignTop | Qt::AlignHCenter);
|
|
Jeremy Bullock |
bfe861 |
guiLay->addWidget(loadOtherSceneButton, 5, 1, 1, 1, Qt::AlignRight);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_topLayout->addLayout(guiLay, 0);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
m_buttonLayout->setMargin(0);
|
|
Jeremy Bullock |
bfe861 |
m_buttonLayout->setSpacing(10);
|
|
Jeremy Bullock |
4c6224 |
{
|
|
Jeremy Bullock |
4c6224 |
m_buttonLayout->addWidget(m_showAtStartCB, Qt::AlignLeft);
|
|
Jeremy Bullock |
4c6224 |
m_buttonLayout->addStretch();
|
|
Jeremy Bullock |
4c6224 |
m_buttonLayout->addWidget(m_autoSaveOnCB);
|
|
Jeremy Bullock |
4c6224 |
m_buttonLayout->addWidget(m_autoSaveTimeFld);
|
|
Jeremy Bullock |
4c6224 |
QLabel *minutesLabel = new QLabel(tr("Minutes"), this);
|
|
Jeremy Bullock |
4c6224 |
minutesLabel->setStyleSheet("QLabel{ background-color: none; }");
|
|
Jeremy Bullock |
4c6224 |
m_buttonLayout->addWidget(minutesLabel);
|
|
Jeremy Bullock |
4c6224 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
TApp *app = TApp::instance();
|
|
Jeremy Bullock |
bfe861 |
TSceneHandle *sceneHandle = app->getCurrentScene();
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//---- signal-slot connections
|
|
Jeremy Bullock |
bfe861 |
bool ret = true;
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(sceneHandle, SIGNAL(sceneChanged()), this,
|
|
konero |
7bed16 |
SLOT(onSceneChanged()));
|
|
shun-iwasawa |
62d519 |
ret = ret && connect(sceneHandle, SIGNAL(sceneSwitched()), this,
|
|
konero |
7bed16 |
SLOT(onSceneChanged()));
|
|
shun-iwasawa |
62d519 |
ret = ret && connect(newProjectButton, SIGNAL(clicked()), this,
|
|
konero |
7bed16 |
SLOT(onNewProjectButtonPressed()));
|
|
justburner |
be2476 |
ret = ret && connect(openProjectButton, SIGNAL(clicked()), this,
|
|
konero |
7bed16 |
SLOT(onOpenProjectButtonPressed()));
|
|
justburner |
be2476 |
ret = ret && connect(exploreProjectButton, SIGNAL(clicked()), this,
|
|
konero |
7bed16 |
SLOT(onExploreProjectButtonPressed()));
|
|
shun-iwasawa |
62d519 |
ret = ret && connect(loadOtherSceneButton, SIGNAL(clicked()), this,
|
|
konero |
7bed16 |
SLOT(onLoadSceneButtonPressed()));
|
|
shun-iwasawa |
62d519 |
ret = ret && connect(m_projectsCB, SIGNAL(currentIndexChanged(int)),
|
|
konero |
7bed16 |
SLOT(onProjectChanged(int)));
|
|
shun-iwasawa |
62d519 |
ret = ret &&
|
|
Jeremy Bullock |
bfe861 |
connect(createButton, SIGNAL(clicked()), this, SLOT(onCreateButton()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_showAtStartCB, SIGNAL(stateChanged(int)), this,
|
|
Jeremy Bullock |
bfe861 |
SLOT(onShowAtStartChanged(int)));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_widthFld, SIGNAL(valueChanged()), this,
|
|
Jeremy Bullock |
bfe861 |
SLOT(updateResolution()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_heightFld, SIGNAL(valueChanged()), this,
|
|
Jeremy Bullock |
bfe861 |
SLOT(updateResolution()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret &&
|
|
Jeremy Bullock |
bfe861 |
connect(m_resXFld, SIGNAL(valueChanged()), this, SLOT(updateSize()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret &&
|
|
Jeremy Bullock |
bfe861 |
connect(m_resYFld, SIGNAL(valueChanged()), this, SLOT(updateSize()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_dpiFld, SIGNAL(editingFinished()), this,
|
|
Jeremy Bullock |
bfe861 |
SLOT(onDpiChanged()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_presetCombo, SIGNAL(activated(const QString &)),
|
|
Jeremy Bullock |
bfe861 |
SLOT(onPresetSelected(const QString &)));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_addPresetBtn, SIGNAL(clicked()), SLOT(addPreset()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_unitsCB, SIGNAL(currentIndexChanged(int)),
|
|
Jeremy Bullock |
bfe861 |
SLOT(onCameraUnitChanged(int)));
|
|
Jeremy Bullock |
bfe861 |
ret = ret &&
|
|
Jeremy Bullock |
bfe861 |
connect(m_removePresetBtn, SIGNAL(clicked()), SLOT(removePreset()));
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_nameFld, SIGNAL(returnPressedNow()), createButton,
|
|
Jeremy Bullock |
bfe861 |
SLOT(animateClick()));
|
|
Jeremy Bullock |
4c6224 |
ret = ret && connect(m_autoSaveOnCB, SIGNAL(stateChanged(int)), this,
|
|
Jeremy Bullock |
4c6224 |
SLOT(onAutoSaveOnChanged(int)));
|
|
Jeremy Bullock |
4c6224 |
ret = ret && connect(m_autoSaveTimeFld, SIGNAL(editingFinished()), this,
|
|
Jeremy Bullock |
4c6224 |
SLOT(onAutoSaveTimeChanged()));
|
|
justburner |
be2476 |
ret = ret && connect(m_existingList, SIGNAL(itemClicked(int)), this,
|
|
justburner |
be2476 |
SLOT(onExistingSceneClicked(int)));
|
|
Jeremy Bullock |
bfe861 |
assert(ret);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::showEvent(QShowEvent *) {
|
|
Jeremy Bullock |
bfe861 |
loadPresetList();
|
|
Jeremy Bullock |
bfe861 |
updateProjectCB();
|
|
Jeremy Bullock |
bfe861 |
m_nameFld->setFocus();
|
|
Jeremy Bullock |
bfe861 |
m_pathFld->setPath(TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getProject()
|
|
Jeremy Bullock |
bfe861 |
->getScenesPath()
|
|
Jeremy Bullock |
bfe861 |
.getQString());
|
|
Jeremy Bullock |
bfe861 |
TDimensionD cameraSize = TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentCamera()
|
|
Jeremy Bullock |
bfe861 |
->getSize();
|
|
Jeremy Bullock |
bfe861 |
TDimension cameraRes = TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentCamera()
|
|
Jeremy Bullock |
bfe861 |
->getRes();
|
|
Jeremy Bullock |
bfe861 |
double fps = TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getProperties()
|
|
Jeremy Bullock |
bfe861 |
->getOutputProperties()
|
|
Jeremy Bullock |
bfe861 |
->getFrameRate();
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue(cameraSize.lx);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue(cameraSize.ly);
|
|
Jeremy Bullock |
bfe861 |
if (Preferences::instance()->getCameraUnits() == "pixel") {
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setDecimals(0);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setDecimals(0);
|
|
Jeremy Bullock |
bfe861 |
m_resTextLabel->hide();
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->hide();
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->hide();
|
|
Jeremy Bullock |
bfe861 |
m_resXLabel->hide();
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->hide();
|
|
Jeremy Bullock |
bfe861 |
m_dpiLabel->hide();
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setDecimals(4);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setDecimals(4);
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->show();
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->show();
|
|
Jeremy Bullock |
bfe861 |
m_resXLabel->show();
|
|
Jeremy Bullock |
bfe861 |
m_resTextLabel->show();
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->show();
|
|
Jeremy Bullock |
bfe861 |
m_dpiLabel->show();
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
m_fpsFld->setValue(fps);
|
|
Jeremy Bullock |
bfe861 |
m_unitsCB->setCurrentText(Preferences::instance()->getCameraUnits());
|
|
Jeremy Bullock |
bfe861 |
m_dpi = cameraRes.lx / cameraSize.lx;
|
|
Jeremy Bullock |
bfe861 |
m_xRes = cameraRes.lx;
|
|
Jeremy Bullock |
bfe861 |
m_yRes = cameraRes.ly;
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setValue(m_xRes);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setValue(m_yRes);
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setDecimals(0);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setDecimals(0);
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(m_dpi);
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
int boxWidth = m_scenesTab->width();
|
|
justburner |
be2476 |
int boxHeight = m_scenesTab->height();
|
|
justburner |
be2476 |
m_scenesTab->setFixedWidth(boxWidth);
|
|
Jeremy Bullock |
bfe861 |
m_projectBox->setFixedWidth(boxWidth);
|
|
Jeremy Bullock |
bfe861 |
m_recentBox->setMinimumHeight(boxHeight);
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveOnCB->setChecked(Preferences::instance()->isAutosaveEnabled());
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld->setEnabled(m_autoSaveOnCB->isChecked());
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld->setValue(Preferences::instance()->getAutosavePeriod());
|
|
Jeremy Bullock |
bfe861 |
// update recent scenes
|
|
Jeremy Bullock |
bfe861 |
// clear items if they exist first
|
|
Jeremy Bullock |
ce17cf |
refreshRecentScenes();
|
|
justburner |
be2476 |
refreshExistingScenes();
|
|
Jeremy Bullock |
ce17cf |
// center window
|
|
Jeremy Bullock |
6095dd |
int currentScreen =
|
|
Jeremy Bullock |
6095dd |
QApplication::desktop()->screenNumber(TApp::instance()->getMainWindow());
|
|
Jeremy Bullock |
6095dd |
QPoint activeMonitorCenter =
|
|
Jeremy Bullock |
6095dd |
QApplication::desktop()->availableGeometry(currentScreen).center();
|
|
Jeremy Bullock |
6095dd |
QPoint thisPopupCenter = this->rect().center();
|
|
Jeremy Bullock |
6095dd |
QPoint centeredOnActiveMonitor = activeMonitorCenter - thisPopupCenter;
|
|
Jeremy Bullock |
6095dd |
this->move(centeredOnActiveMonitor);
|
|
Jeremy Bullock |
ce17cf |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
ce17cf |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
ce17cf |
|
|
Jeremy Bullock |
ce17cf |
void StartupPopup::refreshRecentScenes() {
|
|
Jeremy Bullock |
ce17cf |
removeAll(m_recentSceneLay);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
ce17cf |
m_sceneNames.clear();
|
|
Jeremy Bullock |
bfe861 |
m_sceneNames = RecentFiles::instance()->getFilesNameList(RecentFiles::Scene);
|
|
Jeremy Bullock |
ce17cf |
m_recentNamesLabels.clear();
|
|
Jeremy Bullock |
bfe861 |
m_recentNamesLabels = QVector<startuplabel *="">(m_sceneNames.count());</startuplabel>
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (m_sceneNames.count() <= 0) {
|
|
Jeremy Bullock |
bfe861 |
m_recentSceneLay->addWidget(new QLabel(tr("No Recent Scenes"), this), 1,
|
|
Jeremy Bullock |
bfe861 |
Qt::AlignTop);
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
int i = 0;
|
|
Jeremy Bullock |
bfe861 |
for (QString name : m_sceneNames) {
|
|
Jeremy Bullock |
bfe861 |
if (i > 9) break; // box can hold 10 scenes
|
|
manongjohn |
7ab0b7 |
QString fileName =
|
|
manongjohn |
7ab0b7 |
name.remove(0, name.indexOf(" ") + 1); // remove "#. " prefix
|
|
manongjohn |
7ab0b7 |
QString projectName = RecentFiles::instance()->getFileProject(fileName);
|
|
manongjohn |
7ab0b7 |
QString justName = QString::fromStdString(TFilePath(fileName).getName()) +
|
|
manongjohn |
7ab0b7 |
(projectName != "-" ? " [" + projectName + "]" : "");
|
|
Jeremy Bullock |
bfe861 |
m_recentNamesLabels[i] = new StartupLabel(justName, this, i);
|
|
manongjohn |
7ab0b7 |
m_recentNamesLabels[i]->setToolTip(fileName);
|
|
Jeremy Bullock |
ce17cf |
m_recentSceneLay->addWidget(m_recentNamesLabels[i], 0, Qt::AlignTop);
|
|
Jeremy Bullock |
bfe861 |
i++;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
bool ret = true;
|
|
Jeremy Bullock |
ce17cf |
for (int i = 0;
|
|
Jeremy Bullock |
ce17cf |
i < m_recentNamesLabels.count() && i < RECENT_SCENES_MAX_COUNT; i++) {
|
|
Jeremy Bullock |
bfe861 |
ret = ret && connect(m_recentNamesLabels[i], SIGNAL(wasClicked(int)), this,
|
|
Jeremy Bullock |
bfe861 |
SLOT(onRecentSceneClicked(int)));
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
assert(ret);
|
|
Jeremy Bullock |
ce17cf |
m_recentSceneLay->addStretch(1);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
void StartupPopup::refreshExistingScenes() {
|
|
justburner |
be2476 |
m_existingList->clearScenes();
|
|
justburner |
be2476 |
TFilePathSet files, allFiles;
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
TFilePath scenesFolder =
|
|
justburner |
be2476 |
TProjectManager::instance()->getCurrentProject()->getScenesPath();
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QFileInfo scenesFolderInfo(toQString(scenesFolder));
|
|
justburner |
be2476 |
if (scenesFolderInfo.isSymLink()) {
|
|
justburner |
be2476 |
scenesFolder = TFilePath(scenesFolderInfo.symLinkTarget());
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
TFileStatus scenesFolderStatus(scenesFolder);
|
|
justburner |
be2476 |
if (scenesFolderStatus.doesExist() && scenesFolderStatus.isDirectory() &&
|
|
justburner |
be2476 |
scenesFolderStatus.isReadable()) {
|
|
justburner |
be2476 |
try {
|
|
justburner |
be2476 |
TSystem::readDirectory(files, allFiles, scenesFolder);
|
|
justburner |
be2476 |
} catch (...) {
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
TFilePathSet::iterator it;
|
|
justburner |
be2476 |
for (it = files.begin(); it != files.end(); ++it) {
|
|
justburner |
be2476 |
if (it->getType() == "tnz") {
|
|
justburner |
be2476 |
QString name = QString::fromStdWString(it->getWideName());
|
|
justburner |
be2476 |
QString path = it->getQString();
|
|
justburner |
be2476 |
m_existingList->addScene(name, path);
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
m_existingList->addScene(tr("New Scene"), ":");
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QList<qstring> recentFiles =</qstring>
|
|
justburner |
be2476 |
RecentFiles::instance()->getFilesNameList(RecentFiles::Scene);
|
|
justburner |
be2476 |
m_existingList->findFirstScenePath(recentFiles);
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
//-----------------------------------------------------------------------------
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupPopup::onExistingSceneClicked(int index) {
|
|
justburner |
be2476 |
QString path = m_existingList->getPath(index);
|
|
justburner |
be2476 |
if (path == ":") {
|
|
justburner |
be2476 |
m_scenesTab->setCurrentIndex(1);
|
|
justburner |
be2476 |
m_nameFld->setFocus();
|
|
justburner |
be2476 |
} else {
|
|
justburner |
be2476 |
IoCmd::loadScene(TFilePath(path.toStdWString()), true, true);
|
|
justburner |
be2476 |
hide();
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
//-----------------------------------------------------------------------------
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onCreateButton() {
|
|
Jeremy Bullock |
bfe861 |
if (m_nameFld->text().trimmed() == "") {
|
|
Jeremy Bullock |
bfe861 |
DVGui::warning(tr("The name cannot be empty."));
|
|
Jeremy Bullock |
bfe861 |
m_nameFld->setFocus();
|
|
Jeremy Bullock |
bfe861 |
return;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
6f3194 |
if (m_widthFld->getValue() <= 0) {
|
|
Jeremy Bullock |
6f3194 |
DVGui::warning(tr("The width must be greater than zero."));
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setFocus();
|
|
Jeremy Bullock |
bfe861 |
return;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
6f3194 |
if (m_heightFld->getValue() <= 0) {
|
|
Jeremy Bullock |
6f3194 |
DVGui::warning(tr("The height must be greater than zero."));
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setFocus();
|
|
Jeremy Bullock |
bfe861 |
return;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
if (m_fpsFld->getValue() < 1) {
|
|
Jeremy Bullock |
bfe861 |
DVGui::warning(tr("The frame rate must be 1 or more."));
|
|
Jeremy Bullock |
bfe861 |
m_fpsFld->setFocus();
|
|
Jeremy Bullock |
bfe861 |
return;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
shun-iwasawa |
62d519 |
|
|
shun-iwasawa |
62d519 |
TFilePath scenePath =
|
|
shun-iwasawa |
62d519 |
TFilePath(m_pathFld->getPath()) +
|
|
shun-iwasawa |
62d519 |
TFilePath(m_nameFld->text().trimmed().toStdWString() + L".tnz");
|
|
shun-iwasawa |
62d519 |
|
|
shun-iwasawa |
62d519 |
if (!TSystem::doesExistFileOrLevel(TFilePath(m_pathFld->getPath()))) {
|
|
shun-iwasawa |
62d519 |
QString question;
|
|
shun-iwasawa |
62d519 |
question = QObject::tr(
|
|
shun-iwasawa |
62d519 |
"The chosen folder path does not exist."
|
|
shun-iwasawa |
62d519 |
"\nDo you want to create it?");
|
|
shun-iwasawa |
62d519 |
int ret = DVGui::MsgBox(question, QObject::tr("Create"),
|
|
shun-iwasawa |
62d519 |
QObject::tr("Cancel"), 0);
|
|
shun-iwasawa |
62d519 |
if (ret == 0 || ret == 2) {
|
|
shun-iwasawa |
62d519 |
m_pathFld->setFocus();
|
|
shun-iwasawa |
62d519 |
return;
|
|
shun-iwasawa |
62d519 |
}
|
|
shun-iwasawa |
62d519 |
if (!TSystem::touchParentDir(scenePath)) {
|
|
shun-iwasawa |
62d519 |
DVGui::warning(tr("Failed to create the folder."));
|
|
shun-iwasawa |
62d519 |
m_pathFld->setFocus();
|
|
shun-iwasawa |
62d519 |
return;
|
|
shun-iwasawa |
62d519 |
}
|
|
shun-iwasawa |
62d519 |
} else if (TSystem::doesExistFileOrLevel(scenePath)) {
|
|
Jeremy Bullock |
bfe861 |
QString question;
|
|
Jeremy Bullock |
bfe861 |
question = QObject::tr(
|
|
Jeremy Bullock |
bfe861 |
"The file name already exists."
|
|
Jeremy Bullock |
bfe861 |
"\nDo you want to overwrite it?");
|
|
Jeremy Bullock |
bfe861 |
int ret = DVGui::MsgBox(question, QObject::tr("Yes"), QObject::tr("No"), 0);
|
|
Jeremy Bullock |
bfe861 |
if (ret == 0 || ret == 2) {
|
|
Jeremy Bullock |
bfe861 |
// no (or closed message box window)
|
|
Jeremy Bullock |
bfe861 |
return;
|
|
Jeremy Bullock |
bfe861 |
;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
CommandManager::instance()->execute(MI_NewScene);
|
|
shun-iwasawa |
62d519 |
TApp::instance()->getCurrentScene()->getScene()->setScenePath(scenePath);
|
|
Jeremy Bullock |
bfe861 |
TDimensionD size =
|
|
Jeremy Bullock |
bfe861 |
TDimensionD(m_widthFld->getValue(), m_heightFld->getValue());
|
|
Jeremy Bullock |
bfe861 |
TDimension res = TDimension(m_xRes, m_yRes);
|
|
Jeremy Bullock |
bfe861 |
double fps = m_fpsFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getProperties()
|
|
Jeremy Bullock |
bfe861 |
->getOutputProperties()
|
|
Jeremy Bullock |
bfe861 |
->setFrameRate(fps);
|
|
Jeremy Bullock |
bfe861 |
TApp::instance()->getCurrentScene()->getScene()->getCurrentCamera()->setSize(
|
|
Jeremy Bullock |
bfe861 |
size);
|
|
Jeremy Bullock |
bfe861 |
TApp::instance()->getCurrentScene()->getScene()->getCurrentCamera()->setRes(
|
|
Jeremy Bullock |
bfe861 |
res);
|
|
shun-iwasawa |
4faf2e |
// save the scene right away
|
|
shun-iwasawa |
4faf2e |
IoCmd::saveScene();
|
|
Jeremy Bullock |
bfe861 |
// this makes sure the scene viewers update to the right fps
|
|
Jeremy Bullock |
bfe861 |
TApp::instance()->getCurrentScene()->notifySceneSwitched();
|
|
shun-iwasawa |
4faf2e |
TApp::instance()->getCurrentScene()->notifyNameSceneChange();
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
hide();
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::updateProjectCB() {
|
|
Jeremy Bullock |
bfe861 |
m_updating = true;
|
|
Jeremy Bullock |
bfe861 |
m_projectPaths.clear();
|
|
Jeremy Bullock |
bfe861 |
m_projectsCB->clear();
|
|
Jeremy Bullock |
bfe861 |
|
|
manongjohn |
312940 |
TProjectManager *pm = TProjectManager::instance();
|
|
manongjohn |
312940 |
|
|
justburner |
be2476 |
TFilePath sandboxFl = pm->getSandboxProjectFolder();
|
|
justburner |
be2476 |
TFilePath sandboxFp = sandboxFl + "sandbox_otprj.xml";
|
|
Jeremy Bullock |
bfe861 |
m_projectPaths.push_back(sandboxFp);
|
|
Jeremy Bullock |
bfe861 |
m_projectsCB->addItem("sandbox");
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
int idx = 0;
|
|
justburner |
be2476 |
m_projectsCB->setItemData(idx++, sandboxFl.getQString(), Qt::ToolTipRole);
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
std::vector<tfilepath> prjRoots;</tfilepath>
|
|
manongjohn |
312940 |
pm->getProjectRoots(prjRoots);
|
|
Jeremy Bullock |
bfe861 |
for (int i = 0; i < prjRoots.size(); i++) {
|
|
Jeremy Bullock |
bfe861 |
TFilePathSet fps;
|
|
Jeremy Bullock |
bfe861 |
TSystem::readDirectory_Dir_ReadExe(fps, prjRoots[i]);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
TFilePathSet::iterator it;
|
|
Jeremy Bullock |
bfe861 |
for (it = fps.begin(); it != fps.end(); ++it) {
|
|
Jeremy Bullock |
bfe861 |
TFilePath fp(*it);
|
|
manongjohn |
312940 |
if (pm->isProject(fp)) {
|
|
manongjohn |
312940 |
m_projectPaths.push_back(pm->projectFolderToProjectPath(fp));
|
|
manongjohn |
312940 |
TFilePath prjFile = pm->getProjectPathByProjectFolder(fp);
|
|
manongjohn |
312940 |
m_projectsCB->addItem(QString::fromStdString(prjFile.getName()));
|
|
justburner |
be2476 |
m_projectsCB->setItemData(idx++, fp.getQString(), Qt::ToolTipRole);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
manongjohn |
8138f8 |
// Add in project of current project if outside known Project root folders
|
|
manongjohn |
312940 |
TProjectP currentProject = pm->getCurrentProject();
|
|
manongjohn |
8138f8 |
TFilePath currentProjectFP = currentProject->getProjectPath();
|
|
manongjohn |
8138f8 |
if (m_projectPaths.indexOf(currentProjectFP) == -1) {
|
|
manongjohn |
8138f8 |
m_projectPaths.push_back(currentProjectFP);
|
|
manongjohn |
8138f8 |
m_projectsCB->addItem(
|
|
manongjohn |
8138f8 |
QString::fromStdString(currentProject->getName().getName()));
|
|
manongjohn |
8138f8 |
}
|
|
Jeremy Bullock |
bfe861 |
int i;
|
|
Jeremy Bullock |
bfe861 |
for (i = 0; i < m_projectPaths.size(); i++) {
|
|
manongjohn |
312940 |
if (pm->getCurrentProjectPath() == m_projectPaths[i]) {
|
|
Jeremy Bullock |
bfe861 |
m_projectsCB->setCurrentIndex(i);
|
|
Jeremy Bullock |
bfe861 |
break;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
m_projectsCB->setToolTip(currentProject->getProjectFolder().getQString());
|
|
Jeremy Bullock |
bfe861 |
m_pathFld->setPath(TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getProject()
|
|
Jeremy Bullock |
bfe861 |
->getScenesPath()
|
|
Jeremy Bullock |
bfe861 |
.getQString());
|
|
Jeremy Bullock |
bfe861 |
m_updating = false;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onProjectChanged(int index) {
|
|
Jeremy Bullock |
bfe861 |
if (m_updating) return;
|
|
Jeremy Bullock |
bfe861 |
TFilePath projectFp = m_projectPaths[index];
|
|
Jeremy Bullock |
bfe861 |
|
|
manongjohn |
da6d38 |
TProjectManager *pm = TProjectManager::instance();
|
|
manongjohn |
da6d38 |
pm->setCurrentProjectPath(projectFp);
|
|
manongjohn |
da6d38 |
|
|
manongjohn |
da6d38 |
TProjectP currentProject = pm->getCurrentProject();
|
|
manongjohn |
da6d38 |
|
|
manongjohn |
da6d38 |
// In case the project file was upgraded to current version, save it now
|
|
manongjohn |
da6d38 |
if (currentProject->getProjectPath() != projectFp) {
|
|
manongjohn |
da6d38 |
m_projectPaths[index] = currentProject->getProjectPath();
|
|
manongjohn |
da6d38 |
currentProject->save();
|
|
manongjohn |
da6d38 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
setupProjectChange();
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
//-----------------------------------------------------------------------------
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupPopup::setupProjectChange() {
|
|
justburner |
be2476 |
TProjectManager *pm = TProjectManager::instance();
|
|
justburner |
be2476 |
TProjectP currentProject = pm->getCurrentProject();
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
IoCmd::newScene();
|
|
Jeremy Bullock |
bfe861 |
m_pathFld->setPath(TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getProject()
|
|
Jeremy Bullock |
bfe861 |
->getScenesPath()
|
|
Jeremy Bullock |
bfe861 |
.getQString());
|
|
Jeremy Bullock |
bfe861 |
m_fpsFld->setValue(TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getProperties()
|
|
Jeremy Bullock |
bfe861 |
->getOutputProperties()
|
|
Jeremy Bullock |
bfe861 |
->getFrameRate());
|
|
Jeremy Bullock |
bfe861 |
TDimension res = TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentCamera()
|
|
Jeremy Bullock |
bfe861 |
->getRes();
|
|
Jeremy Bullock |
bfe861 |
m_xRes = res.lx;
|
|
Jeremy Bullock |
bfe861 |
m_yRes = res.ly;
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setValue(m_xRes);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setValue(m_yRes);
|
|
Jeremy Bullock |
bfe861 |
TDimensionD size = TApp::instance()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentScene()
|
|
Jeremy Bullock |
bfe861 |
->getScene()
|
|
Jeremy Bullock |
bfe861 |
->getCurrentCamera()
|
|
Jeremy Bullock |
bfe861 |
->getSize();
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue(size.lx);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue(size.ly);
|
|
Jeremy Bullock |
bfe861 |
m_dpi = m_xRes / size.lx;
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(m_dpi);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::loadPresetList() {
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->clear();
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->addItem("...");
|
|
Jeremy Bullock |
bfe861 |
m_presetListFile = ToonzFolder::getReslistPath(false).getQString();
|
|
Jeremy Bullock |
bfe861 |
QFile file(m_presetListFile);
|
|
Jeremy Bullock |
bfe861 |
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
|
Jeremy Bullock |
bfe861 |
QTextStream in(&file);
|
|
Jeremy Bullock |
bfe861 |
while (!in.atEnd()) {
|
|
Jeremy Bullock |
bfe861 |
QString line = in.readLine().trimmed();
|
|
Jeremy Bullock |
bfe861 |
if (line != "") m_presetCombo->addItem(line);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->setCurrentIndex(0);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::savePresetList() {
|
|
Jeremy Bullock |
bfe861 |
QFile file(m_presetListFile);
|
|
Jeremy Bullock |
bfe861 |
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return;
|
|
Jeremy Bullock |
bfe861 |
QTextStream out(&file);
|
|
Jeremy Bullock |
bfe861 |
int n = m_presetCombo->count();
|
|
Jeremy Bullock |
bfe861 |
for (int i = 1; i < n; i++) out << m_presetCombo->itemText(i) << "\n";
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::addPreset() {
|
|
Jeremy Bullock |
bfe861 |
int xRes = (int)(m_widthFld->getValue() * m_dpi);
|
|
Jeremy Bullock |
bfe861 |
int yRes = (int)(m_heightFld->getValue() * m_dpi);
|
|
Jeremy Bullock |
bfe861 |
double lx = m_widthFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
double ly = m_heightFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
double ar = m_widthFld->getValue() / m_heightFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
QString presetString;
|
|
Jeremy Bullock |
bfe861 |
presetString = QString::number(xRes) + "x" + QString::number(yRes) + ", " +
|
|
Jeremy Bullock |
bfe861 |
removeZeros(QString::number(lx)) + "x" +
|
|
Jeremy Bullock |
bfe861 |
removeZeros(QString::number(ly)) + ", " +
|
|
Jeremy Bullock |
bfe861 |
aspectRatioValueToString(ar);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
bool ok;
|
|
Jeremy Bullock |
bfe861 |
QString qs;
|
|
Jeremy Bullock |
bfe861 |
while (1) {
|
|
Jeremy Bullock |
bfe861 |
qs = DVGui::getText(tr("Preset name"),
|
|
Jeremy Bullock |
bfe861 |
tr("Enter the name for %1").arg(presetString), "", &ok);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (!ok) return;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (qs.indexOf(",") != -1)
|
|
Jeremy Bullock |
bfe861 |
QMessageBox::warning(this, tr("Error : Preset Name is Invalid"),
|
|
Jeremy Bullock |
bfe861 |
tr("The preset name must not use ','(comma)."));
|
|
Jeremy Bullock |
bfe861 |
else
|
|
Jeremy Bullock |
bfe861 |
break;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
int oldn = m_presetCombo->count();
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->addItem(qs + "," + presetString);
|
|
Jeremy Bullock |
bfe861 |
int newn = m_presetCombo->count();
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->blockSignals(true);
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->setCurrentIndex(m_presetCombo->count() - 1);
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->blockSignals(false);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
savePresetList();
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::removePreset() {
|
|
Jeremy Bullock |
bfe861 |
int index = m_presetCombo->currentIndex();
|
|
Jeremy Bullock |
bfe861 |
if (index <= 0) return;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// confirmation dialog
|
|
Jeremy Bullock |
bfe861 |
int ret = DVGui::MsgBox(QObject::tr("Deleting \"%1\".\nAre you sure?")
|
|
Jeremy Bullock |
bfe861 |
.arg(m_presetCombo->currentText()),
|
|
Jeremy Bullock |
bfe861 |
QObject::tr("Delete"), QObject::tr("Cancel"));
|
|
Jeremy Bullock |
bfe861 |
if (ret == 0 || ret == 2) return;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->removeItem(index);
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->setCurrentIndex(0);
|
|
Jeremy Bullock |
bfe861 |
savePresetList();
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onPresetSelected(const QString &str) {
|
|
Jeremy Bullock |
bfe861 |
if (str == custom || str.isEmpty()) return;
|
|
Jeremy Bullock |
bfe861 |
QString name, arStr;
|
|
Jeremy Bullock |
bfe861 |
int xres = 0, yres = 0;
|
|
Jeremy Bullock |
bfe861 |
double fx = -1.0, fy = -1.0;
|
|
Jeremy Bullock |
bfe861 |
QString xoffset = "", yoffset = "";
|
|
Jeremy Bullock |
bfe861 |
double ar;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (parsePresetString(str, name, xres, yres, fx, fy, xoffset, yoffset, ar,
|
|
Jeremy Bullock |
bfe861 |
false)) {
|
|
Jeremy Bullock |
bfe861 |
m_xRes = xres;
|
|
Jeremy Bullock |
bfe861 |
m_yRes = yres;
|
|
Jeremy Bullock |
bfe861 |
// The current solution is to preserve the DPI so that scenes are less
|
|
Jeremy Bullock |
bfe861 |
// likely to become incompatible with pixels only mode in the future
|
|
Jeremy Bullock |
bfe861 |
// Commented below is the default behavior of the camera settings widget
|
|
Jeremy Bullock |
bfe861 |
// m_widthFld->setValue(m_heightFld->getValue() * ar);
|
|
Jeremy Bullock |
bfe861 |
// m_dpiFld->setValue(m_xRes / m_widthFld->getValue());
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// here is the system that preserves dpi
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue((double)xres / (double)m_dpi);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue((double)yres / (double)m_dpi);
|
|
Jeremy Bullock |
bfe861 |
if (Preferences::instance()->getPixelsOnly()) {
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue((double)xres / Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue((double)yres / Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setValue(m_xRes);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setValue(m_yRes);
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
QMessageBox::warning(
|
|
Jeremy Bullock |
bfe861 |
this, tr("Bad camera preset"),
|
|
Jeremy Bullock |
bfe861 |
tr("'%1' doesn't seem to be a well formed camera preset. \n"
|
|
Jeremy Bullock |
bfe861 |
"Possibly the preset file has been corrupted")
|
|
Jeremy Bullock |
bfe861 |
.arg(str));
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//--------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
bool StartupPopup::parsePresetString(const QString &str, QString &name,
|
|
Jeremy Bullock |
bfe861 |
int &xres, int &yres, double &fx,
|
|
Jeremy Bullock |
bfe861 |
double &fy, QString &xoffset,
|
|
Jeremy Bullock |
bfe861 |
QString &yoffset, double &ar,
|
|
Jeremy Bullock |
bfe861 |
bool forCleanup) {
|
|
Jeremy Bullock |
bfe861 |
/*
|
|
Jeremy Bullock |
bfe861 |
parsing preset string with QString::split().
|
|
Jeremy Bullock |
bfe861 |
!NOTE! fx/fy (camera size in inch) and xoffset/yoffset (camera offset used in
|
|
Jeremy Bullock |
bfe861 |
cleanup camera) are optional,
|
|
Jeremy Bullock |
bfe861 |
in order to keep compatibility with default (Harlequin's) reslist.txt
|
|
Jeremy Bullock |
bfe861 |
*/
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
QStringList tokens = str.split(",", QString::SkipEmptyParts);
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (!(tokens.count() == 3 ||
|
|
Jeremy Bullock |
bfe861 |
(!forCleanup && tokens.count() == 4) || /*- with "fx x fy" token -*/
|
|
Jeremy Bullock |
bfe861 |
(forCleanup &&
|
|
Jeremy Bullock |
bfe861 |
tokens.count() ==
|
|
Jeremy Bullock |
bfe861 |
6))) /*- with "fx x fy", xoffset and yoffset tokens -*/
|
|
Jeremy Bullock |
bfe861 |
return false;
|
|
Jeremy Bullock |
bfe861 |
/*- name -*/
|
|
Jeremy Bullock |
bfe861 |
name = tokens[0];
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
/*- xres, yres (like: 1024x768) -*/
|
|
Jeremy Bullock |
bfe861 |
QStringList values = tokens[1].split("x");
|
|
Jeremy Bullock |
bfe861 |
if (values.count() != 2) return false;
|
|
Jeremy Bullock |
bfe861 |
bool ok;
|
|
Jeremy Bullock |
bfe861 |
xres = values[0].toInt(&ok);
|
|
Jeremy Bullock |
bfe861 |
if (!ok) return false;
|
|
Jeremy Bullock |
bfe861 |
yres = values[1].toInt(&ok);
|
|
Jeremy Bullock |
bfe861 |
if (!ok) return false;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (tokens.count() >= 4) {
|
|
Jeremy Bullock |
bfe861 |
/*- fx, fy -*/
|
|
Jeremy Bullock |
bfe861 |
values = tokens[2].split("x");
|
|
Jeremy Bullock |
bfe861 |
if (values.count() != 2) return false;
|
|
Jeremy Bullock |
bfe861 |
fx = values[0].toDouble(&ok);
|
|
Jeremy Bullock |
bfe861 |
if (!ok) return false;
|
|
Jeremy Bullock |
bfe861 |
fy = values[1].toDouble(&ok);
|
|
Jeremy Bullock |
bfe861 |
if (!ok) return false;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
/*- xoffset, yoffset -*/
|
|
Jeremy Bullock |
bfe861 |
if (forCleanup) {
|
|
Jeremy Bullock |
bfe861 |
xoffset = tokens[3];
|
|
Jeremy Bullock |
bfe861 |
yoffset = tokens[4];
|
|
Jeremy Bullock |
bfe861 |
/*- remove single space -*/
|
|
Jeremy Bullock |
bfe861 |
if (xoffset.startsWith(' ')) xoffset.remove(0, 1);
|
|
Jeremy Bullock |
bfe861 |
if (yoffset.startsWith(' ')) yoffset.remove(0, 1);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
/*- AR -*/
|
|
Jeremy Bullock |
bfe861 |
ar = aspectRatioStringToValue(tokens.last());
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
return true;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
double StartupPopup::aspectRatioStringToValue(const QString &s) {
|
|
Jeremy Bullock |
bfe861 |
if (s == "") {
|
|
Jeremy Bullock |
bfe861 |
return 1;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
int i = s.indexOf("/");
|
|
Jeremy Bullock |
bfe861 |
if (i <= 0 || i + 1 >= s.length()) return s.toDouble();
|
|
shun-iwasawa |
62d519 |
int num = s.left(i).toInt();
|
|
shun-iwasawa |
62d519 |
int den = s.mid(i + 1).toInt();
|
|
Jeremy Bullock |
bfe861 |
if (den <= 0) den = 1;
|
|
Jeremy Bullock |
bfe861 |
return (double)num / (double)den;
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
// A/R : value => string (e.g. '4/3' or '1.23')
|
|
Jeremy Bullock |
bfe861 |
QString StartupPopup::aspectRatioValueToString(double value, int width,
|
|
Jeremy Bullock |
bfe861 |
int height) {
|
|
Jeremy Bullock |
bfe861 |
double v = value;
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
if (width != 0 && height != 0) {
|
|
Jeremy Bullock |
bfe861 |
if (areAlmostEqual(value, (double)width / (double)height, 1e-3))
|
|
Jeremy Bullock |
bfe861 |
return QString("%1/%2").arg(width).arg(height);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
double iv = tround(v);
|
|
Jeremy Bullock |
bfe861 |
if (fabs(iv - v) > 0.01) {
|
|
Jeremy Bullock |
bfe861 |
for (int d = 2; d < 20; d++) {
|
|
Jeremy Bullock |
bfe861 |
int n = tround(v * d);
|
|
Jeremy Bullock |
bfe861 |
if (fabs(n - v * d) <= 0.01)
|
|
Jeremy Bullock |
bfe861 |
return QString::number(n) + "/" + QString::number(d);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
return QString::number(value, 'f', 5);
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
return QString::number((int)iv);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onNewProjectButtonPressed() {
|
|
Jeremy Bullock |
bfe861 |
CommandManager::instance()->execute(MI_NewProject);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
void StartupPopup::onOpenProjectButtonPressed() {
|
|
justburner |
be2476 |
TProjectManager *pm = TProjectManager::instance();
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
FileField::BrowserPopupController *bpc =
|
|
justburner |
be2476 |
FileField::getBrowserPopupController();
|
|
justburner |
be2476 |
if (!bpc) return;
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QString directory;
|
|
justburner |
be2476 |
TFilePath cfp = pm->getCurrentProject()->getProjectFolder();
|
|
justburner |
be2476 |
bpc->openPopup(QStringList(), true, cfp.getQString(), this);
|
|
justburner |
be2476 |
if (bpc->isExecute()) directory = bpc->getPath(false);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
if (!directory.isEmpty()) {
|
|
justburner |
be2476 |
TFilePath fp(directory);
|
|
justburner |
be2476 |
TFilePath pfp = pm->projectFolderToProjectPath(fp);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
if (TSystem::doesExistFileOrLevel(pfp))
|
|
justburner |
be2476 |
pm->setCurrentProjectPath(pfp);
|
|
justburner |
be2476 |
else
|
|
justburner |
be2476 |
pm->setCurrentProjectPath(fp);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
setupProjectChange();
|
|
justburner |
be2476 |
updateProjectCB();
|
|
justburner |
be2476 |
refreshExistingScenes();
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
//-----------------------------------------------------------------------------
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupPopup::onExploreProjectButtonPressed() {
|
|
justburner |
be2476 |
TProjectManager *pm = TProjectManager::instance();
|
|
konero |
7bed16 |
TFilePath cfp = pm->getCurrentProject()->getProjectFolder();
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QDesktopServices::openUrl(QUrl("file:///" + cfp.getQString()));
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
//-----------------------------------------------------------------------------
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onSceneChanged() {
|
|
Jeremy Bullock |
bfe861 |
// close the box if a recent scene has been selected
|
|
Jeremy Bullock |
bfe861 |
if (!TApp::instance()->getCurrentScene()->getScene()->isUntitled()) {
|
|
Jeremy Bullock |
bfe861 |
hide();
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
updateProjectCB();
|
|
justburner |
be2476 |
refreshExistingScenes();
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onDpiChanged() {
|
|
Jeremy Bullock |
bfe861 |
if (Preferences::instance()->getPixelsOnly()) {
|
|
Jeremy Bullock |
bfe861 |
m_dpi = Stage::standardDpi;
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
updateResolution();
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
m_dpi = m_dpiFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
updateResolution();
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onLoadSceneButtonPressed() {
|
|
Jeremy Bullock |
bfe861 |
CommandManager::instance()->execute(MI_LoadScene);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onRecentSceneClicked(int index) {
|
|
Jeremy Bullock |
bfe861 |
if (index < 0) return;
|
|
Jeremy Bullock |
bfe861 |
QString path =
|
|
Jeremy Bullock |
bfe861 |
RecentFiles::instance()->getFilePath(index, RecentFiles::Scene);
|
|
Jeremy Bullock |
ce17cf |
if (!TSystem::doesExistFileOrLevel(TFilePath(path.toStdWString()))) {
|
|
Jeremy Bullock |
ce17cf |
RecentFiles::instance()->removeFilePath(index, RecentFiles::Scene);
|
|
Jeremy Bullock |
ce17cf |
RecentFiles::instance()->refreshRecentFilesMenu(RecentFiles::Scene);
|
|
Jeremy Bullock |
ce17cf |
for (int i = 0;
|
|
Jeremy Bullock |
ce17cf |
i < m_recentNamesLabels.count() && i < RECENT_SCENES_MAX_COUNT; i++) {
|
|
Jeremy Bullock |
ce17cf |
disconnect(m_recentNamesLabels[i]);
|
|
Jeremy Bullock |
ce17cf |
}
|
|
Jeremy Bullock |
ce17cf |
QString msg = QObject::tr("The selected scene could not be found.");
|
|
Jeremy Bullock |
ce17cf |
DVGui::warning(msg);
|
|
Jeremy Bullock |
ce17cf |
refreshRecentScenes();
|
|
Jeremy Bullock |
ce17cf |
} else {
|
|
manongjohn |
ca8bef |
if (RecentFiles::instance()->getFileProject(index) != "-") {
|
|
manongjohn |
ca8bef |
QString projectName = RecentFiles::instance()->getFileProject(index);
|
|
manongjohn |
ca8bef |
int projectIndex = m_projectsCB->findText(projectName);
|
|
manongjohn |
ca8bef |
if (projectIndex >= 0) {
|
|
manongjohn |
ca8bef |
TFilePath projectFp = m_projectPaths[projectIndex];
|
|
manongjohn |
ca8bef |
TProjectManager::instance()->setCurrentProjectPath(projectFp);
|
|
manongjohn |
ca8bef |
}
|
|
manongjohn |
ca8bef |
}
|
|
manongjohn |
ca8bef |
IoCmd::loadScene(TFilePath(path.toStdWString()), false, true);
|
|
manongjohn |
ad26eb |
QString origProjectName = RecentFiles::instance()->getFileProject(index);
|
|
manongjohn |
ad26eb |
QString projectName = QString::fromStdString(TApp::instance()
|
|
konero |
7bed16 |
->getCurrentScene()
|
|
konero |
7bed16 |
->getScene()
|
|
konero |
7bed16 |
->getProject()
|
|
konero |
7bed16 |
->getName()
|
|
konero |
7bed16 |
.getName());
|
|
manongjohn |
ad26eb |
if (origProjectName == "-" || origProjectName != projectName) {
|
|
manongjohn |
7ab0b7 |
QString fileName =
|
|
manongjohn |
7ab0b7 |
RecentFiles::instance()->getFilePath(index, RecentFiles::Scene);
|
|
manongjohn |
7ab0b7 |
RecentFiles::instance()->removeFilePath(index, RecentFiles::Scene);
|
|
manongjohn |
7ab0b7 |
RecentFiles::instance()->addFilePath(fileName, RecentFiles::Scene,
|
|
manongjohn |
7ab0b7 |
projectName);
|
|
manongjohn |
7ab0b7 |
} else
|
|
manongjohn |
7ab0b7 |
RecentFiles::instance()->moveFilePath(index, 0, RecentFiles::Scene);
|
|
Jeremy Bullock |
ce17cf |
RecentFiles::instance()->refreshRecentFilesMenu(RecentFiles::Scene);
|
|
Jeremy Bullock |
ce17cf |
hide();
|
|
Jeremy Bullock |
ce17cf |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onCameraUnitChanged(int index) {
|
|
Jeremy Bullock |
bfe861 |
Preferences *pref = Preferences::instance();
|
|
Jeremy Bullock |
bfe861 |
QStringList type;
|
|
shun-iwasawa |
8fb291 |
// preference value should not be translated
|
|
shun-iwasawa |
8fb291 |
type << "pixel"
|
|
shun-iwasawa |
8fb291 |
<< "cm"
|
|
shun-iwasawa |
8fb291 |
<< "mm"
|
|
shun-iwasawa |
8fb291 |
<< "inch"
|
|
shun-iwasawa |
8fb291 |
<< "field";
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
double width = m_widthFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
double height = m_heightFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
if (index != 0) {
|
|
shun-iwasawa |
8fb291 |
pref->setValue(pixelsOnly, false);
|
|
shun-iwasawa |
8fb291 |
pref->setValue(cameraUnits, type[index]);
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setDecimals(4);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setDecimals(4);
|
|
Jeremy Bullock |
bfe861 |
m_resTextLabel->show();
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->show();
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->show();
|
|
Jeremy Bullock |
bfe861 |
m_resXLabel->show();
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->show();
|
|
Jeremy Bullock |
bfe861 |
m_dpiLabel->show();
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setMeasure("camera.lx");
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setMeasure("camera.ly");
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue(width);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue(height);
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
shun-iwasawa |
8fb291 |
pref->setValue(pixelsOnly, true);
|
|
shun-iwasawa |
8fb291 |
pref->setValue(linearUnits, "pixel");
|
|
shun-iwasawa |
8fb291 |
pref->setValue(cameraUnits, "pixel");
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setDecimals(0);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setDecimals(0);
|
|
Jeremy Bullock |
bfe861 |
m_resTextLabel->hide();
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->hide();
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->hide();
|
|
Jeremy Bullock |
bfe861 |
m_resXLabel->hide();
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->hide();
|
|
Jeremy Bullock |
bfe861 |
m_dpiLabel->hide();
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setMeasure("camera.lx");
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setMeasure("camera.ly");
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue(m_xRes / Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue(m_yRes / Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::onShowAtStartChanged(int index) {
|
|
shun-iwasawa |
8fb291 |
Preferences::instance()->setValue(startupPopupEnabled, index == Qt::Checked);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
4c6224 |
void StartupPopup::onAutoSaveOnChanged(int index) {
|
|
shun-iwasawa |
8fb291 |
Preferences::instance()->setValue(autosaveEnabled, index == Qt::Checked);
|
|
Jeremy Bullock |
4c6224 |
m_autoSaveTimeFld->setEnabled(index);
|
|
Jeremy Bullock |
4c6224 |
}
|
|
Jeremy Bullock |
4c6224 |
|
|
Jeremy Bullock |
4c6224 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
4c6224 |
|
|
Jeremy Bullock |
4c6224 |
void StartupPopup::onAutoSaveTimeChanged() {
|
|
shun-iwasawa |
8fb291 |
Preferences::instance()->setValue(autosavePeriod,
|
|
shun-iwasawa |
8fb291 |
m_autoSaveTimeFld->getValue());
|
|
Jeremy Bullock |
4c6224 |
}
|
|
Jeremy Bullock |
4c6224 |
|
|
Jeremy Bullock |
4c6224 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
4c6224 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::updateResolution() {
|
|
Jeremy Bullock |
bfe861 |
if (Preferences::instance()->getPixelsOnly()) {
|
|
Jeremy Bullock |
bfe861 |
if (m_dpiFld->getValue() != Stage::standardDpi) {
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_xRes = m_widthFld->getValue() * Stage::standardDpi;
|
|
Jeremy Bullock |
bfe861 |
m_yRes = m_heightFld->getValue() * Stage::standardDpi;
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setValue(m_xRes);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setValue(m_yRes);
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
m_xRes = m_widthFld->getValue() * m_dpi;
|
|
Jeremy Bullock |
bfe861 |
m_yRes = m_heightFld->getValue() * m_dpi;
|
|
Jeremy Bullock |
bfe861 |
m_resXFld->setValue(m_xRes);
|
|
Jeremy Bullock |
bfe861 |
m_resYFld->setValue(m_yRes);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->setCurrentIndex(0);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupPopup::updateSize() {
|
|
Jeremy Bullock |
bfe861 |
m_xRes = m_resXFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
m_yRes = m_resYFld->getValue();
|
|
Jeremy Bullock |
bfe861 |
if (Preferences::instance()->getPixelsOnly()) {
|
|
Jeremy Bullock |
bfe861 |
if (m_dpiFld->getValue() != Stage::standardDpi) {
|
|
Jeremy Bullock |
bfe861 |
m_dpiFld->setValue(Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue((double)m_xRes / Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue((double)m_yRes / Stage::standardDpi);
|
|
Jeremy Bullock |
bfe861 |
} else {
|
|
Jeremy Bullock |
bfe861 |
m_widthFld->setValue((double)m_xRes / m_dpi);
|
|
Jeremy Bullock |
bfe861 |
m_heightFld->setValue((double)m_yRes / m_dpi);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
m_presetCombo->setCurrentIndex(0);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
//-----------------------------------------------------------------------------
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
StartupLabel::StartupLabel(const QString &text, QWidget *parent, int index)
|
|
Jeremy Bullock |
bfe861 |
: QLabel(parent), m_index(index) {
|
|
Jeremy Bullock |
bfe861 |
setText(text);
|
|
shun_iwasawa |
b81709 |
setObjectName("StartupLabel");
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
StartupLabel::~StartupLabel() {}
|
|
Jeremy Bullock |
bfe861 |
|
|
Jeremy Bullock |
bfe861 |
void StartupLabel::mousePressEvent(QMouseEvent *event) {
|
|
Jeremy Bullock |
bfe861 |
m_text = text();
|
|
Jeremy Bullock |
bfe861 |
std::string strText = m_text.toStdString();
|
|
Jeremy Bullock |
bfe861 |
emit wasClicked(m_index);
|
|
Jeremy Bullock |
bfe861 |
}
|
|
Jeremy Bullock |
bfe861 |
|
|
justburner |
be2476 |
//-----------------------------------------------------------------------------
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
StartupScenesList::StartupScenesList(QWidget *parent, const QSize &iconSize)
|
|
justburner |
be2476 |
: QListWidget(parent), m_iconSize(iconSize) {
|
|
justburner |
be2476 |
setObjectName("StartupScenesList");
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
setMovement(QListWidget::Static);
|
|
justburner |
be2476 |
setFlow(QListView::Flow::LeftToRight);
|
|
justburner |
be2476 |
setViewMode(QListWidget::IconMode);
|
|
justburner |
be2476 |
setIconSize(m_iconSize);
|
|
justburner |
be2476 |
setUniformItemSizes(true);
|
|
justburner |
be2476 |
setMouseTracking(true);
|
|
justburner |
be2476 |
horizontalScrollBar()->setCursor(Qt::ArrowCursor);
|
|
justburner |
be2476 |
verticalScrollBar()->setCursor(Qt::ArrowCursor);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
bool ret = connect(this, SIGNAL(itemClicked(QListWidgetItem *)), this,
|
|
justburner |
be2476 |
SLOT(onItemClicked(QListWidgetItem *)));
|
|
justburner |
be2476 |
assert(ret);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
clear();
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
StartupScenesList::~StartupScenesList() {}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QPixmap StartupScenesList::createScenePreview(const QString &name,
|
|
justburner |
be2476 |
const TFilePath &fp) {
|
|
justburner |
be2476 |
TFilePath iconPath = ToonzScene::getIconPath(fp);
|
|
justburner |
be2476 |
if (TFileStatus(iconPath).doesExist()) {
|
|
justburner |
be2476 |
QPixmap scenePreview(iconPath.getQString());
|
|
justburner |
be2476 |
if (!scenePreview.isNull()) {
|
|
justburner |
be2476 |
QPixmap pixmap(m_iconSize);
|
|
justburner |
be2476 |
pixmap.fill(Qt::transparent);
|
|
justburner |
be2476 |
QPainter painter(&pixmap);
|
|
justburner |
be2476 |
QPixmap scaledPixmap =
|
|
justburner |
be2476 |
scenePreview.scaled(m_iconSize, Qt::AspectRatioMode::KeepAspectRatio);
|
|
justburner |
be2476 |
painter.drawPixmap((m_iconSize.width() - scaledPixmap.width()) / 2,
|
|
justburner |
be2476 |
(m_iconSize.height() - scaledPixmap.height()) / 2,
|
|
justburner |
be2476 |
scaledPixmap);
|
|
justburner |
be2476 |
QPen pen(Qt::black);
|
|
justburner |
be2476 |
pen.setStyle(Qt::DotLine);
|
|
justburner |
be2476 |
painter.setPen(pen);
|
|
justburner |
be2476 |
painter.drawRect((m_iconSize.width() - scaledPixmap.width()) / 2,
|
|
justburner |
be2476 |
(m_iconSize.height() - scaledPixmap.height()) / 2,
|
|
konero |
7bed16 |
scaledPixmap.width() - 1, scaledPixmap.height() - 1);
|
|
justburner |
be2476 |
return pixmap;
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
QPixmap pixmap(m_iconSize);
|
|
justburner |
be2476 |
pixmap.fill(Qt::white);
|
|
justburner |
be2476 |
return pixmap;
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
konero |
7bed16 |
void StartupScenesList::clearScenes() { clear(); }
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupScenesList::addScene(const QString &name, const QString &path) {
|
|
justburner |
be2476 |
QPixmap pixmap;
|
|
justburner |
be2476 |
if (path == ":")
|
|
konero |
7bed16 |
pixmap = generateIconPixmap("new_scene", qreal(1.0), m_iconSize,
|
|
konero |
7bed16 |
Qt::KeepAspectRatio);
|
|
justburner |
be2476 |
else
|
|
justburner |
be2476 |
pixmap = createScenePreview(name, TFilePath(path));
|
|
justburner |
be2476 |
QIcon icon(pixmap);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QListWidgetItem *lw = new QListWidgetItem(name);
|
|
justburner |
be2476 |
lw->setData(Qt::UserRole, path);
|
|
justburner |
be2476 |
lw->setToolTip(name);
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
lw->setIcon(icon);
|
|
justburner |
be2476 |
addItem(lw);
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupScenesList::findFirstScenePath(const QList<qstring> paths) {</qstring>
|
|
justburner |
be2476 |
int scenes = count();
|
|
justburner |
be2476 |
if (scenes == 0) {
|
|
justburner |
be2476 |
clearSelection();
|
|
justburner |
be2476 |
return;
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
QList<qstring> scenesPaths;</qstring>
|
|
justburner |
be2476 |
for (int i = 0; i < scenes; ++i) {
|
|
justburner |
be2476 |
scenesPaths.append(item(i)->data(Qt::UserRole).toString());
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
int sceneIndex = 0;
|
|
justburner |
be2476 |
int pathsCount = paths.count();
|
|
justburner |
be2476 |
for (int i = 0; i < pathsCount; ++i) {
|
|
justburner |
be2476 |
QString filename =
|
|
justburner |
be2476 |
RecentFiles::instance()->getFilePath(i, RecentFiles::Scene);
|
|
justburner |
be2476 |
int index = scenesPaths.indexOf(filename);
|
|
justburner |
be2476 |
if (index >= 0) {
|
|
justburner |
be2476 |
sceneIndex = index;
|
|
justburner |
be2476 |
break;
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
setCurrentItem(item(sceneIndex));
|
|
justburner |
be2476 |
clearSelection();
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupScenesList::mouseMoveEvent(QMouseEvent *event) {
|
|
justburner |
be2476 |
QListWidgetItem *it = itemAt(event->pos());
|
|
justburner |
be2476 |
if (it)
|
|
justburner |
be2476 |
setCursor(Qt::PointingHandCursor);
|
|
justburner |
be2476 |
else
|
|
justburner |
be2476 |
unsetCursor();
|
|
justburner |
be2476 |
setCurrentItem(it);
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupScenesList::leaveEvent(QEvent *event) {
|
|
justburner |
be2476 |
unsetCursor();
|
|
justburner |
be2476 |
clearSelection();
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
justburner |
be2476 |
void StartupScenesList::onItemClicked(QListWidgetItem *item) {
|
|
justburner |
be2476 |
emit itemClicked(row(item));
|
|
justburner |
be2476 |
}
|
|
justburner |
be2476 |
|
|
Jeremy Bullock |
bfe861 |
OpenPopupCommandHandler<startuppopup> openStartupPopup(MI_StartupPopup);</startuppopup>
|