Skip to content

Commit

Permalink
Merge pull request #1285 from davidlamhauge/issue1177_import_position
Browse files Browse the repository at this point in the history
#1177 Import drawings on wanted position
  • Loading branch information
candyface authored Nov 9, 2019
2 parents 3f11796 + 96a5b40 commit c8addc3
Show file tree
Hide file tree
Showing 13 changed files with 282 additions and 20 deletions.
3 changes: 3 additions & 0 deletions app/app.pro
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ INCLUDEPATH += \

HEADERS += \
src/importlayersdialog.h \
src/importpositiondialog.h \
src/mainwindow2.h \
src/predefinedsetmodel.h \
src/pegbaralignmentdialog.h \
Expand Down Expand Up @@ -71,6 +72,7 @@ HEADERS += \

SOURCES += \
src/importlayersdialog.cpp \
src/importpositiondialog.cpp \
src/main.cpp \
src/mainwindow2.cpp \
src/predefinedsetmodel.cpp \
Expand Down Expand Up @@ -104,6 +106,7 @@ SOURCES += \
FORMS += \
ui/importimageseqpreview.ui \
ui/importlayersdialog.ui \
ui/importpositiondialog.ui \
ui/mainwindow2.ui \
ui/pegbaralignmentdialog.ui \
ui/timeline2.ui \
Expand Down
1 change: 0 additions & 1 deletion app/src/importexportdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ ImportExportDialog::ImportExportDialog(QWidget* parent, Mode eMode, FileType eFi
ui = new Ui::ImportExportDialog;
ui->setupUi(this);
m_fileDialog = new FileDialog(this);

connect(ui->browseButton, &QPushButton::clicked, this, &ImportExportDialog::browse);

Qt::WindowFlags eFlags = Qt::Dialog | Qt::WindowTitleHint | Qt::WindowCloseButtonHint;
Expand Down
3 changes: 3 additions & 0 deletions app/src/importexportdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ class ImportExportDialog : public QDialog
QString getFilePath() const;
QString getAbsolutePath();
QStringList getFilePaths();
int getPosIndex() { return mPosIndex; }

signals:
void filePathsChanged(QStringList filePaths);
Expand All @@ -60,6 +61,7 @@ class ImportExportDialog : public QDialog

private slots:
void browse();
void setPosIndex(int index) { mPosIndex = index; }

private:
Ui::ImportExportDialog* ui = nullptr;
Expand All @@ -69,6 +71,7 @@ private slots:

FileType mFileType = FileType::ANIMATION;
Mode mMode = Import;
int mPosIndex = 0;
};

#endif // IMPORTEXPORTDIALOG_H
4 changes: 3 additions & 1 deletion app/src/importimageseqdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ GNU General Public License for more details.

#include "editor.h"
#include "predefinedsetmodel.h"
#include "viewmanager.h"

#include <QProgressDialog>
#include <QMessageBox>
Expand Down Expand Up @@ -89,7 +90,7 @@ int ImportImageSeqDialog::getSpace()

void ImportImageSeqDialog::updatePreviewList(const QStringList& list)
{
Q_UNUSED(list);
Q_UNUSED(list)
if (mImportCriteria == ImportCriteria::PredefinedSet)
{
const PredefinedKeySet& keySet = generatePredefinedKeySet();
Expand Down Expand Up @@ -219,6 +220,7 @@ void ImportImageSeqDialog::importArbitrarySequence()
QMessageBox::Ok);
}


emit notifyAnimationLengthChanged();
progress.close();
}
Expand Down
1 change: 0 additions & 1 deletion app/src/importimageseqdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ private slots:
int keyFramePosFromFilePath(const QString& path);

private:

const PredefinedKeySet generatePredefinedKeySet() const;
void setPreviewModel(const PredefinedKeySet& predefinedKeySet);
void setupLayout();
Expand Down
55 changes: 55 additions & 0 deletions app/src/importpositiondialog.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#include "importpositiondialog.h"
#include "ui_importpositiondialog.h"

#include "editor.h"
#include "viewmanager.h"

#include "scribblearea.h"

ImportPositionDialog::ImportPositionDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ImportPositionDialog)
{
ui->setupUi(this);

ui->cbImagePosition->addItem(tr("Center of canvas"));
ui->cbImagePosition->addItem(tr("Center of active camera"));

connect(ui->cbImagePosition, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &ImportPositionDialog::didChangeComboBoxIndex);
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ImportPositionDialog::changeImportView);

QSettings settings(PENCIL2D, PENCIL2D);
int value = settings.value(IMPORT_REPOSITION_TYPE).toInt();

ui->cbImagePosition->setCurrentIndex(value);
didChangeComboBoxIndex(value);
}

ImportPositionDialog::~ImportPositionDialog()
{
delete ui;
}

void ImportPositionDialog::didChangeComboBoxIndex(const int index)
{
mImportOption = ImportPosition::getTypeFromIndex(index);
}

void ImportPositionDialog::changeImportView()
{
QTransform transform;
if (mImportOption == ImportPosition::Type::CenterOfCanvas)
{
QPointF centralPoint = mEditor->getScribbleArea()->getCentralPoint();
transform = transform.fromTranslate(centralPoint.x(), centralPoint.y());
}
else if (mImportOption == ImportPosition::Type::CenterOfCamera)
{
QRectF cameraRect = mEditor->getScribbleArea()->getCameraRect();
transform = transform.fromTranslate(cameraRect.center().x(), cameraRect.center().y());
}
mEditor->view()->setImportView(transform);

QSettings settings(PENCIL2D, PENCIL2D);
settings.setValue(IMPORT_REPOSITION_TYPE, ui->cbImagePosition->currentIndex());
}
53 changes: 53 additions & 0 deletions app/src/importpositiondialog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#ifndef IMPORTPOSITIONDIALOG_H
#define IMPORTPOSITIONDIALOG_H

