diff --git a/QtGameMaker.pro b/QtGameMaker.pro index 1184509..b7ff665 100644 --- a/QtGameMaker.pro +++ b/QtGameMaker.pro @@ -53,8 +53,8 @@ HEADERS += \ src/engine/vulkangamerenderer.h \ src/engine/vulkangamewindow.h \ src/futurecpp.h \ - src/imagehelpers.h \ src/projectcontainer.h \ + src/editor/imagehelpers.h \ src/editor/jshighlighter.h \ src/editor/mainwindow.h \ src/editor/dialogs/addeventdialog.h \ @@ -127,9 +127,9 @@ SOURCES += \ src/engine/glgamewindow.cpp \ src/engine/vulkangamerenderer.cpp \ src/engine/vulkangamewindow.cpp \ - src/imagehelpers.cpp \ src/main.cpp \ src/projectcontainer.cpp \ + src/editor/imagehelpers.cpp \ src/editor/jshighlighter.cpp \ src/editor/mainwindow.cpp \ src/editor/dialogs/addeventdialog.cpp \ diff --git a/src/closeeventfilter.cpp b/src/closeeventfilter.cpp index b458c12..4beef07 100644 --- a/src/closeeventfilter.cpp +++ b/src/closeeventfilter.cpp @@ -2,11 +2,6 @@ #include -CloseEventFilter::CloseEventFilter(QObject *parent) : - QObject{parent} -{ -} - bool CloseEventFilter::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::Close) diff --git a/src/closeeventfilter.h b/src/closeeventfilter.h index 4b86a04..30bb340 100644 --- a/src/closeeventfilter.h +++ b/src/closeeventfilter.h @@ -7,7 +7,7 @@ class CloseEventFilter : public QObject Q_OBJECT public: - CloseEventFilter(QObject *parent = nullptr); + using QObject::QObject; signals: void closeEventReceived(); diff --git a/src/editor/dialogs/actions/movefixeddialog.cpp b/src/editor/dialogs/actions/movefixeddialog.cpp index 6fb1c28..7e2a819 100644 --- a/src/editor/dialogs/actions/movefixeddialog.cpp +++ b/src/editor/dialogs/actions/movefixeddialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + MoveFixedDialog::MoveFixedDialog(MoveFixedAction &action, ProjectTreeModel *projectModel, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -20,10 +22,7 @@ MoveFixedDialog::MoveFixedDialog(MoveFixedAction &action, ProjectTreeModel *proj m_ui->widgetObject->setEmptySelectionText(tr("self")); m_ui->widgetObject->setShowClearObjectAction(false); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } MoveFixedDialog::~MoveFixedDialog() = default; diff --git a/src/editor/dialogs/actions/movefreedialog.cpp b/src/editor/dialogs/actions/movefreedialog.cpp index cd53844..1da18bf 100644 --- a/src/editor/dialogs/actions/movefreedialog.cpp +++ b/src/editor/dialogs/actions/movefreedialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + MoveFreeDialog::MoveFreeDialog(MoveFreeAction &action, ProjectTreeModel *projectModel, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -20,10 +22,7 @@ MoveFreeDialog::MoveFreeDialog(MoveFreeAction &action, ProjectTreeModel *project m_ui->widgetObject->setEmptySelectionText(tr("self")); m_ui->widgetObject->setShowClearObjectAction(false); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } MoveFreeDialog::~MoveFreeDialog() = default; diff --git a/src/editor/dialogs/actions/movetowardsdialog.cpp b/src/editor/dialogs/actions/movetowardsdialog.cpp index de48d0a..2d15335 100644 --- a/src/editor/dialogs/actions/movetowardsdialog.cpp +++ b/src/editor/dialogs/actions/movetowardsdialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + MoveTowardsDialog::MoveTowardsDialog(MoveTowardsAction &action, ProjectTreeModel *projectModel, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -20,10 +22,7 @@ MoveTowardsDialog::MoveTowardsDialog(MoveTowardsAction &action, ProjectTreeModel m_ui->widgetObject->setEmptySelectionText(tr("self")); m_ui->widgetObject->setShowClearObjectAction(false); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } MoveTowardsDialog::~MoveTowardsDialog() = default; diff --git a/src/editor/dialogs/actions/setgravitydialog.cpp b/src/editor/dialogs/actions/setgravitydialog.cpp index a228b2a..69b24f8 100644 --- a/src/editor/dialogs/actions/setgravitydialog.cpp +++ b/src/editor/dialogs/actions/setgravitydialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + SetGravityDialog::SetGravityDialog(SetGravityAction &action, ProjectTreeModel *projectModel, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -20,10 +22,7 @@ SetGravityDialog::SetGravityDialog(SetGravityAction &action, ProjectTreeModel *p m_ui->widgetObject->setEmptySelectionText(tr("self")); m_ui->widgetObject->setShowClearObjectAction(false); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } SetGravityDialog::~SetGravityDialog() = default; diff --git a/src/editor/dialogs/actions/speedhorizontaldialog.cpp b/src/editor/dialogs/actions/speedhorizontaldialog.cpp index ea33686..5ca0ae9 100644 --- a/src/editor/dialogs/actions/speedhorizontaldialog.cpp +++ b/src/editor/dialogs/actions/speedhorizontaldialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + SpeedHorizontalDialog::SpeedHorizontalDialog(SpeedHorizontalAction &action, ProjectTreeModel *projectModel, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -20,10 +22,7 @@ SpeedHorizontalDialog::SpeedHorizontalDialog(SpeedHorizontalAction &action, Proj m_ui->widgetObject->setEmptySelectionText(tr("self")); m_ui->widgetObject->setShowClearObjectAction(false); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } SpeedHorizontalDialog::~SpeedHorizontalDialog() = default; diff --git a/src/editor/dialogs/actions/speedverticaldialog.cpp b/src/editor/dialogs/actions/speedverticaldialog.cpp index 22342a0..beca1bb 100644 --- a/src/editor/dialogs/actions/speedverticaldialog.cpp +++ b/src/editor/dialogs/actions/speedverticaldialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + SpeedVerticalDialog::SpeedVerticalDialog(SpeedVerticalAction &action, ProjectTreeModel *projectModel, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -20,10 +22,7 @@ SpeedVerticalDialog::SpeedVerticalDialog(SpeedVerticalAction &action, ProjectTre m_ui->widgetObject->setEmptySelectionText(tr("self")); m_ui->widgetObject->setShowClearObjectAction(false); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } SpeedVerticalDialog::~SpeedVerticalDialog() = default; diff --git a/src/editor/dialogs/addeventdialog.cpp b/src/editor/dialogs/addeventdialog.cpp index 721cdd7..ff92d6e 100644 --- a/src/editor/dialogs/addeventdialog.cpp +++ b/src/editor/dialogs/addeventdialog.cpp @@ -6,6 +6,7 @@ #include "models/projecttreemodel.h" #include "mainwindow.h" +#include "editorguiutils.h" AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, MainWindow &mainWindow, QWidget *parent) : QDialog{parent}, @@ -20,10 +21,7 @@ AddEventDialog::AddEventDialog(ProjectTreeModel &projectModel, MainWindow &mainW #endif setWindowFlag(Qt::WindowCloseButtonHint); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); connect(m_ui->pushButtonCreate, &QAbstractButton::clicked, this, [this](){ m_eventType = Object::EventType::Create; accept(); }); diff --git a/src/editor/dialogs/backgroundpropertiesdialog.cpp b/src/editor/dialogs/backgroundpropertiesdialog.cpp index 1036cc5..cef7e63 100644 --- a/src/editor/dialogs/backgroundpropertiesdialog.cpp +++ b/src/editor/dialogs/backgroundpropertiesdialog.cpp @@ -9,6 +9,8 @@ #include "models/projecttreemodel.h" #include "imageeditordialog.h" #include "mainwindow.h" +#include "imagehelpers.h" +#include "editorguiutils.h" BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, ProjectTreeModel &projectModel, MainWindow &mainWindow) : QDialog{&mainWindow}, @@ -21,10 +23,7 @@ BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, P updateTitle(); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->lineEditName->setText(m_background.name); updateSpriteInfo(); @@ -139,22 +138,7 @@ void BackgroundPropertiesDialog::saveBackground() return; } - const auto path = QFileDialog::getSaveFileName(this, tr("Save a Background Image..."), m_background.name + ".png", - QStringLiteral("%0 (*.png);;%1 (*.bmp);;%2 (*.tiff);;%3 (*.jpg *.jpeg);;%4 (*)") - .arg(tr("PNG Files")) - .arg(tr("BMP Files")) - .arg(tr("TIFF Files")) - .arg(tr("JPEG Files")) - .arg(tr("All Files")) - ); - if (path.isEmpty()) - return; - - if (!m_pixmap.save(path)) - { - QMessageBox::warning(this, tr("Could not save Background!"), tr("Could not save Background!")); - return; - } + saveImage(this, m_pixmap.toImage()); } void BackgroundPropertiesDialog::editBackground() diff --git a/src/editor/dialogs/createspritedialog.cpp b/src/editor/dialogs/createspritedialog.cpp index f7702ed..8f44475 100644 --- a/src/editor/dialogs/createspritedialog.cpp +++ b/src/editor/dialogs/createspritedialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + CreateSpriteDialog::CreateSpriteDialog(QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()} @@ -14,10 +16,7 @@ CreateSpriteDialog::CreateSpriteDialog(QWidget *parent) : #endif setWindowFlag(Qt::WindowCloseButtonHint); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } CreateSpriteDialog::CreateSpriteDialog(const QSize &size, QWidget *parent) : diff --git a/src/editor/dialogs/deletemomentsdialog.cpp b/src/editor/dialogs/deletemomentsdialog.cpp index c7f06b1..903d258 100644 --- a/src/editor/dialogs/deletemomentsdialog.cpp +++ b/src/editor/dialogs/deletemomentsdialog.cpp @@ -1,11 +1,15 @@ #include "deletemomentsdialog.h" #include "ui_deletemomentsdialog.h" +#include "editorguiutils.h" + DeleteMomentsDialog::DeleteMomentsDialog(QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()} { m_ui->setupUi(this); + + improveButtonBox(m_ui->buttonBox); } DeleteMomentsDialog::DeleteMomentsDialog(int fromMoment, int tillMoment, QWidget *parent) : diff --git a/src/editor/dialogs/editspritedialog.cpp b/src/editor/dialogs/editspritedialog.cpp index a71dc4d..554acf8 100644 --- a/src/editor/dialogs/editspritedialog.cpp +++ b/src/editor/dialogs/editspritedialog.cpp @@ -6,6 +6,7 @@ #include "projectcontainer.h" #include "models/spritesmodel.h" +#include "dialogs/transparentbackgroundsettingsdialog.h" #include "createspritedialog.h" #include "imageeditordialog.h" #include "imagehelpers.h" @@ -31,13 +32,24 @@ EditSpriteDialog::EditSpriteDialog(const std::vector &pixmaps, const QS m_ui->actionNew->setShortcut(QKeySequence::New); m_ui->actionCreateFromFile->setShortcut(QKeySequence::Open); m_ui->actionSaveAsPngFile->setShortcut(QKeySequence::Save); + m_ui->actionUndo->setShortcut(QKeySequence::Undo); + m_ui->actionRedo->setShortcut(QKeySequence::Redo); + m_ui->actionCut->setShortcut(QKeySequence::Cut); + m_ui->actionCopy->setShortcut(QKeySequence::Copy); + m_ui->actionPaste->setShortcut(QKeySequence::Paste); + m_ui->actionDelete->setShortcut(QKeySequence::Delete); m_ui->listView->setModel(m_model.get()); - connect(m_ui->actionNew, &QAction::triggered, this, &EditSpriteDialog::newSprite); - connect(m_ui->actionSaveAsPngFile, &QAction::triggered, this, &EditSpriteDialog::saveAsPng); + connect(m_ui->actionNew, &QAction::triggered, + this, &EditSpriteDialog::newSprite); + connect(m_ui->actionSaveAsPngFile, &QAction::triggered, + this, &EditSpriteDialog::saveAsPng); + connect(m_ui->actionSetTransparencyBackground, &QAction::triggered, + this, &EditSpriteDialog::transparentBackgroundSettings); - connect(m_ui->listView, &QAbstractItemView::activated, this, &EditSpriteDialog::activated); + connect(m_ui->listView, &QAbstractItemView::activated, + this, &EditSpriteDialog::activated); connect(m_ui->listView->selectionModel(), &QItemSelectionModel::currentChanged, this, &EditSpriteDialog::currentChanged); currentChanged(m_ui->listView->currentIndex()); @@ -126,6 +138,15 @@ void EditSpriteDialog::saveAsPng() saveImage(this, pixmap.toImage()); } +void EditSpriteDialog::transparentBackgroundSettings() +{ + TransparentBackgroundSettingsDialog dialog{this}; + if (dialog.exec() == QDialog::Accepted) + { + // TODO apply + } +} + void EditSpriteDialog::activated(const QModelIndex &index) { if (!index.isValid()) diff --git a/src/editor/dialogs/editspritedialog.h b/src/editor/dialogs/editspritedialog.h index d1a7fe3..17ef553 100644 --- a/src/editor/dialogs/editspritedialog.h +++ b/src/editor/dialogs/editspritedialog.h @@ -26,6 +26,7 @@ public: private slots: void newSprite(); void saveAsPng(); + void transparentBackgroundSettings(); void activated(const QModelIndex &index); void currentChanged(const QModelIndex &index); diff --git a/src/editor/dialogs/editspritedialog.ui b/src/editor/dialogs/editspritedialog.ui index 9291543..c1e118e 100644 --- a/src/editor/dialogs/editspritedialog.ui +++ b/src/editor/dialogs/editspritedialog.ui @@ -50,6 +50,25 @@ &Edit + + + + + + + + + + + + + + + + + + + @@ -76,10 +95,10 @@ - QFrame::Panel + QFrame::Shape::Panel - QFrame::Raised + QFrame::Shadow::Raised @@ -118,6 +137,20 @@ + + + + + + + + + + + + + + @@ -126,7 +159,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -140,7 +173,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -157,7 +190,7 @@ 16 - QListView::IconMode + QListView::ViewMode::IconMode @@ -174,6 +207,9 @@ &New... + + Create a new sprite + @@ -183,6 +219,9 @@ &Create from file... + + Create new sprite from file + @@ -192,6 +231,9 @@ &Add from file... + + Add a sprite from file + Ctrl+A @@ -204,6 +246,9 @@ &Save as PNG File... + + Save the sprite as PNG File + @@ -230,6 +275,109 @@ Close Saving Changes + + + + :/qtgameengine/icons/undo.png:/qtgameengine/icons/undo.png + + + &Undo + + + + + + :/qtgameengine/icons/redo.png:/qtgameengine/icons/redo.png + + + &Redo + + + + + + :/qtgameengine/icons/cut.png:/qtgameengine/icons/cut.png + + + Cu&t + + + + + + :/qtgameengine/icons/copy.png:/qtgameengine/icons/copy.png + + + &Copy + + + + + + :/qtgameengine/icons/paste.png:/qtgameengine/icons/paste.png + + + &Paste + + + + + &Erase... + + + Shift+Del + + + + + &Delete + + + + + Move &Left + + + Ctrl+L + + + + + &Move Right + + + Ctrl+R + + + + + &Add Empty + + + Shift+A + + + + + &Insert Empty + + + Shift+I + + + + + Edit... + + + Ctrl+E + + + + + &Set Transparency Background... + + diff --git a/src/editor/dialogs/extensionpackagesdialog.cpp b/src/editor/dialogs/extensionpackagesdialog.cpp index e3c6b2f..8ac9c34 100644 --- a/src/editor/dialogs/extensionpackagesdialog.cpp +++ b/src/editor/dialogs/extensionpackagesdialog.cpp @@ -2,6 +2,7 @@ #include "ui_extensionpackagesdialog.h" #include "installextensiondialog.h" +#include "editorguiutils.h" ExtensionPackagesDialog::ExtensionPackagesDialog(QWidget *parent) : QDialog{parent}, @@ -14,10 +15,7 @@ ExtensionPackagesDialog::ExtensionPackagesDialog(QWidget *parent) : #endif setWindowFlag(Qt::WindowCloseButtonHint); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); if (auto button = m_ui->buttonBox->addButton(tr("Install"), QDialogButtonBox::ActionRole)) { diff --git a/src/editor/dialogs/fontpropertiesdialog.cpp b/src/editor/dialogs/fontpropertiesdialog.cpp index 9b2571a..02fe8a9 100644 --- a/src/editor/dialogs/fontpropertiesdialog.cpp +++ b/src/editor/dialogs/fontpropertiesdialog.cpp @@ -7,6 +7,7 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" #include "mainwindow.h" +#include "editorguiutils.h" FontPropertiesDialog::FontPropertiesDialog(Font &font, ProjectTreeModel &projectModel, MainWindow &mainWindow) : QDialog{&mainWindow}, @@ -18,10 +19,7 @@ FontPropertiesDialog::FontPropertiesDialog(Font &font, ProjectTreeModel &project updateTitle(); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->lineEditName->setText(m_font.name); m_ui->fontComboBox->setCurrentFont(m_font.font); diff --git a/src/editor/dialogs/globalgamesettingsdialog.cpp b/src/editor/dialogs/globalgamesettingsdialog.cpp index a73825c..af3d539 100644 --- a/src/editor/dialogs/globalgamesettingsdialog.cpp +++ b/src/editor/dialogs/globalgamesettingsdialog.cpp @@ -5,6 +5,8 @@ #include #include +#include "editorguiutils.h" + GlobalGameSettingsDialog::GlobalGameSettingsDialog(GlobalGameSettings &globalGameSettings, QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()}, @@ -27,10 +29,7 @@ GlobalGameSettingsDialog::GlobalGameSettingsDialog(GlobalGameSettings &globalGam widget->setSizePolicy(sp_retain); } - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); connect(m_ui->checkBoxFullscreen, &QCheckBox::toggled, this, &GlobalGameSettingsDialog::changed); diff --git a/src/editor/dialogs/imageeditordialog.cpp b/src/editor/dialogs/imageeditordialog.cpp index fca81d1..af206fa 100644 --- a/src/editor/dialogs/imageeditordialog.cpp +++ b/src/editor/dialogs/imageeditordialog.cpp @@ -7,6 +7,7 @@ #include #include +#include "dialogs/transparentbackgroundsettingsdialog.h" #include "imagehelpers.h" ImageEditorDialog::ImageEditorDialog(const QPixmap &pixmap, const QString &title, QWidget *parent) : @@ -29,10 +30,22 @@ ImageEditorDialog::ImageEditorDialog(const QPixmap &pixmap, const QString &title updateTitle(); + m_ui->actionNew->setShortcut(QKeySequence::New); + m_ui->actionOpen->setShortcut(QKeySequence::Open); + m_ui->actionSaveAsPngFile->setShortcut(QKeySequence::Save); + m_ui->actionUndo->setShortcut(QKeySequence::Undo); + m_ui->actionRedo->setShortcut(QKeySequence::Redo); + m_ui->actionDelete->setShortcut(QKeySequence::Delete); + m_ui->actionCut->setShortcut(QKeySequence::Cut); + m_ui->actionCopy->setShortcut(QKeySequence::Copy); + m_ui->actionPaste->setShortcut(QKeySequence::Paste); + m_ui->scrollArea->setBackgroundRole(QPalette::Dark); connect(m_ui->actionSaveAsPngFile, &QAction::triggered, this, &ImageEditorDialog::saveAsPng); + connect(m_ui->actionSetTransparencyBackground, &QAction::triggered, + this, &ImageEditorDialog::transparentBackgroundSettings); connect(m_ui->pushButtonSelectFont, &QAbstractButton::pressed, this, &ImageEditorDialog::selectFont); @@ -195,6 +208,15 @@ void ImageEditorDialog::saveAsPng() saveImage(this, image); } +void ImageEditorDialog::transparentBackgroundSettings() +{ + TransparentBackgroundSettingsDialog dialog{this}; + if (dialog.exec() == QDialog::Accepted) + { + // TODO apply + } +} + void ImageEditorDialog::changed() { if (!m_unsavedChanges) diff --git a/src/editor/dialogs/imageeditordialog.h b/src/editor/dialogs/imageeditordialog.h index fa0d7a7..797f12f 100644 --- a/src/editor/dialogs/imageeditordialog.h +++ b/src/editor/dialogs/imageeditordialog.h @@ -28,6 +28,8 @@ public: private slots: void saveAsPng(); + void transparentBackgroundSettings(); + void changed(); void selectFont(); void selectLeftButtonColor(); diff --git a/src/editor/dialogs/imageeditordialog.ui b/src/editor/dialogs/imageeditordialog.ui index 1b7a0e1..5a50542 100644 --- a/src/editor/dialogs/imageeditordialog.ui +++ b/src/editor/dialogs/imageeditordialog.ui @@ -36,6 +36,7 @@ &File + @@ -142,7 +143,7 @@ - + @@ -974,13 +975,13 @@ Close the image editor, saving the changes made - + :/qtgameengine/icons/open.png:/qtgameengine/icons/open.png - Load + &Open... @@ -1007,21 +1008,37 @@ + + + :/qtgameengine/icons/delete.png:/qtgameengine/icons/delete.png + &Delete + + + :/qtgameengine/icons/cut.png:/qtgameengine/icons/cut.png + Cu&t + + + :/qtgameengine/icons/copy.png:/qtgameengine/icons/copy.png + &Copy + + + :/qtgameengine/icons/paste.png:/qtgameengine/icons/paste.png + &Paste @@ -1055,6 +1072,10 @@ true + + + :/qtgameengine/icons/grid.png:/qtgameengine/icons/grid.png + Toggle &Grid diff --git a/src/editor/dialogs/includedfilepropertiesdialog.cpp b/src/editor/dialogs/includedfilepropertiesdialog.cpp index 10db109..858c42e 100644 --- a/src/editor/dialogs/includedfilepropertiesdialog.cpp +++ b/src/editor/dialogs/includedfilepropertiesdialog.cpp @@ -1,6 +1,8 @@ #include "includedfilepropertiesdialog.h" #include "ui_includedfilepropertiesdialog.h" +#include "editorguiutils.h" + IncludedFilePropertiesDialog::IncludedFilePropertiesDialog(IncludedFile &includedFile, QWidget *parent) : QDialog{parent}, m_includedFile{includedFile}, @@ -12,6 +14,8 @@ IncludedFilePropertiesDialog::IncludedFilePropertiesDialog(IncludedFile &include setWindowFlags((windowFlags() & ~Qt::Dialog) | Qt::Window); #endif setWindowFlag(Qt::WindowCloseButtonHint); + + improveButtonBox(m_ui->buttonBox); } IncludedFilePropertiesDialog::~IncludedFilePropertiesDialog() = default; diff --git a/src/editor/dialogs/includedfilesdialog.cpp b/src/editor/dialogs/includedfilesdialog.cpp index f923927..6713a2f 100644 --- a/src/editor/dialogs/includedfilesdialog.cpp +++ b/src/editor/dialogs/includedfilesdialog.cpp @@ -4,6 +4,7 @@ #include "projectcontainer.h" #include "models/includedfilesmodel.h" #include "dialogs/includedfilepropertiesdialog.h" +#include "editorguiutils.h" IncludedFilesDialog::IncludedFilesDialog(ProjectContainer &project, QWidget *parent) : QDialog{parent}, @@ -13,10 +14,7 @@ IncludedFilesDialog::IncludedFilesDialog(ProjectContainer &project, QWidget *par { m_ui->setupUi(this); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->listView->setModel(m_model.get()); diff --git a/src/editor/dialogs/maskpropertiesdialog.cpp b/src/editor/dialogs/maskpropertiesdialog.cpp index 693192f..ac83e71 100644 --- a/src/editor/dialogs/maskpropertiesdialog.cpp +++ b/src/editor/dialogs/maskpropertiesdialog.cpp @@ -1,6 +1,8 @@ #include "maskpropertiesdialog.h" #include "ui_maskpropertiesdialog.h" +#include "editorguiutils.h" + MaskPropertiesDialog::MaskPropertiesDialog(QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()} @@ -11,6 +13,8 @@ MaskPropertiesDialog::MaskPropertiesDialog(QWidget *parent) : setWindowFlags((windowFlags() & ~Qt::Dialog) | Qt::Window); #endif setWindowFlag(Qt::WindowCloseButtonHint); + + improveButtonBox(m_ui->buttonBox); } MaskPropertiesDialog::~MaskPropertiesDialog() = default; diff --git a/src/editor/dialogs/maskpropertiesdialog.ui b/src/editor/dialogs/maskpropertiesdialog.ui index a9083a2..df21aac 100644 --- a/src/editor/dialogs/maskpropertiesdialog.ui +++ b/src/editor/dialogs/maskpropertiesdialog.ui @@ -13,6 +13,19 @@ Mask Properties + + + + 60 + 240 + 187 + 26 + + + + QDialogButtonBox::StandardButton::Ok + + diff --git a/src/editor/dialogs/objectpropertiesdialog.cpp b/src/editor/dialogs/objectpropertiesdialog.cpp index e07eee2..3bccc76 100644 --- a/src/editor/dialogs/objectpropertiesdialog.cpp +++ b/src/editor/dialogs/objectpropertiesdialog.cpp @@ -11,6 +11,7 @@ #include "models/projecttreemodel.h" #include "models/objecteventsmodel.h" #include "addeventdialog.h" +#include "editorguiutils.h" ObjectPropertiesDialog::ObjectPropertiesDialog(Object &object, ProjectTreeModel &projectModel, MainWindow &mainWindow) : QDialog{&mainWindow}, @@ -30,10 +31,7 @@ ObjectPropertiesDialog::ObjectPropertiesDialog(Object &object, ProjectTreeModel updateTitle(); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->widgetParent->setProjectModel(&m_projectModel); m_ui->widgetParent->setForbiddenObjectName(m_object.name); diff --git a/src/editor/dialogs/preferencesdialog.cpp b/src/editor/dialogs/preferencesdialog.cpp index 3728ea0..f17fe5b 100644 --- a/src/editor/dialogs/preferencesdialog.cpp +++ b/src/editor/dialogs/preferencesdialog.cpp @@ -3,6 +3,8 @@ #include +#include "editorguiutils.h" + PreferencesDialog::PreferencesDialog(QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()} @@ -14,10 +16,7 @@ PreferencesDialog::PreferencesDialog(QWidget *parent) : #endif setWindowFlag(Qt::WindowCloseButtonHint); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); } PreferencesDialog::~PreferencesDialog() = default; diff --git a/src/editor/dialogs/soundpropertiesdialog.cpp b/src/editor/dialogs/soundpropertiesdialog.cpp index 350eef4..841a933 100644 --- a/src/editor/dialogs/soundpropertiesdialog.cpp +++ b/src/editor/dialogs/soundpropertiesdialog.cpp @@ -10,6 +10,7 @@ #include "projectcontainer.h" #include "models/projecttreemodel.h" #include "mainwindow.h" +#include "editorguiutils.h" SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, ProjectTreeModel &projectModel, MainWindow &mainWindow) : QDialog{&mainWindow}, @@ -22,10 +23,7 @@ SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, ProjectTreeModel &pro updateTitle(); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->lineEditName->setText(m_sound.name); if (!m_sound.path.isEmpty()) diff --git a/src/editor/dialogs/spritepropertiesdialog.cpp b/src/editor/dialogs/spritepropertiesdialog.cpp index 01f145d..546101f 100644 --- a/src/editor/dialogs/spritepropertiesdialog.cpp +++ b/src/editor/dialogs/spritepropertiesdialog.cpp @@ -12,6 +12,7 @@ #include "maskpropertiesdialog.h" #include "mainwindow.h" #include "imagehelpers.h" +#include "editorguiutils.h" SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel &projectModel, MainWindow &mainWindow) : QDialog{&mainWindow}, @@ -24,10 +25,7 @@ SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, ProjectTreeModel updateTitle(); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->lineEditName->setText(m_sprite.name); updateSpriteInfo(); diff --git a/src/editor/dialogs/timelinepropertiesdialog.cpp b/src/editor/dialogs/timelinepropertiesdialog.cpp index 1e9c777..98a8e33 100644 --- a/src/editor/dialogs/timelinepropertiesdialog.cpp +++ b/src/editor/dialogs/timelinepropertiesdialog.cpp @@ -12,6 +12,7 @@ #include "models/timelinemomentsmodel.h" #include "dialogs/deletemomentsdialog.h" #include "mainwindow.h" +#include "editorguiutils.h" TimeLinePropertiesDialog::TimeLinePropertiesDialog(TimeLine &timeLine, ProjectTreeModel &projectModel, MainWindow &mainWindow) : QDialog{&mainWindow}, @@ -25,10 +26,7 @@ TimeLinePropertiesDialog::TimeLinePropertiesDialog(TimeLine &timeLine, ProjectTr updateTitle(); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->lineEditName->setText(m_timeLine.name); diff --git a/src/editor/dialogs/transparentbackgroundsettingsdialog.cpp b/src/editor/dialogs/transparentbackgroundsettingsdialog.cpp index 392644f..7436230 100644 --- a/src/editor/dialogs/transparentbackgroundsettingsdialog.cpp +++ b/src/editor/dialogs/transparentbackgroundsettingsdialog.cpp @@ -1,11 +1,15 @@ #include "transparentbackgroundsettingsdialog.h" #include "ui_transparentbackgroundsettingsdialog.h" +#include "editorguiutils.h" + TransparentBackgroundSettingsDialog::TransparentBackgroundSettingsDialog(QWidget *parent) : QDialog{parent}, m_ui{std::make_unique()} { m_ui->setupUi(this); + + improveButtonBox(m_ui->buttonBox); } TransparentBackgroundSettingsDialog::~TransparentBackgroundSettingsDialog() = default; diff --git a/src/editor/dialogs/triggersdialog.cpp b/src/editor/dialogs/triggersdialog.cpp index b1f8d4a..0293b28 100644 --- a/src/editor/dialogs/triggersdialog.cpp +++ b/src/editor/dialogs/triggersdialog.cpp @@ -7,6 +7,7 @@ #include "projectcontainer.h" #include "models/triggersmodel.h" #include "genericcodeeditordialog.h" +#include "editorguiutils.h" TriggersDialog::TriggersDialog(ProjectContainer &project, QWidget *parent) : QDialog{parent}, @@ -16,10 +17,7 @@ TriggersDialog::TriggersDialog(ProjectContainer &project, QWidget *parent) : { m_ui->setupUi(this); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->listView->setModel(m_model.get()); diff --git a/src/editor/dialogs/userdefinedconstantsdialog.cpp b/src/editor/dialogs/userdefinedconstantsdialog.cpp index 0e54757..469814d 100644 --- a/src/editor/dialogs/userdefinedconstantsdialog.cpp +++ b/src/editor/dialogs/userdefinedconstantsdialog.cpp @@ -6,6 +6,7 @@ #include "projectcontainer.h" #include "models/constantsmodel.h" +#include "editorguiutils.h" UserDefinedConstantsDialog::UserDefinedConstantsDialog(ProjectContainer &project, QWidget *parent) : QDialog{parent}, @@ -15,10 +16,7 @@ UserDefinedConstantsDialog::UserDefinedConstantsDialog(ProjectContainer &project { m_ui->setupUi(this); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Ok)) - button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); - if (auto button = m_ui->buttonBox->button(QDialogButtonBox::Cancel)) - button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); + improveButtonBox(m_ui->buttonBox); m_ui->treeView->setModel(m_model.get()); diff --git a/src/editor/editorguiutils.cpp b/src/editor/editorguiutils.cpp index 1d0832a..d07e564 100644 --- a/src/editor/editorguiutils.cpp +++ b/src/editor/editorguiutils.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include QBrush makeGridBrush(int snapX, int snapY, const QPen &gridPen, const QColor &backgroundColor) { @@ -35,3 +37,11 @@ QBrush makeGridBrush(int snapX, int snapY, const QColor &gridColor, const QColor return QBrush{std::move(pixmap)}; } + +void improveButtonBox(QDialogButtonBox *buttonBox) +{ + if (auto button = buttonBox->button(QDialogButtonBox::Ok)) + button->setIcon(QIcon{":/qtgameengine/icons/ok.png"}); + if (auto button = buttonBox->button(QDialogButtonBox::Cancel)) + button->setIcon(QIcon{":/qtgameengine/icons/delete.png"}); +} diff --git a/src/editor/editorguiutils.h b/src/editor/editorguiutils.h index 294c264..d5eac40 100644 --- a/src/editor/editorguiutils.h +++ b/src/editor/editorguiutils.h @@ -3,6 +3,9 @@ class QBrush; class QPen; class QColor; +class QDialogButtonBox; QBrush makeGridBrush(int snapX, int snapY, const QPen &gridPen, const QColor &backgroundColor); QBrush makeGridBrush(int snapX, int snapY, const QColor &gridColor, const QColor &backgroundColor); + +void improveButtonBox(QDialogButtonBox *buttonBox); diff --git a/src/imagehelpers.cpp b/src/editor/imagehelpers.cpp similarity index 100% rename from src/imagehelpers.cpp rename to src/editor/imagehelpers.cpp diff --git a/src/imagehelpers.h b/src/editor/imagehelpers.h similarity index 100% rename from src/imagehelpers.h rename to src/editor/imagehelpers.h diff --git a/src/editor/mainwindow.cpp b/src/editor/mainwindow.cpp index afee794..5b01cc7 100644 --- a/src/editor/mainwindow.cpp +++ b/src/editor/mainwindow.cpp @@ -719,7 +719,10 @@ void MainWindow::showObjectInformation() void MainWindow::transparentBackgroundSettings() { TransparentBackgroundSettingsDialog dialog{this}; - dialog.exec(); + if (dialog.exec() == QDialog::Accepted) + { + // TODO apply + } } template