diff --git a/.github/ISSUE_TEMPLATE/BUG_REPORT.yml b/.github/ISSUE_TEMPLATE/BUG_REPORT.yml new file mode 100644 index 0000000000..2040fe797f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/BUG_REPORT.yml @@ -0,0 +1,58 @@ +name: "🐛 Bug Report" +description: Create a new ticket for a bug. +title: "🐛 [BUG]
+ Pencil2D is a 2D animation program that lets you easily create + hand-drawn graphics using both bitmap and vector graphics. +
+This release of Pencil2D brings more than three years worth of exciting new features, enhancements and bug fixes. We have made it easier to manage keyframes, allowing you to copy, paste or delete several of them at once, or to reposition their contents or adjust their exposure in bulk. Entire layers can now be easily duplicated. On top of that, dragging keyframes across the timeline will no longer cause any changes until the moment you drop them at their new position, and the opacity of keyframes and whole layers is now adjustable as well.
+We also haven’t forgotten about the canvas: Its performance should now be noticeably better than before. New overlays have been added to help with perspective drawing. The bucket tool has become more flexible with the addition of several new options and features. The move tool has also seen some love and handles rotated selections much better than it used to, and it will now apply changes automatically when switching to a different layer. Cursor quick sizing is now much more intuitive and more reliable than before. And last but not least, the camera system has been completely overhauled and is now considerably easier to work with.
+Besides keyframe management and canvas tools, we’ve also given the user interface a facelift. The icon set was completely redesigned from scratch and is now finally consistent across the entire program. We’ve also added toolbars for a number of commonly used actions, and updated the status bar to include help text for the current tool. Moreover, the software is now available in seven additional languages!
+Of course, these are only the most notable changes. For a more detailed look at all the improvements in this release, as well as the many bug fixes, check out the full release announcements on our website!
+%1" ).arg( details ) ); } + + QPushButton* copyToClipboard = new QPushButton(tr("Copy to Clipboard")); + ui->buttonBox->addButton(copyToClipboard, QDialogButtonBox::ActionRole); + + connect(copyToClipboard, &QPushButton::clicked, this, &ErrorDialog::onCopyToClipboard); } ErrorDialog::~ErrorDialog() { delete ui; } + +void ErrorDialog::onCopyToClipboard() { + QGuiApplication::clipboard()->setText(ui->details->toPlainText()); +} diff --git a/app/src/errordialog.h b/app/src/errordialog.h index 08d1d94a5b..ae9b7169a1 100644 --- a/app/src/errordialog.h +++ b/app/src/errordialog.h @@ -1,8 +1,8 @@ /* -Pencil - Traditional Animation Software +Pencil2D - Traditional Animation Software Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon -Copyright (C) 2013-2018 Matt Chiawen Chang +Copyright (C) 2012-2020 Matthew Chiawen Chang This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -29,9 +29,12 @@ class ErrorDialog : public QDialog Q_OBJECT public: - explicit ErrorDialog(QString title, QString description, QString details = QString(), QWidget *parent = 0 ); + explicit ErrorDialog(QString title, QString description, QString details = QString(), QWidget *parent = nullptr); ~ErrorDialog(); +public slots: + void onCopyToClipboard(); + private: Ui::ErrorDialog *ui; }; diff --git a/app/src/exportimagedialog.cpp b/app/src/exportimagedialog.cpp index 47287dcd45..d94d803025 100644 --- a/app/src/exportimagedialog.cpp +++ b/app/src/exportimagedialog.cpp @@ -1,8 +1,8 @@ /* -Pencil - Traditional Animation Software +Pencil2D - Traditional Animation Software Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon -Copyright (C) 2013-2018 Matt Chiawen Chang +Copyright (C) 2012-2020 Matthew Chiawen Chang This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -64,8 +64,8 @@ void ExportImageDialog::setDefaultRange(int startFrame, int endFrame, int endFra mEndFrame = endFrame; mEndFrameWithSounds = endFrameWithSounds; - SignalBlocker b1( ui->startSpinBox ); - SignalBlocker b2( ui->endSpinBox ); + QSignalBlocker b1( ui->startSpinBox ); + QSignalBlocker b2( ui->endSpinBox ); ui->startSpinBox->setValue( startFrame ); ui->endSpinBox->setValue( endFrame ); @@ -105,6 +105,11 @@ bool ExportImageDialog::getTransparency() const return ui->cbTransparency->checkState() == Qt::Checked; } +bool ExportImageDialog::getExportKeyframesOnly() const +{ + return ui->cbExportKeyframesOnly->checkState() == Qt::Checked; +} + QString ExportImageDialog::getExportFormat() const { return ui->formatComboBox->currentText(); @@ -118,6 +123,7 @@ QString ExportImageDialog::getCameraLayerName() const void ExportImageDialog::formatChanged(const QString& format) { setFileExtension(format.toLower()); + setTransparencyOptionVisibility(format); } void ExportImageDialog::cameraComboChanged(int index) @@ -127,3 +133,11 @@ void ExportImageDialog::cameraComboChanged(int index) ui->imgWidthSpinBox->setValue(cameraSize.width()); ui->imgHeightSpinBox->setValue(cameraSize.height()); } + +void ExportImageDialog::setTransparencyOptionVisibility(const QString &format) +{ + if (format == "JPG" || format == "BMP") + ui->cbTransparency->setDisabled(true); + else + ui->cbTransparency->setDisabled(false); +} diff --git a/app/src/exportimagedialog.h b/app/src/exportimagedialog.h index 4c885baf56..9826172301 100644 --- a/app/src/exportimagedialog.h +++ b/app/src/exportimagedialog.h @@ -1,8 +1,8 @@ /* -Pencil - Traditional Animation Software +Pencil2D - Traditional Animation Software Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon -Copyright (C) 2013-2018 Matt Chiawen Chang +Copyright (C) 2012-2020 Matthew Chiawen Chang This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -38,6 +38,7 @@ class ExportImageDialog : public ImportExportDialog void setExportSize( QSize size ); QSize getExportSize() const; bool getTransparency() const; + bool getExportKeyframesOnly() const; QString getExportFormat() const; QString getCameraLayerName() const; @@ -53,6 +54,7 @@ private slots: private: Ui::ExportImageOptions* ui = nullptr; + void setTransparencyOptionVisibility(const QString& format); int mEndFrameWithSounds = 0; int mEndFrame = 0; }; diff --git a/app/src/exportmoviedialog.cpp b/app/src/exportmoviedialog.cpp index c0730b57f8..8b7c1f9107 100644 --- a/app/src/exportmoviedialog.cpp +++ b/app/src/exportmoviedialog.cpp @@ -1,8 +1,8 @@ /* -Pencil - Traditional Animation Software +Pencil2D - Traditional Animation Software Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon -Copyright (C) 2013-2018 Matt Chiawen Chang +Copyright (C) 2012-2020 Matthew Chiawen Chang This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -27,10 +27,21 @@ ExportMovieDialog::ExportMovieDialog(QWidget *parent, Mode mode, FileType fileTy if (fileType == FileType::GIF) { setWindowTitle(tr("Export Animated GIF")); + ui->exporterGroupBox->hide(); } else { setWindowTitle(tr("Export Movie")); } + + QSizePolicy policy = ui->unevenWidthLabel->sizePolicy(); + policy.setRetainSizeWhenHidden(true); + ui->unevenWidthLabel->setSizePolicy(policy); + policy = ui->unevenHeightLabel->sizePolicy(); + policy.setRetainSizeWhenHidden(true); + ui->unevenHeightLabel->setSizePolicy(policy); + connect(this, &ExportMovieDialog::filePathsChanged, this, &ExportMovieDialog::onFilePathsChanged); + connect(ui->widthSpinBox, static_cast