#include <QDialog>

namespace Ui {
class ImportPositionDialog;
}

class Editor;

class ImportPositionDialog : public QDialog
{
Q_OBJECT

struct ImportPosition {

enum Type {
CenterOfCamera,
CenterOfCanvas,
None
};

static Type getTypeFromIndex(int index) {
switch (index) {
case 0:
return CenterOfCanvas;
case 1:
return CenterOfCamera;
default:
return None;
}
}
};

public:
explicit ImportPositionDialog(QWidget *parent = nullptr);
~ImportPositionDialog();

void setCore(Editor* editor) { mEditor = editor; }

private slots:
void didChangeComboBoxIndex(const int index);
void changeImportView();

private:
Ui::ImportPositionDialog *ui;

ImportPosition::Type mImportOption;
Editor* mEditor = nullptr;
};

#endif // IMPORTPOSITIONDIALOG_H
48 changes: 46 additions & 2 deletions app/src/mainwindow2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ GNU General Public License for more details.
#include "errordialog.h"
#include "importimageseqdialog.h"
#include "importlayersdialog.h"
#include "importpositiondialog.h"
#include "recentfilemenu.h"
#include "shortcutfilter.h"
#include "app_util.h"
Expand Down Expand Up @@ -788,6 +789,17 @@ void MainWindow2::importImage()
if (strFilePath.isEmpty()) { return; }
if (!QFile::exists(strFilePath)) { return; }

ImportPositionDialog* positionDialog = new ImportPositionDialog(this);
OnScopeExit(delete positionDialog)

positionDialog->setCore(mEditor);
positionDialog->exec();

if (positionDialog->result() != QDialog::Accepted)
{
return;
}

bool ok = mEditor->importImage(strFilePath);
if (!ok)
{
Expand All @@ -799,6 +811,7 @@ void MainWindow2::importImage()
return;
}


ui->scribbleArea->updateCurrentFrame();
mTimeLine->updateContent();
}
Expand All @@ -808,7 +821,7 @@ void MainWindow2::importImageSequence()
mIsImportingImageSequence = true;

ImportImageSeqDialog* imageSeqDialog = new ImportImageSeqDialog(this);
OnScopeExit(delete imageSeqDialog);
OnScopeExit(delete imageSeqDialog)
imageSeqDialog->setCore(mEditor);

connect(imageSeqDialog, &ImportImageSeqDialog::notifyAnimationLengthChanged, mEditor, &Editor::notifyAnimationLengthChanged);
Expand All @@ -818,6 +831,17 @@ void MainWindow2::importImageSequence()
{
return;
}

ImportPositionDialog* positionDialog = new ImportPositionDialog(this);
OnScopeExit(delete positionDialog)

positionDialog->setCore(mEditor);
positionDialog->exec();
if (positionDialog->result() != QDialog::Accepted)
{
return;
}

imageSeqDialog->importArbitrarySequence();

mIsImportingImageSequence = false;
Expand All @@ -826,7 +850,7 @@ void MainWindow2::importImageSequence()
void MainWindow2::importPredefinedImageSet()
{
ImportImageSeqDialog* imageSeqDialog = new ImportImageSeqDialog(this, ImportExportDialog::Import, FileType::IMAGE, ImportCriteria::PredefinedSet);
OnScopeExit(delete imageSeqDialog);
OnScopeExit(delete imageSeqDialog)
imageSeqDialog->setCore(mEditor);

connect(imageSeqDialog, &ImportImageSeqDialog::notifyAnimationLengthChanged, mEditor, &Editor::notifyAnimationLengthChanged);
Expand All @@ -838,6 +862,16 @@ void MainWindow2::importPredefinedImageSet()
return;
}

ImportPositionDialog* positionDialog = new ImportPositionDialog(this);
OnScopeExit(delete positionDialog)

positionDialog->setCore(mEditor);
positionDialog->exec();
if (positionDialog->result() != QDialog::Accepted)
{
return;
}

imageSeqDialog->importPredefinedSet();
mIsImportingImageSequence = false;
}
Expand All @@ -861,6 +895,16 @@ void MainWindow2::importGIF()
// Flag this so we don't prompt the user about auto-save in the middle of the import.
mIsImportingImageSequence = true;

ImportPositionDialog* positionDialog = new ImportPositionDialog(this);
OnScopeExit(delete positionDialog)

positionDialog->setCore(mEditor);
positionDialog->exec();
if (positionDialog->result() != QDialog::Accepted)
{
return;
}

int space = gifDialog->getSpace();

// Show a progress dialog, as this could take a while if the gif is huge
Expand Down
14 changes: 1 addition & 13 deletions app/ui/importexportdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<x>0</x>
<y>0</y>
<width>455</width>
<height>218</height>
<height>244</height>
</rect>
</property>
<property name="sizePolicy">
Expand All @@ -23,18 +23,6 @@
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>2</number>
</property>
<property name="leftMargin">
<number>9</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>9</number>
</property>
<item>
<widget class="QLabel" name="instructionsLabel">
<property name="minimumSize">
Expand Down
Loading

0 comments on commit c8addc3

Please sign in to comment.