From 9aaacf200f4ec3ec9e4f3f70face5f679c190ac5 Mon Sep 17 00:00:00 2001 From: donarturo Date: Tue, 10 Aug 2021 01:03:51 +0200 Subject: [PATCH 1/9] Change default animation export path to same directory as project file #1656 --- app/src/filedialog.cpp | 9 ++++++--- app/src/importexportdialog.cpp | 11 +++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 2810eb0288..304b400aa1 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -24,6 +24,7 @@ GNU General Public License for more details. #include "fileformat.h" #include "pencildef.h" + QString FileDialog::getOpenFileName(QWidget* parent, FileType fileType, const QString& caption) { QString strInitialFilePath = getLastOpenPath(fileType); @@ -40,6 +41,7 @@ QString FileDialog::getOpenFileName(QWidget* parent, FileType fileType, const QS setLastOpenPath(fileType, filePath); } + return filePath; } @@ -105,7 +107,6 @@ QString FileDialog::getLastOpenPath(FileType fileType) { QSettings setting(PENCIL2D, PENCIL2D); setting.beginGroup("LastOpenPath"); - return setting.value(toSettingKey(fileType), QDir::homePath()).toString(); } @@ -114,7 +115,7 @@ void FileDialog::setLastOpenPath(FileType fileType, const QString& openPath) QSettings setting(PENCIL2D, PENCIL2D); setting.beginGroup("LastOpenPath"); - setting.setValue(toSettingKey(fileType), QFileInfo(openPath).absolutePath()); + setting.setValue(toSettingKey(FileType::ANIMATION), QFileInfo(openPath).absolutePath()); } QString FileDialog::getLastSavePath(FileType fileType) @@ -122,8 +123,10 @@ QString FileDialog::getLastSavePath(FileType fileType) QSettings setting(PENCIL2D, PENCIL2D); setting.beginGroup("LastSavePath"); - return setting.value(toSettingKey(fileType), + return setting.value(toSettingKey(FileType::ANIMATION), QDir::homePath() + "/" + defaultFileName(fileType)).toString(); + // return setting.value(toSettingKey(fileType), + // QDir::homePath() + "/" + defaultFileName(fileType)).toString(); } void FileDialog::setLastSavePath(FileType fileType, const QString& savePath) diff --git a/app/src/importexportdialog.cpp b/app/src/importexportdialog.cpp index e2f8587aaf..c3199f69b8 100644 --- a/app/src/importexportdialog.cpp +++ b/app/src/importexportdialog.cpp @@ -19,8 +19,10 @@ GNU General Public License for more details. #include "ui_importexportdialog.h" #include #include +#include #include "filedialog.h" + ImportExportDialog::ImportExportDialog(QWidget* parent, Mode eMode, FileType eFileType) : QDialog(parent) { mMode = eMode; @@ -48,6 +50,7 @@ QDialogButtonBox* ImportExportDialog::getDialogButtonBox() QString ImportExportDialog::getFilePath() const { + return m_filePaths.isEmpty() ? QString() : m_filePaths.first(); } @@ -74,6 +77,9 @@ void ImportExportDialog::setInstructionsLabel(const QString& text) void ImportExportDialog::init() { + // Here implement code for set default fileExt variable + QString fileExt=""; + // switch (mMode) { case Import: @@ -81,12 +87,14 @@ void ImportExportDialog::init() break; case Export: m_filePaths = QStringList(FileDialog::getLastSavePath(mFileType)); + this->setFileExtension(fileExt); break; default: Q_ASSERT(false); } ui->fileEdit->setText("\"" + m_filePaths.first() + "\""); + emit filePathsChanged(m_filePaths); } @@ -125,6 +133,7 @@ void ImportExportDialog::setFileExtension(const QString& extension) void ImportExportDialog::browse() { QStringList filePaths; + switch (mMode) { case Import: @@ -152,3 +161,5 @@ void ImportExportDialog::browse() emit filePathsChanged(m_filePaths); } + + From 68172b57fdbaa541b380a6800332ba29b8e5c159 Mon Sep 17 00:00:00 2001 From: donarturo11 Date: Tue, 24 Aug 2021 09:47:21 +0200 Subject: [PATCH 2/9] Update importexportdialog.cpp --- app/src/importexportdialog.cpp | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/app/src/importexportdialog.cpp b/app/src/importexportdialog.cpp index c3199f69b8..977f8c114f 100644 --- a/app/src/importexportdialog.cpp +++ b/app/src/importexportdialog.cpp @@ -22,7 +22,6 @@ GNU General Public License for more details. #include #include "filedialog.h" - ImportExportDialog::ImportExportDialog(QWidget* parent, Mode eMode, FileType eFileType) : QDialog(parent) { mMode = eMode; @@ -77,23 +76,42 @@ void ImportExportDialog::setInstructionsLabel(const QString& text) void ImportExportDialog::init() { - // Here implement code for set default fileExt variable - QString fileExt=""; - // + QString ext; + switch (mFileType) + { + case FileType::ANIMATION: + ext = "gif"; + break; + case FileType::GIF: + ext = "gif"; + break; + case FileType::IMAGE: + ext = "png"; + break; + case FileType::IMAGE_SEQUENCE: + ext = "png"; + break; + case FileType::MOVIE: + ext = "mp4"; + break; + default: + break; + } + switch (mMode) { case Import: m_filePaths = QStringList(FileDialog::getLastOpenPath(mFileType)); break; case Export: - m_filePaths = QStringList(FileDialog::getLastSavePath(mFileType)); - this->setFileExtension(fileExt); + m_filePaths = QStringList(FileDialog::getLastSavePath(FileType::ANIMATION)); break; default: Q_ASSERT(false); } - ui->fileEdit->setText("\"" + m_filePaths.first() + "\""); + setFileExtension(ext); + ui->fileEdit->setText("\"" + m_filePaths.first() + "\""); emit filePathsChanged(m_filePaths); } From 003f7dea2ea5055c8a251e60cf6f4f532381474f Mon Sep 17 00:00:00 2001 From: donarturo11 Date: Tue, 24 Aug 2021 10:03:24 +0200 Subject: [PATCH 3/9] Update filedialog.cpp --- app/src/filedialog.cpp | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 304b400aa1..56151f9f18 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -123,10 +123,8 @@ QString FileDialog::getLastSavePath(FileType fileType) QSettings setting(PENCIL2D, PENCIL2D); setting.beginGroup("LastSavePath"); - return setting.value(toSettingKey(FileType::ANIMATION), + return setting.value(toSettingKey(fileType), QDir::homePath() + "/" + defaultFileName(fileType)).toString(); - // return setting.value(toSettingKey(fileType), - // QDir::homePath() + "/" + defaultFileName(fileType)).toString(); } void FileDialog::setLastSavePath(FileType fileType, const QString& savePath) From e921065d6da5e8cba4ad718c719f85b29c3f997e Mon Sep 17 00:00:00 2001 From: MrStevns Date: Wed, 17 Aug 2022 18:15:44 +0200 Subject: [PATCH 4/9] Add more filetypes to default extensions - And undo some changes related to fixed filetype. --- app/src/filedialog.cpp | 10 +++++----- app/src/filedialog.h | 2 +- app/src/importexportdialog.cpp | 25 +------------------------ core_lib/src/util/fileformat.h | 6 ++++++ 4 files changed, 13 insertions(+), 30 deletions(-) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 56151f9f18..14e18cf9e2 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -83,13 +83,13 @@ QString FileDialog::getSaveFileName(QWidget* parent, FileType fileType, const QS QFileInfo info(filePath); if (info.suffix().isEmpty() && strSelectedFilter.isEmpty()) { - filePath += addDefaultExtensionSuffix(fileType); + filePath += getDefaultExtensionByFileType(fileType); } return filePath; } -QString FileDialog::addDefaultExtensionSuffix(const FileType fileType) +QString FileDialog::getDefaultExtensionByFileType(const FileType fileType) { switch (fileType) { @@ -98,8 +98,8 @@ QString FileDialog::addDefaultExtensionSuffix(const FileType fileType) case FileType::IMAGE_SEQUENCE: return PFF_DEFAULT_IMAGE_SEQ_EXT; case FileType::GIF: return PFF_DEFAULT_ANIMATED_EXT; case FileType::PALETTE: return PFF_DEFAULT_PALETTE_EXT; - default: - return ""; + case FileType::MOVIE: return PFF_DEFAULT_MOVIE_EXT; + case FileType::SOUND: return PFF_DEFAULT_SOUND_EXT; } } @@ -115,7 +115,7 @@ void FileDialog::setLastOpenPath(FileType fileType, const QString& openPath) QSettings setting(PENCIL2D, PENCIL2D); setting.beginGroup("LastOpenPath"); - setting.setValue(toSettingKey(FileType::ANIMATION), QFileInfo(openPath).absolutePath()); + setting.setValue(toSettingKey(fileType), QFileInfo(openPath).absolutePath()); } QString FileDialog::getLastSavePath(FileType fileType) diff --git a/app/src/filedialog.h b/app/src/filedialog.h index a690436a56..2e81785efe 100644 --- a/app/src/filedialog.h +++ b/app/src/filedialog.h @@ -107,7 +107,7 @@ class FileDialog : public QObject static QString getFilterForFile( const QString& fileType, QString filePath ); static QString defaultFileName( FileType fileType ); - static QString addDefaultExtensionSuffix(FileType fileType); + static QString getDefaultExtensionByFileType(FileType fileType); static QString toSettingKey( FileType fileType ); }; diff --git a/app/src/importexportdialog.cpp b/app/src/importexportdialog.cpp index 977f8c114f..50cd89863e 100644 --- a/app/src/importexportdialog.cpp +++ b/app/src/importexportdialog.cpp @@ -76,41 +76,18 @@ void ImportExportDialog::setInstructionsLabel(const QString& text) void ImportExportDialog::init() { - QString ext; - switch (mFileType) - { - case FileType::ANIMATION: - ext = "gif"; - break; - case FileType::GIF: - ext = "gif"; - break; - case FileType::IMAGE: - ext = "png"; - break; - case FileType::IMAGE_SEQUENCE: - ext = "png"; - break; - case FileType::MOVIE: - ext = "mp4"; - break; - default: - break; - } - switch (mMode) { case Import: m_filePaths = QStringList(FileDialog::getLastOpenPath(mFileType)); break; case Export: - m_filePaths = QStringList(FileDialog::getLastSavePath(FileType::ANIMATION)); + m_filePaths = QStringList(FileDialog::getLastSavePath(mFileType)); break; default: Q_ASSERT(false); } - setFileExtension(ext); ui->fileEdit->setText("\"" + m_filePaths.first() + "\""); emit filePathsChanged(m_filePaths); diff --git a/core_lib/src/util/fileformat.h b/core_lib/src/util/fileformat.h index c246b9b7c5..881f962c4a 100644 --- a/core_lib/src/util/fileformat.h +++ b/core_lib/src/util/fileformat.h @@ -66,9 +66,15 @@ GNU General Public License for more details. #define PFF_DEFAULT_ANIMATED_EXT \ QString(".gif") +#define PFF_DEFAULT_MOVIE_EXT \ + QString(".mp4") + #define PFF_DEFAULT_PALETTE_EXT \ QString(".xml") +#define PFF_DEFAULT_SOUND_EXT \ + QString(".wav") + #define PFF_OLD_DATA_DIR "data" #define PFF_DATA_DIR "data" #define PFF_XML_FILE_NAME "main.xml" From 1641452aaf757255c5a5b9e5e5f517006e4a6bd2 Mon Sep 17 00:00:00 2001 From: MrStevns Date: Wed, 17 Aug 2022 18:18:19 +0200 Subject: [PATCH 5/9] set last save path when saving a project addresses #1656 --- app/src/filedialog.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 14e18cf9e2..2f40eb78a7 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -78,6 +78,15 @@ QString FileDialog::getSaveFileName(QWidget* parent, FileType fileType, const QS if (filePath.isEmpty()) { return QString(); } + if (fileType == FileType::ANIMATION) { + // When we save a new project, change default path for all other filetypes + QDir projectPath = QFileInfo(filePath).absoluteDir(); + QList fileTypes = { FileType::IMAGE, FileType::IMAGE_SEQUENCE, FileType::GIF, FileType::MOVIE, FileType::SOUND, FileType::PALETTE }; + for (FileType& fileType : fileTypes) { + setLastSavePath(fileType, projectPath.absoluteFilePath(defaultFileName(fileType))); + } + } + setLastSavePath(fileType, filePath); QFileInfo info(filePath); From 8683f9a668e337d6ae40d59574ed515d33086ae5 Mon Sep 17 00:00:00 2001 From: MrStevns Date: Wed, 17 Aug 2022 18:29:19 +0200 Subject: [PATCH 6/9] Cleanup --- app/src/importexportdialog.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/app/src/importexportdialog.cpp b/app/src/importexportdialog.cpp index 50cd89863e..142416c2c6 100644 --- a/app/src/importexportdialog.cpp +++ b/app/src/importexportdialog.cpp @@ -19,7 +19,6 @@ GNU General Public License for more details. #include "ui_importexportdialog.h" #include #include -#include #include "filedialog.h" ImportExportDialog::ImportExportDialog(QWidget* parent, Mode eMode, FileType eFileType) : QDialog(parent) @@ -46,10 +45,8 @@ QDialogButtonBox* ImportExportDialog::getDialogButtonBox() return ui->buttonBox; } - QString ImportExportDialog::getFilePath() const { - return m_filePaths.isEmpty() ? QString() : m_filePaths.first(); } @@ -87,7 +84,6 @@ void ImportExportDialog::init() default: Q_ASSERT(false); } - ui->fileEdit->setText("\"" + m_filePaths.first() + "\""); emit filePathsChanged(m_filePaths); @@ -128,7 +124,6 @@ void ImportExportDialog::setFileExtension(const QString& extension) void ImportExportDialog::browse() { QStringList filePaths; - switch (mMode) { case Import: @@ -156,5 +151,3 @@ void ImportExportDialog::browse() emit filePathsChanged(m_filePaths); } - - From 2ae38a15115446da7f1b9be09be955249bab46f2 Mon Sep 17 00:00:00 2001 From: scribblemaniac Date: Sun, 4 Sep 2022 23:54:12 -0600 Subject: [PATCH 7/9] Refactor FileDialog::defaultFileName to remove hard-coded file extensions --- app/src/filedialog.cpp | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 2f40eb78a7..e6f1294e72 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -41,7 +41,6 @@ QString FileDialog::getOpenFileName(QWidget* parent, FileType fileType, const QS setLastOpenPath(fileType, filePath); } - return filePath; } @@ -78,11 +77,13 @@ QString FileDialog::getSaveFileName(QWidget* parent, FileType fileType, const QS if (filePath.isEmpty()) { return QString(); } - if (fileType == FileType::ANIMATION) { + if (fileType == FileType::ANIMATION) + { // When we save a new project, change default path for all other filetypes QDir projectPath = QFileInfo(filePath).absoluteDir(); QList fileTypes = { FileType::IMAGE, FileType::IMAGE_SEQUENCE, FileType::GIF, FileType::MOVIE, FileType::SOUND, FileType::PALETTE }; - for (FileType& fileType : fileTypes) { + for (FileType& fileType : fileTypes) + { setLastSavePath(fileType, projectPath.absoluteFilePath(defaultFileName(fileType))); } } @@ -234,17 +235,13 @@ QString FileDialog::getFilterForFile(const QString& filters, QString filePath) QString FileDialog::defaultFileName(FileType fileType) { - switch (fileType) + QString defaultName = "untitled"; + if (fileType == FileType::ANIMATION) { - case FileType::ANIMATION: return tr("MyAnimation.pclx"); - case FileType::IMAGE: - case FileType::IMAGE_SEQUENCE: return tr("untitled.png"); - case FileType::GIF: return tr("untitled.gif"); - case FileType::MOVIE: return tr("untitled.mp4"); - case FileType::SOUND: return tr("untitled.wav"); - case FileType::PALETTE: return tr("untitled.xml"); + defaultName = "MyAnimation"; } - return ""; + + return defaultName.append(getDefaultExtensionByFileType(fileType)); } QString FileDialog::toSettingKey(FileType fileType) From 8c232be8b47db3d2ac65d63d3eec61351d1b65a0 Mon Sep 17 00:00:00 2001 From: scribblemaniac Date: Mon, 5 Sep 2022 00:07:15 -0600 Subject: [PATCH 8/9] Use project file name for default export file name --- app/src/filedialog.cpp | 14 ++++++++++---- app/src/filedialog.h | 2 +- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index e6f1294e72..41590cc87b 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -80,11 +80,13 @@ QString FileDialog::getSaveFileName(QWidget* parent, FileType fileType, const QS if (fileType == FileType::ANIMATION) { // When we save a new project, change default path for all other filetypes - QDir projectPath = QFileInfo(filePath).absoluteDir(); + QFileInfo filePathInfo(filePath); + QDir projectPath = filePathInfo.absoluteDir(); + QString baseName = filePathInfo.baseName(); QList fileTypes = { FileType::IMAGE, FileType::IMAGE_SEQUENCE, FileType::GIF, FileType::MOVIE, FileType::SOUND, FileType::PALETTE }; for (FileType& fileType : fileTypes) { - setLastSavePath(fileType, projectPath.absoluteFilePath(defaultFileName(fileType))); + setLastSavePath(fileType, projectPath.absoluteFilePath(defaultFileName(fileType, baseName))); } } @@ -233,10 +235,14 @@ QString FileDialog::getFilterForFile(const QString& filters, QString filePath) return QString(); } -QString FileDialog::defaultFileName(FileType fileType) +QString FileDialog::defaultFileName(FileType fileType, QString baseName) { QString defaultName = "untitled"; - if (fileType == FileType::ANIMATION) + if (!baseName.isEmpty()) + { + defaultName = baseName; + } + else if (fileType == FileType::ANIMATION) { defaultName = "MyAnimation"; } diff --git a/app/src/filedialog.h b/app/src/filedialog.h index 2e81785efe..6318eb30c7 100644 --- a/app/src/filedialog.h +++ b/app/src/filedialog.h @@ -105,7 +105,7 @@ class FileDialog : public QObject static QString openFileFilters( FileType fileType ); static QString saveFileFilters( FileType fileType ); static QString getFilterForFile( const QString& fileType, QString filePath ); - static QString defaultFileName( FileType fileType ); + static QString defaultFileName(FileType fileType , QString baseName = QString()); static QString getDefaultExtensionByFileType(FileType fileType); From 1b1d3cf0e132c628e8d99470c5b230198aecc3b4 Mon Sep 17 00:00:00 2001 From: Jakob Gahde Date: Sun, 30 Oct 2022 13:51:32 +0100 Subject: [PATCH 9/9] Update export paths on project open --- app/src/filedialog.cpp | 33 +++++++++++++++++++++++---------- app/src/filedialog.h | 1 + 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/app/src/filedialog.cpp b/app/src/filedialog.cpp index 41590cc87b..c5817fc683 100644 --- a/app/src/filedialog.cpp +++ b/app/src/filedialog.cpp @@ -39,6 +39,12 @@ QString FileDialog::getOpenFileName(QWidget* parent, FileType fileType, const QS if (!filePath.isEmpty()) { setLastOpenPath(fileType, filePath); + + if (fileType == FileType::ANIMATION) + { + // When we open a project, change default export path for all filetypes + setLastSavePaths(filePath); + } } return filePath; @@ -63,6 +69,18 @@ QStringList FileDialog::getOpenFileNames(QWidget* parent, FileType fileType, con return filePaths; } +void FileDialog::setLastSavePaths(const QString& filePath) +{ + QFileInfo filePathInfo(filePath); + QDir projectPath = filePathInfo.absoluteDir(); + QString baseName = filePathInfo.baseName(); + QList fileTypes = { FileType::IMAGE, FileType::IMAGE_SEQUENCE, FileType::GIF, FileType::MOVIE, FileType::SOUND, FileType::PALETTE }; + for (FileType& fileType : fileTypes) + { + setLastSavePath(fileType, projectPath.absoluteFilePath(defaultFileName(fileType, baseName))); + } +} + QString FileDialog::getSaveFileName(QWidget* parent, FileType fileType, const QString& caption) { QString strInitialFilePath = getLastSavePath(fileType); @@ -80,14 +98,7 @@ QString FileDialog::getSaveFileName(QWidget* parent, FileType fileType, const QS if (fileType == FileType::ANIMATION) { // When we save a new project, change default path for all other filetypes - QFileInfo filePathInfo(filePath); - QDir projectPath = filePathInfo.absoluteDir(); - QString baseName = filePathInfo.baseName(); - QList fileTypes = { FileType::IMAGE, FileType::IMAGE_SEQUENCE, FileType::GIF, FileType::MOVIE, FileType::SOUND, FileType::PALETTE }; - for (FileType& fileType : fileTypes) - { - setLastSavePath(fileType, projectPath.absoluteFilePath(defaultFileName(fileType, baseName))); - } + setLastSavePaths(filePath); } setLastSavePath(fileType, filePath); @@ -112,6 +123,8 @@ QString FileDialog::getDefaultExtensionByFileType(const FileType fileType) case FileType::PALETTE: return PFF_DEFAULT_PALETTE_EXT; case FileType::MOVIE: return PFF_DEFAULT_MOVIE_EXT; case FileType::SOUND: return PFF_DEFAULT_SOUND_EXT; + default: + Q_UNREACHABLE(); } } @@ -237,14 +250,14 @@ QString FileDialog::getFilterForFile(const QString& filters, QString filePath) QString FileDialog::defaultFileName(FileType fileType, QString baseName) { - QString defaultName = "untitled"; + QString defaultName = tr("untitled"); if (!baseName.isEmpty()) { defaultName = baseName; } else if (fileType == FileType::ANIMATION) { - defaultName = "MyAnimation"; + defaultName = tr("MyAnimation"); } return defaultName.append(getDefaultExtensionByFileType(fileType)); diff --git a/app/src/filedialog.h b/app/src/filedialog.h index 6318eb30c7..95311c2250 100644 --- a/app/src/filedialog.h +++ b/app/src/filedialog.h @@ -110,6 +110,7 @@ class FileDialog : public QObject static QString getDefaultExtensionByFileType(FileType fileType); static QString toSettingKey( FileType fileType ); + static void setLastSavePaths(const QString& filePath); }; #endif // FILEDIALOG_H