From b7784d3ad7bbe8450dc613ab1662bd9e0c3816e8 Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sun, 9 Jan 2022 06:42:13 +0100 Subject: [PATCH] Initial commit with sources --- .gitignore | 103 +- QtGameMaker.pro | 60 + codeeditorwidget.cpp | 120 ++ codeeditorwidget.h | 41 + dialogs/backgroundpropertiesdialog.cpp | 104 ++ dialogs/backgroundpropertiesdialog.h | 35 + dialogs/backgroundpropertiesdialog.ui | 197 ++++ dialogs/editspritedialog.cpp | 22 + dialogs/editspritedialog.h | 22 + dialogs/editspritedialog.ui | 206 ++++ dialogs/extensionpackagesdialog.cpp | 17 + dialogs/extensionpackagesdialog.h | 19 + dialogs/extensionpackagesdialog.ui | 212 ++++ dialogs/fontpropertiesdialog.cpp | 144 +++ dialogs/fontpropertiesdialog.h | 37 + dialogs/fontpropertiesdialog.ui | 258 +++++ dialogs/gameinformationdialog.cpp | 17 + dialogs/gameinformationdialog.h | 19 + dialogs/gameinformationdialog.ui | 19 + dialogs/globalgamesettingsdialog.cpp | 17 + dialogs/globalgamesettingsdialog.h | 19 + dialogs/globalgamesettingsdialog.ui | 268 +++++ dialogs/pathpropertiesdialog.cpp | 92 ++ dialogs/pathpropertiesdialog.h | 35 + dialogs/pathpropertiesdialog.ui | 333 ++++++ dialogs/preferencesdialog.cpp | 17 + dialogs/preferencesdialog.h | 19 + dialogs/preferencesdialog.ui | 85 ++ dialogs/scriptpropertiesdialog.cpp | 158 +++ dialogs/scriptpropertiesdialog.h | 42 + dialogs/scriptpropertiesdialog.ui | 568 ++++++++++ dialogs/soundpropertiesdialog.cpp | 167 +++ dialogs/soundpropertiesdialog.h | 40 + dialogs/soundpropertiesdialog.ui | 354 ++++++ dialogs/spritepropertiesdialog.cpp | 133 +++ dialogs/spritepropertiesdialog.h | 36 + dialogs/spritepropertiesdialog.ui | 360 ++++++ futurecpp.h | 30 + icons/actions/background.png | Bin 0 -> 4689 bytes icons/actions/cascade.png | Bin 0 -> 11360 bytes icons/actions/check.png | Bin 0 -> 2709 bytes icons/actions/copy.png | Bin 0 -> 2244 bytes icons/actions/create-executable.png | Bin 0 -> 4208 bytes icons/actions/create-group.png | Bin 0 -> 5483 bytes icons/actions/create.png | Bin 0 -> 19806 bytes icons/actions/cut.png | Bin 0 -> 4331 bytes icons/actions/debug.png | Bin 0 -> 12548 bytes icons/actions/delete.png | Bin 0 -> 4916 bytes icons/actions/duplicate.png | Bin 0 -> 1519 bytes icons/actions/exit.png | Bin 0 -> 2973 bytes icons/actions/export-resources.png | Bin 0 -> 4098 bytes icons/actions/extension-packages.png | Bin 0 -> 4769 bytes icons/actions/find.png | Bin 0 -> 6807 bytes icons/actions/font.png | Bin 0 -> 4606 bytes icons/actions/game-information.png | Bin 0 -> 5918 bytes icons/actions/global-game-settings.png | Bin 0 -> 2772 bytes icons/actions/help.png | Bin 0 -> 5402 bytes icons/actions/import-resources.png | Bin 0 -> 4031 bytes icons/actions/new.png | Bin 0 -> 2830 bytes icons/actions/object.png | Bin 0 -> 9629 bytes icons/actions/ok.png | Bin 0 -> 4054 bytes icons/actions/open.png | Bin 0 -> 11545 bytes icons/actions/paste.png | Bin 0 -> 3361 bytes icons/actions/path.png | Bin 0 -> 1049 bytes icons/actions/preferences.png | Bin 0 -> 6650 bytes icons/actions/print.png | Bin 0 -> 16690 bytes icons/actions/properties.png | Bin 0 -> 2243 bytes icons/actions/publish-game.png | Bin 0 -> 7000 bytes icons/actions/redo.png | Bin 0 -> 4125 bytes icons/actions/rename.png | Bin 0 -> 1687 bytes icons/actions/room.png | Bin 0 -> 2264 bytes icons/actions/run.png | Bin 0 -> 12858 bytes icons/actions/save-as.png | Bin 0 -> 4280 bytes icons/actions/save.png | Bin 0 -> 4106 bytes icons/actions/script.png | Bin 0 -> 3950 bytes icons/actions/sound.png | Bin 0 -> 7823 bytes icons/actions/sprite.png | Bin 0 -> 12740 bytes icons/actions/tile.png | Bin 0 -> 11982 bytes icons/actions/timeline.png | Bin 0 -> 4827 bytes icons/actions/undo.png | Bin 0 -> 4233 bytes icons/buttons/edit.png | Bin 0 -> 5815 bytes icons/buttons/ok.png | Bin 0 -> 4054 bytes icons/dialogs/background-file.png | Bin 0 -> 12717 bytes icons/dialogs/font-file.png | Bin 0 -> 1931 bytes icons/dialogs/path-file.png | Bin 0 -> 12379 bytes icons/dialogs/script-file.png | Bin 0 -> 3950 bytes icons/dialogs/sound-file.png | Bin 0 -> 2674 bytes icons/dialogs/sprite-file.png | Bin 0 -> 11996 bytes icons/tree/extension-packages.png | Bin 0 -> 12938 bytes icons/tree/folder.png | Bin 0 -> 11125 bytes icons/tree/font-file.png | Bin 0 -> 1931 bytes icons/tree/game-information.png | Bin 0 -> 13335 bytes icons/tree/global-game-settings.png | Bin 0 -> 11416 bytes icons/tree/music-file.png | Bin 0 -> 12660 bytes icons/tree/path-file.png | Bin 0 -> 12379 bytes icons/tree/script-file.png | Bin 0 -> 3950 bytes icons/tree/sound-file.png | Bin 0 -> 13243 bytes jshighlighter.cpp | 449 ++++++++ jshighlighter.h | 48 + main.cpp | 30 + mainwindow.cpp | 978 +++++++++++++++++ mainwindow.h | 79 ++ mainwindow.ui | 967 +++++++++++++++++ projdata/backgrounds/background0.png | Bin 0 -> 5358 bytes projdata/sounds/background_music.mid | Bin 0 -> 5141 bytes projdata/sounds/collision.wav | Bin 0 -> 12175 bytes projdata/sounds/gas_sound.wav | Bin 0 -> 800 bytes projdata/sounds/horn.wav | Bin 0 -> 7062 bytes projdata/sounds/sirens.wav | Bin 0 -> 4571 bytes projdata/sprites/apple.png | Bin 0 -> 4061 bytes projdata/sprites/banana.png | Bin 0 -> 3855 bytes projdata/sprites/bomb.png | Bin 0 -> 4248 bytes projdata/sprites/cherry.png | Bin 0 -> 4223 bytes projdata/sprites/strawberry.png | Bin 0 -> 4285 bytes projdata/sprites/wall.png | Bin 0 -> 4286 bytes projectcontainer.cpp | 237 ++++ projectcontainer.h | 92 ++ projecttreemodel.cpp | 1387 ++++++++++++++++++++++++ projecttreemodel.h | 79 ++ resources.qrc | 63 ++ 120 files changed, 8793 insertions(+), 41 deletions(-) create mode 100644 QtGameMaker.pro create mode 100644 codeeditorwidget.cpp create mode 100644 codeeditorwidget.h create mode 100644 dialogs/backgroundpropertiesdialog.cpp create mode 100644 dialogs/backgroundpropertiesdialog.h create mode 100644 dialogs/backgroundpropertiesdialog.ui create mode 100644 dialogs/editspritedialog.cpp create mode 100644 dialogs/editspritedialog.h create mode 100644 dialogs/editspritedialog.ui create mode 100644 dialogs/extensionpackagesdialog.cpp create mode 100644 dialogs/extensionpackagesdialog.h create mode 100644 dialogs/extensionpackagesdialog.ui create mode 100644 dialogs/fontpropertiesdialog.cpp create mode 100644 dialogs/fontpropertiesdialog.h create mode 100644 dialogs/fontpropertiesdialog.ui create mode 100644 dialogs/gameinformationdialog.cpp create mode 100644 dialogs/gameinformationdialog.h create mode 100644 dialogs/gameinformationdialog.ui create mode 100644 dialogs/globalgamesettingsdialog.cpp create mode 100644 dialogs/globalgamesettingsdialog.h create mode 100644 dialogs/globalgamesettingsdialog.ui create mode 100644 dialogs/pathpropertiesdialog.cpp create mode 100644 dialogs/pathpropertiesdialog.h create mode 100644 dialogs/pathpropertiesdialog.ui create mode 100644 dialogs/preferencesdialog.cpp create mode 100644 dialogs/preferencesdialog.h create mode 100644 dialogs/preferencesdialog.ui create mode 100644 dialogs/scriptpropertiesdialog.cpp create mode 100644 dialogs/scriptpropertiesdialog.h create mode 100644 dialogs/scriptpropertiesdialog.ui create mode 100644 dialogs/soundpropertiesdialog.cpp create mode 100644 dialogs/soundpropertiesdialog.h create mode 100644 dialogs/soundpropertiesdialog.ui create mode 100644 dialogs/spritepropertiesdialog.cpp create mode 100644 dialogs/spritepropertiesdialog.h create mode 100644 dialogs/spritepropertiesdialog.ui create mode 100644 futurecpp.h create mode 100644 icons/actions/background.png create mode 100644 icons/actions/cascade.png create mode 100644 icons/actions/check.png create mode 100644 icons/actions/copy.png create mode 100644 icons/actions/create-executable.png create mode 100644 icons/actions/create-group.png create mode 100644 icons/actions/create.png create mode 100644 icons/actions/cut.png create mode 100644 icons/actions/debug.png create mode 100644 icons/actions/delete.png create mode 100644 icons/actions/duplicate.png create mode 100644 icons/actions/exit.png create mode 100644 icons/actions/export-resources.png create mode 100644 icons/actions/extension-packages.png create mode 100644 icons/actions/find.png create mode 100644 icons/actions/font.png create mode 100644 icons/actions/game-information.png create mode 100644 icons/actions/global-game-settings.png create mode 100644 icons/actions/help.png create mode 100644 icons/actions/import-resources.png create mode 100644 icons/actions/new.png create mode 100644 icons/actions/object.png create mode 100644 icons/actions/ok.png create mode 100644 icons/actions/open.png create mode 100644 icons/actions/paste.png create mode 100644 icons/actions/path.png create mode 100644 icons/actions/preferences.png create mode 100644 icons/actions/print.png create mode 100644 icons/actions/properties.png create mode 100644 icons/actions/publish-game.png create mode 100644 icons/actions/redo.png create mode 100644 icons/actions/rename.png create mode 100644 icons/actions/room.png create mode 100644 icons/actions/run.png create mode 100644 icons/actions/save-as.png create mode 100644 icons/actions/save.png create mode 100644 icons/actions/script.png create mode 100644 icons/actions/sound.png create mode 100644 icons/actions/sprite.png create mode 100644 icons/actions/tile.png create mode 100644 icons/actions/timeline.png create mode 100644 icons/actions/undo.png create mode 100644 icons/buttons/edit.png create mode 100644 icons/buttons/ok.png create mode 100644 icons/dialogs/background-file.png create mode 100644 icons/dialogs/font-file.png create mode 100644 icons/dialogs/path-file.png create mode 100644 icons/dialogs/script-file.png create mode 100644 icons/dialogs/sound-file.png create mode 100644 icons/dialogs/sprite-file.png create mode 100644 icons/tree/extension-packages.png create mode 100644 icons/tree/folder.png create mode 100644 icons/tree/font-file.png create mode 100644 icons/tree/game-information.png create mode 100644 icons/tree/global-game-settings.png create mode 100644 icons/tree/music-file.png create mode 100644 icons/tree/path-file.png create mode 100644 icons/tree/script-file.png create mode 100644 icons/tree/sound-file.png create mode 100644 jshighlighter.cpp create mode 100644 jshighlighter.h create mode 100644 main.cpp create mode 100644 mainwindow.cpp create mode 100644 mainwindow.h create mode 100644 mainwindow.ui create mode 100644 projdata/backgrounds/background0.png create mode 100644 projdata/sounds/background_music.mid create mode 100644 projdata/sounds/collision.wav create mode 100644 projdata/sounds/gas_sound.wav create mode 100644 projdata/sounds/horn.wav create mode 100644 projdata/sounds/sirens.wav create mode 100644 projdata/sprites/apple.png create mode 100644 projdata/sprites/banana.png create mode 100644 projdata/sprites/bomb.png create mode 100644 projdata/sprites/cherry.png create mode 100644 projdata/sprites/strawberry.png create mode 100644 projdata/sprites/wall.png create mode 100644 projectcontainer.cpp create mode 100644 projectcontainer.h create mode 100644 projecttreemodel.cpp create mode 100644 projecttreemodel.h create mode 100644 resources.qrc diff --git a/.gitignore b/.gitignore index f147edf..fab7372 100644 --- a/.gitignore +++ b/.gitignore @@ -1,52 +1,73 @@ -# C++ objects and libs -*.slo -*.lo -*.o +# This file is used to ignore files which are generated +# ---------------------------------------------------------------------------- + +*~ +*.autosave *.a -*.la -*.lai +*.core +*.moc +*.o +*.obj +*.orig +*.rej *.so *.so.* -*.dll -*.dylib - -# Qt-es -object_script.*.Release -object_script.*.Debug -*_plugin_import.cpp +*_pch.h.cpp +*_resource.rc +*.qm +.#* +*.*# +core +!core/ +tags +.DS_Store +.directory +*.debug +Makefile* +*.prl +*.app +moc_*.cpp +ui_*.h +qrc_*.cpp +Thumbs.db +*.res +*.rc /.qmake.cache /.qmake.stash -*.pro.user -*.pro.user.* -*.qbs.user -*.qbs.user.* -*.moc -moc_*.cpp -moc_*.h -qrc_*.cpp -ui_*.h -*.qmlc -*.jsc -Makefile* -*build-* -*.qm -*.prl -# Qt unit tests -target_wrapper.* +# qtcreator generated files +*.pro.user* -# QtCreator -*.autosave +# xemacs temporary files +*.flc -# QtCreator Qml -*.qmlproject.user -*.qmlproject.user.* +# Vim temporary files +.*.swp -# QtCreator CMake -CMakeLists.txt.user* +# Visual Studio generated files +*.ib_pdb_index +*.idb +*.ilk +*.pdb +*.sln +*.suo +*.vcproj +*vcproj.*.*.user +*.ncb +*.sdf +*.opensdf +*.vcxproj +*vcxproj.* -# QtCreator 4.8< compilation database -compile_commands.json +# MinGW generated files +*.Debug +*.Release + +# Python byte code +*.pyc + +# Binaries +# -------- +*.dll +*.exe -# QtCreator local machine specific files for imported projects -*creator.user* diff --git a/QtGameMaker.pro b/QtGameMaker.pro new file mode 100644 index 0000000..a505795 --- /dev/null +++ b/QtGameMaker.pro @@ -0,0 +1,60 @@ +QT = core gui widgets multimedia + +CONFIG += c++latest +QMAKE_CXXFLAGS += -std=c++23 + +DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 + +HEADERS += \ + codeeditorwidget.h \ + dialogs/fontpropertiesdialog.h \ + dialogs/pathpropertiesdialog.h \ + dialogs/scriptpropertiesdialog.h \ + futurecpp.h \ + jshighlighter.h \ + mainwindow.h \ + projectcontainer.h \ + projecttreemodel.h \ + dialogs/backgroundpropertiesdialog.h \ + dialogs/editspritedialog.h \ + dialogs/extensionpackagesdialog.h \ + dialogs/gameinformationdialog.h \ + dialogs/globalgamesettingsdialog.h \ + dialogs/preferencesdialog.h \ + dialogs/soundpropertiesdialog.h \ + dialogs/spritepropertiesdialog.h + +SOURCES += main.cpp \ + codeeditorwidget.cpp \ + dialogs/fontpropertiesdialog.cpp \ + dialogs/pathpropertiesdialog.cpp \ + dialogs/scriptpropertiesdialog.cpp \ + jshighlighter.cpp \ + mainwindow.cpp \ + projectcontainer.cpp \ + projecttreemodel.cpp \ + dialogs/backgroundpropertiesdialog.cpp \ + dialogs/editspritedialog.cpp \ + dialogs/extensionpackagesdialog.cpp \ + dialogs/gameinformationdialog.cpp \ + dialogs/globalgamesettingsdialog.cpp \ + dialogs/preferencesdialog.cpp \ + dialogs/soundpropertiesdialog.cpp \ + dialogs/spritepropertiesdialog.cpp + +FORMS += \ + dialogs/fontpropertiesdialog.ui \ + dialogs/pathpropertiesdialog.ui \ + dialogs/scriptpropertiesdialog.ui \ + mainwindow.ui \ + dialogs/backgroundpropertiesdialog.ui \ + dialogs/editspritedialog.ui \ + dialogs/extensionpackagesdialog.ui \ + dialogs/gameinformationdialog.ui \ + dialogs/globalgamesettingsdialog.ui \ + dialogs/preferencesdialog.ui \ + dialogs/soundpropertiesdialog.ui \ + dialogs/spritepropertiesdialog.ui + +RESOURCES += \ + resources.qrc diff --git a/codeeditorwidget.cpp b/codeeditorwidget.cpp new file mode 100644 index 0000000..4d367d4 --- /dev/null +++ b/codeeditorwidget.cpp @@ -0,0 +1,120 @@ +#include "codeeditorwidget.h" + +#include +#include + +CodeEditorWidget::CodeEditorWidget(QWidget *parent) + : QPlainTextEdit{parent} +{ + lineNumberArea = new LineNumberArea(this); + + connect(this, &CodeEditorWidget::blockCountChanged, + this, &CodeEditorWidget::updateLineNumberAreaWidth); + connect(this, &CodeEditorWidget::updateRequest, + this, &CodeEditorWidget::updateLineNumberArea); + connect(this, &CodeEditorWidget::cursorPositionChanged, + this, &CodeEditorWidget::highlightCurrentLine); + + updateLineNumberAreaWidth(0); + highlightCurrentLine(); +} + +void CodeEditorWidget::updateLineNumberAreaWidth(int newBlockCount) +{ + setViewportMargins(lineNumberAreaWidth(), 0, 0, 0); +} + +int CodeEditorWidget::lineNumberAreaWidth() +{ + int digits = 1; + int max = qMax(1, blockCount()); + while (max >= 10) + { + max /= 10; + ++digits; + } + + int space = 3 + fontMetrics().horizontalAdvance(QLatin1Char('9')) * digits; + + return std::max(space, 40); +} + +void CodeEditorWidget::resizeEvent(QResizeEvent *e) +{ + QPlainTextEdit::resizeEvent(e); + + QRect cr = contentsRect(); + lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); +} + +void CodeEditorWidget::updateLineNumberArea(const QRect &rect, int dy) +{ + if (dy) + lineNumberArea->scroll(0, dy); + else + lineNumberArea->update(0, rect.y(), lineNumberArea->width(), rect.height()); + + if (rect.contains(viewport()->rect())) + updateLineNumberAreaWidth(0); +} + +void CodeEditorWidget::highlightCurrentLine() +{ + QList extraSelections; + + if (!isReadOnly()) + { + QTextEdit::ExtraSelection selection; + + QColor lineColor = QColor(Qt::yellow).lighter(160); + + selection.format.setBackground(lineColor); + selection.format.setProperty(QTextFormat::FullWidthSelection, true); + selection.cursor = textCursor(); + selection.cursor.clearSelection(); + extraSelections.append(selection); + } + + setExtraSelections(extraSelections); +} + +void CodeEditorWidget::lineNumberAreaPaintEvent(QPaintEvent *event) +{ + QPainter painter(lineNumberArea); + painter.fillRect(event->rect(), Qt::lightGray); + + QTextBlock block = firstVisibleBlock(); + int blockNumber = block.blockNumber(); + int top = qRound(blockBoundingGeometry(block).translated(contentOffset()).top()); + int bottom = top + qRound(blockBoundingRect(block).height()); + + while (block.isValid() && top <= event->rect().bottom()) + { + if (block.isVisible() && bottom >= event->rect().top()) + { + QString number = QString::number(blockNumber + 1); + painter.setPen(Qt::black); + painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(), + Qt::AlignRight, number); + } + + block = block.next(); + top = bottom; + bottom = top + qRound(blockBoundingRect(block).height()); + ++blockNumber; + } +} + +LineNumberArea::LineNumberArea(CodeEditorWidget *editor) : QWidget(editor), codeEditor(editor) +{ +} + +QSize LineNumberArea::sizeHint() const +{ + return QSize(codeEditor->lineNumberAreaWidth(), 0); +} + +void LineNumberArea::paintEvent(QPaintEvent *event) +{ + codeEditor->lineNumberAreaPaintEvent(event); +} diff --git a/codeeditorwidget.h b/codeeditorwidget.h new file mode 100644 index 0000000..a9abcb1 --- /dev/null +++ b/codeeditorwidget.h @@ -0,0 +1,41 @@ +#pragma once + +#include + +class CodeEditorWidget : public QPlainTextEdit +{ + Q_OBJECT + +public: + explicit CodeEditorWidget(QWidget *parent = nullptr); + + void lineNumberAreaPaintEvent(QPaintEvent *event); + int lineNumberAreaWidth(); + +protected: + void resizeEvent(QResizeEvent *event) override; + +private slots: + void updateLineNumberAreaWidth(int newBlockCount); + void highlightCurrentLine(); + void updateLineNumberArea(const QRect &rect, int dy); + +private: + QWidget *lineNumberArea; +}; + +class LineNumberArea : public QWidget +{ + Q_OBJECT + +public: + LineNumberArea(CodeEditorWidget *editor); + + QSize sizeHint() const override; + +protected: + void paintEvent(QPaintEvent *event) override; + +private: + CodeEditorWidget *codeEditor; +}; diff --git a/dialogs/backgroundpropertiesdialog.cpp b/dialogs/backgroundpropertiesdialog.cpp new file mode 100644 index 0000000..a3b1515 --- /dev/null +++ b/dialogs/backgroundpropertiesdialog.cpp @@ -0,0 +1,104 @@ +#include "backgroundpropertiesdialog.h" +#include "ui_backgroundpropertiesdialog.h" + +#include +#include +#include + +#include "projectcontainer.h" + +BackgroundPropertiesDialog::BackgroundPropertiesDialog(Background &background, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_background{background} +{ + m_ui->setupUi(this); + + setWindowTitle(tr("Background Properties: %0").arg(m_background.name)); + + m_ui->lineEditName->setText(m_background.name); + m_ui->labelWidth->setText(tr("Width: %0").arg(m_background.pixmap.width())); + m_ui->labelHeight->setText(tr("Height: %0").arg(m_background.pixmap.height())); + m_ui->labelPreview->setPixmap(m_background.pixmap); + + connect(m_ui->pushButtonLoad, &QAbstractButton::pressed, + this, &BackgroundPropertiesDialog::loadBackground); + connect(m_ui->pushButtonSave, &QAbstractButton::pressed, + this, &BackgroundPropertiesDialog::saveBackground); + connect(m_ui->pushButtonEdit, &QAbstractButton::pressed, + this, &BackgroundPropertiesDialog::editBackground); + + connect(m_ui->lineEditName, &QLineEdit::textChanged, + this, &BackgroundPropertiesDialog::changed); + connect(m_ui->checkBoxTileset, &QCheckBox::stateChanged, + this, &BackgroundPropertiesDialog::changed); +} + +BackgroundPropertiesDialog::~BackgroundPropertiesDialog() = default; + +void BackgroundPropertiesDialog::accept() +{ + if (m_background.name != m_ui->lineEditName->text()) + { + QMessageBox::critical(this, tr("Not implemented"), tr("Changing the name is not yet implemented!")); + return; + } + + // TODO + + QDialog::accept(); +} + +void BackgroundPropertiesDialog::reject() +{ + if (!m_unsavedChanges) + { + QDialog::reject(); + return; + } + + const auto result = QMessageBox::warning( + this, + tr("The Background has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + accept(); + return; + case QMessageBox::Discard: + QDialog::reject(); + return; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + } +} + +void BackgroundPropertiesDialog::loadBackground() +{ + QFileDialog::getOpenFileName(this, tr("Open a Background Image...")); +} + +void BackgroundPropertiesDialog::saveBackground() +{ + QFileDialog::getSaveFileName(this, tr("Save a Background Image..."), m_background.name + ".png", tr("PNG Files (*.png)")); +} + +void BackgroundPropertiesDialog::editBackground() +{ + +} + +void BackgroundPropertiesDialog::changed() +{ + if (!m_unsavedChanges) + { + setWindowTitle(tr("Background Properties: %0*").arg(m_background.name)); + m_unsavedChanges = true; + } +} diff --git a/dialogs/backgroundpropertiesdialog.h b/dialogs/backgroundpropertiesdialog.h new file mode 100644 index 0000000..670e7ab --- /dev/null +++ b/dialogs/backgroundpropertiesdialog.h @@ -0,0 +1,35 @@ +#pragma once + +#include +#include + +#include + +namespace Ui { class BackgroundPropertiesDialog; } +struct Background; + +class BackgroundPropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit BackgroundPropertiesDialog(Background &background, QWidget *parent = nullptr); + ~BackgroundPropertiesDialog(); + + void accept() override; + void reject() override; + +private slots: + void loadBackground(); + void saveBackground(); + void editBackground(); + + void changed(); + +private: + const std::unique_ptr m_ui; + + Background &m_background; + + bool m_unsavedChanges{}; +}; diff --git a/dialogs/backgroundpropertiesdialog.ui b/dialogs/backgroundpropertiesdialog.ui new file mode 100644 index 0000000..7e0e022 --- /dev/null +++ b/dialogs/backgroundpropertiesdialog.ui @@ -0,0 +1,197 @@ + + + BackgroundPropertiesDialog + + + + 0 + 0 + 573 + 221 + + + + Dialog + + + + :/qtgameengine/icons/dialogs/background-file.png:/qtgameengine/icons/dialogs/background-file.png + + + + + + + + + + Name: + + + lineEditName + + + + + + + + 0 + 0 + + + + + + + + + + &Load Background + + + + :/qtgameengine/icons/actions/open.png:/qtgameengine/icons/actions/open.png + + + + + + + &Save Background + + + + :/qtgameengine/icons/actions/save.png:/qtgameengine/icons/actions/save.png + + + + + + + &Edit Background + + + + :/qtgameengine/icons/buttons/edit.png:/qtgameengine/icons/buttons/edit.png + + + + + + + + + Width: + + + + + + + Height: + + + + + + + + + &Use as tile set + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + &OK + + + + :/qtgameengine/icons/buttons/ok.png:/qtgameengine/icons/buttons/ok.png + + + + + + + Qt::Horizontal + + + QSizePolicy::Minimum + + + + 40 + 20 + + + + + + + + + + + + true + + + + + 0 + 0 + 371 + 201 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + + pushButtonOk + pressed() + BackgroundPropertiesDialog + accept() + + + 124 + 197 + + + 286 + 110 + + + + + diff --git a/dialogs/editspritedialog.cpp b/dialogs/editspritedialog.cpp new file mode 100644 index 0000000..3b2482d --- /dev/null +++ b/dialogs/editspritedialog.cpp @@ -0,0 +1,22 @@ +#include "editspritedialog.h" +#include "ui_editspritedialog.h" + +#include "projectcontainer.h" + +EditSpriteDialog::EditSpriteDialog(Sprite &sprite, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_sprite{sprite} +{ + m_ui->setupUi(this); + setWindowFlags(windowFlags() + & ~Qt::Dialog + | Qt::Window + | Qt::WindowMinimizeButtonHint + | Qt::WindowMaximizeButtonHint + | Qt::WindowCloseButtonHint); + + setWindowTitle(tr("Sprite editor - %0").arg(m_sprite.name)); +} + +EditSpriteDialog::~EditSpriteDialog() = default; diff --git a/dialogs/editspritedialog.h b/dialogs/editspritedialog.h new file mode 100644 index 0000000..678a66a --- /dev/null +++ b/dialogs/editspritedialog.h @@ -0,0 +1,22 @@ +#pragma once + +#include + +#include + +namespace Ui { class EditSpriteDialog; } +struct Sprite; + +class EditSpriteDialog : public QDialog +{ + Q_OBJECT + +public: + explicit EditSpriteDialog(Sprite &sprite, QWidget *parent = nullptr); + ~EditSpriteDialog(); + +private: + const std::unique_ptr m_ui; + + Sprite &m_sprite; +}; diff --git a/dialogs/editspritedialog.ui b/dialogs/editspritedialog.ui new file mode 100644 index 0000000..99983df --- /dev/null +++ b/dialogs/editspritedialog.ui @@ -0,0 +1,206 @@ + + + EditSpriteDialog + + + + 0 + 0 + 491 + 500 + + + + Sprite Editor + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + &File + + + + + + + + + + + + + + + &Edit + + + + + &Transform + + + + + &Images + + + + + &Animation + + + + + + + + + + + + + QFrame::Panel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + + 16 + 16 + + + + false + + + + + + + + + + + + + + + + + + + + + + + + :/qtgameengine/icons/actions/new.png:/qtgameengine/icons/actions/new.png + + + &New... + + + + + + :/qtgameengine/icons/actions/open.png:/qtgameengine/icons/actions/open.png + + + &Create from file... + + + + + + :/qtgameengine/icons/actions/create-group.png:/qtgameengine/icons/actions/create-group.png + + + &Add from file... + + + + + &Save as PNG File... + + + + + Create from Strip... + + + + + Add from Stri&p... + + + + + + :/qtgameengine/icons/actions/ok.png:/qtgameengine/icons/actions/ok.png + + + Close Saving Changes + + + + + + + + + actionCloseSavingChanges + triggered() + EditSpriteDialog + accept() + + + -1 + -1 + + + 245 + 249 + + + + + diff --git a/dialogs/extensionpackagesdialog.cpp b/dialogs/extensionpackagesdialog.cpp new file mode 100644 index 0000000..769d5e4 --- /dev/null +++ b/dialogs/extensionpackagesdialog.cpp @@ -0,0 +1,17 @@ +#include "extensionpackagesdialog.h" +#include "ui_extensionpackagesdialog.h" + +ExtensionPackagesDialog::ExtensionPackagesDialog(QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()} +{ + m_ui->setupUi(this); + setWindowFlags(windowFlags() + & ~Qt::Dialog + | Qt::Window + | Qt::WindowMinimizeButtonHint + | Qt::WindowMaximizeButtonHint + | Qt::WindowCloseButtonHint); +} + +ExtensionPackagesDialog::~ExtensionPackagesDialog() = default; diff --git a/dialogs/extensionpackagesdialog.h b/dialogs/extensionpackagesdialog.h new file mode 100644 index 0000000..28d09e4 --- /dev/null +++ b/dialogs/extensionpackagesdialog.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +#include + +namespace Ui { class ExtensionPackagesDialog; } + +class ExtensionPackagesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ExtensionPackagesDialog(QWidget *parent = nullptr); + ~ExtensionPackagesDialog(); + +private: + const std::unique_ptr m_ui; +}; diff --git a/dialogs/extensionpackagesdialog.ui b/dialogs/extensionpackagesdialog.ui new file mode 100644 index 0000000..ae35576 --- /dev/null +++ b/dialogs/extensionpackagesdialog.ui @@ -0,0 +1,212 @@ + + + ExtensionPackagesDialog + + + + 0 + 0 + 400 + 461 + + + + Extension Packages + + + + + + + + + + + + + ⬅️ + + + + + + + ➡️ + + + + + + + + + Used Packages: + + + + + + + + + + Available Packages: + + + + + + + + + Information + + + + + + + 75 + true + + + + Author: + + + + + + + + 75 + true + + + + Version: + + + + + + + + 75 + true + + + + Date: + + + + + + + + 75 + true + + + + License: + + + + + + + + 75 + true + + + + Description: + + + + + + + TextLabel + + + + + + + TextLabel + + + + + + + TextLabel + + + + + + + TextLabel + + + + + + + TextLabel + + + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Help|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + ExtensionPackagesDialog + accept() + + + 199 + 278 + + + 199 + 149 + + + + + buttonBox + rejected() + ExtensionPackagesDialog + reject() + + + 199 + 278 + + + 199 + 149 + + + + + diff --git a/dialogs/fontpropertiesdialog.cpp b/dialogs/fontpropertiesdialog.cpp new file mode 100644 index 0000000..4d51d19 --- /dev/null +++ b/dialogs/fontpropertiesdialog.cpp @@ -0,0 +1,144 @@ +#include "fontpropertiesdialog.h" +#include "ui_fontpropertiesdialog.h" + +#include +#include + +#include "projectcontainer.h" + +FontPropertiesDialog::FontPropertiesDialog(Font &font, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_font{font} +{ + m_ui->setupUi(this); + + setWindowTitle(tr("Font Properties: %0").arg(m_font.name)); + + m_ui->lineEditName->setText(m_font.name); + m_ui->fontComboBox->setCurrentFont(m_font.font); + m_ui->spinBoxSize->setValue(m_font.font.pointSize()); + m_ui->checkBoxBold->setChecked(m_font.font.bold()); + m_ui->checkBoxItalic->setChecked(m_font.font.italic()); + m_ui->spinBoxCharRangeFrom->setValue(m_font.range.from); + m_ui->spinBoxCharRangeTo->setValue(m_font.range.to); + + m_ui->labelPreview->setFont(currentFont()); + + connect(m_ui->pushButtonNormal, &QAbstractButton::pressed, + this, &FontPropertiesDialog::normalRange); + connect(m_ui->pushButtonDigits, &QAbstractButton::pressed, + this, &FontPropertiesDialog::digitsRange); + connect(m_ui->pushButtonAll, &QAbstractButton::pressed, + this, &FontPropertiesDialog::allRange); + connect(m_ui->pushButtonLetters, &QAbstractButton::pressed, + this, &FontPropertiesDialog::lettersRange); + + connect(m_ui->lineEditName, &QLineEdit::textChanged, + this, &FontPropertiesDialog::changed); + connect(m_ui->fontComboBox, &QFontComboBox::currentFontChanged, + this, &FontPropertiesDialog::changed); + connect(m_ui->spinBoxSize, &QSpinBox::valueChanged, + this, &FontPropertiesDialog::changed); + connect(m_ui->checkBoxBold, &QCheckBox::toggled, + this, &FontPropertiesDialog::changed); + connect(m_ui->checkBoxItalic, &QCheckBox::toggled, + this, &FontPropertiesDialog::changed); + connect(m_ui->spinBoxCharRangeFrom, &QSpinBox::valueChanged, + this, &FontPropertiesDialog::changed); + connect(m_ui->spinBoxCharRangeTo, &QSpinBox::valueChanged, + this, &FontPropertiesDialog::changed); +} + +FontPropertiesDialog::~FontPropertiesDialog() = default; + +void FontPropertiesDialog::accept() +{ + if (m_font.name != m_ui->lineEditName->text()) + { + QMessageBox::critical(this, tr("Not implemented"), tr("Changing the name is not yet implemented!")); + return; + } + + m_font.font = currentFont(); + m_font.range = { + .from = m_ui->spinBoxCharRangeFrom->value(), + .to = m_ui->spinBoxCharRangeTo->value(), + }; + + QDialog::accept(); +} + +void FontPropertiesDialog::reject() +{ + if (!m_unsavedChanges) + { + QDialog::reject(); + return; + } + + const auto result = QMessageBox::warning( + this, + tr("The Font has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + accept(); + return; + case QMessageBox::Discard: + QDialog::reject(); + return; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + } +} + +void FontPropertiesDialog::normalRange() +{ + m_ui->spinBoxCharRangeFrom->setValue(32); + m_ui->spinBoxCharRangeFrom->setValue(127); +} + +void FontPropertiesDialog::digitsRange() +{ + m_ui->spinBoxCharRangeFrom->setValue(48); + m_ui->spinBoxCharRangeFrom->setValue(57); +} + +void FontPropertiesDialog::allRange() +{ + m_ui->spinBoxCharRangeFrom->setValue(0); + m_ui->spinBoxCharRangeFrom->setValue(255); +} + +void FontPropertiesDialog::lettersRange() +{ + m_ui->spinBoxCharRangeFrom->setValue(65); + m_ui->spinBoxCharRangeFrom->setValue(122); +} + +void FontPropertiesDialog::changed() +{ + m_ui->labelPreview->setFont(currentFont()); + if (!m_unsavedChanges) + { + setWindowTitle(tr("Font Properties: %0*").arg(m_font.name)); + m_unsavedChanges = true; + } +} + +QFont FontPropertiesDialog::currentFont() const +{ + QFont font; + font.setFamily(m_ui->fontComboBox->currentFont().family()); + font.setPointSize(m_ui->spinBoxSize->value()); + font.setBold(m_ui->checkBoxBold->isChecked()); + font.setItalic(m_ui->checkBoxItalic->isChecked()); + return font; +} diff --git a/dialogs/fontpropertiesdialog.h b/dialogs/fontpropertiesdialog.h new file mode 100644 index 0000000..2943e9a --- /dev/null +++ b/dialogs/fontpropertiesdialog.h @@ -0,0 +1,37 @@ +#pragma once + +#include + +#include + +namespace Ui { class FontPropertiesDialog; } +struct Font; + +class FontPropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit FontPropertiesDialog(Font &font, QWidget *parent = nullptr); + ~FontPropertiesDialog(); + + void accept() override; + void reject() override; + +private slots: + void normalRange(); + void digitsRange(); + void allRange(); + void lettersRange(); + + void changed(); + +private: + QFont currentFont() const; + + const std::unique_ptr m_ui; + + Font &m_font; + + bool m_unsavedChanges{}; +}; diff --git a/dialogs/fontpropertiesdialog.ui b/dialogs/fontpropertiesdialog.ui new file mode 100644 index 0000000..02b45f5 --- /dev/null +++ b/dialogs/fontpropertiesdialog.ui @@ -0,0 +1,258 @@ + + + FontPropertiesDialog + + + + 0 + 0 + 338 + 451 + + + + Font Properties + + + + :/qtgameengine/icons/dialogs/font-file.png:/qtgameengine/icons/dialogs/font-file.png + + + + + + + + Name: + + + lineEditName + + + + + + + + + + Font: + + + fontComboBox + + + + + + + Size: + + + spinBoxSize + + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Minimum + + + + 20 + 40 + + + + + + + + + + + + Bold + + + + + + + Italic + + + + + + + + + Character Range + + + + + + till + + + + + + + 255 + + + 32 + + + + + + + 255 + + + 127 + + + + + + + Normal + + + + + + + Digits + + + + + + + All + + + + + + + Letters + + + + + + + + + + + 0 + 100 + + + + QFrame::StyledPanel + + + AaBbCcDd + + + Qt::AlignCenter + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + &OK + + + + :/qtgameengine/icons/buttons/ok.png:/qtgameengine/icons/buttons/ok.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + pushButtonOk + pressed() + FontPropertiesDialog + accept() + + + 168 + 428 + + + 168 + 225 + + + + + diff --git a/dialogs/gameinformationdialog.cpp b/dialogs/gameinformationdialog.cpp new file mode 100644 index 0000000..647cfe0 --- /dev/null +++ b/dialogs/gameinformationdialog.cpp @@ -0,0 +1,17 @@ +#include "gameinformationdialog.h" +#include "ui_gameinformationdialog.h" + +GameInformationDialog::GameInformationDialog(QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()} +{ + m_ui->setupUi(this); + setWindowFlags(windowFlags() + & ~Qt::Dialog + | Qt::Window + | Qt::WindowMinimizeButtonHint + | Qt::WindowMaximizeButtonHint + | Qt::WindowCloseButtonHint); +} + +GameInformationDialog::~GameInformationDialog() = default; diff --git a/dialogs/gameinformationdialog.h b/dialogs/gameinformationdialog.h new file mode 100644 index 0000000..9ef9ed8 --- /dev/null +++ b/dialogs/gameinformationdialog.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +#include + +namespace Ui { class GameInformationDialog; } + +class GameInformationDialog : public QDialog +{ + Q_OBJECT + +public: + explicit GameInformationDialog(QWidget *parent = nullptr); + ~GameInformationDialog(); + +private: + const std::unique_ptr m_ui; +}; diff --git a/dialogs/gameinformationdialog.ui b/dialogs/gameinformationdialog.ui new file mode 100644 index 0000000..8583a96 --- /dev/null +++ b/dialogs/gameinformationdialog.ui @@ -0,0 +1,19 @@ + + + GameInformationDialog + + + + 0 + 0 + 400 + 300 + + + + Game Information + + + + + diff --git a/dialogs/globalgamesettingsdialog.cpp b/dialogs/globalgamesettingsdialog.cpp new file mode 100644 index 0000000..8e275db --- /dev/null +++ b/dialogs/globalgamesettingsdialog.cpp @@ -0,0 +1,17 @@ +#include "globalgamesettingsdialog.h" +#include "ui_globalgamesettingsdialog.h" + +GlobalGameSettingsDialog::GlobalGameSettingsDialog(QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()} +{ + m_ui->setupUi(this); + setWindowFlags(windowFlags() + & ~Qt::Dialog + | Qt::Window + | Qt::WindowMinimizeButtonHint + | Qt::WindowMaximizeButtonHint + | Qt::WindowCloseButtonHint); +} + +GlobalGameSettingsDialog::~GlobalGameSettingsDialog() = default; diff --git a/dialogs/globalgamesettingsdialog.h b/dialogs/globalgamesettingsdialog.h new file mode 100644 index 0000000..22f86c4 --- /dev/null +++ b/dialogs/globalgamesettingsdialog.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +#include + +namespace Ui { class GlobalGameSettingsDialog; } + +class GlobalGameSettingsDialog : public QDialog +{ + Q_OBJECT + +public: + explicit GlobalGameSettingsDialog(QWidget *parent = nullptr); + ~GlobalGameSettingsDialog(); + +private: + const std::unique_ptr m_ui; +}; diff --git a/dialogs/globalgamesettingsdialog.ui b/dialogs/globalgamesettingsdialog.ui new file mode 100644 index 0000000..21e7b7b --- /dev/null +++ b/dialogs/globalgamesettingsdialog.ui @@ -0,0 +1,268 @@ + + + GlobalGameSettingsDialog + + + + 0 + 0 + 370 + 528 + + + + Global Game Settings + + + + + + 0 + + + + Graphics + + + + + + Start in full-screen mode + + + + + + + + + Scaling + + + + + + + + Fixed scale (in %) + + + + + + + 100 + + + 100 + + + + + + + + + Keep aspect ratio + + + + + + + Full scale + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Interpolate colors between pixels + + + + + + + + + Color outside the room region: + + + + + + + ... + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Allow the player to resize the game window + + + + + + + Let the game window always stay on top + + + + + + + Don't draw a border in windowed mode + + + + + + + Don't show the buttons in the window caption + + + + + + + Display the cursor + + + + + + + Freeze the game when the form loses focus + + + + + + + Disable screensavers and power saving actions + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + Resolution + + + + + Other + + + + + Loading + + + + + Errors + + + + + Info + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + GlobalGameSettingsDialog + accept() + + + 184 + 506 + + + 184 + 263 + + + + + buttonBox + rejected() + GlobalGameSettingsDialog + reject() + + + 184 + 506 + + + 184 + 263 + + + + + diff --git a/dialogs/pathpropertiesdialog.cpp b/dialogs/pathpropertiesdialog.cpp new file mode 100644 index 0000000..fbf3f98 --- /dev/null +++ b/dialogs/pathpropertiesdialog.cpp @@ -0,0 +1,92 @@ +#include "pathpropertiesdialog.h" +#include "ui_pathpropertiesdialog.h" + +#include +#include + +#include "projectcontainer.h" + +PathPropertiesDialog::PathPropertiesDialog(Path &path, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_path{path}, + m_labelX{new QLabel{tr("x: %0").arg(0)}}, + m_labelY{new QLabel{tr("y: %0").arg(0)}}, + m_labelArea{new QLabel{tr("Area: (%0,%1)->(%2,%3)").arg(0).arg(0).arg(0).arg(0)}} +{ + m_ui->setupUi(this); + + setWindowTitle(tr("Path Properties: %0").arg(m_path.name)); + + m_labelX->setFrameStyle(QFrame::Sunken); + m_ui->statusbar->addWidget(m_labelX, 1); + m_labelY->setFrameStyle(QFrame::Sunken); + m_ui->statusbar->addWidget(m_labelY, 1); + m_labelArea->setFrameStyle(QFrame::Sunken); + m_ui->statusbar->addWidget(m_labelArea, 4); + + { + auto frame = new QFrame{this}; + frame->setFrameStyle(QFrame::Sunken); + m_ui->statusbar->addPermanentWidget(frame, 2); + } + + m_ui->lineEditName->setText(m_path.name); + + connect(m_ui->lineEditName, &QLineEdit::textChanged, + this, &PathPropertiesDialog::changed); +} + +PathPropertiesDialog::~PathPropertiesDialog() = default; + +void PathPropertiesDialog::accept() +{ + if (m_path.name != m_ui->lineEditName->text()) + { + QMessageBox::critical(this, tr("Not implemented"), tr("Changing the name is not yet implemented!")); + return; + } + + // TODO + + QDialog::accept(); +} + +void PathPropertiesDialog::reject() +{ + if (!m_unsavedChanges) + { + QDialog::reject(); + return; + } + + const auto result = QMessageBox::warning( + this, + tr("The Path has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + accept(); + return; + case QMessageBox::Discard: + QDialog::reject(); + return; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + } +} + +void PathPropertiesDialog::changed() +{ + if (!m_unsavedChanges) + { + setWindowTitle(tr("Path Properties: %0*").arg(m_path.name)); + m_unsavedChanges = true; + } +} diff --git a/dialogs/pathpropertiesdialog.h b/dialogs/pathpropertiesdialog.h new file mode 100644 index 0000000..bbe8897 --- /dev/null +++ b/dialogs/pathpropertiesdialog.h @@ -0,0 +1,35 @@ +#pragma once + +#include + +#include + +class QLabel; +namespace Ui { class PathPropertiesDialog; } +struct Path; + +class PathPropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit PathPropertiesDialog(Path &path, QWidget *parent = nullptr); + ~PathPropertiesDialog(); + + void accept() override; + void reject() override; + +private slots: + void changed(); + +private: + const std::unique_ptr m_ui; + + Path &m_path; + + QLabel * const m_labelX; + QLabel * const m_labelY; + QLabel * const m_labelArea; + + bool m_unsavedChanges{}; +}; diff --git a/dialogs/pathpropertiesdialog.ui b/dialogs/pathpropertiesdialog.ui new file mode 100644 index 0000000..0daf26e --- /dev/null +++ b/dialogs/pathpropertiesdialog.ui @@ -0,0 +1,333 @@ + + + PathPropertiesDialog + + + + 0 + 0 + 728 + 449 + + + + Path Properties + + + + :/qtgameengine/icons/dialogs/path-file.png:/qtgameengine/icons/dialogs/path-file.png + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + QFrame::Panel + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + toolBar + + + false + + + + 16 + 16 + + + + + + + + + + + + + + + + + + + + + + Name: + + + lineEditName + + + + + + + + + + + + + 0 + 0 + + + + + + + + + + + + X: + + + + + + + + + + Y: + + + + + + + + + + sp: + + + + + + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + + Add + + + + + + + Insert + + + + + + + Delete + + + + + + + + + + + + + + + connection kind + + + + + + Straight lines + + + + + + + Smooth curves + + + + + + + + + + + + Precision: + + + + + + + + + + + + + + + + Closed + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + :/qtgameengine/icons/actions/ok.png:/qtgameengine/icons/actions/ok.png + + + OK + + + Close the form, saving the changes + + + + + + :/qtgameengine/icons/actions/undo.png:/qtgameengine/icons/actions/undo.png + + + Undo + + + Undo the last changes in the path + + + + + + :/qtgameengine/icons/actions/new.png:/qtgameengine/icons/actions/new.png + + + Clear + + + Clear the path + + + + + + + + + actionOk + triggered() + PathPropertiesDialog + accept() + + + -1 + -1 + + + 363 + 224 + + + + + diff --git a/dialogs/preferencesdialog.cpp b/dialogs/preferencesdialog.cpp new file mode 100644 index 0000000..d889813 --- /dev/null +++ b/dialogs/preferencesdialog.cpp @@ -0,0 +1,17 @@ +#include "preferencesdialog.h" +#include "ui_preferencesdialog.h" + +PreferencesDialog::PreferencesDialog(QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()} +{ + m_ui->setupUi(this); + setWindowFlags(windowFlags() + & ~Qt::Dialog + | Qt::Window + | Qt::WindowMinimizeButtonHint + | Qt::WindowMaximizeButtonHint + | Qt::WindowCloseButtonHint); +} + +PreferencesDialog::~PreferencesDialog() = default; diff --git a/dialogs/preferencesdialog.h b/dialogs/preferencesdialog.h new file mode 100644 index 0000000..e76862c --- /dev/null +++ b/dialogs/preferencesdialog.h @@ -0,0 +1,19 @@ +#pragma once + +#include + +#include + +namespace Ui { class PreferencesDialog; } + +class PreferencesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit PreferencesDialog(QWidget *parent = nullptr); + ~PreferencesDialog(); + +private: + const std::unique_ptr m_ui; +}; diff --git a/dialogs/preferencesdialog.ui b/dialogs/preferencesdialog.ui new file mode 100644 index 0000000..e412bb5 --- /dev/null +++ b/dialogs/preferencesdialog.ui @@ -0,0 +1,85 @@ + + + PreferencesDialog + + + + 0 + 0 + 400 + 300 + + + + Preferences + + + + + + + General + + + + + Forms + + + + + Scripts and Code + + + + + Editors + + + + + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + buttonBox + accepted() + PreferencesDialog + accept() + + + 199 + 278 + + + 199 + 149 + + + + + buttonBox + rejected() + PreferencesDialog + reject() + + + 199 + 278 + + + 199 + 149 + + + + + diff --git a/dialogs/scriptpropertiesdialog.cpp b/dialogs/scriptpropertiesdialog.cpp new file mode 100644 index 0000000..8efbc9c --- /dev/null +++ b/dialogs/scriptpropertiesdialog.cpp @@ -0,0 +1,158 @@ +#include "scriptpropertiesdialog.h" +#include "ui_scriptpropertiesdialog.h" + +#include +#include +#include +#include +#include +#include + +#include "projectcontainer.h" +#include "jshighlighter.h" + +ScriptPropertiesDialog::ScriptPropertiesDialog(Script &script, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_script{script}, + m_lineEditName{new QLineEdit{this}}, + m_labelPosition{new QLabel{this}} +{ + m_ui->setupUi(this); + + setWindowTitle(tr("Script Properties: %0").arg(m_script.name)); + + { + auto label = new QLabel{tr("Name:"), this}; + label->setBuddy(m_lineEditName); + m_ui->toolBar->addWidget(label); + } + m_lineEditName->setMaximumWidth(100); + m_ui->toolBar->addWidget(m_lineEditName); + + m_labelPosition->setFrameStyle(QFrame::Sunken); + m_ui->statusbar->addWidget(m_labelPosition); + + { + QFont font; + font.setFamily("Consolas"); + font.setFixedPitch(true); + font.setPointSize(10); + m_ui->codeEdit->setFont(font); + } + + new JSHighlighter{m_ui->codeEdit->document()}; + + m_lineEditName->setText(m_script.name); + m_ui->codeEdit->setPlainText(m_script.script); + + updatePosition(); + + connect(m_ui->actionLoad, &QAction::triggered, + this, &ScriptPropertiesDialog::load); + connect(m_ui->actionSave, &QAction::triggered, + this, &ScriptPropertiesDialog::save); + connect(m_ui->actionPrint, &QAction::triggered, + this, &ScriptPropertiesDialog::print); + + connect(m_lineEditName, &QLineEdit::textChanged, + this, &ScriptPropertiesDialog::changed); + connect(m_ui->codeEdit, &QPlainTextEdit::textChanged, + this, &ScriptPropertiesDialog::changed); + connect(m_ui->codeEdit, &QPlainTextEdit::textChanged, + this, &ScriptPropertiesDialog::updatePosition); + connect(m_ui->codeEdit, &QPlainTextEdit::cursorPositionChanged, + this, &ScriptPropertiesDialog::updatePosition); +} + +ScriptPropertiesDialog::~ScriptPropertiesDialog() = default; + +void ScriptPropertiesDialog::accept() +{ + if (m_script.name != m_lineEditName->text()) + { + QMessageBox::critical(this, tr("Not implemented"), tr("Changing the name is not yet implemented!")); + return; + } + + m_script.script = m_ui->codeEdit->toPlainText(); + + QDialog::accept(); +} + +void ScriptPropertiesDialog::reject() +{ + if (!m_unsavedChanges) + { + QDialog::reject(); + return; + } + + const auto result = QMessageBox::warning( + this, + tr("The Script has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + accept(); + return; + case QMessageBox::Discard: + QDialog::reject(); + return; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + } +} + +void ScriptPropertiesDialog::changed() +{ + if (!m_unsavedChanges) + { + setWindowTitle(tr("Script Properties: %0*").arg(m_script.name)); + m_unsavedChanges = true; + } +} + +void ScriptPropertiesDialog::load() +{ + +} + +void ScriptPropertiesDialog::save() +{ + +} + +void ScriptPropertiesDialog::print() +{ + +} + +void ScriptPropertiesDialog::updatePosition() +{ + auto cursor = m_ui->codeEdit->textCursor(); + auto position = cursor.position(); + cursor.movePosition(QTextCursor::StartOfLine); + position -= cursor.position() - 1; + + int lines = 1; + while (cursor.positionInBlock() > 0) + { + cursor.movePosition(QTextCursor::Up); + //lines++; + } + QTextBlock block = cursor.block().previous(); + while (block.isValid()) + { + lines += 1; //block.lineCount(); + block = block.previous(); + } + + m_labelPosition->setText(tr("%0/%1: %2").arg(lines).arg(m_ui->codeEdit->blockCount()).arg(position)); +} diff --git a/dialogs/scriptpropertiesdialog.h b/dialogs/scriptpropertiesdialog.h new file mode 100644 index 0000000..46c514a --- /dev/null +++ b/dialogs/scriptpropertiesdialog.h @@ -0,0 +1,42 @@ +#pragma once + +#include + +#include + +class QLineEdit; +class QLabel; +namespace Ui { class ScriptPropertiesDialog; } +struct Script; + +class ScriptPropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit ScriptPropertiesDialog(Script &script, QWidget *parent = nullptr); + ~ScriptPropertiesDialog(); + + void accept() override; + void reject() override; + +private slots: + void changed(); + + void load(); + void save(); + void print(); + + void updatePosition(); + +private: + const std::unique_ptr m_ui; + + Script &m_script; + + QLineEdit * const m_lineEditName; + + QLabel * const m_labelPosition; + + bool m_unsavedChanges{}; +}; diff --git a/dialogs/scriptpropertiesdialog.ui b/dialogs/scriptpropertiesdialog.ui new file mode 100644 index 0000000..0eac0e0 --- /dev/null +++ b/dialogs/scriptpropertiesdialog.ui @@ -0,0 +1,568 @@ + + + ScriptPropertiesDialog + + + + 0 + 0 + 540 + 497 + + + + Script Properties + + + + :/qtgameengine/icons/dialogs/script-file.png:/qtgameengine/icons/dialogs/script-file.png + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + toolBar + + + false + + + + 16 + 16 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + + + + + + + false + + + + + + Find + + + + + + true + + + + + + + Case Sensitive + + + + + + + Whole word only + + + + + + + + + First + + + + + + + Previous + + + + + + + Next + + + + + + + Last + + + + + + + + + + + + Replace + + + + + + true + + + + + + + + + First + + + + + + + Previous + + + + + + + Next + + + + + + + Last + + + + + + + + + Replace All + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + :/qtgameengine/icons/actions/ok.png:/qtgameengine/icons/actions/ok.png + + + OK + + + + + + :/qtgameengine/icons/actions/open.png:/qtgameengine/icons/actions/open.png + + + Load + + + Load the code from a text file + + + + + + :/qtgameengine/icons/actions/save.png:/qtgameengine/icons/actions/save.png + + + Save + + + Save the code to a text file + + + + + + :/qtgameengine/icons/actions/print.png:/qtgameengine/icons/actions/print.png + + + Print + + + Print the code + + + + + false + + + + :/qtgameengine/icons/actions/undo.png:/qtgameengine/icons/actions/undo.png + + + Undo + + + Undo the last change + + + + + false + + + + :/qtgameengine/icons/actions/redo.png:/qtgameengine/icons/actions/redo.png + + + Redo + + + Redo the last undo + + + + + false + + + + :/qtgameengine/icons/actions/cut.png:/qtgameengine/icons/actions/cut.png + + + Cut + + + Cut the selected text into clipboard + + + + + false + + + + :/qtgameengine/icons/actions/copy.png:/qtgameengine/icons/actions/copy.png + + + Copy + + + Copy the selected text to the clipboard + + + + + + :/qtgameengine/icons/actions/paste.png:/qtgameengine/icons/actions/paste.png + + + Paste + + + Paste the text from the clipboard + + + + + true + + + false + + + + :/qtgameengine/icons/actions/find.png:/qtgameengine/icons/actions/find.png + + + Find + + + Show the find and replace panel + + + + + true + + + true + + + + :/qtgameengine/icons/actions/check.png:/qtgameengine/icons/actions/check.png + + + Check + + + Check the script for syntax errors + + + + + + CodeEditorWidget + QPlainTextEdit +
codeeditorwidget.h
+
+
+ + + + + + actionOk + triggered() + ScriptPropertiesDialog + accept() + + + -1 + -1 + + + 269 + 248 + + + + + actionUndo + triggered() + codeEdit + undo() + + + -1 + -1 + + + 269 + 263 + + + + + actionRedo + triggered() + codeEdit + redo() + + + -1 + -1 + + + 269 + 263 + + + + + codeEdit + undoAvailable(bool) + actionUndo + setEnabled(bool) + + + 269 + 263 + + + -1 + -1 + + + + + codeEdit + redoAvailable(bool) + actionRedo + setEnabled(bool) + + + 269 + 263 + + + -1 + -1 + + + + + actionCut + triggered() + codeEdit + cut() + + + -1 + -1 + + + 269 + 263 + + + + + actionCopy + triggered() + codeEdit + copy() + + + -1 + -1 + + + 269 + 263 + + + + + actionPaste + triggered() + codeEdit + paste() + + + -1 + -1 + + + 269 + 263 + + + + + codeEdit + copyAvailable(bool) + actionCut + setEnabled(bool) + + + 269 + 263 + + + -1 + -1 + + + + + codeEdit + copyAvailable(bool) + actionCopy + setEnabled(bool) + + + 269 + 263 + + + -1 + -1 + + + + + actionFind + toggled(bool) + widgetSearch + setVisible(bool) + + + -1 + -1 + + + 499 + 263 + + + + +
diff --git a/dialogs/soundpropertiesdialog.cpp b/dialogs/soundpropertiesdialog.cpp new file mode 100644 index 0000000..8246c9e --- /dev/null +++ b/dialogs/soundpropertiesdialog.cpp @@ -0,0 +1,167 @@ +#include "soundpropertiesdialog.h" +#include "ui_soundpropertiesdialog.h" + +#include +#include +#include +#include + +#include "projectcontainer.h" + +SoundPropertiesDialog::SoundPropertiesDialog(Sound &sound, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_sound{sound} +{ + m_ui->setupUi(this); + + setWindowTitle(tr("Sound Properties: %0").arg(m_sound.name)); + + m_ui->lineEditName->setText(m_sound.name); + m_ui->labelFilename->setText(tr("Filename: %0").arg(QFileInfo{m_sound.path}.fileName())); + m_ui->radioButtonNormal->setChecked(m_sound.type == Sound::Type::Sound); + m_ui->radioButtonMusic->setChecked(m_sound.type == Sound::Type::Music); + m_ui->checkBoxChorus->setChecked(m_sound.effects.chorus); + m_ui->checkBoxFlanger->setChecked(m_sound.effects.flanger); + m_ui->checkBoxGargle->setChecked(m_sound.effects.gargle); + m_ui->checkBoxEcho->setChecked(m_sound.effects.echo); + m_ui->checkBoxReverb->setChecked(m_sound.effects.reverb); + m_ui->horizontalSliderVolume->setValue(m_sound.volume); + m_ui->horizontalSliderPan->setValue(m_sound.pan); + m_ui->checkBoxPreload->setChecked(m_sound.preload); + + connect(m_ui->pushButtonLoad, &QAbstractButton::pressed, + this, &SoundPropertiesDialog::loadSound); + connect(m_ui->pushButtonPlay, &QAbstractButton::pressed, + this, &SoundPropertiesDialog::playSound); + connect(m_ui->pushButtonStop, &QAbstractButton::pressed, + this, &SoundPropertiesDialog::stopSound); + connect(m_ui->pushButtonSave, &QAbstractButton::pressed, + this, &SoundPropertiesDialog::saveSound); + connect(m_ui->pushButtonEdit, &QAbstractButton::pressed, + this, &SoundPropertiesDialog::editSound); + + connect(m_ui->lineEditName, &QLineEdit::textChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->radioButtonNormal, &QRadioButton::toggled, + this, &SoundPropertiesDialog::changed); + connect(m_ui->radioButtonMusic, &QRadioButton::toggled, + this, &SoundPropertiesDialog::changed); + connect(m_ui->radioButton3D, &QRadioButton::toggled, + this, &SoundPropertiesDialog::changed); + connect(m_ui->radioButtonMultimedia, &QRadioButton::toggled, + this, &SoundPropertiesDialog::changed); + connect(m_ui->checkBoxChorus, &QCheckBox::stateChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->checkBoxFlanger, &QCheckBox::stateChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->checkBoxGargle, &QCheckBox::stateChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->checkBoxEcho, &QCheckBox::stateChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->checkBoxReverb, &QCheckBox::stateChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->horizontalSliderVolume, &QSlider::valueChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->horizontalSliderPan, &QSlider::valueChanged, + this, &SoundPropertiesDialog::changed); + connect(m_ui->checkBoxPreload, &QCheckBox::stateChanged, + this, &SoundPropertiesDialog::changed); +} + +SoundPropertiesDialog::~SoundPropertiesDialog() = default; + +void SoundPropertiesDialog::accept() +{ + if (m_sound.name != m_ui->lineEditName->text()) + { + QMessageBox::critical(this, tr("Not implemented"), tr("Changing the name is not yet implemented!")); + return; + } + + if (m_ui->radioButtonNormal->isChecked()) + m_sound.type = Sound::Type::Sound; + else if (m_ui->radioButtonMusic->isChecked()) + m_sound.type = Sound::Type::Music; + else + { + QMessageBox::critical(this, tr("Not implemented"), tr("This kind of sound is not yet supported!")); + return; + } + + m_sound.effects.chorus = m_ui->checkBoxChorus->isChecked(); + m_sound.effects.flanger = m_ui->checkBoxFlanger->isChecked(); + m_sound.effects.gargle = m_ui->checkBoxGargle->isChecked(); + m_sound.effects.echo = m_ui->checkBoxEcho->isChecked(); + m_sound.effects.reverb = m_ui->checkBoxReverb->isChecked(); + m_sound.volume = m_ui->horizontalSliderVolume->value(); + m_sound.pan = m_ui->horizontalSliderPan->value(); + + QDialog::accept(); +} + +void SoundPropertiesDialog::reject() +{ + if (!m_unsavedChanges) + { + QDialog::reject(); + return; + } + + const auto result = QMessageBox::warning( + this, + tr("The Sound has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + accept(); + return; + case QMessageBox::Discard: + QDialog::reject(); + return; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + } +} + +void SoundPropertiesDialog::loadSound() +{ + QFileDialog::getOpenFileName(this, tr("Open a Sound File...")); +} + +void SoundPropertiesDialog::playSound() +{ + m_soundEffect.setSource(QUrl::fromLocalFile(m_sound.path)); + m_soundEffect.stop(); + m_soundEffect.play(); +} + +void SoundPropertiesDialog::stopSound() +{ + m_soundEffect.stop(); +} + +void SoundPropertiesDialog::saveSound() +{ + QFileDialog::getSaveFileName(this, tr("Save a Sound File..."), m_sound.name + ".wav", tr("WAV Files (*.wav)")); +} + +void SoundPropertiesDialog::editSound() +{ + QMessageBox::critical(this, tr("Setup not complete"), tr("No valid external editor has been indicated for this type of sound. You can specify this editor in the Preferences.")); +} + +void SoundPropertiesDialog::changed() +{ + if (!m_unsavedChanges) + { + setWindowTitle(tr("Sound Properties: %0*").arg(m_sound.name)); + m_unsavedChanges = true; + } +} diff --git a/dialogs/soundpropertiesdialog.h b/dialogs/soundpropertiesdialog.h new file mode 100644 index 0000000..d263991 --- /dev/null +++ b/dialogs/soundpropertiesdialog.h @@ -0,0 +1,40 @@ +#pragma once + +#include +#include +#include + +#include + +namespace Ui { class SoundPropertiesDialog; } +struct Sound; + +class SoundPropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit SoundPropertiesDialog(Sound &sound, QWidget *parent = nullptr); + ~SoundPropertiesDialog(); + + void accept() override; + void reject() override; + +private slots: + void loadSound(); + void playSound(); + void stopSound(); + void saveSound(); + void editSound(); + + void changed(); + +private: + const std::unique_ptr m_ui; + + Sound &m_sound; + + bool m_unsavedChanges{}; + + QSoundEffect m_soundEffect; +}; diff --git a/dialogs/soundpropertiesdialog.ui b/dialogs/soundpropertiesdialog.ui new file mode 100644 index 0000000..f89088d --- /dev/null +++ b/dialogs/soundpropertiesdialog.ui @@ -0,0 +1,354 @@ + + + SoundPropertiesDialog + + + + 0 + 0 + 239 + 534 + + + + Sound Properties + + + + :/qtgameengine/icons/dialogs/sound-file.png:/qtgameengine/icons/dialogs/sound-file.png + + + + + + + + Name: + + + lineEditName + + + + + + + + + + + + + + &Load Sound + + + + :/qtgameengine/icons/actions/open.png:/qtgameengine/icons/actions/open.png + + + + + + + Play the sound + + + + + + + :/qtgameengine/icons/actions/run.png:/qtgameengine/icons/actions/run.png + + + + + + + Stop the sound + + + + + + + :/qtgameengine/icons/actions/exit.png:/qtgameengine/icons/actions/exit.png + + + + + + + + + Sa&ve Sound + + + + :/qtgameengine/icons/actions/save.png:/qtgameengine/icons/actions/save.png + + + + + + + Filename: + + + + + + + Kind + + + + + + Normal Sound + + + true + + + + + + + Background Music + + + + + + + 3D Sound + + + + + + + Use multimedia player + + + + + + + + + + Effects + + + + + + Flanger + + + + + + + Chorus + + + + + + + Gargle + + + + + + + Echo + + + + + + + Reverb + + + + + + + + + + + + Volume: + + + horizontalSliderVolume + + + + + + + 100 + + + 100 + + + Qt::Horizontal + + + + + + + Pan: + + + horizontalSliderPan + + + + + + + -100 + + + 100 + + + Qt::Horizontal + + + false + + + false + + + + + + + + + &Preload + + + true + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + &Edit Sound + + + + :/qtgameengine/icons/actions/sound.png:/qtgameengine/icons/actions/sound.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + &OK + + + + :/qtgameengine/icons/buttons/ok.png:/qtgameengine/icons/buttons/ok.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + pushButtonOk + pressed() + SoundPropertiesDialog + accept() + + + 119 + 534 + + + 119 + 279 + + + + + diff --git a/dialogs/spritepropertiesdialog.cpp b/dialogs/spritepropertiesdialog.cpp new file mode 100644 index 0000000..0d4e27a --- /dev/null +++ b/dialogs/spritepropertiesdialog.cpp @@ -0,0 +1,133 @@ +#include "spritepropertiesdialog.h" +#include "ui_spritepropertiesdialog.h" + +#include +#include +#include + +#include "projectcontainer.h" +#include "editspritedialog.h" + +SpritePropertiesDialog::SpritePropertiesDialog(Sprite &sprite, QWidget *parent) : + QDialog{parent}, + m_ui{std::make_unique()}, + m_sprite{sprite} +{ + m_ui->setupUi(this); + + setWindowTitle(tr("Sprite Properties: %0").arg(m_sprite.name)); + + m_ui->lineEditName->setText(m_sprite.name); + m_ui->labelWidth->setText(tr("Width: %0").arg(m_sprite.pixmaps.empty() ? tr("n/a") : QString::number(m_sprite.pixmaps.front().width()))); + m_ui->labelHeight->setText(tr("Height: %0").arg(m_sprite.pixmaps.empty() ? tr("n/a") : QString::number(m_sprite.pixmaps.front().height()))); + m_ui->labelSubimages->setText(tr("Number of subimages: %0").arg(m_sprite.pixmaps.size())); + m_ui->spinBoxOriginX->setValue(m_sprite.origin.x); + m_ui->spinBoxOriginY->setValue(m_sprite.origin.y); + m_ui->checkBoxPreciseCollisionChecking->setChecked(m_sprite.preciseCollisionChecking); + m_ui->checkBoxSeparateCollisionMasks->setChecked(m_sprite.separateCollisionMasks); + m_ui->labelPreview->setPixmap(m_sprite.pixmaps.empty() ? QPixmap{} : m_sprite.pixmaps.front()); + + connect(m_ui->pushButtonLoad, &QAbstractButton::pressed, + this, &SpritePropertiesDialog::loadSprite); + connect(m_ui->pushButtonSave, &QAbstractButton::pressed, + this, &SpritePropertiesDialog::saveSprite); + connect(m_ui->pushButtonEdit, &QAbstractButton::pressed, + this, &SpritePropertiesDialog::editSprite); + connect(m_ui->pushButtonCenterOrigin, &QAbstractButton::pressed, + this, &SpritePropertiesDialog::centerOrigin); + + connect(m_ui->lineEditName, &QLineEdit::textChanged, + this, &SpritePropertiesDialog::changed); + connect(m_ui->spinBoxOriginX, &QSpinBox::valueChanged, + this, &SpritePropertiesDialog::changed); + connect(m_ui->spinBoxOriginY, &QSpinBox::valueChanged, + this, &SpritePropertiesDialog::changed); + connect(m_ui->checkBoxPreciseCollisionChecking, &QCheckBox::stateChanged, + this, &SpritePropertiesDialog::changed); + connect(m_ui->checkBoxSeparateCollisionMasks, &QCheckBox::stateChanged, + this, &SpritePropertiesDialog::changed); +} + +SpritePropertiesDialog::~SpritePropertiesDialog() = default; + +void SpritePropertiesDialog::accept() +{ + if (m_sprite.name != m_ui->lineEditName->text()) + { + QMessageBox::critical(this, tr("Not implemented"), tr("Changing the name is not yet implemented!")); + return; + } + + m_sprite.origin.x = m_ui->spinBoxOriginX->value(); + m_sprite.origin.y = m_ui->spinBoxOriginY->value(); + m_sprite.preciseCollisionChecking = m_ui->checkBoxPreciseCollisionChecking->isChecked(); + m_sprite.separateCollisionMasks = m_ui->checkBoxSeparateCollisionMasks->isChecked(); + + QDialog::accept(); +} + +void SpritePropertiesDialog::reject() +{ + if (!m_unsavedChanges) + { + QDialog::reject(); + return; + } + + const auto result = QMessageBox::warning( + this, + tr("The Sprite has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + accept(); + return; + case QMessageBox::Discard: + QDialog::reject(); + return; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + } +} + +void SpritePropertiesDialog::loadSprite() +{ + QFileDialog::getOpenFileName(this, tr("Open a Sprite Image...")); +} + +void SpritePropertiesDialog::saveSprite() +{ + QFileDialog::getSaveFileName(this, tr("Save a Sprite Image..."), m_sprite.name + ".png", tr("PNG Files (*.png)")); +} + +void SpritePropertiesDialog::editSprite() +{ + EditSpriteDialog{m_sprite}.exec(); +} + +void SpritePropertiesDialog::centerOrigin() +{ + if (m_sprite.pixmaps.empty()) + { + qDebug() << "unexpected empty pixmaps"; + return; + } + + m_ui->spinBoxOriginX->setValue(m_sprite.pixmaps.front().width() / 2); + m_ui->spinBoxOriginY->setValue(m_sprite.pixmaps.front().height() / 2); +} + +void SpritePropertiesDialog::changed() +{ + if (!m_unsavedChanges) + { + setWindowTitle(tr("Sprite Properties: %0*").arg(m_sprite.name)); + m_unsavedChanges = true; + } +} diff --git a/dialogs/spritepropertiesdialog.h b/dialogs/spritepropertiesdialog.h new file mode 100644 index 0000000..f078d7b --- /dev/null +++ b/dialogs/spritepropertiesdialog.h @@ -0,0 +1,36 @@ +#pragma once + +#include +#include + +#include + +namespace Ui { class SpritePropertiesDialog; } +struct Sprite; + +class SpritePropertiesDialog : public QDialog +{ + Q_OBJECT + +public: + explicit SpritePropertiesDialog(Sprite &sprite, QWidget *parent = nullptr); + ~SpritePropertiesDialog(); + + void accept() override; + void reject() override; + +private slots: + void loadSprite(); + void saveSprite(); + void editSprite(); + void centerOrigin(); + + void changed(); + +private: + const std::unique_ptr m_ui; + + Sprite &m_sprite; + + bool m_unsavedChanges{}; +}; diff --git a/dialogs/spritepropertiesdialog.ui b/dialogs/spritepropertiesdialog.ui new file mode 100644 index 0000000..e5fb632 --- /dev/null +++ b/dialogs/spritepropertiesdialog.ui @@ -0,0 +1,360 @@ + + + SpritePropertiesDialog + + + + 0 + 0 + 560 + 344 + + + + Sprite Properties + + + + :/qtgameengine/icons/dialogs/sprite-file.png:/qtgameengine/icons/dialogs/sprite-file.png + + + + + + + + + + Name: + + + lineEditName + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + &Load Sprite + + + + :/qtgameengine/icons/actions/open.png:/qtgameengine/icons/actions/open.png + + + + + + + &Save Sprite + + + + :/qtgameengine/icons/actions/save.png:/qtgameengine/icons/actions/save.png + + + + + + + &Edit Sprite + + + + :/qtgameengine/icons/buttons/edit.png:/qtgameengine/icons/buttons/edit.png + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + Height: + + + + + + + Width: + + + + + + + + + Number of subimages: + + + + + + + Origin + + + + + + + + X: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + spinBoxOriginX + + + + + + + + + + Y: + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + spinBoxOriginY + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + &Center + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Ok + + + + :/qtgameengine/icons/buttons/ok.png:/qtgameengine/icons/buttons/ok.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Collision Checking + + + + + + &Precise collision checking + + + + + + + Separa&te Collision Masks + + + + + + + &Modify Mask + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + true + + + + + 0 + 0 + 124 + 324 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + + pushButtonOk + pressed() + SpritePropertiesDialog + accept() + + + 106 + 320 + + + 279 + 171 + + + + + diff --git a/futurecpp.h b/futurecpp.h new file mode 100644 index 0000000..b67578c --- /dev/null +++ b/futurecpp.h @@ -0,0 +1,30 @@ +#pragma once + +// system includes +#include +#include +#include + +// C++20 backports (until espressif finally updates their aged compiler suite) + +namespace std { +template +typename std::enable_if_t< + sizeof(To) == sizeof(From) && std::is_trivially_copyable_v && std::is_trivially_copyable_v, + To> +// constexpr support needs compiler magic +bit_cast(const From& src) noexcept +{ + static_assert(std::is_trivially_constructible_v, + "This implementation additionally requires destination type to be trivially constructible"); + + To dst; + std::memcpy(&dst, &src, sizeof(To)); + return dst; +} + +template {}>> +constexpr std::underlying_type_t to_underlying(EnumT e) noexcept { + return static_cast>(e); +} +} // namespace std diff --git a/icons/actions/background.png b/icons/actions/background.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9ca6b16ccda6351380ffbfc99f4f21ddc92b4a GIT binary patch literal 4689 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 literal 0 HcmV?d00001 diff --git a/icons/actions/check.png b/icons/actions/check.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ac85f90989598c07039dcdfe6fbf89d27bf673 GIT binary patch literal 2709 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 h%ygLn???SE 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 literal 0 HcmV?d00001 diff --git a/icons/actions/create-group.png b/icons/actions/create-group.png new file mode 100644 index 0000000000000000000000000000000000000000..5dc4d3cfd08e71f4dfc7826e73d45b9f5bfecfa5 GIT binary patch literal 5483 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEgnPbQgQ2Ubmp4a>!JUy*}Nc%p61{pxk! zt^b$HAFn!aRq@5$<@_S~^)F)I?)ICbG3~oC2mD2SG(MA zd)T-4?*&uNN)#6qR^C7M>fhhhd-JkImDtysN>?tsRy}vo^}MI73amH8T;?phpt2@V zvbU@F&F$?iVR|RtFj!svKUZw8O5o$y>mL7RI?&9nS$#X&uheh<*W9~Tw|+Ghtajgh z*J|6YZFM`YM_Xtm^*@U&+pvAdh1cK2qP>=~p4l+&JaX)-WIcV|W> z8eDs@qdF`^M`llDK}@IpA%>Cb((y{`;w~T-AeZR z>TCag__XioVup7oEOym@!w*23P&?R|3f zU*7$GXMZdcrB>%D^%uWx*cy2~E)p7sRcs*WK3gLQsL> z&#tXz61`quj*HFFTd;debOYh3>dfwd}!M=op#VNrrRi7auBFb&jvhOl?EWWfgXLENQXqa(q zabxMftqclYHV&VUF*7mVa9G7SLsF^fU_np*{w=-6?`!zK>FQcMp0W4%-Et152|q4d zyzjPPP;gQ*6McA_-{E4GbN1a+pKS!w1S$_d<8e>6b2usUb??WzgWIGIPjik~oye1H zGV9Q$1t)~k|L_!uIZEF#o&EjrPnVXK+@`$@4w_9$r=|p*DqbJyk-J-5pTk3w-$7XJ z5$~pHiEA6>-Y=Nt6A;Rlx^&}Z`GYq!<}~?nR67V%%HR7f!@NLYk2w#6pu>~c`r5;H zzaKik>Yq=Rzt!X3jT)y7)&8!Y(c?D5N84wa)b78EJ%I{NPim(NrSFxhJvNc8Lu1>n zgzP+fhBG{A>t?hrH9IBTxaVPFuE6u!_e*Cmo)L=*m*CxIc;n{L1dC%CK}k_z5`4!! zHqGl_rBUL-uuXM0xJO-di{Xk@6%Rl2WXy0ezE|F`;kO^t zwzswy8M1ZPY@N!?Fro75^fpcxPKPI->T`J*3|b`D9KW#3X{qk2Qx4M1*^>XR>=WrT zVp!un``<2?a~TgOFz)%_B%+`j-u;G=d5!6;nXXw?i@p^YOjZ!kSl{}{)i9{kP{6j# z!JxTS@lFQURn0s-7A6T1J28*BQnu2rLLE;gyuSTm7lVP@;jGxs7Aq5-3^NfHCM8iD zrUGV>7R59!vs8{n5mre}=hGPDh0j#P%glD-_@UJ4aN_$C5wj@g?8hbw72D%7JeU@m zDQr(TW8`|H>8ym1xcb(ZMGAN)DL&{xz#IB)AO^Tdl&4(j=^22=|%-E&HN zb}EW{X;Nu_r?>Ie{nhLO#*G^~qp$BeFfkySRVsG5xPnQOq|*YvzXz13i)Q4{Qe;p{ znz?h!w22qrxT;9KG+~nH5^tN)dHUzZU)M$Dt}6;|a^OwkXx#N*oMRm?W4k&t)6qTd zJOUh>r(W9R@`UeR(Y?izj9=d07CJO_vA+4e{989?c^gYzU=Uyyvysj8RO#tstY&2} zHZDGCqi&OUR-{Kg{@gD98$Po)T~&2C&$h0SXJyZ$T|r8PJbF9g{wSxceD>Uy@xaY| z@9@p-ue7=1<^LB)KC|u7 zt^&^aCdL0|GI`ki-K%xI``NJ{Y^y2_o=Yu^a@e`gEkX47`5Vp*fBx(}XTSA&$~FeB zxD>O5=&MSR+c%sEWEZ%6msxVv5i4ewFYZeixBmFa{HEju+w1U(yZp1fZ7)7z`m}YE z@sTN|r*Bp0`xHKtxyy0V$I!(5W9Pa4U$Y7oSr`sAoxGZVua3=Sn#s%Mk>-y!in<)w z)^qRkq2t%Je&`%wQJT(sVx?>GKdC2b-z>QrFL1vo;?M8v+Q8wYeCdIa^(f;b4Q!CR2&#OAzH>>TJI6CgCeyU{l z&Tcb1!;WsRHTT~6`3g9^KArTu*8P9L&0896f8Pr|+&Q=V$EBtJohGRW2ySuLeHFd-qIGumcMd(em}*n;{hE`3dRnfQd4YEihMiwxwJ-0koXrV~4V${I z{>|MYt_4D3UR%VLov2Puxhpv79K-A1))BA1CEUEH@b75+?J}3LNhb@QZ!>7HDd_5$ zB`@N}Eu93q6_og%u*eB|`*8pDdcZ}w0A zsmvbW!XVQB_rXp1+QT0Y^NXxpTda3Pca2xMI%Pw6xDF$!kx?By(RW;h`ocBayz{{Y7qe})yp$FKF<|LHTfuRXuS1g9~-Xoai0;X+g_tYfqNKFW+Yy zY9u;vnzb{}xqr)PDQ{1rM0O%ivW@1!Nl6RmJX!6zjAyDjZ{rNso4h>h857E+`(2&} z++D0N_2-RXKW>gb)@urPPOEd2Ef4$!dNbobpSE#_ z(f8I2Eaf9Sl2gEO*_hQ11IR51G#8$Di7EtahvE ztNQ{BACL9dYHW$uWrZG_UFY*?9BFx|=M`i7kn1TQBk~*7Zrpjene#Q2iI_W2j(3$5+$bO-$0S=kU^JR`xN#gr%X>@>@bbya5=EGHJPDR@7T zjHPbBIwxU~tCbMAO3(-xje) zygrxt_n&7r>$KP^(>J^Q`460Z)$qeHqibHm9~eFQd(BNT)f22$Ea-y+Z2zzdks8V-XFECNWA$`XVuQlPA*G4F0M6Nz?yJW{;o8$ zLT1NH38rZo@%}Z1=KiU}-B z`w*Ev|5=*X8J|OIjU5h(I-UNPad7J4>s+ej>x^+dvQb2CC`Q>4CxHf>P`O*_cEG#fMtN0vuXU+re`?DUMmDc3@GHc@2?%Gw`HySXy zPI{D)E*Sss()9_;R+f7mRy^HgwDQA=$KRc|8f}={B$B1b8IrE7u}N;;|LwVZKD^O> zk@oXU2&Ym&=E3P~*6V$i>HoWWY%YKPzgz16A51ejz;J`HK+xCGguf}dp?~|z#0?t$ z9EEcYOwEsHX9_v$pZ@r;UGC_W7ti!v{!E|2YQ32A-D;C@^44ExHXrx<_i1Hv`Mlq6=l@mSbIpDx z=fZ-M()T~-a6~PrQFMvnH)8Uh9T>j1cwUWjc=pU6k`3EeE#p)?%axL;w<}3wvOqXf z=jCt?#{b(T6CX22w{7i7N}L+rzwhJwY5ezouKs)XwElXT{}ZL9>Wvu~)SH+Y#BCUC z&o{9+Xf>Gx)NP#l;DlGBwV2z6W?A#ypO@q=ntex)zy5p!L%<}5rIMG{EWNyF`_fI< zTtj{wTl#YHa=zDp98*QsxW)c+D?b}6A<-03t}EtPU3gX}_s;+A8e#TVqI2RGd=0MH zdVDpntL_}R8g@T+p&h>#I6vXiS?s;WXJ6xY`4W>ar<95GZZ{Gezntxu^^`o;Z|88Yqu&}++ayp5b;WuLr&+*jnyTgAy@0YRN zFs*N0Szz7n)Gs^q%seK3&WkFz_UhZ_u=ie3CHrP>7vH~d(jUuE9lOa-?w&Q&{VFM% zFSCz-?r|%L`h!8wkB4NMIQKNIjA6CpZkYd9@_5U)OTS7!Uie%8^G^9TyI&`S<@c0$ zPutJNz>vT-U3A++r-z@O&i(k~`@biXpYzGvWz4VmafP}6|A%Jzob8jQc?HF85#M%s z(QmJNuWEI(zwdMP{O5BowsPL3Z)H>EB~{DBU%x)SZm$>Hoxi`m^lC0n%VA|L4Oqb3 z_5S{Z_sSj<7BaY;?mm1{{g?I4eA`b)*tZ+ZuE>*SXyi=HFk;xb$VtDeL&NQK$7^FWFiwFn_h(`Tb4D`|n7p>f7^jthjYcE-Cpf z$F-}!Or>29&+W>Z@%YoZ(~tN6xVHTNzs=w4e!kL;O?X$By?WQT!1C4ttHl2=~Mcc$CCq!@$6xTH+c}l9E`G zYL#4+npl#`U}Ruuple{NYh)5)U~Xk%WMyoiYhY$&VDLdk-~)<=-29Zxv`X9>8XZ^o zFfcHff^6`~Ois-!PG!g_DJihh*9Y5`S(cidpPQSXSFD#`l&+rxQBth$;~wCnZ=`3a zZ+&nJXrNLOWI%9!T1k0gQ7S`udAVL@UUqSEVnHfM-|TlbQVa|X{18Q@MaiiQd8PSf zsSzPYuN2JgFfcGEA*A9%gM46a0IRAf(JLq~F3`(MEt%MPTo*KG>gnp|vd$@?2>_Hs B=!O6Q literal 0 HcmV?d00001 diff --git a/icons/actions/create.png b/icons/actions/create.png new file mode 100644 index 0000000000000000000000000000000000000000..90fd9fd492537a8a0fe37f8684a7c9a29347aabd GIT binary patch literal 19806 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%0As^w>FQt@yLg9 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 literal 0 HcmV?d00001 diff --git a/icons/actions/cut.png b/icons/actions/cut.png new file mode 100644 index 0000000000000000000000000000000000000000..5598995a70448922858dd4a10b7a6cadec20a30e GIT binary patch literal 4331 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 literal 0 HcmV?d00001 diff --git a/icons/actions/debug.png b/icons/actions/debug.png new file mode 100644 index 0000000000000000000000000000000000000000..370c11d764278bc9435e24bd895d304ec7482e27 GIT binary patch literal 12548 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEJ@%hUe*k_(u_iEiLHC0K$ zeFqqWO-)T*W__*yzx(X}55ifMJ{>!k%(`^gf5pOG$7X-JGr#WNE%iD3pR4a#{^QT% z9Y3ueT0E)z`aQYy{l}w)_ilfYtCvr*zh2MwYtP2s@{hk=qThe~_qn2;z2xcl#(R<# z)${+H`QBEp@cy3U-eCF1`<6w0>R-C{{G{X6D{B68+wB&ae714_L0ik^r+z=0cjCUt zU16ibxwAHW{CVc_>(2f4|6*Rvm>qrZSNr~Z`!|36^}OaYPs-Oriz8*kP2|rDzCX

vQ|Tf1Bs;-(@4rzwG_wI?j9g{67v(Uthle^NZJS^KGQX>-Qhj```F+oA=-ApYN`#U;ps+f&B5aIp5N!)HT+>kNg&CygEZsu=|VNtIbC~ z_r2Z~XmLKb^ZuFrCw|w|Y43lUdA@<`vt&x#^V+R^d^yr@ww%q|eeShEnZfY~)0!F1 z?R>aLRz|xa^zH{G*9+_K>ivGTT>nFwj2`QIlj+8y+2@L1SKiyus_uV!={chrwkf~6 z_dk0d^XK*ZdtO$LqVv|AVZEWLJELvF<#;`2!QJ;4920(U{{4IVLsz90deqOfvTj>` zU$JV-{X3u7GtQSzygs|x?7VeD#+k*76OFDhADq0V-|VKk_4Ku>6IdIhg3Il8@G+UW zna^CpeNTOZqIZSK_LS30kC}Wo#VZ3r)a!Wr|Q%gua!$f!)=S?w0}l;Y z@7VLwLJNK~Us+~zz@p=>PDp^f|F^=rsn5KEcjgwJQP<({JS4VEA~{t{rY0$C-S(EQ zt#|*fE8V^2nNGL+k!{7d{m&~uxmnJXY_jp#p3NU;pZsZi{hsF3lT~Wa_U&-KnuGmw3 zm*eKuU2o51oi)<vwhN4nHb|^Q@@`3wI}A1^(57|rg5)Y_XIDS z@Y`^w_Vu^LakClp7B9-&J%9Jv9^dXySs&&1%=%xGc&A06Ys=m>4K_}*FLnhn`WTlQ z=QkgIzY!_qzrN=Ni)D3I-OVkv@(xnR6#GkF zoCv61W&bj4Dcj90`*h7iRtlX?SBz5N$>d%hZ9B_ZZ2_~3>bn^6&>5NwN~T=CduY+2 z37h*L8ur+INS*e>gg0{#B)#Y2jf;)>l(>HglVA?_2G?ZENh^ zd5ODSJ)If?5?6&^P|kj19pAO_lXuRZwpUa7KRYV^ZTNZfS&QNhR+B%%iiYkQ7jEe- zJh49DirZ6X#=!LGgQ|*WP6Y-ntd8@PC`_K7aXm`O-NaPB%%Z2UepzrTN5hlD@7j6w z9y&@*o4(TQ&81Xs$77ZccU8P}6fv5@?sM_*S6$KAqb9OGFC5-p^Q`*gUgC97rvJes zlLN~qmqx6xS}}Ku#GMlXHy*Nurp$8)lDzQ4Q1{K|`MZqn+k~uAckmU_ExK{mp(IsF ziD!|KLg31ayCUKc_79vn&2NITe%GS!CaaD4pQr1t3iseU z9aK1Bmh8@+5RFq6{F!fdDyl7?Zu|N16`jr4<1GtD;_vm2y*s7gEFYnJD;vNup~ebA57+m1bxea6o(RG}-e zvczwNP5s=WrHkKYWq;Te;J3(mu9*m1kN?cgSA~u!A8A{2Mux-hjpt>yxrM3|7{ZIy z`aXH|Z}DV$!Zhpb)Apc%lgoacFrJX0Tb#pCy(&;&QWay1WD*gry3Qje zpBa_9=8=xzk{QbPes9n`E9gD%?COk~;>?F354{%Hcz!E87jR<2kuM5!r=Cw=$W<}% zLe=YqaeosJbZ&n5uz*+Q%KMUbf8_wab?RMtPI5dvc6>PkeX`CA@A2{F@`PKJZnEmJ z(fYY`&Sv(NfAu65xjYMa?)B$rE%xHDfPV4kn z&YZ`119pEdU|DDV?xKovo1CaoRnelE3u+s@BE%NCJC~@iw+ebcWA=|&%+=p_SaYLG zi)MS&1@#$4{#UhKZ!Md(LR3$~X7ipuEA6KTpX`h`k!aV}tE2(KE?~H zW{SjbZ;P29#E>0zGsNI==d%^TAH%=cPQG<0SlDV)R{xr97n`MQ-teZ(SX-XXEh@5? z{l=ui6t}sGyw*q0uysiqTQB=zpg#5b>4j_5?b%G9Ou7|zQ)^S^lhSGVQcojY#iykS zOw(A^mUerU?U7lhf3owhUgUi##Jf{~Bjd{t5wiwUv8p!*L!?@T`4Xzy4;@Pvd@BAd z#qfB${li6l3pI+2WIMd=E7?rx?W5LoT z*8cS;o5HJhG;wsvNOiH9T%5AP;P*$9pu>TyuRnhEz{BtZv;MmWfuVc7yF_f3%krk! zd3Ighrsw}F?TKSphTO-c!AnwnZPfId*72Ox%YId}_Zq9sb}7-E=uIs=a!QJIy>6$A zR_(svon;gFDleXWFRxJGix76VYSup+{wV+SXMC(RbN!SnoV*TE5_9KOpV<_2#d00z z7N&LIAI)B<`*r=_+|((5oSv;wNDlDQ7E@{IXU#m`l=HIX)<&`Ky7JE?cgj|G^;~|t zNrHp5OJD1gvgCuHovg~IX0TWae|VxC{`K?47VcH6uhwq*tI2NmW|_2~=2>3xIqJ(4 z*Ou%mOS10d4+A(7XiT=<>0S^PLmu6>Vd9Yq#dhTI0DQwfdN~_iTR+T;Q!vycCas#%Wyh6jWOv|0TCTB(edW)m$6uyS`jx+2*T9PN z(#wd_nu2=mlV6^QrLf%iS732?szSN*hP_Lj4_UOeXvZB%F#Z3j@oH_zwMC|q{1ffJ z9Xcs`$^Yh@sW+bmi=4{5%zZa4^nGLcIW3PypZ$?~Q32QftJWWX*lK>`AR9_B$`qR&<87ResjnuI-T*`KPj3Yl#odwR3pp{bR|oO?FyIbFDMuFTOL2jtp(-cNYdeD?c{tq;;t;&*<| zTb-M`+EH^|Y3rSDCEQ}Jb2A?l7l*EPeJR0ue32MaN8WDX4ayd|i@v45FM&tcc(mzpSVcEAmsDT8`Im`pYX_W zI4M~1P5kP9)Luk`<&9(_F3U6!Wp)UCkjjpo3hSnrBsTF{mNg0d>c<_?mBhzx_bDLTlC9x``_Q& zoXveBqqlK9+?X5VS;%3#`yS8a1x8hG4?VH@R?d{ZHASVnOz!3T%knC*Dy4jVSCX2I zvn?~`Gd+EulBtuTWwP++ffPS4mT$d}-bkePm9sl<$g;C=9tS> zn{Oumy>tK8c2hV)(O6EBsz z{4eJ2zbi$v9t$12_-66d3Ef)`th&IbHq%`2it_&T`eDC2e%zTd?f2PBdmm>lw0ZI1 zi_q6Rg-v38g=HcwN9X>%T>4NrQAh4o^wH->%2p;Uj%)jHYj>t+#bNf)?EZg``au-Ug+KT$UgMq_ep>9<{U8--h1Gn0-K5R>U7cU&R>DTv-g!jO5q06liGO+v-yHe;&57e({l~o?Q}R=Os?KG5cu?2z-QN4P z-!-T2{QmN`x?gfwvq2%}+m{!n+i~nY@Mo2nN$>~O+cQ2I22OFjxvgb~%%vxn8~Pt@ z*JR(b?3n!C4Ik#&tk+cNoXDjozJ20UPsN!fmWwzVva7RfeJ;-Tt!KG1=ZQnAY>lFz z-F=f4wrZD*v+4ul?=HTu>2kreCw1?pSzJB4D7YhP#jzpBaM z;iMH+TZA+Yn10%L!}h)TrfF>(m`g9-+al&!{9%Y35Cn zEA(pgQfva%AM+<)HF28X=xO}ueL&AgT`OMAB#Wh84yWcSe9r#%-gbN0t>4El9^C)Q z^xdU*<+tDMul;+t@x=M8fAYd7%FfpH_N`}NU~J8Fb`J1#c7_cGF)&ojshw!+aX3Jv z)jxQtk|?`%hegVYri6tnIu?g5v)Je?;!dZe*KOy*DI8mk=^uU|dT z;%Ks0==1aI(hGW2>$%XiM_lgx<2}`U@9(m6^m1KZv(93{%WX6L)Q;rjh4SoGY7jWo zk?fN;%~0J_^T)O8wxz*$k5){pzd!%#@@KkiEG~~C(`J}`Wc&DKS#H5S^}Y?0)(FiP z?w?)a_{e>ow%qK_pU8+ zcld8sP=HFbDZyn+6?7K{Fx)%;Vs_Di1G*P>KRdg&wC^&zg7aptyA15@ z2QnsZx?X$l?q$pE_0>_Ie>2u=6s?Jq*nfk8fmbRsB%&n3*T*V3KUXg?B|j-uuOhdA z0R(L9D+&^mvr|hHl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZBspanW~5}trC?K(l4cd;;s!OMC?(BSDWjyMz)D}gyu4hm+*mKaC|%#s($Z4j zz)0W7NVg~@O}Dr*uOzWTH?LS3WCX+vm(=3qqRfJl%=|nBkeP`|`K2YcN=jS`3JOre zD{>2bec{IE6+=TIIX_pwBC$ZVR8Vx_yMZvb2eCAp#4bn3QCaW|EqSWRz!KaYmXOJm){b%|w6tV%6N|JIBqRKbGSf5j5_6DU z1u`lHWRzt}nqi8ek*-lnvYD<)N~)!9l9`#QuDM}yqKRd4O0ubm0obUNWGlD)qTIw1 zTcyn0#Pn4Cg1mIF1Sr6*90NRUm5lTtO2HxlIf*4{`9-<5NXi zoJ_Ekf&w_%S|uh!EGbSbON9id0!%77BQY;MHN{p5nxJ6fnOGt#*(lj0(KOjyH!aC5 zN!P@{B2CxA+|*Jx#UjZ(B{?}U#n9Xs>|gW!U_%O^81FmM)l zL>4nJa0`PlBg3pY5)2Fs>?NMQuI$ek*?EkWTJq<$F)%R5mbgZgIOper+RY5$=3Huu zLV0FMhC)b2ssgA<_dZ26kAZ=IiKmNWNX4zE(b451;Z=9n+Z>{O%pvEi+t zM6yoaq=}54ch`p9U-f#9K7Z)d*tVy?-u{K&zT^E$ zj71+>1e!WLyfl|yyTy_qG;xbgchW|Qr$v@mvbMTUXGoiNCTHU_364UJu0~5Im$uZ% zLk2urB3v_O&O8{MzqfU=y1!kJt^z{@!=vi?6^nj!%LbpHr6MFBHf`P9T?G%-)?dwL zc*QV_L54w(;q87oPF4?wZBu1s|F(Y7(9VQKf+6Xo&$5Cg7XO|v?%V9GTf@F?ol}+$DpY>GIlb{m z@p*Bt%3_n|_gkGdU!0Ior_p)CgYlw^mTB1%lYg7%Jeym!mB~W(MHKI@U0fFnQ!j0D zlka!=wr`S$oJE9&?=$sdXHzdf@!G5RU{}%tT{$aO7vYs5|2zsmrB{BKvT9A$+_O9y z;=AJ7*G+NEbwA>(yj5AK@>8X@QL(|?yP>mW%*B@mJiQvqxc2Gc1s%Mc5}wOH*T>4( z&q?V+&antk%;GHs7ePqtkNQP&)ce` zzh~O1KPmYeClqbA+;=f=)9sutMkTq9ClY=R3o9yoUTVg!W#AFm%pOp~P~u3eMrYm<5F{C*j4o4w^pHcyuY{aAOo?RJh`z{!oAj7tw!ezR$atX8lL zXjtEIK>Eh~W)tQ<=5-+pv_mV!!Mdj}<~y(tp#>i?XM zM70^#K^lAKsc#GpU#+mTX2UN2nguNjR2S_1F2%A#wqPq)oM!W_T+1Yho5y`$&z%0| zMdNfgcl99Q$w?C(B*{dSSfO&6PgBX5KYJWHB(N9LksNcpL z*;p3^t`lFVox0$rK%wHK$ze}UN*=EHmr$0o%D^sBZ>HMx*}ja|_r5>5QIK(Bgw@>Y z%>h;+7xs9EuS!_@mus>0ug!7{>qQvYnjLvIyj$tqz_@n7b*T$aMH6y+l@=V?acTE_ zb;Hk5X(hitCTYfbtN#pJ%=p&ga81+uZl*^sOTMk|5@zp?@?Y)68n8?KGeg05{|ZA+ z|6fOV!tQ)!>sMeiaY)z@6xX7+-a&u;gsXY3$CvEPUO$1IPc5i=-i%pZSKJ=``W-g; zoqG$P>Vw`(M^>wb`&Sn?ytcI4e4k0K!e3NQQ|`xu>^02%|7{BkeoF0%b6>oRtMa!P zPk5xI<7EGd79XOLp1e#yu72sn^B2>?GR$8I^~k3ly0d}x(c+nRq+1^?oV0pb=}xAg zb@93DSFJG=sqvTH$Hnl!X1yxI{<%|{m=9d+@mtGQ_*tyw@eE0!qjxXe_`gc@X8D2u zscxSs8IIa_S6yuiUGZb#vyNWQ6HAKopLn--t(*0%=;rh--{N_aO43h>vhUIbWcX#pL%sC}E>1J%xyvmE4zVDCFm?m^|(GE?P^`@^5uGpLF zn&af~G2r6W%W+&Q78Z)nP;O6sU)}gzR(d;ggmX4;d4fqw{q&=mW(U2uJ8s?8!TeHl zlKl8WMUOe!F?gD_J*1EnVT3bZJ8MH_qf|Q&WDOS1b34 z@)nFb!vC|K?c_tLiVymP!jOWVBeOogQ{?hUyMLyCZ&c78_w{Rj$QeBNQDysM-wJNmIDuYU{R;(-0SiCf zk+fnKP%vQO5aKy3zh=iSu61DwF{;7Krp}&rteAcA##;Sn$Gmo)-&}3; z56f{jvv4p3N_MB-yYcacws7C)C2^6Bap`%|>9yip_^xs7ves-nn4NI?)APKIEG%32 z?IhS(SU4w4Nl5!}Yu5JM=N3svHW^v_zJAGk$>zhSj57DkEcQHstJ+hGDy-+5hcHB^ z{mNffw$JG1t3NH_ryl4v99;ALSo8`x$um4$Y_e$q59DX)x%?gK%9;F>z15Phok*lt@WMj4ci&p2CIokqtV*X_%?t9cPTjk7J z7ISpn>L%B^6DOUgva>xpXKcPOH2xa}w%mH$)&QH((TOW6o@#XrNtSiF5GHel% zlWhBPPkNqG$X2HBr$k@0vI^!~|6D$`?z4FE(dG?HCI5Vuj&FY56uWljPHqL6^4bTb z`**Ucutv)NS@Z3<%=sS`msf4hzjugTX5B6YCU5yI6Bxbg@Gr&`5q zlkC!rwYN>5neNzC&3G)$(sS4T=hfPW4vHMOu;#n@q?!*6ZOd6UHts)sz4b+q0Lw0R z8K(x;#ue;Sm^TD9Xj-T{v@zT?b17o!P%lvx+xsuo=GQ-a-I(9`8fAa{Qj&|=rDB*{ z9`n6^yl(c_5BAa@UR}MK%_w#0waBU}`-)Gi{hS(@CLChdVc>W#)5754a6?REYD>rQ zonqa(u^sOAzXV?0|6ls;^!fbw{o6PeY*l62bt#tpUi_^#GmqWeP47;~yi0rct#-%v z!+iebp`{xWueN43xCt$osB)|G#;ces|K4nWuz3Hzl80};W`~R4d^v@24Pyqoc}cJJ zJ-f8FcgLiEJz8)5voiAhKJf|Le=e+DXduEe#r|6tWBYN3qwkl!VyuV|d*Z>Al)^GM zW6M^7-ZS$$BHZgMQ{R0FFP<*8<0@ancBb$AQFX#hCF_qj#ojOY#vUpEhWFP+kA-W} z?cX)+d%t~u+|`rjyLeao?K_+wP-?_;B7$d%r}Ocoxkode-0n~M_Hn!Te(Ta-mp_N! ztx7)1e(y`;>VwfgkEIEoxw}*Lb=uE;x`yXDI(J3-*PUlxW&NSxg&<2wyVUwudlIiU z-%B$LC{u>*xHPpC6@t`ZPlpgOpuC`3+;9W7CdZ zIB@E{K>6VV-@|GiuHyEP|M6i}^>fc(XB9avZBukJKH$;xdg6;uKRdo&Tz~i4M*e+2 z9`F3rdo-FMtoA{z@O^_EXU+?UUcbDTcj1|LbieW^aUZ#gr{VKdb(}(gV6dr zI~N8{|0QO?9Lmn1*&Y)6Ya`o%4GAfiCcG4}n&|Pm>dL>%p22eU>HluMyxA@OZ0B9g z-v^=>+TH(Tx6tqk(~P~{P1Bi7Qex$O+NADrt^a;Npmep|j61tl30Gc@*?#@x>}M_R zO&-e>HfOHLxD#vgbo>8Q>Erj~BCSe){n@DOg!80m@~F7!rZR^hWh=;)pIQBex2?<>s5Nve8-38 zsG9Y=4&sW`eU64+^@VR-CPgZh74OJ+D%3Pq?Y0G1=|* zrtJG}YtGxXSbbZauRm|6+4r|fCif>F%9|OfBJFz^mf16qJMu8Ts!EkGCy+^XARbu$_OJrS6n*a7?Oy zaV$mQkMHVtr{{V$2n9;)H0&tpy6#i_)alBfALg>pZ~T6~Z$@lf#E#1C!gu=DF{pav zve>QI#qsv`m+-j^i4_ywm_#}qo_!Ly$#ZL3=o#)vrzI>rCzOJt7-6iwS8P-#I zr>*$@cj0TrW`X9ZpGx%{x^}0Dud6cHULE@VyeG5L+$J571&=w)FA5aP&wTV_x3{@} zZOy~izq1OyuVdij_;4&}<(}CBwL9fjRXMP@xg|VtYn-@5@AkFc&4$1E--n)7@0(}) zzjSp>+_&F<_DSCP7UaOOL4Zf`q{H&{ukL=e+*9GK!?$<>dvDK&S*ben`(5qp_FuL5 zm%llFPV}t#{5$wZxwH&!vF8192|I0_$ zugi-x?-pnJBN_ff`cTtJfhDb9dd?Xr8f8ixRkD~^u;2X1Q-9u{yX$xE{4sxiO|hZD zj$6%11>ff}F+~Z5lrsl;bd(6WZDdKgv`gv8Bgx=D55u>f>bxJj>&w?$Z*P0^FFKgp z$*^{-fYXZ!Od>50XE<32a2W}*Pwf)eDRZ57XU#n$yPpd-mi=k=F5bLdOf0Wyw{XmF zN8=r9wGuuYWEAfUUN7~jYtvcN;;O18xieQ!XRZBqJM8g~>f-6mwmVKW=M_Y&Ib{1f zbvSI2HId5Rzw)|Yum77L$4fSEeZ8hA{eR`dS2H(1Kc~CsZHT;B^X*fPQQ6!M$JG@o zG7hO}Ca*ksvPE>`+owle!`EJms_Wk_C)Rvhi_wfh-NoUbf zJ2mXq)mObLIg)F(=O~{n)A31q%&woT;McHa;blMTTHl!ozu1?|Rr9@+Qn4hsDbv~d zvi+?iDNJVk$%nKp%s3|qxhOo?zEL%j-~P*u@9%2o|J%5`OHTXtB;Q+^e`i}3r!U$2 zynNsM``_nOf4kFqy3kVZ_|qLS(;xrO?daZFDX!qip}|-qB#pj*hBxxDj%C`v$bbVrQb&Y1e9{aqUr}@T%2Zyv=Z$^pqzN@U8=Qm?Ba~TsG zhwwG;3Lf8Vc1}6-zTDr1bJp_NBsf2~>8!aRX4}BL!C}XyN2*(_qqyV)yPWyFth$t!#vclMz{t+@S@KHC4L+6zc9opc z1M4F^nVvF*b}By>RN3NPafbD^u7LHk8HY<3%GXF4IPOTa{UC9nk7=s5ROYQum8WJ; zdnlk@^g&`;;%bNKEYq27%Ny;kH`*F|+H44Iis!9}toeR6=IhSc8Y_4N?dv8SxuD^o zdO`ES3eLUd=?`O#80^{Jcs_cn^6_nb0l(tu{vtD{lUr9G%=d3(*rD>}4(G2{zE_zJ zP7Xf8_Y2PFnyk6m^8ANp4Xdh1dAxJd2aA&r1DBj}2zao9b#HmBLd$2S9~X0`#@{{L&FKda|_gGnx@=in0G3=(lPXU(yi@x8t-cz>N-{^!+yMQ!(`8n zr5vT}-846G%Ku`yydjixuFxH|FFA~Ve@1@#t1ww#;ejLL_oqk9?`@vxI)AUEo#Zh; zHRGQ;+|@ZU`3ssRz2lqYtnR_nf41O|c;oYD%n8-sv=VebSX|H(aST1Kbj$3%Ph(_@ zpnsw@-?rTJC_X0>*B7_0?&y*|)ZUjYwJpneIqy7^FL&5}d0+nYS9^hDK;wF@9sD1v znd4@?yXo`ymGnmb`A57|>SpU#Z*@EVQFOZCu5Hav3iMBU3b4qq{Mt5$`Oq4MP3Nx& zeCQWi$GjpU$o;nN>%g@PZZ^Hiw~c2%PEZp%;W6pbyQ@38W!?DY-Hmguo^l8f{_xLt z!QOdiziLcq5Gr^36V9+-|H0Cqr?+n^_}VMM{@dVjj_kFdN{Z4gTFsY$^AG07YhjXX=KezU3Rgq~ddrWF8g~QA875>gnzR`Kave;9z za5?WEZz+v6nn!;w&{tnzwOY~Uxn_a;v41b$G?lEKvf|`Li*-uv4!*2uQAv_&Wp?5z zx>?5_-+0I(diSn|ql8sa(~P`onHLN-h86mpcKUzTwp8b8=x|j;e*3*W;QrpmEA8%v zN*8Yy-!R*jx-cv}cteii@v?sn!uo%Oytgw6^v#;Dm6tCcOpf><2I9ni^SjMQLfQ)I9EE713sCctP^)Hp9n-Js(+2SBE{+3{+D{ z5kK}+tfHGaF0B5g+pMs4s^9J@e%WXcbgKB-#$SO0H{Dkj#fo&))TJSr_5_RHwvuw<&*$&yd%lYaL9F(oTkZi2|f4R8Q8z)AF zH*984OAkrx<1$~m^{Ip*bF_InpB4MzZH7r3d0L*%of1|Zv8P0^*E`Jc-#Nw}W91H= zEi(`0%A7v5b{B_PSi!FM2JG|yTSn!iJ^la2$@MHN!vXI|4kiAUCa}Z0#0%xN^;*vP%_z7SH+h zL7DIEzl1~ICLjHO)uuG&%EA}+{>=)T1)|Ki1x1Frru>&kJ9VOd^OTuqXHDUl&OQBn z`|>SQns!<3F*UX5a$2*#|HZ_94xI@qmo@v|SkBx2>3dvDTQ?KKhFmEYHH9q!qN^1C z%-$Ta@=b{V)59XgJ9#m7^6MTY*(?;usZvA?sUwuQ6+M%~@KezOQktq+2i(sdQxjt1+gsOC;xjwur+edz+UW^zrn4}l_<5bM zc=$R}eMc>${PmodDjnSmr}HIbs|BUWXHRQQo>lp~Xr*3Oeyr1?1Bcyr+q<0(xp%7T zznH-8|3bahamOG1JT%YEbn^vHnaf8!RVQ53m{FE?@igb$rTVM|iVhkx?KXY4n4Yy^ za+2TghMSLeOCEGIIv(-e>%-3`)-CsMc+Grk@a>r3oGBAUr)8d6@@&?(@S3q@IgbEeFp!eXqIMHoxK}-wOAfr=TCCKT-oa1 zZXn6FtJP9uSyG|szqYJnY=5wa9#f;9yuh~!9vNgBr?9Jpfb$IiY z*<$h$|8@prS%aMmqa&IVPl<;I@7U3`@nGQ@ot8U}uiY-(|1qE8gFvvh{=s+wos^rt z-aCan_H2{4o^>wz?H#EJ(fnz%rMMdMlKA_AZx*n!@?P!X?eTR`c-_Lg;Qh~7rXPGi zwfDbymU>0mW8W`9Ka;83KP3ePhnVY4Z`vSx=jQ+2C!ezjS10tGIwrM;*R+SPFEJ~4 z?gqIp^Z)8G)L0kK{B&%YLWIZhv$8R)OXC0X`k9!%jyWHBKlst|7uTLvM6Yw<=~Xl- zZsT6&BYyXYq{QM)8^!XIWfwCqo-u1;aTE88NOOLUVx|we%l56F{NVf4A1`+-?RH~4 zrY*1VImGUI(bVr#L>A^mo#eLDZx7|y4Zr$8PQo$cm|d~?W1a8(g`ACFKmFc(t8UX*Th*f-XIEFU9h|)T z-ox;Awh!jlH!s;K=l@@_CGAPAmX8nn*_O%5A!hncxjVZi{tKQl%kHBT-;14cUuvfd z9Vq!I^ruzzXi09IuQt}7_KySZh}C!KxI zTy-*cN^Siw;&fSk&V=>$3ne=yr?1G0>{*^_s9ftjW7fK^N(T%5hJ3EZ5Eq9No{yXv zcjd)oF}yOlBj z{sj?^%H@-nE&jqEeDzkx?yZd%?=^CAbRB=Jm7iHzzjxKE^+z9nX8-W@lu$~e)Rd$D z)^lmTKfL8n>q3Ro?{6FkVmYJ#AI> z^bP0##=Cf%*`;f@I=1HvsIEQxBKy?ikjsT%d4sNAYuUZEbK*V5B~!9oi;KfI?7OGk zQjvf9YWVBje)Hy7H{^3PYOmb6^!Q)V$f!RJ!66Uyb@Y;sF8dnOd|<9<(Y;gCrzO-S z3R|}%{4QRf)V|pAqd&_7`L2Zd+Go`^KOc|3zxS%lx>`0pkKvjYlgiai2Y%CBjZcrfj=yoF*y+QS&HBkLi$ff>So}o}I`g^6UikZA9>dkCtp!`k z8RDabeb@T_sPbPlhu6`gSDkl?&~KZSM+N|fL0+ig;EE=Er=KrF`d%F}0W7A{uto2yj$ zO=sG=`RB4`{1%DOcKm(G>TGREfkc0G>xG_ENB$+dm^OFuW@~sYnXvr)v%TR{rcK!Q z*(}cK!u=O}Y3G#9v-2LD-MfFm_qFj!%Yr0MKBQr0rP^FY5LoWMP9g^I`!g#=Aync4jwA%3LTdOe#LIz?0%rz zI!?t%?jZk4r5j-!{O8r`j9SVra4&FY>~HYXU0dll_r>w+*UmJZ6!_FJeH-tFc(2O+ ziMOkltUJB__P3oX^Xla{^q=u}X^2Y@YDrua6twYSRo5fVmdvC(mDc+i;_A}GA3sj4 znV{8@YgcjO&a8e+|B9Z%JXRugAX881J?dRtt{y30$=^{%+Sx5r&m`gbUP``axrzx#W`*1YZSEd2ak4PLC&(SFUt+MH!IRY{6Z z-eY;t_xcAG)vKN>*2OU}+_N%0mp=RTlC3+wZFv6SfTQXp4Pj4PJ)X~=N6X~GW0k)7 z7unf9?=P2Ww_mgRvTfHTWnJyL9Y;?cb91-%P@Pa(I5wKBOUtia+Li_?%zYb+FxM zU|>)!ag8WRE=o--N!3kBEJXMgOP!ufv$m(u8~2Ak+GGLnU$d_L<5_3Oe2bh-29Zxv`VN3LtR6|5CcmqV(pauaIA)K#UF__W&P#BRxa?=zg1Im>VI^BM=HA9$RlRFfd4h+!&mnR#Ki= zl*&+EUaps!mtCBkSda>G+U$2WQVa|X!VpEJMaiiQ{uPz!sd);X$@zK3ZzR^eU|?WS qM@Ywq2Km6e3NkDotXek{q#9(P{(JLPrx_R+7(8A5T-G@yGywp@XxY;M literal 0 HcmV?d00001 diff --git a/icons/actions/duplicate.png b/icons/actions/duplicate.png new file mode 100644 index 0000000000000000000000000000000000000000..cd10056791510a244196b46d9b7c46c542248f92 GIT binary patch literal 1519 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4i*Lm28M*4p$rTROiAAEE({E-dXZ7^S%G6ZNFNx#`urn-fr0sgr;B4q#=WC6&*w$EiX5wdeonWv z=k*fLbwZ{dz8#xhuHq7!daFbB)h?l+IEGH&>ozReW*&POg!B(cU15!#U>dj}RMbVP zIokS$Qbk(Cjqlg?{eOP!y5+ryZ##|e*F2wXeE&wlS;g?0C@%L65jnC9BD!H2(-;gM z@QT0q$yCvAy=nXA-LgNl>>j^p^L3yH@YN{O8BZ$A_EOI*95x-oE_# zeci8L?FY~A@k(AO)gV^wFJJ%jX4LH`Q^gq)AAh^+`(u^&^zEM+71q@3sIJ&>ZQp`+ zO^c|YS+wu(Gv7XFudUBI znM))ZUM+n2x$R)jOF@&`2d1&>H=pBM@L2BRe82U44<`lpy;OPA`7nOL$)mjw?m6Fk z-_copWakuz;#2w&c1j(&Nz#4QpHDJxeJ{DOu-`&l@SEkaPnxS!s$3R2CjUvhrmSWn zkUuxE*^9qBq4IS6o6TOL{WD%Ld%mb#!|`}_yW)ab?q6b;o#yIw4Lqxy)^R~B=;ync zH+!GI5)9tlKBw^E2IXCXG3EU;E_LYCf11;HcxA>1?N|dN34=d}8~h_mC5|QUEV)?3 z*dn757MUz4chTQl@_3TXqcghh49$Igt6eLONH9-RoTd2R*DB$!Tp?RSmtstddyn37 zB`0nM-|k~mCa=7%?8m_KwUU1gtK;eWasS))c6vO#x=E_Vg5mIk7f-tL51(H7F>ZbS zo$5~xQl%9~OxSeN|EAl^xt(O-U?CWiT=@u+%j) z(lxLMF*LR^FtRc<)HN`-GBEJ|dH5|%14yM6L>GgRfuVt}fsw9}L5PvDm64g1p#?-k z`WstE6b-rgDVb@NPz{E-L1P+nfHmzkGcoSayY3Ub=)cQ#TC3=F~$ zMWsc_sSN%VmFcN@3ZBXNdBtxe*1ce0U{FU$$A<>_z`P1FEFY{|Hxr~9WT5_g^Hrxo O1-YlIpUXO@geCx-$b7>9 literal 0 HcmV?d00001 diff --git a/icons/actions/exit.png b/icons/actions/exit.png new file mode 100644 index 0000000000000000000000000000000000000000..6d63678ea0c67b4f2785f3359ff33eaf3f3d12be GIT binary patch literal 2973 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 RkL!Y(*`BU`F6*2UngCkeYGVKZ literal 0 HcmV?d00001 diff --git a/icons/actions/export-resources.png b/icons/actions/export-resources.png new file mode 100644 index 0000000000000000000000000000000000000000..b45e0e2c14da73f5e9d4a397e74e0b2e6cfa92b7 GIT binary patch literal 4098 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 literal 0 HcmV?d00001 diff --git a/icons/actions/extension-packages.png b/icons/actions/extension-packages.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff86296a591b72412f7aa831f43561ae6a12ddd GIT binary patch literal 4769 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 literal 0 HcmV?d00001 diff --git a/icons/actions/game-information.png b/icons/actions/game-information.png new file mode 100644 index 0000000000000000000000000000000000000000..d607b073c155e23eaef1d0a3973bda8a4fbe2499 GIT binary patch literal 5918 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 A!T5d-oLTeg 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 T>iF{*sI}_p>gTe~DWM4f!P(AS literal 0 HcmV?d00001 diff --git a/icons/actions/help.png b/icons/actions/help.png new file mode 100644 index 0000000000000000000000000000000000000000..0f3948c2c666b4b5b6eb00eac4c7430e22bec810 GIT binary patch literal 5402 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 literal 0 HcmV?d00001 diff --git a/icons/actions/import-resources.png b/icons/actions/import-resources.png new file mode 100644 index 0000000000000000000000000000000000000000..1d66975ae6712d52d5e208ac7e3284945d57eb1d GIT binary patch literal 4031 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 GGywpAUS%Z! literal 0 HcmV?d00001 diff --git a/icons/actions/new.png b/icons/actions/new.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e0380d7a6e2acc4b96d8e6ca4425522733b139 GIT binary patch literal 2830 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 literal 0 HcmV?d00001 diff --git a/icons/actions/object.png b/icons/actions/object.png new file mode 100644 index 0000000000000000000000000000000000000000..964384790e2ad432f508e76d4717e19dae30bc63 GIT binary patch literal 9629 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%0DIeEoa6}C!XbFK1^!3Zj%k|2Q_413- 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 Rt*=4-b5B=4mvv4FO#lZgUf%!! literal 0 HcmV?d00001 diff --git a/icons/actions/open.png b/icons/actions/open.png new file mode 100644 index 0000000000000000000000000000000000000000..8751d7763325db735a0d1182443bb398dbcd626e GIT binary patch literal 11545 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 NI-ah6F6*2UngH0(;wk_D literal 0 HcmV?d00001 diff --git a/icons/actions/path.png b/icons/actions/path.png new file mode 100644 index 0000000000000000000000000000000000000000..d4d16990d164d80f03116a1e1e06c981b07d1fc1 GIT binary patch literal 1049 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hE2CXIRes@3U{7fBf;yI%a1c zLzn$d384z7a@?7=&iVXuoBD^-f1EukzXLNOF1*_qnrep~{)_(-m$S6&&22?pr6r zw0PkUMnhloeU?n;rmARE&lS75;tQ{G!Ro>Z?>JnhaPJjktzF#2!SEyR0Z&VKbn|o3 z8#8>%f9Wyl)CSJ>_$^?=#1h8x%97PPHeu(2n;&;%wr;5S?xy;4nRk&JlR1~gEN#d6 zUmdFDYq%74dA(a+;!($R-ibp%h26sDFjI`_2gTwdkrmpO#cx?oGxklL!+4E#pV#Vq zYrZ+LyiEU;4kWXQC$R0{+w<+f^+R*NC7vQvzbmWWFxT#5$*8P4V1FxapzQ^Ki1UF`ZVi4PnbCcLrNy}7I~cD?t*5Qev} z{Tebao7{{%RQ7O6#Cn5PJs}p0)LZFQ*1Stqf9`D*NN#l1dAFibY9oi)PUnWpY<15+ zyj3f&(0w@N$@^K2g3P;Jd*a#-GtJ-fxTx`|P@M~ty6zDz_I{=tXPBQ9aqgM)Cw0B~ zzTbCWUrhM$^Jw0SQXvy2{pvT)J#tSQo;|NxwQ8T3s5f|f*j9T?U9d6o3;1NdD)Vn?c5hQA&EJ{K=rzk3CB;d9nTscD-~!Mylh-; zT%&rB=XrFh(;4pxbM5m3m0mnrapZa~b9(8!tqby)Is~=|c+I<8`Cu;luENIOauuHv zBM;xMEff13ziCTg?!lCoF}|6}E|HpPt{=p9MlCXI?BCYQETF1Hab+((#?QpZD)4tap;Q4rE<7p4Q zAG`MHZ&{h1AV1^qU%h|gCwS$Vtvxex4IVg^@P>BEPmWEn*<*dJ;2dMDw6uj!+rsUV z2QoHzg$X@x%e`I3xG_KBR_g(+8lD>FxE&H-df3;otg_a8XrHd%JnN%D_zGVI<1c3N zR|2NpiCn>Auwi=2{o_aeKT;CSWj_$hJlV}s)A)#h^Ogtl5=S4zi02y5Wnf@n@O1Ta JS?83{1OW0&&rbjV literal 0 HcmV?d00001 diff --git a/icons/actions/preferences.png b/icons/actions/preferences.png new file mode 100644 index 0000000000000000000000000000000000000000..a55ed51d09d12068bf08afcabb5e519b04eca806 GIT binary patch literal 6650 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hE2#J+?WO`~0?NFXKGJ!^^Fnzxn&m;<=a6 zWM2Mh|23-D?mcJu`%lUFf3@H9Z|(m(Il$}V{hgWV)lBKT_wpaOIq$&Dy!Xrn+tdrT z-Tuum=Pl=)w`mLgQao&ujmG+SmCzj!|JsPzU#Wvx2+o zFLmM;-gG?|eYM5s$jmd|hn6|)5PG`fg%h){^XFy#0Sl(I2{8FqocFuQn%2w7!27bv zL7~M#p`c6eRJ~h8IB(;m2e-N!-vt_#{N1)9ZqM95o2wfh>72M9%js})^~p}{Ez3ks zFy&QFvH$=1^ab(lhBl0BT*1K+RuN1(&H@(>UT_dzkbP)3SF6Lq&QqJe$6dDJTy^I) zlZ&enOUA$Z+zKKM83J`*KL~uUQU1Dc-n>=CMZ)d} z8jY{ZmtR`?;kct$fvAPh5}_RxTY?^zzTDf*`rs75OJr@Xw)5f66A|f8v~ItNcsb*d zf?xTsyCIzX4ZF+!&0w@n%aE$7HT82WI5;cnl(YNIk6#q0>0~HGNvp-PsoFZ0h+61P zkvVbOAhc}`FY9e)=U*kK-Ul_MT-$tq>K8SorRMK;1e6^xN$_hvXDYw?cvjw$^6(vZ zPpa4l@tEJbQO(En^zzChxdQ80Z+;ak*~gOe+elLM`X{r8KTAc_xsFT{-1p(AD^Kt9 zidX9Tg43k9#moc6?y;CQ=8LD#TD{3AuFsdRpPI2;Rb$V`fCIn# z0t!yfGB~|{-r)}(r6&9Bi?-(K#pKO?mN-W^UxRmhW1ZohX9sFMe|%9A*!@r=VZWFO ze?xusDpB<>jK@wLdA3x8v-{+l)2Z6cXQJ;pJZ{n|`;#Z{zD;gMu+TSmV*btopOcKEj3)&S{Lh*j%N#RA&UQ-~4V@)R}2%Y~NhO45I#a7OhZL zy?btN!t@V@f26i}|Jb-Rdw%|F50$M!J3X~me|;OUU%c#5rD&xV!~N+D%VIwNAzA^MnmB69T6V`po zSYC5-!(BV^a5u22;roUPm3kaUTwXzcw=|W?%G(xfZNT* z3;x$1+?x6$a!KJiR_%SC%xkj#N}LwEmC}AHNlW*9e&epc8<=OTYIwl-VeanZo!jfC z37QKTm^OVrpQ;tSWLwmRtd$2V?iD9~o_6ixt%)hegXhZJz2$*nk$foXSjg-wfzmDqN`6$FK zc5QK!6zlEy+WM>7NqWlyE9Oq~x!v3Jxb!%?lP5>iJY7wzc~LhmF)xnz*7I!BR5o4T z$ch)=4g~F7{C3s(#j(}d#!Jabe$*Q6c?YilJf)=_|8eP;B}r>I4p&OdYMQ9YKjov6Pe>J~S|g`;*`2Qj zbL&eipNHf>>;KQG_xDrHnrG4(9<3KxdycGM7PFN_XR?QPPieSIhvQkPA3PVhW*ApD ze)_@f(yBdif~2CPc5r~HjGWH|j#HVnVuy^cK5cSdWqIy+-p+=t@_8wr{pTKdd4*(64i<~&eK2ooe}2W!UsAH5|Je%m zDW4Ag4d!iNSo(9Ff5j?g)BmsfZwl$io?&>xD^d3)udBRFYu@?Y_^`HW#sA=r zda*TD8gJT9rYn9QW+@$3e#{a3UFBf^!@azH>C!yT&ri)hw{UUslytdUetWVT zTBqx}Wm$P?mBcbL?ppRUNF~5av8C5&8c29JG}0f&Mv-#2{UTU`U9jI9T-j<73Q=DX!Klg$YeUME6A&^ z`LsJjLSmss^!NAbyWa0MN!k8kq5eVD`Y`^LyaGRL4TJ*TwI1R-VaIq>`SPXKhJ=ci zsUP1P{Ca$U!~5#mlua`q6|abm-N5^T<(MC9!k%L5t;KB@z8w3qF)?b|Z5|%$l2YlI zol(not!wODDA&Spz06`uF89i1X(q9U4S4MtCOs*h?2=^oN^I)HF#Bnu3o7GeI)YC; zwWuo)=RK>-^Zk3!?HfLuv|QhJDvNMeE_uBvOR@>=Uk*`tDGM&^V+ogRkpXlvZj%`1-EzHDMJ#MlKhvUh4iG<;KMUf#%Z*~DSj6t3Wq>sJFW2lPKv_cdYMwXpj0B^&;r@cSML5=TmN ze)-9zpW9RBbJ@kbWKBlL#k;$IoE6V|_@i;{of7Fadn@Hs*0F!)I+%rHLuqDP?j<4LPz*@qnUCJyZBbNvE{dlYG@X|F?yIGvZQ<6>jhKf-5Uf>l`j># zdx67ck%;kPo7&&^H-At6{^@r;gZaHM*9Bh}C#+$&<@{!-v4>};`hq+5#^EoG^JmK3 zx^iN1xyVbqE4lgY;oA>+SDe|;B*VDr%q`Y^mJG?ai%e>hq%S_$b5QuP%N@_8!0y9; zAKaK1Uly~0N$lgRs9*j2x=L~$g=+5N-|w|)m()uupOi~S9u-bnDaBUpSM<+SeDUu} zecy(}Su9F|yW(%1QI7wo^mN|bKVQoqJhG4CdMJHx2S*4em$hx-{2IQLll($8VLSz? zP3iSB9+lshPu(zKZUtZ2yboV$X6L`Cs_d>=^pP!DDDsArNs)8jB9Fv`8Mkgl9V^mf z&YZg{YtP+qgPY0ZPzTtFg*HNa&iRK7)&OkHC}Zsfu>Up6WReHJ%1Q?xW%uzB4@ zW`>8YJ4%aZb*d&kIp&@@_x?LoS5w~0CKJ{*J0#3tYg?y0f#r}O+qd@*pU3}X+Pgdc zQLy=??8X!64*Rck*BAd*_$|a^%e2mT zvf88uwjl3Mui0nctoUA-^J(ex#NUbj_qYGDy3anv@A!{s<_UFmUB9x+g*V^&<=-Q? zVL3kb8yH-sm=Zkf0|A!qgW=%i^kq9^!m|Il5{Yc>C-etSXz_Zzt{VYS@z zUd#`Ba-N4F;KZSBmqYUNB{TvhB$lqSIvL?-WV2AP+iBaA_gt(V$6a^vEp9$+vTa+@ zrx$@yw{CYH6}tC|`QeIleaGiLxOrUuS+>08{MP9;0!gnwIBm;2v4^R-|8UCpo)h6L zH@G&HUze%-_SfY2uiUa%+U$J0t>+*6{Q7odb4BCXOxJ%~-=00s=Ka#wrDg2|p1Efx z@OXEvd-9~CydbdCwuRyPM$29Mg+;!|Sf05zefy@$$B#?i-fT_GVrjB^S~GKg&Ev3X zb9PVRjsKM`G52|AO&b543KqV*{EP3-+k5W!UY@?-!}{_wPtV;x_efSo^4IPECLf;o zRV;4WcUK$l`IYKt_D^MTcy^T8WZQg)>*8`RrJl}OExPw`YLy%BHKWsf8XPQ5C2Jxa zR|YJYF?&hoyBMyWo=y)1G#m|B_V0Ne7gt*<|NrCb`2sPeihmx(D}K=G$!ncxyZqHI z7A7g?$HhM%`m0oLmrXv}J3r~F?)C|5GM9dv_ixq2lgkuV*>j8h_-|oUUCf|X=6A8; zui2r4t#{Sc3{SZ>H45xaj+06F_0hqVYmGxgfJQ^y>^Wh)`Yde^-v$1A9Q}WC|NR2l z?DdiEHz#&{<2IPTlX=oVzIBi8u?Tc+*qW{P{oike)Z-6U<=4%w43F>D5$7~Gc`9`6 zvHX7B2&TVR?fAc0vp!hccU&~@q3a^6oj#3s3Z}XEOwirI)9-xbQ~iQTZ&p0{CS(8m zafO_cKnwf7kFz6oofdz;L-e}d!zV^lrs*xcQzpDb{G3d&iC7ke?BYk7n--b zgZKL%>(A?d8f=>2ev2=m_~1`Xf$npRuNqHSr~WHpa45_WP7Dkw>)ba_r*p!h7aqTk zDI}enz!}fAoy#^EZovSZ& zd8TpZvFLrWH9t6VW!nuR@0BW?{Z!g5DWiSaJW=U`U%Pg^nQletaXX=_S5u5Lr%YPn z&Q|&2{y+1_yN(^Zm-z0_`Szc$dZ#C^FuLh8>*B)1zIieaUa0jpN5|}9>kqutWD;A+ z+PpGKKQv5l(UR^9B}p44zJArbb^Ec2X}F{6|PkZJX{Xwl1x{8UK*oo&dd8ZQ`B@F)v(xJ zK^~=C>4hp2Gg?xVJdI|mNN_Ry`?!nwP>X-giwD#B&tx9iD78@L=xW)D>x>Of@4H)G z7xO$_bbNQQj*Y(8wl_vou4b;Bck)}9gF&gr^q6=5587YcSuVaS@q%2>h99f0>cs5o z`RP6FqD{Hn!w4R20f(J@>yjT^nXQUhq%~6|bh46Icd}H{FNV;SlFiX2iGQ!I-J%;S zVZX2ZUXsNZoAvgKYNj)I*k3(7=c&8l7g2XU{|(PBiM6qxO5qZdirdQmW2)RfMVrb$ z5^c*qzMTDkQt|otvrVnt9WKc;mNmY=pPGNBlUh?^#3(r~W z8!OJ7D^+>u(c*vqPxy>!o!Pf7$~aYH9TI0+X}mOCsvy)m!7Eg_*KJRb)JsGA*g6G2 z(~ncDm>RB%U-|r@f7WvbO@%M_7#O(9vy2};NZ)Lmsa7;;g6av;*kfE)D>-=lf3gY- z@f=>Tawq4)v?Ys*W-RiTUv(y>!^hdjeTvsPmH?+8cE5ZX0uH2#n=fvEX10@cvD_Sv z_XqgqM9xjvSZK%9}moAH2Cy`lV>+KSBad2 zvM9g7%+r^xIrrN>F^myzT(yARO^LzqG_!hErDO0?c3zHGaobBan5>_j)aIBhws>mR zW-g6g4Gr&Zwl_{nIC;v_YRi1)D-UiqZohiYh4p}(rt?eHGY3|^Yd-9;x%Xhn%w0!V zI#~Q=KRYEG{w^pklbtXt@~)TRmDg7Hc5`jccL~;9A1L(exVon5p*1@ewD#KP&TL=A z$MMn)T!>k?37*nLVkTGa8mH&XhW(&$rg#sq2QUsPfhe z7h1}?^!)Fij;z;ascQ8*wrvo2gOC0U2owXE$hA3#{W!W=%SHXh|e{D@VSuoJBE1o7{`#xvuIbw)+2nq1t91 z;}I9dp=eNY_;U1N?VT4)8yAN2$jw;Rxv)D^_Ik4|hxOHe33%vSw*GhBTW%wUw z%+r#lz{6~uuqgT&&)mcXnO08UueeFvvp#LK!O6<$^75Hi(sl;b-YTssZJDX`=Fj@P zDb+bFDPsEbzszG?pfRUrg2$)xEnO-FF)4=c^*b4z*zbOr7QWrV_-}Rcv%QH825B#P z8vIx9DVJ)P-e?!vkscax=33_)gD-E(1b_D}kT~Gox_@oKjn!h}>2K_smzc%)7yJts zSg1DT((>%ssSG}cwWqJ2(&g(MzOf;WlVe$(*IAFHJ}G9p4MwI@mMPZkt;`Kf%v{j$ z`3vKd)Beo<51z7rey_^Fw0>V2=Y|{m=dUflwWe;@{Yvu}F$%nIKF^eYXgjTeYjUCj zBg_4SqWl2YKW#m8Iq$yAP>l;RX;%N2zq>1D&;R+0|DT18qkpqwNCyqG|Fxfgh*?g0 z*2A+53=FCzt`Q~4MX8A;sk$kNC8-QX1_qY8hK9O^rXhxARt6SUCMLQD=2ivb88S*r3as??!FFYqr6%X+=H}-W>*W`v>*qj} z6zluA2l(h4=^5%%X8O-xS> zN=;0uEIgTN1DcG1C@L*VPG#^bEz8eIT;p&0k%5811R)V08sr0Wa(Q{VUS@KBo^Ez# nUb<)vctDnm{r-UW|LQ+3; literal 0 HcmV?d00001 diff --git a/icons/actions/print.png b/icons/actions/print.png new file mode 100644 index 0000000000000000000000000000000000000000..24bb842c388f671b8ca31079c1251b73c5cf3291 GIT binary patch literal 16690 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 literal 0 HcmV?d00001 diff --git a/icons/actions/publish-game.png b/icons/actions/publish-game.png new file mode 100644 index 0000000000000000000000000000000000000000..b040277635ba784d1dab29b32a0cb35241bd1114 GIT binary patch literal 7000 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hELqiJ#!!HH~hK3gm45bDP46hOx7_4S6Fo+k- z*%fHRz`($k4nJNUsNB#yF{oG9baS0>^ZaBf$98=N}0S z43dJLE{-7;x87D~PKdc)dawL_ZM6Pnyap6RA>@9*dU^vqSIxf zJ26S(c;S&HNhdoWpHQ9VrDg3m<%rjl6=!s&`ApTdT9y>-swN^RsKhxzfG2<<%^|66 zvq{ym-RUp?e!cyE@6U^W=dnFtV3B1ybIo*noPYTKy5}|D=e)0Zz9;X2a-Gdr_VxEZ zT>W2Ca^AhP_UYnXA08~c&#ImkzbwFRe_gKlulM!8!a`H?{r*o^U$)J+}@k-M66=g7rJ?N7Vz z?7j4&{G1(e-zL0%S#$ngJacg8shvsd-n|N`f3DpxaJh()VP#8S{YUw}lW!KeO9Y#F z986c6SNmnw?ULBw1s{IxcYM%!c-`w&@xP`zr>qQWe!Qz7Mx6Vo)V>ehyFCPc1bujL z@!qS#0r|&BU=;4O0uiM#suekL6s{a4nq@8so54)Kbe2v#y`1pR^ z|2-wOUL2vp4gvFj{CocIJPQMZRe9aJ%=w?=|4lvq-u?NibMxb;3J7qX5NNyR=+Gp{ zdcQ8uORBBz+1+&e?XRP5mYoe=Q2blJj!EGDpBw9PcVzxfV_|F;5eo8h@Zk9Pd9etS z69(0yl zJEIu1+WLW0!{=vt>}!?9Gxi-*wU~bPI|t`ERxMtBcKd6c4eUWhA75>K(8$lqaR2+_ z=Rv0uHJ`5k`|JArI@1RS*RtEy87p@2ol|Xc*fuBIN}nalo%3Auc}s<+4?A7XZYzAg zPUYhqw^tXY|4WMT`YEdUG*>(Jw=#2s;Wl%QruPNsautuJpRm;y8GawVlVJWa@*T%E1P)O~Lnn@Ag>EYSMGoNyKeUT-vUkovDZJG-v3YEFg)VG z-12wr=NV6?Zn+&K{l6rC z_=1RsV#o8!54G}+0yZxz<2J^vuMZELa^&i-l28VbZdZneMH=i`TW3A}{V%*p!C{BR za|M!60({FrQ@w{?b=B)j@?tI%{#HFL7lW=yHsm4^V z`z#;$TLn(95@%Fo=`m!9S&;voIm27!!^-#{JT-a?S80j3vIdK2bTJ(h2{<;ZJ4nFf za)ZF7D{LI44H<3r`~p81D+ClcYJTiv_gyG4|4eepswVkA_mX#1X6rMZi+*Z+X=-BD zo@+O6?zI2%kePYH>8BU2UvFQ!bm?>k84;(L8Y9I35!RL4Sn_ti4==3Bk@;@-AydGV zFEn(amX=6p^P&|2A*?=u2X7p$aqzgz!pW(b!p*=ppZ!4{!};$ADjSw8RJgm$acP4* z%a41X>p8<$Sp5B~?#Maod2EvWQjwrjk+IjW&s?VY>(?*43KkKr*7uA*mQJ0se9EB< zCN;0E?GH?^f1X+MN4R`J@>MGX*Tz+u0j9iNs~m$(HwdsSYck|=($rWuk#!2gE~kYn zMJ8mttzdZfdxI?d&!0kiXY>|DtUL5w_RH5Lg$olBZ%<>i`QO_fuwAC$Uz`Aghtr9Q z{QURVa?H9L8yi%glqFLJw##=Q4Ukr8*Qap8gtW9Q&iLLE*s%X8t?hA5`kuTyK27 zt3XzIUGm}YF<;iac2$c$E?%E0FSjdOyGfxzAgNNzWugPe&ttc?X8-@l-qkR3=1f;^-w zR>J@{$HO8M8m7oFia&@^nCW$h+oI-r<7=w|8R>PohqvnP=wm%+o3pdrTq=}(mG6i5 za#D>is~*gWzb1by;`V_94LkpAJ>7TIc;=aT3LIgvUC)XbWKKIJe>VHF_O0{Nx7!VC zznM0e$WDxL@Z$5}JIL%Ir!Xzx;|Kd6YG=G;yDmLynkF_uNT8{iP3Gj)+#i$czgpzX zZq6#y$l~$wZICQ9Fy&jOs<^W4NVKp=uAIy9X?9o6T3IB9vp9JDENA$0FO)GM@*3kg zOA*)3j;x#PjRH+=naQ)&K0NpTuUPb4y-|Td!6}s4gVBS}gK@1b-v&O7U2MLgvqK#d z16fR3`I(n8io`ZQW}KQNJ8vh;ijU7O&FaqbG|+9_S;O4?+WW^hd+CP9#SJEw4}z*0 z6*!nYIV=mVGFbFoe!Od)kJ{vvrTi=mr^`M*J%6uxx!ivdjm%aP)dek00ZdKL3@7?D zzK}jxwfkVmwKW1+!VGS+gIu^e8;U0|1c4Tp~+ZowRu`XeFCuF!_eEWvMWPy6+8h+ZfWjPJYszPm2YZ_PuZ3 z_`T1ZLy@D2VQZAHno#GjQ09QuS7p33wWe}idif>w;@4XFdCwbzq}B?weAp@fgCS7C zl-DIOK!kPGp#@o5Agh@};BRbZ38m{zo4xg15y@;@h?EaB1w1 zef`_EZOc%1GVtkT3}FrY`izfTvT?BiYlz|lrv?EoCIzWJ%blEm)u`bhkFpDid*zpiY$7&86*+W+!s`CaY z^DR2|aC-yqdhsq<-^&ghmHs!m9gAYcTb&qN1Xir-digSQ%hs(&88aC6d}nUB^7?Cp z*3?5Yjng-zpO;&5IrGffvx;;57O!2)yK2?Cj;f3q?|*N|-F;I>u=C%uvgE3Q z;2{N-Mm>pN)z*qG#q5XY?ww;G>~x?s_DYs%#I)9b|LQclnjRnTKWyS#Qc`l@d+pk& zwQ(Xw+DrlKueYvR)%VyUK!kOw7whHAmv8JU)oyER3(%UnVapblU^tl-ra_;UjEq`=`Gh-Ip{qKQm!wl{1`?I!o zy?d9JbAO-gR4-K~C9!VT%Kdv%+8TbuH0gCu`|$O&sqz%VAB{O-tP?a?r%iW0|2g5d zS(Ac8b+xrw?yZ)nwQVa`YVKIq?X|SYZ84*3;D#MLI_6rJhv^;tvxy;N*0XQlzJ2mh zJKUtukU8svjsC9(OP8wV+}k5*ez!!JLop&Irsc7P;L8=Oq^7zuXfHc;)kd$>ilb?T z&Z}L02M;<*v^8>z>phs6KJQ=~ue1Y4W1>Wci4-W?necwBkXadWiqGD7%j-=HJJzk{ z=i!+!bEYJRBFG8z=E-f@zWwmFTpeBAhgVhxOGru{To=20L*ZjLi8jXbpA%-KZ81*V z%eUAma7wqb!Yj6?)qQh5ceBa%7;f3Rb>a5y;%$iy#eF+>TJHIHOxmLMmq}WB`o;VA z`F$@xsFdqEs-$zeNr1_^?2W+IDBX>JW=&^Jcztc{k`S$}oQf|Rnb|)a;?_^d%;ao! zQoO_z8ygEUVcD`}O3z~V*V$TGSzWk&o7*)|VQI_r%0SI8Ht&^|PrLr@DU(*rtYuq| zWqBR>=fq(m#T&9ZRD_GQr@ucrEsd?ayW3;=WrkUQ0#}AiIQ>*%>5+xb?FQ!N?!1Q$ zF3f4}(q=j!v3P5gu4MmlLo>5BcDV`${e3@_)YQ~2+`HEop~H6AK%oElLkqr~+iqK< zTvvv4d1y}cQk?1I6dJ0dr+4Uk?TcM~AzGqSPkBEr-En!}`@@AY5z|tX5K5x^Vw~`OB9t zdn~`aL5F+ZbJxo^udR?enk2Y*@!}Iti#*gOd#DH*@G!R}y0mz5bbh-1dC!TTZi^X@ zNo>o#-IjZMo2&4P03OS}=BmAYUQ3z0G=(}@x{fNTsjF`+dmDA9^m^=x=bulc7`=G+ zj_rBOWs}~jd*`_ib}{Vv`|b9fZMmDWu4;L5C>9qNzj*uh=-u-By$csA%2*b$7#kZ$ zY)<2~cz)vf=Zx%Z=jv)}p2H36UUwW#nh@kBs&Xdt{AZ>1tJAo6B z_w%b$4-OnSaOlq;n?MoPuT`?GPK+x*BCKtR z4xynRuFaSgBqb?pq@R2?EaI|B#w@YWt_kW+mA7ZTaJ#e7=Ip7bMxTD#EL*;O;>i?& z?xPcY)Hc@tuX}T6r|`PhO7qVrCnhRRde-;&#I|kQR2dG2GG4fUKmJ_W<^U1aeeVx% z(h1QLz4E$LqOCDRtJPh;R;0VT+oJlL&avai3qL*a^zrvkzPqbbLQbwPVtz5-Ws}7- z8JC)9b)ODaP&s=c@v_N73qFmdE3Rf~h;T{B${xLPMdaD@=YsvmH|F2B1C=$eudjDk zn|$!e6BV7)OvyaGZp_OvovxQoIi0$x`un@@cWn0PFgOZm96o&b-owM~p~oavhG>1T z;qO{>z{D367(rfd?(diXey>`ePu8j>Mz4M4O3gE8&OF%pe4eua%SD}q7c&+tUd$XD z8~ftTn|Df{}mqu16(7rx*7Jt-l9 zVb?n4>8BsI+y7BKH_x^^I&UZIu654WORr>^&PXd}+g1KPZsVo1m$kPZwqkhuY302$iZYH)q7&*(xs|XPN#y9 zm+F~w=MHUJ)1h(LBOp}tV};Dd2%g;B+#L_wq%YjO*;!)Mdv$fV@?1anOSeDUfOY(YG zp02)RilF_AU3}*(FTFImb^G>2zvUONUuSpXh}r%#^~40}L;0<(!E*%|jzw&lHvMD( zcf~yR)0+Zx#FT~3Jpa7n`s)l6DG3=Fm)CB(T&+x-Zt85yzu&iTq2e6-`gt*>)_3mS z^*!~}D0XX>=()Mp?Gq;o-YLIdYf$blWH`}SO=C9)E_9XW}5gtCiq=Ev0ZMlmtW*pe|)?-?GOyVrHUAuQH zvsV23Q+cQCcJ7Ux#p-om7RxW(yEpdMwzJpQMlVk>nyJkkpf~+#E4O&j-Me=`)XLlc zzIlE_{(U=}Z#R-b&gql0?P_df%(=5e(7j)-_t2J$846fYV_wK;eS3#lcqxSK`VgALt zcT3y`T6t3Ho+Z_0=ZIY=@_nhJz+hotOPn&+gfN2`{LW4JlH%au}nik$> z@aOrnXG#UXfBg#35i5LffDx2^r==#Am5D74;&kHB=xW-WeqJs#^y}YJ21Sz4Di}m{yy%_jg8EpIy>h2(Km12 zEPcCS&fK}NE3Rg>_siS=`^PNEFd^t%Z*TA4-xW6he$OesYvQ|UkF1_p_l+%?!g5tF z6mM+nEx%XEE-Wlu@wnGqq2<6V)9efP@Avmgo4YM7{;6ZAvNwQJFT8SE>cLGqS6-KL zCHiGm`uq2#Z!T;-{_pSa%T68Z*G6xD_g=Eiv8}z`^9G;4ukXV{t=xgudonMptysl% z*#y)Ax_L7a)c%}*esPGFB1cn3Sb~Jx5%$yR9g3ZL`V)H$OG-)>EMLxETU#q3A>ojp zuYc?IZAOO8n>S0y%J$xR*v!uFb}Ol-CML~Da?^$l9~KEbIvE~cTUwQp!lLd!ujW6; zj=$e-e|$DOe_Gz&uh;IMO))xIV)ggLpFev()x9mSntSZS2ZOTr_hdU~Pq_N}Yt@ql zuXhDj^E^=Ml<7Y%*nj-uwQFKm|5n(@tvt0syJmh_#IqvHNvEIIossyxHfW^@^8=;l z>p2cwTyT70I_V(^hPEPh;611`}LPw4Fu)_50_SoxtSIF{xw$GV1 zZTsQV>`D*0iuYg4P~c!vne2Jw@yFG-G5gcXyY+zkcfJrx&O7_y2iv;>3w{S67E`{`arW($?1ZpLu3`s?tP-r9qu@ zEQ`}NMd;YAUG?g_&goNgtx8{Q+829uL0(D<%kh5s^4+_3oy(f_?bnqnA-Q#R`<8Fs zym@hmR^Yix69rE1h08Jxc$B4r+Kf!^d@Rt~BD3LxcK$=ICWdXf?m-rF{>@s}8MLw` z$E-WYOglX-%_BZue%Z2RpO*X2|Cg+IB$(mfpRL#9RzE4)sr{=gl;O$eN(P680TX8W zq!r%XReHQh!D7<+=i)W@^RrE)G&PrswV5}p_*xn(KGTQIQNTq>LuLPmikA$gBCd%h zExaL1gB*9pxNVGZv73MV$Pt!%wclgcU(DDOtu^)EkCwYxsKAMcZ$J!j_3hvjz) z+0)X}*1fpR{_o+F6DK(OWUZeuRJ@)%|Id>ZuXo*_8uV`FoH=`pXP8e+Pp`r21r})WR7Cl*1 z_Wr~~<@c}8w|^@A={wtO;=XOD4G? z*T2p;JmzNkd~>JEqK}un^*I?Nq@)hrxN(Dh(_iQRdmYl#)qnl|J@wnSZxV`2m>u{V z>=a$}pYLfezNfl0hrdZdwI$$Uj}w!^f+@dxHnJ_qO;$r!(z1QD{CtH`jQRrH9p~UKJ&h4-zQ+l?^tu36%(c~cDv}4t(JKJ*eBE|ew zgg%`$zrQCg?ce|7|BL(ob9M`Ftb6zA(ryL@2GtVRh?3-@)Wnih-IT+l3=HWYC;4P1r{)!>GGvsL6jLxvqhkm4QL1nAsl&1_oh}8-w#pi;`0r{3|NcQ}Yx&lk@Y6-$<-`!N9x z?z48yX;yO4 z?UkE8JH;i5IX9hIwV`9;gh1O+eGSzE!#~3vfn3Rq*ysxNvXr4Fu-t7DzwIA=~CvN@i z^p$5iTf@&=936^59Gffa{?5~%CA~fNd#cRm{uO1h930cR7+6IN6DG;5TGXmm_xs-N zIj_z0{|LMM$Upr=7U$I@f<>GwVs{a%EKlyIE8=iDO`T5dU>EQi6dwv?IbVD-)%KawYzrpO$qyz> z;huN+#{mQXKR;f6%J~1lUh&iUj*uJGc>;d?4)6UqlnZ?L!}dRUW)%PK<<6wrrPtS< zUmsbo>SyQvq9PUEU-fdM${Ka#d z=B+#PQ2DTVxOeepiJPap;!dBq$IX!N`>(B(^}8LFSKD5%d$u@vbI;k33$rqU_3uOqyt~4^UOemB z+SvD;O3N;CztV{pjz1kXRXaS!ao<+e`X47A^sRW)|8Um)%{9Lzog<_i-urdvuK2es zT%+dqH|xB2?_zc~m9wjBwj28SzS(22eBGzcrO%HpKeTimosoNVA3FZ+i{1Z&HMXR`8z+}3VnV3!@CD6 ziEAv>av$`}v^R^`a*x|@!xtu#%pZKm7Ptinu2DIza#iXm>+9>MG&D}NncBMKE&G}A z{{r9Z-+xn#2h?tH?3N*>*U$z_3zt!r6o1OW_)#)Nxt;)l~APE zDbv$eHz|cAds}WfbF(8-J4A3z;f7-kj~kdDF&tA^`Sq%nRJ2K-Vqf8!qoLk>-m974 zuDdX|_{GVcThe*ppEIL{$aGde5lXw0k#e$;PNec}YtXjbp zaggb1#K&ZB!>*V8$}!oQMjLcqZ`h`KSbX0F@4~ESuln!T{Epu7Zm+}tnbi$f^-iX} zzgO^8sx7^y>BJ)`Pn|VaWG`oD6{++*6-T5_F>z!NMzL~N0 zO_k!v{-4Z^(HqzbB z>XXQ-`d*KZCDX2pGwA48=e~TCli%OttlIHRds&e7tEBvZ8Ef4{nrE!yy3%4EvX5`Z zwOIenQQaLX*VHZ7|KIa*-xjr1B~NVD>btZ%<&8d5BX|H$J+KDl9o*zB_v1xn6Y^M#M-#e8u zPH@V;mKePHw6*@8V+(8Fzg6qo-*v*V$MWsjslv_&7&A|&*{lk*$^Y2mE7ah%R!AVy zJ5w)7kL}XMnBK)30unE(o(dE6RQFTTC@iW!dwEUMttGk}%xvR#Y`myl%nG*xG zIawU8ELg<-Ie4w`Jf{_NpUXZx*2mL+|HkRvyYE*`SNOrb=5F`%xgWPhDL34ZI=QRz z{O1{bk6j;y3SIACle$eR@an7|ZsNHc>Y87$mix!ton#fpw7YDt*k`kk48BLBvrkIx z*rOX#MeigpI>;3y>J72E(CgRV-xO!En^l=IQpzrYw6Rvp9z<7;=)Ha z-wViPcwj2pwBb=d>s5yJkntaMri`OcE@D zM?H%AC$i+#Op-ekm>QhkcgbD;@0q7}6kb`h@qv`{HPa_XdTT5Dm#y(W=Nr~I=hhnj6BT@}*%kX= zB>Puv3w-*kPsZ`TU|jXHqmK`kyv(k6S1;uDTxFl2!~MlCT{b_;}=Q^k==((ZwYxJnMQnpLb1h>+c7N|7Pgx&CC>Ex z{lp?{RpFdtRcjB%%RJVaHm#~Ii~pQkyM z-zso}&SR-21GPWWV)yE7D%0Qltzesd-*Zc5!RAnC%Unt9v)pVa2`R`?I?8oXH zWa{~q<(pmheEu7J)tMnM`y$7csB7DvzWC_9=gX6IudZA;q1<7^^5c21&72*k*S>3P z`sl^`=hf?AVb}eu9|+zy*(ZI)`&O;$;j7cuoc<;ArZV;Xl@Avu<}dhVD)X7~_kQ`0 zpM$&N9kM3>{C}$Hc-HI9zgNaSbou`vx#JJBQt|WXKS>NKUpOD%RaQREzg?>Pxz5I{ zuxt(!&i1dem3BWLBwJh6ykYOKX-i)9S+8!_qss=bPVSC*+P3H48Sb(-7u4;YeyAy3 z7I*qHi9w+8;bUgu;HC4AE!DjB>E5OCWy;(3q-ShnbnoNgOM1(1_-swm6|IsqS+i$T zY|rn_Y3GxvWBOrr;z+B|ev^iM?h|=eud$E*dGg1Jjh$0<RF7jAu zvYq|mgO`5J)4luxmcIWP{&n(qd%tI2465wD{XfUU@N&l;{$G83z5DOTgl3$qQm=I= zKDX4wm^-jU;JD`exkc{UbyNS>Jrm{ITl}DMO)WzrL-E7%_tWc|IpWe^$83zKdUNB! zi7T(Jone|G9CWNOEBN`V$m@p;Lr(4Ek$ZE0?a4X+F3j}HKCj=f&zvosA&(WO`WEvH* zn?35Yq>*Fm!h;jPH_lf|l6-0XSE}dB)lGBt z=9VY3{;AIK`^zoZu(7t_t*n%Y_wT&!ie$2(f*cWLtKPneRPVeh6Ffa&G>YIOL#)Hl5 z3>R+78HJafmy_3i*S$F5w5hiBwXnH7m+MaKN?pq%E1So)`f9p>r1kClZ(=Sntf=$3 zQ)7Epd$-y#w*I}Tiy!RjJ$?IHYhGB?tWRhBe9h1L_{kqQA-!hLOK~Nhb360`&)`v0zv*IXZeJMzYjyO&i9MP?styeN=8|HzCFn>iU4{NQ`&VZ0{R&eAxn zrZg!lEwcOc*6@;TyWQE`q8}^Nh$Xw(?`B|Fbl6}A`?UP|E2o{Zm!3OEGwj(jv#HOt zPA|S8=kjE0e9OHDZy2v!`f>Zh)}>Ot;`e9tJldzRO`1V`;`4?dLF@(p{+aLiY8P>j z^YPKC9a|XXnW_xc&8A;|T4Fi3@Rz+N)2|=3wsvP27#LJbTq8)Xf(EU|?V{1=-+} znVgzeoXU_vn(|^KQ}i&uUId?C|y4XqNG^g$34JD-$>6;-}>Md2?hoR zNss}-`DrEPiAAXl<>lpinR(g8$%zH2Abqpn*+?-kFz`bZl@=wZGUS!!m!(F87`;+3 uyTic1poEZ$4-N8xxdE)IqC~HtytqIwFSTT1=W$(7H{a9M&t;ucLK6VNQPzwA literal 0 HcmV?d00001 diff --git a/icons/actions/rename.png b/icons/actions/rename.png new file mode 100644 index 0000000000000000000000000000000000000000..42ff6dbc5f814b47be45c8d11ea678b051ff22dc GIT binary patch literal 1687 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEo>Prm>s*f)i$2XepB4fQl?Gi2KJdIuWx=m_vioTv!|@*AADF~A;Z^x7(zWZb>74~ zT|ZtCmZDTvNSTlQvrHOB8Y4a{IhdEN652+4?nW)(EvFz6*T(+wN)6%(Ts(yYDUw zS{a}LgO=GouhD<-jBVs&BJYPHSb zYSEVyw_|?%V#>}=T*t;B((QW4K&3C)=Df7+mF9)dJ_=1pbaXK|_TcxwC9~(9-+ddzTkoIKq2hUF>+9<`_SEMmIY0UG^1J3#ugcf6S8L`r@Nuu|+B!|e^Mg%( zP2%?11>f(*nwhI_KcY32D>}OLRrJ?H_i1n6=K9UG+M3PdF^MHR_g2fsdlMNAFTDEx zyJUClnyoH@E-OQ%-gB>8$5!+6X!w@-y4y9SSh6c$vn{y(TF_PSTGXz)dVlNW*)lg- z;__8q>#v^T1?hzva#{$JhHLEeTuQ8K1;o*nY~f_z)u67 z_@h@O0!1Pph_|iWn3MOxu=$9h|9m^!^55UyhFe@)vA zGC!~UU9ocKbJym{S4@qT&tQG7dinmII@8eXXPeJ%dEHdD>`E~2i7v^hPOJ2MGQF?g zOrE?m{@RK)f}34#N-nj3S`j!`k1OMsz0=Vt7gD<;Kix4Yc1uf1FQ3-%=Hs48`_`GS z&kbWaGy83-QexCez3C+^DTnQ>e@7;l8GYWo$boV0cCqJc|E^Iu{ONpi&Wq(I*Ijqb zt_!n$A8BxKKmTry{nnE?4KFfomAvZrI zGp!Q02CHeM8yFZE(m_u0$xKeoD^6v|C@Cqh($@#um06aWoS&PUpI5AxUzDz&15r|} zpH!(^oTzWCXP~c;U!*{c4j=abAAKV|L;dJ}n`D?9A-L1P+nfHmzkGcoSayY3Ub=)cQ#TC3=F~$MWsc_sSN%VmFcN@3ZBXNdBtxe*1ce0 qU{FU$$A<>_z`P1FEFY{|Hxr~9WT5_g^Hrxo6^y5=pUXO@geCw;sMu-% literal 0 HcmV?d00001 diff --git a/icons/actions/room.png b/icons/actions/room.png new file mode 100644 index 0000000000000000000000000000000000000000..efac2f009070d684ebc7b7ea2df1a88511c347f6 GIT binary patch literal 2264 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 OYI?f*xvXgnPbQgQ2Uv}eDHyXe0-m#|d* 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 literal 0 HcmV?d00001 diff --git a/icons/actions/save.png b/icons/actions/save.png new file mode 100644 index 0000000000000000000000000000000000000000..637ec45d795fb218cca10164342a43ee70bf760d GIT binary patch literal 4106 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 literal 0 HcmV?d00001 diff --git a/icons/actions/script.png b/icons/actions/script.png new file mode 100644 index 0000000000000000000000000000000000000000..91c1bd3e205af7d6bae423739a39661843ecaf07 GIT binary patch literal 3950 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 literal 0 HcmV?d00001 diff --git a/icons/actions/sound.png b/icons/actions/sound.png new file mode 100644 index 0000000000000000000000000000000000000000..90bc8802f001b5cf75871e0fd55e4ff9272488fe GIT binary patch literal 7823 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 WPW`15Cr5)OmOWklT-G@yGywqT=zt*r literal 0 HcmV?d00001 diff --git a/icons/actions/sprite.png b/icons/actions/sprite.png new file mode 100644 index 0000000000000000000000000000000000000000..3a407fbe3a756175d3d8ceae9126b013a85c32ee GIT binary patch literal 12740 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 literal 0 HcmV?d00001 diff --git a/icons/buttons/edit.png b/icons/buttons/edit.png new file mode 100644 index 0000000000000000000000000000000000000000..b6939e9ff666e4cf34945c4d5864607c433f3e5b GIT binary patch literal 5815 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 Rt*=4-b5B=4mvv4FO#lZgUf%!! literal 0 HcmV?d00001 diff --git a/icons/dialogs/background-file.png b/icons/dialogs/background-file.png new file mode 100644 index 0000000000000000000000000000000000000000..6c5e4d9b1bf6859796d8b582ef091b7a335fbf83 GIT binary patch literal 12717 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEJw8)@KX$0L50EP__?f)uc<-LDCl$tW!c&jC z+?&h%&Ct>I_O7IpFH5;|=UxAJ$J6eA@4qu;M~|oce*XFM+zt0Q?i{x^-}_a(es8_b zf!F(u_kB9{ZvRZ-^VQEk|NFg#lkMj@zj*sr(X~Gdj-FTFTlw_$+`n~qYN}qB^#}iH zpZNIt>+O$^wY}fF$@jmM{m+l*_V%yO`y6?({p;8IwG*%3Gv2+T{K%D$8&~SDe(QNH z}y->g4n(Q6LJp1xOhBWwEH-&=2=6UsO5_1;ss z&U!!lX8(0N_U$cyeO+&Q%|~W?tNYt;=fB@~E$Msi>8oe=ML#=txMXn7jhw$z>k8@gu(vKIy`!x4GTJxLli2p8Q!;ohFat_5dks^(SZu0LX zl6o||M6y4nTX=k4)w`wFAGXPVINqV$YjbMFWk09Pd&XxhE}z+aW*5iS zr)PJCM-(od8Xo!ebTgP|UhZinTvJjJevN`dop-qMV>qDFT?@N~3Xr2E%^}f%p`+uJOyHf17 z?zivxzi+m`-(xnV?bo*(jthILDlZ)WICJ&s(39(Sg?Z;Ct~>em+NxvAFQvuIvG`*f z^)53m^GHqQws%s~lb%g|e|2Y?L)Z5g7r!sl_TtH2cZDt5MC!#k(Y^P&A3wdNeznw? zv2UYJh0VFF`*WsVvsJn~$nCO|3t zm8s(UTT?}p%7l7tU&wqCb1b-XKZ51|PKG%=3loo?6T2m|RCV_*{aH~Hk64}F)x5WP z%a#7{&z2v)Nd%CR{?BKBwIkQwZ)!+|G10u8Y?9OarP}H ziy!E=pP0RJXJn5~__~*jACrWhce0D!2%5z)(qX`hyL|NeEy>Vv}X(~9eQGfVa~ZR%WJAnMS< z<+(n!;h53-zEFRMYk#*N{^|WdXq&^eU8fzUh8Sl}*#Gf)1jCx2Q?4D2Vf|jb=z^^F z7VfY8Zp+G6l{wu^h~*IUe-WXOduWT`neG$mnrj>V6g>l{U7BHf*ox(K+}Wv1J^u6^ z7kxOn`nbyTV;RR9jCRQPTs_A4aO=N`hxrRV_UTC2*c>}^dcn0@do12t?{M2_5p=Zv z^rN$XWP|_zNcs2iN?f7!5(@_z&ww5sZT}6XX~m{I5hjn9?cJ*Bw1}KXcZG?W=f{H;_~@7%YYzqT%VccaD4QZYl1LmnBt5q$@J6vD23Oh0*K zg71mU{T#+i+HD12*+*);NmzM>b>1ze+LrEA@tP|MQ!Z!-YzokMl6!x_@5{&2XYkjp z|0kep`8h{-eL{TuH;&?S>n(T2Y_2)G(_X#yUUv8y6XO+CI=dbO>^=3X#N>&6%#!SN zi&tjxJioR=@Kc4|;+SO8J@L`Y zp7c5-lJ(;BeJ0TxSgw2CztVid{94WR{I3`5FF7yxljQDnEPR5LtLE%^W~Ep8q66Q@ z&bM(~G&A@Vo2t=s-Z=+l?=Y>udv4<0SyQwg=18@&efjcuT4Bzv`~$nYj?ZL$6@FaQ z;ogRM_VP(Pxi|v3r+rKc2(r@cu3WP8+ff;PbGr{Sz8Jo;RK2%zi|fKixg1_)BKi^M zA9iF2%$BJ3^}ZnTYF1UxdeuCZ`$8=nPd<9G^5yEB&kP3la`LpFq@7h3EOxwKck|lc z%r_#}ets3bef9DFT;I>3tM>3_hcF7*Tor$$wMJOVeD|3dsCt82S;=-2k{$+Iu%ZAhwAeJri&f3rnRn~f`|ZsnS;gTKGz9#FT4u++Sl zxMbnBpb3jKidedIb;^ns?qiy2QC+xfKJUVhUWcXLM#kz)RIzsHQ}kKI(|Rs@*U!iI zA~Ts)55>ut>MmDsVt8@toIDTfd;8_Zm3NL`tlX>8U=*pp^{JEGX`!H1m1gP+Y>ZsVhqHgzMrbrT1^HKD+W%M#!c``-NsIr?nTaTzv7;W~W<>OFLOl zxZezX$g|Q*sIlvEh5)~N@%x5bt{ZnYD2eQXL9?H(z$zf ziuswGmrDBgSzayL@=7bmDYbj=2IhikEnmGdz0^LgS(SHJpnpmq?`DBGJ4v-K4|q7E z7*!Ts&E4YE;CX0HgScv}->XFeSDmLm3i*j^O zU3y}{YPcNAOo_2miS?EH7pv)9g9`7YS%?s69m-!H9y+Ls*MHA#^{`czij ztF-N6JTA{;{ul;v9thPp7wr|5_&a6KUV$UqE=PYdi@&-1PwXeN_nE)sCw*6aCVY1L zbUxSKHPLfUcQsthmOhosp;{We?rO4k3fq~_4g!j6S54UdLiUuTf)R6t$H|<==f+7n zqK9mi{}oTqxiG(dUQ4)}H1qSVX8G$jKk+|tTByE!-A-PX-K-r`-kSz(d~77Mx@n!4 z^ZPrCC4y#G-kG!3$LGM?XXj-2Bl{H_+jlm+k9g&ucl6vV)|Mw)FOz%Nt@CHczME;~ z`0X9bs`n-L`PR-}>3Zeng~fbt7JQkrI`#GDr)%~;Qa|#wn!;AYmF<=g{&{M`sw%cQ?T<=D?uk5;n|)rmaNAst^RIR9 zTP$3j3EN8--%Z-_npOTu<{^ipU;eFl#M@~(_x)K9o1d{O805s(*BuCu zs$-FfR(tKV|MRx2O#y7jo>#6dn^tXcQN-Qrc%b#RkLFBU8V~NQ)XgtwDZ8#J*QAiI z6D2aQCx6C*83zpFid_~+@15>9=j`qc$@>|7RYd3XEN6_p=XkU4i_>BsQ>!&<+@bCa zx^fNbmv(eWy`1#o^*xUY;kPWZ*>V4Tx~^6FNNo>_%et!Et*`q)XM@*W1^%a!8&*n9 z=lyPLDHfLCy-;qi8PoGg1+6+6D)v$r7hFAk-7E8`TfwAFN@>4(<{Zdd9pOH2hss=~ zWkFjXPWqPh`l5TkI%j7083Bz&ldq_~%eif$k$s_g#_a`lYl9+k%A+4JP1L)zkIRJH5nGZ9bdqmY}=3cNT9i|6qLg$nlsD6?sn2!j$-f z?l9OnwRlZ`yzWYb-mh zf1z3G?Z;ofe`asbdslz(f2QjHmU`pe=?^tiukydL{qHfYR5S8k+}?XDr`> zVNpWu&IvNxr*nEMI9<#OPqdz@)4R#2@caHZTe;nvRP5Ci#pY}>x&CtI$1mZ>_6l$G zTGjc=t!tIT)0L~v>|1ZQH)icU&hpZ*{x;1I$C}wDs(O~*Tj%%i#*d|Wms9828hw4g zwDQY_#7Ek{yY;Y z{TF1ZeQ|Ny9F6s=-mAimD^3-pd3vg@ZtwqY(XY91{ynQiGY!cI`O3z6qw_H-SLaxt zTDoj^$(H%E9242n1zyYf-&g*%;rI2XnC(~gbufF)p0fVRs#|`ZwJ&~ODah9}Wj%B~ zU`1KzJB>&31$!d-Q$OtGdph;-Y-v;bUR${tGwbV%zWsdA^I&4}jn{oY*cb3TQEN`mJwGuQ=UvT0BpTw@}8z-FQCV+>(5Y3+IF417&v4O&i=cm*ex!R{VKJ!An4!= z>7`vRBBs&bLN2Jci%+sJoxJaZY3P?D-3so`s~3l^`#ZtwXb}H04uv>JCWkxO;TEky zA?)S3r{~`Dyz=f*o111ngW3PKSO2-PJ~w5ZnmA?NihK7{Cp6`GE$|TA&uWsk^UY>Y znM-pW_0L$$;ON`!9OI!GaQfR9pXOQ2TbC?j+xpo1G0W;>+D8}K{kamH^!urIa_T?h z34O)#4JFg_3*#^Bv;S9fY;W?G+37!mJ%d9mSrQ}M|Nbvod6#`kU5UeCo}gVOMmgpe zSN@vW-+pJ~UPZn4%(Kv^E}wBVTtj@)=e{dm zg)est@XT!wxL9NS&E5G~|N1`?M*D4aOJ1sbewoboRiSEg$d=vZMpq`h?KF|njWCak ze~`8O-i^9b_kVD5W&EBUyWFuXe9On<&Bdm#FJ$O)%mk{O9M=_u;el8-94b|0 zSRFsGAGvta^P;QQ9(~O%9Ul)puANhU{^8!=3=1PuXI(Ys%h;8h7UXF-Jzn&8oS*}T z1CQX$$YXOR=(*@QTeIeF zeSb1uLhpt4>6qoFJtAToSvZwMt^_)Ynh9-ry(Hqqh006E<%|Cc?Gz~rJ#b=UgOtgM zb@G4s>&{=(^7E_ke5i8a_ah5=WrzEE7qTqQec$+ai(kV7=!b zMQ(wwFWmUNVrVEN=jZBIBo^o!>KW+g=ISHsC@yg=E5Wa$IHa;5RX-@TIKQ+gIn}i+ zHLpY&*@%>6xc-9Dq8zYyQj+ykb5e6t^Gb^K4fPCBtaSJE4S?$a1wnddZUIvzK z&67=yO;QteEiEk4bWM^{O?52{42*S6Q&LS0lg-V|QVq~k8(AjmnwTY8>RK3^Ch3}|8KxK*nWd&08d-piN=deI%P-1J zEU{I}%uP&B)i20P2TOng+{!V)(^kny&j2A3kds)FmS2=>tK^fJS6YFP2+7P%4K7Ip zg{GmIiJ_T+p}B#9v7woXfgwUsSZYymW_}*XOhW@bV~Dw+XtDAy%1q5GNd%=+TP28& zirfM#=c3falKi5O{QMkSC6JR8jPwi*z{y*|1`;VAnZ+gfMU{5o6b;Td!KsB19wZCo zWP+s>6u`;WDlr*iNpWIXY6{qC3NWeUjKsY3)D&AKXo7-?XJUyg!!%>#WV7T{-6XTL zG+h$|gGAj#b2C%jq%=!2!&KA6G|Ln;(~I-dO3D+9QXSJ%^Ga-$+%t0vz`jw?00*Te zs$0r4QbFNlU}U6gV5n!+dO`j}ayi1xUq! z9hU+`EXc*pj>|?LTo!@KC5VBba)Fi@8W*&*LP25F5|YAqG`L2Ci=+@BN%3gv8VxRz zLVzU2qp6E(!NrB>@TBIY*eaDP+1v31X3l3|U|>t~c6VX;4}uH!E}zW6z`$AH5n0T@ zzA-^Q zxbpq$R)vTDUsc8X|2V(p!&=1$=esnMdp2LoT7P{t^Tp)Q17BZX-~aQ~>h=GgPSp;t zi+6dlr8PWMYpPdfb+z@n5UuyQxw(HY-_GCv_x#x85`hM-&wSWKQ?^isY&o9;cZOi@C{+)7n_EdiMUmw5!U+($O zE}=7z`nza|b+1^pX5G4ZyQ{vwl3%xeef#{nUoZ7nU(KqXCZ)A08|~k4 z;Lo9^=;-+W%{z;J9-901Eq}T8)K@w>2`N|8GZ~pIvR{6!D!G-rX6u~j*suBb_WV?L z`0;FZ{=c`!hhwkKbSX{G7hl)KmXf?sUld zwZOQnv1ZbxmnCjZ8`L<{&(GUxo`0`Kv+wb_*X#HH3*Vl9|K88|$eSmV9KL;${4Zjl zbfnPdlKkm9&q*70?aJE!{qOtze@G^keeLWnt zw(R@b?f0r4C%$4Y7c%>G=)4u%gyP1>4}RR*nw_4t^;Z9@ufO(|->ZE7c21p~DZd1l zef7s+jh@Fd!Zus}$nQBA(Jkn>Y5w!dJ39)KYxDEpAHSMa`u*?s`~QE61U~q<(?Ou^ z%Ii|QpHGB$-PPM0*RRp#IY~t~>`+5%E9<#6Yc}lJb4Gsuk4IPc?%lh8b%<8|zMVUF zemzln;PZL=|979yt9~bW-g4$n?iE68jN01TI(m9W=H~6ieJY+ATcbi&hidH>-IkZX zap%sH=g#Rd<>ch#lvvGua+u%#&(2kD{p%Xi=hq&yH2)o?z}+;jxMH8b0E@-*f^!ek z|8uu8Ee+}{+S&8I+9j~1_?%Sox)Q6o@p*Z9|6W~;d0=>zsZ#Yz;`u0ViMEp6v5zd+ zSk8a$TvRe~ZgESZ$I6gLudc3MEnoZPV)p@m`4+Bsi4qkuTql+vWpES-&^xb~#Kv^I zP;36yK7|jOV%=-j=)C@Q>sHaVQ{8fk9CmdN*$ZYwI&O?O5aliK!!ny8TX)}k;kL}r zr}&$GSXkHy@@TnhCxmrfyz|?oMd8E8Jthj@1P@9yZxzedy}PDvMx3FES>)ch=L;^r zXkW#?Va}vq4cWpcI>k-qPkk1n%;PL3E^c^?XU)?kr;9#?SS)X-+S~X1x6RL9b;Dy5 z^2PYIwrzZ%spK3kBzbP;#TAQccm4OVW1p#Dvr1)^i8OE4RjuysZso37L53weG9y=C zkBo?s$f)^KbzjB(MV%nCL8G6M)%?<|bqvWpYMvfOx3$H(O>VE2#8+e>-4Qh62yU1K$H zdr_U>mHz!pre~(H+xNX5DIUr^&zue{;Fxvq@P_mW?;~w=Qs!@vvZ?wscQ13@r}fq< zl}ld)xYn+p`gqa2H2#+r?inw>|FrDYs{iuE$X{nV`?M?N=7NgP4K8yuxgWke_pjLh z4VCjWG?XPLyItDcGhe;;-_3V7(%Y17;%;ny&QQ-(@h}5a)zXRSoEnco+ zWHf(b#u2Me8?!nrE^D<*_P$Z}>~uQVv})4a#Br)4fYu)(`FV)NgP zi<+Gn!<-Hp8_09am0;4g*~$~R=uZApN8P{=IaaPB+`TCri^Ev7H;5d{lH~H+aXn<) zYpWhz%Rkd<#&RNi&$#a4 zaQWfoD7R$ts zY9#b-i1=i&KO|w}8{rDJ^i5{p3r_~ig-PBulKx;BDdgia`FJ`J5h%r_j$TNTVZo2Fo*87sD8j~yUrROenG2BwJ%W!Je>TypA*b%*C%&aNB?)*9C&b7!_L;?Gx~OorFBv_GlM&} zaV)xj!I=BY870BgsJU`)Z;Aaoqm!a;xrgh{7Cz6L``O#|+ibz#?6N(Ab410s z`Zj-N6raY_W#%}kW^s$NK}D8f!Vf;xi!E-s)AP3Xt-7=#^v3@0to}AXbsPhfx^|iH zf3sNe_EP56j>meQGLuyV6}ANIN$8w<)%4kPGXp)9Op%pWrg`o${*kA7_j8E*+MA27 zz4>(0Z!UN0!%xRnw9X6Sv0#cTn)S{sDQYdtbIxn+e!m;y|G$biIH&xo%;S-U?{ei$ zaZL)6HXRa+@}|zcA9C~d-#Jd1olcpZ3j&VuKmQQZaf2!AS-|#|Ds7c}Lgla9DwcFy zxqO;Mo%LW{_=33nq7C;|U#XP{_OQn}URdHQwB1w5_4l$_JfFgQ7$37d7J1!Rc%f6O z#EN%S^?tXWgI4nw82Cp-sBoOFsAGIxb0m7f%Jdt%3nVLxT3ys5w1UsFd_55tzxuYa z=OjlLKcyE}rfgI@u<(;rr(&n5m8A~*krZDccC(I5lh+#Tk){~|JR7YZEpd5UuK%Rw z|CLV+a|5`a>@w^O$Unc()8@sMjwN?@@!Vu=&YHDnm4r~K%PYZ^%7-Q z?|i;7Qp(b<-|@(j!%6%*Uuy6aMXfB@*PEK~FX_}08;=|8e|mg{6_Sk~^0@iD;yRYl zdo<$Ux6H|6vDbD^?BAX?k4w9&%lX-Lfx?%sB#Z@|j1C4Vp84>YExF)W!Wzk#&0z+| z_%gC}u1WQrWZ9nfMTc`<_*ql8nX)|3b|3C8R=of3nT^+}H6F9>KYzL9^Xy*9$=eRH z9MN#Q#GvJ7u;^x_fl%tH)6WDZ+fLTHvOs70pB!dazM~B<4=#`kRb3Dz+jFNj~es$*|TRq-v9se{vRKj`8k>l?$5E#T0i^a zd1?Oe)#^8m3J zulacNTlM?DZ;tmVIbpY=cX Y*Qc%fCMGHG0nPS!y85}Sb4q9e04iD6E&u=k literal 0 HcmV?d00001 diff --git a/icons/dialogs/font-file.png b/icons/dialogs/font-file.png new file mode 100644 index 0000000000000000000000000000000000000000..860370a9300969022badbe22b732e140aa4417c5 GIT binary patch literal 1931 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4i*Lm28M*4p$rTREa{HEjtmSpS?+AQ#l*nC zz?9_e?!v&Zs#n>Ffq{Xuz$3Dlfq}sTjNMLV+kphj3LMix=7905&p#3v7}yv+T^vI) z?rojv*&!1ualC&0s_8T5o%AU;dMtEVic?96>zUflieUb#7mK?T+aH{rEVRfmSw)F0 z=U{7#L=s<~!n`kwn#4I5WnAcBVPCw6Q)0S>@mwGM(D#)q!hf$`dU^8t8MC79{oeQg z_qQrth6f_=ugF(#+IT(BfU&pWe`MXW6BlI{w;!9k%3{yk_p0tYg=PD8tvDC=BkTLQ zS067;(*6Ia=JGt@71}l`dVI<`uev|$zq$9-_3Mot3{|0;YJvNY9CTc?LhlOyyE|V~ zzn=ZbpmBxe(cYU}t%rHGwytdExBs-QG{uHta_4v7hXIRSa~IYn_&=`=T*JDW<^LrE z2ctz^lf^DaKZ~ndRO}<8$L*k`ex;H9psRuJWU=0FG2dUFGyGU($uN0_0*hi{K!i!g zrKDxH*Y94h^xhN2c3_FX6gz7T2Nr>6yQ{6;UBAD|KG2^SUMysiv9Xi)ZCZK!bKZ|Z zf(<8Y6janBy7&|K?cG?tpje6d(5?&z1%W8;yf-`97v79}VRzM1G42erfh3D}^M-;# z!HK^m%{HAl_RXo>|GDYMnyj=`+auKiIwGNF1zpqH9{fExLGfzY=IVyO@^-7|?Us@f zXxuUTMo;UZRFCzH_^yrb2vS}Ju>E};-AEn&6 z&CIZgrR7giW}@&lR&V=a=6#p%oLDLr$|fnL!DO&xy5+KSI$}zTJpJW`v@4W0uDEsb zRq#TS+QYkfOe6lUDfzd5w);${gvX)GjaS$kkGXRkW>R9XX^YH~E1YLv*i`tDsiZG- zS;wy}&!-s~uvy%wWJp;j$)cBi%YRb6f`q}9awhAD{r8nCPH*1Gb937gehuCrHJ%5t zCueNu*7XuH(_-?}eZ-&4%)vUd)yz96 ztZ4RmSfpJmCD^CMWOkh8r$ElOqPZK>1=f7B=4!m~oY61ouPVceBLO_l<`VO{7YKdi zo7vH|;cB33;tCDno=k>$)m;Zvoz;2Yd(TKP3Uci0&{v9k;^pGFjjct`Jad!6LdN*% zd5sm$N~ipe*%uo8NPb=i)})AYafU`6sjrr>7KrEn(1Md z$R|%3v?XN2{9R47f4$4eDoB|q+_qIamm$3Vuli|2!w35W?|ftwVPDV{ayUa*rBL6v za^*+HjvJwyWR9~Qe{6TwSFt|P_YWA2jk z(;^&0C(aa)pm#>!df?`E5GToMU7p_d)Xh%K(`V;-@7&ZLf14 zHhE+!)FjAU`_^~!&dIlv=dRUXc05z1Nl|-^!KpX;-Y$)odR2F=o@{k)@5xdr$3wl# zBW5dRuQ{^cl83=-#sPcnJ088C7vD~aZA_V3+_@_KnnR-dlr_nT(~`q<|54jC=kD{_yQ4Pmp2_4VdYwsWrr!(Bh0$wM zG8~sEq9!l++ zeBo^sU&ErWIce5=g&yT@le!+iN&DQbMFMw@Zn-CaqCM)dSn?sQiR^zwQk1%-BYJKa zoY%~*+N^Xg`sw=#F=@V6XLi>9Zi)IB65X$9V&!)1-j7brd-idUgqlMnLTYN(-dpbd z`MQom=qK|)(ah_Ime<`@4Ln%7CHq5qYjIoB%lqrkFY$eSd22WSox=Nf)~tMewrY~? zp%T@n^2_V1{Qn&|!L#7l*DW(&T>s2ewBtbjN#5rx^lye-|J;5?q;ftFr~My!$*iM_ zueR<{VqjoUEpd$~Nl7e8wMs5ZO)N=eFfuSS&^0j9H8Kt{w6HQXu`)K%H88g_FgPoB z;vb5J-29Zxv`X9>_Bap$1;o>bni3B-W&J+aWKbpR>FVdQ&MBb@0B*fQ Ah5!Hn literal 0 HcmV?d00001 diff --git a/icons/dialogs/path-file.png b/icons/dialogs/path-file.png new file mode 100644 index 0000000000000000000000000000000000000000..148e7495ea6c24070471e778a202b3f0e7389495 GIT binary patch literal 12379 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 literal 0 HcmV?d00001 diff --git a/icons/dialogs/script-file.png b/icons/dialogs/script-file.png new file mode 100644 index 0000000000000000000000000000000000000000..91c1bd3e205af7d6bae423739a39661843ecaf07 GIT binary patch literal 3950 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 literal 0 HcmV?d00001 diff --git a/icons/dialogs/sound-file.png b/icons/dialogs/sound-file.png new file mode 100644 index 0000000000000000000000000000000000000000..57f0af9f3ed23335b644d740511c10af70cddffd GIT binary patch literal 2674 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 literal 0 HcmV?d00001 diff --git a/icons/tree/extension-packages.png b/icons/tree/extension-packages.png new file mode 100644 index 0000000000000000000000000000000000000000..f55f62fecf095ee15858ebf548e1b185d26304bc GIT binary patch literal 12938 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 z zvGOmn&5-A>;#U=Sg zm3H714bC^gsf7?8Bn#wZf~6D`z{%DsF&Sb>abj6&3fO51FsbB>#Ju#>6k8=|f`W-> zVu>s>gCrv(b0c%zWWz*5T@y3oL|qGGb5mUlLjz-@)HK7i#AHYa!%Z*FPb(=;EJ}4u zPt7Z_RdUbFEdcvQK?59=ny79m&qxJ@lYxDwiMzg31M2VrX2@(h3EIQA+S5=oY>H^J_?l zUx?IM@6b@Gl~bQBedRsBg0XXzO~|T{gU3x+16}X?DEoXZ>Md0xAVID^EZ3HMg9L8|9>y<|Kqc7J*?Ffcz=DtmTT7} zlv5+i7``u+dT^vuc)Q)-FPHDzm%X`R>!rE%`ebpzTW`xgUs~$D?{41yvWJIS>nmO^ zoqq4`>hCw-iamaEa`OG^Pbby?KY2Dg-|zcr<~hYW`ufHH{`?f4>-XIH^5x6*U$>vP z|L?y#JG=7kd!yTbY%NP)U6G$-QTS+fpopemqW!L*F1N*v9V=F@Tsb=}Jzak8%$c6| ztKaYa9}^dM?)zotDc|qq$la;imbUri)SZ@nvesr7v$p;_BVqjWjPdzDFPi!7X57~2 z?~tp0voT-ZzV6RIjV_VjcU)RlfBxLl*K25HmbN@S?VWVy)_r9^FD*5He(UYizaJW2 zht=BKIxt?7IJIfX{O1zMJ2JDh>`Grho+YGxJi@Hah>i=GRd3o8MVUsOqjAW@hKqsiN1e?GkZqG;DKj=PNv|>uy>2=tzFto{EpZ z&)a^#6JPcIbCpBE^wssx)*Ao$argR<_wj$`{L7jjz`=5Dw_)4Gje`5Wo_JsIJ-7Vh zfxY}|niG^ycRZex#V05AoNPA#xY_((;;RD-c`q6B zI12U{F3I!?6sdU6=qhsb>Sl&)-OO2+a?EDVojcd6`rDhw2eki3hi$Mf{BL#Yp+JlF zT+2TBT8YgoChl|B?hTV#%9A;(FrjFUasBu2e~#Jq*Sv~#Hq`PIidri;<BCqLh!ChAes;VEpwJW=d18!X~CU5b9X z`BQHgm;Hw(H|4_;&XbPJ-m{Qvu|=QfWv@M5laJ(2=PRGW)+%Muz$6+TE7jQ09H;Pw z`Iz*g2b>ifj1mrgnz_Wo_K7l$Hdd`%@0L><7K|UV{;%Wx%r!vDwnvmhRr$aJrx&9w_%uKgE!g60WE|`{wEZaW;=!iG($d?oy#y z1`1XWdXHzeA6I_$+3

  • s6`M2k*8wW;h<@$`w7OaUp2uZlOJ87H?PSEKu->aQ~*S zwKR8yxG9Iyl?ki{3v?EktI3BPSlw{^@k*Wr%B;KZG)`XF79MW7$IqL6zWE-jRi7F( zHgPmI96!CmdX7bi#z&zH*%Jp&Snb?-@zPA+nuT^e4%gK0zAgKCGTQ#(;%@mMk<_od zC2cZqEOy+!K@b^E93|9|MM zdw!6gOKpFkMXrKu#$rp8(hg-~_sR$VexJOQ6R_`npwyeEw)cJ>t^c^u*1h_Pkd@Jr zNUvGTmP9&DQd9AC5?Z>%>gX(vp2r=QXEMyZUUL6R^?Ug1_1+TIT|FCb75tVxzGGX> z)Tj59))i<33W#WFOu1juduTzX3NKgqhhMYT8&`k7yTr3Zj1&P44&JPZYQPWVHN^ zb&39>+NVMj`!1|pHq~@>l4mwg+TMaoQH!r0D_^af|M&Fm8?8TneTfVgyAiO`oae#s z#-~R`r`gX;x7)sDcesT7+=QZ%Nu3ip-MRudsVHwVbd%bz=C~81PNw7i*zZvU2xDwxuG9EPKB1xa7#G{ElJq zQN~9$$7VESvW8qA`9hEw<{ONrf$k z)>;p@APb(uy2+gi8Ui+sMIs^EZL1yyb22(6N6v{)s{5z4c48o(U$4Qheb?Q!GWHND+-mv9r@JfE>ZHux+BA4;qclrKK)Js#V zG09`i*@kbk4wkcqNlr1^@`h2$=flUN-y_3v!yd7QMJ{mb_{*@D{Y zy^JMEGiJyVeg<$uFs`7?!yA7#4#W|wqb zEfv#<3%$Nnf%O9WudYJtbIRNQi%s5dv@=|yz;?%x!ZYUYe}}$1`~GQp{oC8~_pjXl zb9dMr+wW}lw*TLoq^l`1<~o|2c+Q%zR5Eg!pu3>_+PDYbH@*MZJNunuQ;plg{ZFe7 z{Jm_Ux+(B)W`Qt9UxegtHYKtbh1D_pal*Ue0Su zU2Ug0yuzn03Y(?Twc*-2X{Akq3$g`k)*wc~GkRs+eeq ztx(L}rW5PJRT_AB7L=qitTpvo-TSvLS8JL2*Nmok-N2F;jE7?vIqs5>E4YyLKz5;5 zdAx4mmSv)m<_$Ruz8pLD`oP_o(A;au4ORvVmhE*EoY1&LHPJbZTk%2j@yh=1jR66L zfA8+=pUb(}`j*`KrwvnbtOOn^X!MtdmM=ZLTj;%P(3QuGZ$9{3=50IhZbw5HmmsTZ zg=oRKz+FP&R$ZHpShjx^+oK>_6+EWGArN6cvxkFJiin@n7fjFeufOJoPy_HIAq zSj})H?|iCvt-_9pY=_sei5?aFZnpp6&Ha^=YnCq2?@}r*xy;vnQtNt@?47f-+WG%m zRV`4g`8apsteFY2at37yJrlK+ZEXG;DDvD1=I>s*D&bOVQp(PwH*Va}JG}N?(h4@U zisNgK?@0ai;@kh_YFBR_SkEK8MovuY!>yyMQX;*kEj2f2yxWwpf}44j`pM}fVL!T) z4*2a&ux6ezT|a*3l;=C8Wo3KoDtQ(}yk7UStoohS?Kv{{&oR8a8XjM3>G_Dg|8Cvy z>+H+^u8MYKoMT=7?o#&pzqhp=cD_A(JJsNUgn{jjf2kRAGnnr&SM4@EupzUoYQdw^ j`9=nZ{%?PK>pw&Kn}w745B)m{nileO^>bP0l+XkKh}09P literal 0 HcmV?d00001 diff --git a/icons/tree/folder.png b/icons/tree/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..337d4e78c43834b795e04979ddbc5458389cd92b GIT binary patch literal 11125 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 literal 0 HcmV?d00001 diff --git a/icons/tree/font-file.png b/icons/tree/font-file.png new file mode 100644 index 0000000000000000000000000000000000000000..860370a9300969022badbe22b732e140aa4417c5 GIT binary patch literal 1931 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4i*Lm28M*4p$rTREa{HEjtmSpS?+AQ#l*nC zz?9_e?!v&Zs#n>Ffq{Xuz$3Dlfq}sTjNMLV+kphj3LMix=7905&p#3v7}yv+T^vI) z?rojv*&!1ualC&0s_8T5o%AU;dMtEVic?96>zUflieUb#7mK?T+aH{rEVRfmSw)F0 z=U{7#L=s<~!n`kwn#4I5WnAcBVPCw6Q)0S>@mwGM(D#)q!hf$`dU^8t8MC79{oeQg z_qQrth6f_=ugF(#+IT(BfU&pWe`MXW6BlI{w;!9k%3{yk_p0tYg=PD8tvDC=BkTLQ zS067;(*6Ia=JGt@71}l`dVI<`uev|$zq$9-_3Mot3{|0;YJvNY9CTc?LhlOyyE|V~ zzn=ZbpmBxe(cYU}t%rHGwytdExBs-QG{uHta_4v7hXIRSa~IYn_&=`=T*JDW<^LrE z2ctz^lf^DaKZ~ndRO}<8$L*k`ex;H9psRuJWU=0FG2dUFGyGU($uN0_0*hi{K!i!g zrKDxH*Y94h^xhN2c3_FX6gz7T2Nr>6yQ{6;UBAD|KG2^SUMysiv9Xi)ZCZK!bKZ|Z zf(<8Y6janBy7&|K?cG?tpje6d(5?&z1%W8;yf-`97v79}VRzM1G42erfh3D}^M-;# z!HK^m%{HAl_RXo>|GDYMnyj=`+auKiIwGNF1zpqH9{fExLGfzY=IVyO@^-7|?Us@f zXxuUTMo;UZRFCzH_^yrb2vS}Ju>E};-AEn&6 z&CIZgrR7giW}@&lR&V=a=6#p%oLDLr$|fnL!DO&xy5+KSI$}zTJpJW`v@4W0uDEsb zRq#TS+QYkfOe6lUDfzd5w);${gvX)GjaS$kkGXRkW>R9XX^YH~E1YLv*i`tDsiZG- zS;wy}&!-s~uvy%wWJp;j$)cBi%YRb6f`q}9awhAD{r8nCPH*1Gb937gehuCrHJ%5t zCueNu*7XuH(_-?}eZ-&4%)vUd)yz96 ztZ4RmSfpJmCD^CMWOkh8r$ElOqPZK>1=f7B=4!m~oY61ouPVceBLO_l<`VO{7YKdi zo7vH|;cB33;tCDno=k>$)m;Zvoz;2Yd(TKP3Uci0&{v9k;^pGFjjct`Jad!6LdN*% zd5sm$N~ipe*%uo8NPb=i)})AYafU`6sjrr>7KrEn(1Md z$R|%3v?XN2{9R47f4$4eDoB|q+_qIamm$3Vuli|2!w35W?|ftwVPDV{ayUa*rBL6v za^*+HjvJwyWR9~Qe{6TwSFt|P_YWA2jk z(;^&0C(aa)pm#>!df?`E5GToMU7p_d)Xh%K(`V;-@7&ZLf14 zHhE+!)FjAU`_^~!&dIlv=dRUXc05z1Nl|-^!KpX;-Y$)odR2F=o@{k)@5xdr$3wl# zBW5dRuQ{^cl83=-#sPcnJ088C7vD~aZA_V3+_@_KnnR-dlr_nT(~`q<|54jC=kD{_yQ4Pmp2_4VdYwsWrr!(Bh0$wM zG8~sEq9!l++ zeBo^sU&ErWIce5=g&yT@le!+iN&DQbMFMw@Zn-CaqCM)dSn?sQiR^zwQk1%-BYJKa zoY%~*+N^Xg`sw=#F=@V6XLi>9Zi)IB65X$9V&!)1-j7brd-idUgqlMnLTYN(-dpbd z`MQom=qK|)(ah_Ime<`@4Ln%7CHq5qYjIoB%lqrkFY$eSd22WSox=Nf)~tMewrY~? zp%T@n^2_V1{Qn&|!L#7l*DW(&T>s2ewBtbjN#5rx^lye-|J;5?q;ftFr~My!$*iM_ zueR<{VqjoUEpd$~Nl7e8wMs5ZO)N=eFfuSS&^0j9H8Kt{w6HQXu`)K%H88g_FgPoB z;vb5J-29Zxv`X9>_Bap$1;o>bni3B-W&J+aWKbpR>FVdQ&MBb@0B*fQ Ah5!Hn literal 0 HcmV?d00001 diff --git a/icons/tree/game-information.png b/icons/tree/game-information.png new file mode 100644 index 0000000000000000000000000000000000000000..6d835ce97af9582e3f008c4515d5ac52e9cfd217 GIT binary patch literal 13335 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4mJh`hEa4zn&dNc zrG$jag93{KCa?ehE1&)Uq59GfGX#n~O_#RM4{$E+<$t=<{_UPy>T|At7LHr~*J&{U4IH<@#yS{qbK;YQLZV=KJxp;rXoJcO9uW zEUK#i|82*{kJamCF4rINudFSa-*29NdhSK>*RS*6M}CVmUY((s`07j4mD@q*)YrYX zaq8D=Te(#Iv$&+v{QIZ!8Lu*HoJqHtdp~h?>5qil3CnZKZkOI`m-R8+ks9-?x%lwU z;tfCEtdc%H*>Qi_?l-IF?|X2*@Q&P`>iONa{cFz~JkM-Z_dmV#oY4$Xy?@`X|9Q(> ztu3;q_SEjRGo}|CnO&an{L87-iX-o)2R=6ZaQppr`JY!GAJov+cF}5kTizk}R$uMI z@r(1gmEW7Q<<48rXdu|%=X0#ers4XUezTkE*3;J>oxsX&y6jy|fh_+GiMuJ2^eX0m z;GKA6@lMs-#Vfn}4!1p?AUUtY?q^T_s(cIW7LK|ijf54h^3FYmM`gU%Y*d}^)TOy} zj!T#BZyBFH%cpa^*X$Uv0 zv*uO3TYCK-+XuC?rylmrM+&;C#}`%wl&`Rmewv? zeyehNYrQ|T6GW+r^Bn8wYpW%BuX zNzMhI=G1%(aSw4huClnsY^_Zj`{7M`dB2}oKVIklbf^5!vrj&p%zt;k>fDLa`jm-k6MNemf8I|1|0Ut`{CR(F z+;aHRQMql-+e7(w^7`9*=B>D1Eth;=YV&Pgm1w;cmHCGX*1Rd@{1J12UG>wGi$=&saA3I63&=TYc=pEi1Kqi+|gG%A57Z=c3NCF#WXZQ@fT_zspa2#@=mnoNZ}J z(Cf%IYu0{uopHp_Fy3PQpLDzbzu*5iHvB61>|KPSW5S=-!1+_w_8jE06}0`9V5e!E znzp{uwa1fXot@m7$g+B#bNq|d#oqmm69}v`u9jXoY15w>+`Joa`?Tz|SnzzR$i1SD zJu`PlUp-OuHFBQ9J)TE46$wqY&s!a4t`mR2!P{eUJ-G6g)IY1gg4{jjGHXkDWFDWA zeLcThu7;24*NwR%u`{&_yfXbgxTkHkeczGlud~SdI|Ko;JyNis-xY*V0S& z%%1RDH$E=OZYi0)``79ZpEe#7jgn9)eZV`Tv)OjOo#?T*XVuOwPTnZSo?S4*;GH!` z+dH1BcF)5(Lb6R$ESGLQFh!wP!L99?)#IY+7dFX@{xsCp-*sj($IiZ~&(#h_&6z1F zm)z92lxbnpwzWP2FV5*QH!N|tEcVpbO;uWWOEcucVe8`TgNrnoBqeF zhe!N(Yo#0%^*)xcKx*dk?Gwz|@9P(2KYc&rf5Dr!=Z$;*du1E)O+U@t7gofe-)k+s zZ1b=0oE*X4UyHRlWj3iY3n*J|vTHM4dRzHv!ltWgKkKfsJ~mWT2^HZ#X!WFE}84U`nL?Rmhyggi! z_DrIfzu9_fVc$enhmX%+rS7_Lx#k3S%iVMDKBc(U?wYAD6Thc(|NOXVHzlsK=WNby zICN))s`pJHb)Uswm#s?IUbB(m)e`~tXEUb@yS2a6x|lxW#u`yE*;CDzY`zC283j1V zUz2QSY;t{6^?TN3PClKB9#8hDPAfaShWDb;4b`LNEaqFo%P-X#Z*9s`GI&^fsN17i z?}Pl!%AWR0k&0fU(~rGk7PU9Lat6Hb=5G@a*ob7Iok1z#sj-S;3XYrfHGrK4Z6 z{yYwBTf4JetJg~9#r|DWY+TLPI5%-`a#_D2;OM9JSGw!Eu5+%>xG*i+qFGEjL4}WN zXHL`_&cN-<`92C&+}zl4a(TR#MCjfVesN`|RQQ7bI51g>tlcHTr}1lz*#)i*=H47i zQIfaArWs7Hl34UX;cMc>q*wFTP2eqDXWY5aqmhsC@WU-0u{WH=-S`)=9~IEDaAtdL z60qsou0IdIF3#Z%eHZy5fGg;uS(K15-^sLcX>}bBv+oN^lbr<)KKBU-d@nZd#0zhrKVRzVxnW0fqg@z?hB{-C>M6j%QMV?;vCnSWb0Xx!PMo0_B*x>b1B7qxj`mTU_! zTock`62g6V!m?$z_??zYu^e2z?$tNVIlOgWyyQ~YJn!CFH2K0M6@8t($3%3}C%sqO zrS$E{uNR8*inf}nuG9Tn#eQXik77`SSC4l}+S`2(O1pg}a_u(Gj(K%d>r%%2Tinq~ zq7PIo=iYf@JjY4QHN{=}V#|{AVuh9=590*Bi_}e$IN^FlvAH36-a(#AHiwQbZaGpq z$v5P`P@%)b$l$#@lq4^nNG%Xr`hri-SGUSacUDK@(hj|&g&(i6et(!URq|48tKN!` z<*%F~F13_i)nS+0Dk@muS<}znDr~~GXyMw1R-3kYvNKnkT~6qX{#y0zOvj^&EfdQ; zBD3G$cp#YjW+6}Sk)sRr1mXpEJe_{*uMlT;*Z$_fvrIKpO*=B*+`B4N{Mk)JKEczo z!nE&N{_(o6QfK1LWSLZB_A%D5)vgcYvFu^Zcyz69e$}&F#SWckN4PagRxwTFxFxo{ zqdeDSvV~%M*qaB}w)PsaPpxyhaKtcSxtx<{z-58t?Drei$-XU4?3uIr1)tUlyN4HB z{XOLhUVk`l`!Zanh5f!@1_$?zIa`-p&Phsfc;;X3#=QqX2`mWl;GVRQ(D@Cka zFL#_O&}sJ!@R{&F_VdcguP&`#b>&(ZN8A59rt+e_RkKfB`gki_WHle(y_2Wf4@n>W z=(*#OVv<^+!>y9sSEeFMK6#!>%JIM0@Fp^Z!9&{TP!wm2YwxDrUiY;huH*=iWyv`B zAWm6=U+&aKhxaq2v`x;a<%fs z?B);7HdBjbpI6q-3BJ!(DsizQSV)r5;uYtiH)k%CDM{w6ym%pKg5gHXO?@V(IJWED zPcjcxd6N1_=xb56>a2@?tO0ZXO_blB#KPf{J?YV+1&jXi20WguIrG>>bAy`;S5LBE zu~qNtY~5AYp63^Zai#EY|M$DY`2VW2?%V25)&8j}Wj~Y4zhqT~b5i`G3AcU;7Nz` z&z;})C{RJ`??&?*cM@+d(^?zK>k zZ^M4O@6+5CMf5J3SQRD`b0un?p2p^L+y#P1ZLC8YS3Pf-QT5`4{D)n)pBNpf_;yx< zy=!Z;Rn>kQ*GWQEg~pQ8Qyb&Xaqmnq-O9-L!h`v#Rr4h`13}l2b$a)=-T#(ybN+qU3cUv`#vFxPAO9(O$wsk>r9 zSD(y6&SOD~*$;o3^KG_R>3##_@`D~P`et_syT0)Yc^%`UbIA> z)W3Ai!Fx%Z{e|L=^g{NJ=Q$fz?p6OZvuf>a=c_h~tBM_ct}b<9`MG+d*Fj%F_r&|( zjjv8yT5>?_-zt?K?MgeiO! z;)n9)+VXHtTX}T8pBU>W7w0D{e=HX`JIVI9rDoNN?3YQNSsHdBrD>vDZwQ`MKgLv% z+PMAFwn+gY*()B_+>&0w%EPZFbv5?VJ$5~2?cPmC9Bi(f7TEg9_}6zNd{pXCM8!I?H2TLq`Y0 zBnBtRUzySmTz+)&e7>pL+u-Tfs_0R_+_Nfb_6=W^eOn7RTx9F`n|N;CmXLed%OlyUR9-s-p)LBQp_v(R(xmHq}6WL(wlz1V)^l5q8|g>_TLwBkNDl2=7kNi*MnkKJc-a?-5H;g(13*dL(U@=>Ms5Bbzrce&x#3f{Pv>k^HP$J$aHy;^V6& z+{>jWoDFO*4`;EQwNf_g-Onv+RL*-Tvwg|kuxKw!c-2M&gEudnJMW!ay8i7MN7l%_ zRmZ=+d((G4Y{I_w<-W1Czu(EUD>!Y8GGj0bx4&aRxYIU?( z#jcoYBJSAR7BqeaJ=EuN`GZM`GlN@#b^*uE_ez!uHyI65%d~HELpS?;C zm(#1|?)Udz*tXKi<^Fxn*L8D`-A&V*xmV?hB_jB)&Vf`P$@!X;q&L z)*A0!DcZAR`7_CsJuwZNt$cO`#-G~g9RL01ERXAKT}5juE*=V6FVwL;>Do-jKU0$x z-&l#4uH8EE*MiM2SAWwLk2Jh3b7)Vsih4+Cc1&)Y&mjXjiSyUh+P4+NT&rNQ_@*Xq zAu1}eV`_@qn@lrDmrk~d5^?{UgHY2XG+p@Y8IN|5B8}fXz{9m$PZT!CadfA@IIc7@7R<2J< zXk2kN#&lNVfzPcbogwj;rte~w@pKdiq&gwJg+joS|oX=nAZeTC}Xr3{Gs5fL0 zay{$Q)PAZ`c8fA||FUc4Zddy)<3GLV|K_yffT;biq60CjR(L5a-Mg=_W6!IU$+Pb7 zD_v0=a+SAocI49j3GOSeKQHFp9m+cUKfB>S|f>F6kQfKF;vmi>ubtBc<^}A z)q_VP!`Z_f1!@{BtSmKmd2~KkYZWt;v$)g$f8PIscRL#{tS~zJN{ZR!u9@-5B{NR1 z?^qblBCza@V@%pKLv7E@AIGlSh6deHtU1g6^G1gV?oY&zxH3X5%RnY&!QBw`G6m zx#&4tvwF8ad!pYX^5v=Ox?n!#R#qLSCJt89kbu@+mbq4%Vn!wNzkKB1S=SlEwNoqM z$&BM{CMVX(|KYEDe@)A;r+TiE=Yroy3+>z*F6doYV}0)X#>Xc94G)Y9mTvzm&71IR z@|UXUZdt~^w+|dGjSl|Sa9TFu!^sK0H>WmDaoWhSXZ}U=r;Ux#3(BwFj(#n-oZn$u z+0=cEe0+@;g}%mpt}NeCod5sYmT%vgdF+bncFv03!@$5Rl^GII65;D(m7Jfemza{D zl&V*eTfhJUHue<-iOJciB??KY>6v-9O7C~?S5nAKu~iB;^)>JvhzmDRN%7Rq=pw#00 z(xT*4*Rs^S5@lo~Qj+2N3rdS}z}`to)=$kz%}vcKDb_dCGeoh{-P1P!t^*VV>6y6& zU|kit1t=;@GSd)&h2k5K4A?u!4ynj3fSZe=8s>MfVsIE)x#TC8f}H2+VygtQ-zp_P zIWxry%rr1DNj6AKO4T*DOiR%0NfnH{2ij|pVie-wKp^>hcp;?-)iCLnBu4PhcqOPgArGcqoqN$N(nkkYI{zaMT znR$sh$gTnzm6Dlam6&L3o|ckmpqpltY^H0Hl5C`#m}X$9YhjRLZfcs8WMN?haZO6H zm0NyMZeoe8Qf6*qda8awUOLzgP=H%G26);k8R;1yL;`XWOVaX-a&47-GV@9+5E3Do zxv9Y=iJ;IlG&3DoSB~oGSkpN4=MwS7Ayav%+$P+L{K`l zRWbw{TajB}XioJ_Ekf&w_%S|uh!EGbSbONE4i0!%77BQY;MHN{p5nxJ6fnOGvr)X*e3$<)$J z*C53pMc2eUDNQ%g#MnsJ(A>hvBF)0kG&wC1>+42-M{4Xg}|v<(cc3=EX?Azrl62jyy*k8SiZ z!UUoKsTi>1QhEyX6^orZF%uuqAoByD5Y$E`X+1mZHhF%_h#9-Ww~|}sy6#^ZQ*DA6tp0Afkqb- z_m{+Yt}kmH;yz7as?-QD>EO=U{o-229jn=I*G;~Aqx0-@)^unXgY7_^E>~4{y%T|{m}o9&L%%&WIDEH2ec(dEX&L~|GB8) z|5mF97Zy5K$5lR^YA-7(xig+aaoeqmwWc$D)GUpSm5pbf*&Q4l{J-MQkB|P_UR7U9 zn_T$g!^8Lczg+UJzjXh;e7-nS&3*ORXN@c^D>bH{wzW4f_+VcD|CqG>x%KPBqW|g^ zPu_3s-Y@s}uyZ?~ZPx8=7oslr1#>vMyR%1SPxM<}-q+VxmtIg{Q1|oG)Ba62b2iT9 z5D4-zw%So9cQR$t&YzWTZf?JVR$hspwQT3#t=HpzU%a|H{Q2!xhTkuj&#(LT;9xWV z&273FpBHXTD@<%$_bzYOuH9=J4<2N<4qh3%+1NP!neogVYk>gc*Kb`K7<4Wl`D}A1 zN$|4C&6$43`{ZnYu{-=ZYkvRF>f-0;e7A@*=JGKfHrP@3*Q(QnNnOr8)7NOKQCnNv zx1%}L1!+~k4xc%6s8_fAfO5Y~&53O}3vbIXIdM#zK3&jhf|r`M%@iNC-h~Sn)|Tm* zSy)^DUhSi{c~7dMfP;L=Y-fd8OLnY_c0LrPS@z~eqMU8j7gx=tzkj`6|NrQdCr|E# zJ4F`D2-NL4yPS557&EI#vEz(axj7 z>V7i)Kc1I;Zdmp4t-1XKCr#DXty@p!A2u-X5q9QqskpW6?8C$D?9-=BtDAB*?YaMa zyT5VVp$}ejGpfs}Pd{Dw@DQulQlWXzAO03v8WOPPi0rQ2yKmmR?w+5of4}zG%!^Bx zF5Q1F#b|wBf4~3TGP!~$Cnl!L*Zp|do^x6#m!ENMr!`+~ZS9vYUoPCd*_j%tu~b8Z zD`j(}(PznJYRe_$<z_VZtbsS@9DKoi46Ol-8g|I_w=E@ zqXjbTr#EfT>5lkeJ<(%=kDBMwpd(3U``#x<={jGyd--gBeKz~%)0Y3<%|G|)&ST~`_qTH^vP5O`99EDk?>PEK!Iw|;paGB1 z`GeEIsNCpN6r1}KYyl2y1BhSHnkvAt$&KtVTCI>9H&k_aJyn5X|pmy z+w)m?%%!<}i`m~jJ97N;nUqg9KW`ZLomn*@`R0vJH%=ucaa=4pcd15ePbYIteBrC+ z)pPcRCA|4}H)iJP$5mQBVGN;je#Svc&T+!tLgdj>0A-Z9?YwCj+ry#`LUDU zfBsDj%sHKL=ayc0_x1^!CAJ@8G`IHOTi?pR-22V$^ak$uH5;C>iO#tswbW$ar4t{% zq)v!XO=6R3)L&gcS*s#$)r0@L<~=$TGHtGP^+_q&Jzp>Pe_Xms^<@U5sN&nSO^K@` zf8@6?tbI87eA{2yL^;qvNc_$0MOp=GZ_i|*8YAwBPFiyKPH=foU*e80~2 z@YJ7It*$D%w7GfjFq)ojarb1>!Xx_U{R%R2Bn}JkhIa2N-?BjFUd6NN;bE1Z?bjJu zTsgl~KV0J{*GiS3tSM}w=T=-gxF+kt%#GF(_hu?dZhvuq+JlwszXg>(%D1 z{D%)q*GRnf7PUA#z43}?@03Y37t<@xKHru9`6b(F=3RFVXNOwGygYi<^5L1Kk!R9?+-c0SPBUManxZ`GW$Z5_|Edh>)!eQE3!K;`oEETf zsA}Ev*QiQeTlf5qjQaWW*UyA)c^=UFG>R|CDnP`aQ>=?k`zMoatSs-T^1G{S78tJd zIe+(nY4RC;@efP-1>8Cq0$AFl-L6)!9MNgsk?S&5x;NqMS7qa{>Rv0Ssqd$zDMl|? zzP`Ite_BO`$;L$Ea&IBUwGU4nQR;g<;iOoTkH5#3#1O@Njwy@S824|rKl{1=eyFj| zc9oyEx1TFaKHDu3?|RruWko{S^v`Tn?N0sSo{%ru6mrNdvo}?OgVFW2`|Ab`Q{F?0M!y9-mRysP*Qn|` z32>&+9U?@*P$ZMI#FMJlz)OS5afcq6I>vmfSYK3qvHO)J@T*PYqyv0$gnO<8coVi}x zsh{fdX%$C@6n|*@0@vJ*EUj7o5=^_&bd{PI7TE}hB&_=_+1AGC4y zi7|zU{1bfqx?(}#R<*+|%m3wz-k2^c{L*)YfvZ`d#IdU8Xr1P*@&asMN^kj0Yf5WT zn)D{%b&J>M$7;VQ@1HJ^VY4z@ z!k+7QSMVag711ey`&Lca(HqwAYIERH(`AYmybSjkH>OIxR@^^ThQXjHTwYx-PC4ypZ?wyyn2<;s)oEh62emt7d_X=yD8G``tAOHS;ZS(d>L~%zb)VWVymk5 zvXe<+ZcoyNUE#QPGBr=Ra^&GvUrj-JJ7meplt z*!{QJ^WI#JLkbNae%%mHtoL&X5V)JO(3#~#5l6x1TM9zgqYN)_&RtoN%zojL&xXS0 z#5eou{(U{eY84!-lg4ejId<>0vUjVF`iHVFeIESjPgj!5$?a_C7CKj1%Xa;=@wY7$ zZ&NgLaX4*suy@v?zt+2cy!$72Z}z7G9mkC-r*pz*mWpQ9*8M)9SNB|ccVN`z+p-}A zhNqvL-)G-UhqwrlnLIKeqASC4n0Y6q6*HmdnXM zyVA<>l^~9_0&;9xCX@1x5Fqf!5 z*3r``d@_@{_vZg=SqpFHca@bMtNi-?+oxat>NlqOY?z|WCci$pu3`S%xhc6@H$2>} zS3lF$Gqg9}_iSysQCqyur&qzvJnwFm1uwfEt=oL@@xHx(_Y@SgZojwRPb+V-_LK`+ zF?V|{9v*tatLJmCCVKvg@TLzQsyP$n{NEH-d}(a7D#^JZcH2vG%{3Os_3tm-P}o`1 zIDgLh$wfIu*-Jk~ag@GJ^i_?U`m|7CYDeRjiku6NcE0an;JW|a(06ig*@x|ZZ26na zBI2fVfBT>@ucoAfFTLyWd;N($>IL3*>(*a8|A}q&h1X{4GuSwfAJSj*@lLbmyqX+y zrvSr!d*p7M;GFeLYO$|wzj;vOi?FSqG9{Ya`FJi|mV7)nK6S?vr$c5R4_(`~uXAJI z^BKzyZ1cI$Rk!-Y#Qd+D{?D`Ckjt%_s`6SyTB$+pyUE=oju&pb*$-)6P5i}O-S+Fp z;*u`@^Zv!JYWiN^I@C4uYO3MdtViJthYSpS8&f%2f=W&>`M-JnV0LnINvT@%GVdR~ zFOp_lTgAA{rQ7%*uZ07LvW_d`Wu}yyGFC!t?RDIVoF z4?DY>mp-3(rQpFi3H~>4pRKdrKG92cgU{woZ)D#Htd46na7vc;kLpeh$UU*EE%C~i zC#?dB9ug&`vr3i;y}3L0Svj}f&ON8S?k#=s>qk(c6w~pIFMN)@@Um2~eiSh+vh(ey zZ99w}y1qA`H$yDFY4*tl0tvI&(q_zB)p7&m8eu{HhevypsX_n^cnp?yQq^n)Ce=*NiWBE0$CwGY|qvf_1 z<|gx(>oeDX2rn($ta0NE+3`_`iOe{DWItvyI>H`@OlGA^&o_xn)iQiv-8}dSO1!GtAQ)552Wo q;PlR9_rgc7?Mq&?{I@r={>QGfVqT{6Tscsel)=;0&t;ucLK6TAF7I6c literal 0 HcmV?d00001 diff --git a/icons/tree/global-game-settings.png b/icons/tree/global-game-settings.png new file mode 100644 index 0000000000000000000000000000000000000000..98777ef52dab73c2dd52aa374e6f1a9f8a67a748 GIT binary patch literal 11416 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 literal 0 HcmV?d00001 diff --git a/icons/tree/script-file.png b/icons/tree/script-file.png new file mode 100644 index 0000000000000000000000000000000000000000..91c1bd3e205af7d6bae423739a39661843ecaf07 GIT binary patch literal 3950 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 literal 0 HcmV?d00001 diff --git a/icons/tree/sound-file.png b/icons/tree/sound-file.png new file mode 100644 index 0000000000000000000000000000000000000000..4dd4e843632521a36e642d08965f45cfeaa16a0d GIT binary patch literal 13243 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%0DTpdM@y56+gA(;5#Qeb$vdw%{+ANF&+A3nY` zj+rs{;5ONq^Uflwi)OV6aV1;xtxTEp``cY_fB*A)_N_0go+kY$FG6BZiHnlpwRN%H zYLgS+&f4nZ>uYFb=9X6^v^eC@YKD!^rtw`{7wMdyu6{A&%PO@L3Awe8=5OI(Y+v-+=pV%3bCG$DCo<;S9} z%XTl(3VR#-;F!6`^jmIg*9!gN*(1Lphn*v99ZPMV7|$xz@2}&8|D3V=zu?-*3+Yc- zJD)ZMD9bt={nI+Thvjcnp~Fuv^U2a7+|FAcFr?SiB%LwwHJ|9AVb0IM bracketPositions; +}; + +JSHighlighter::JSHighlighter(QTextDocument *parent) : + QSyntaxHighlighter{parent}, + m_colors { + // default color scheme + { Normal, QColor("#000000") }, + { Comment, QColor("#808080") }, + { Number, QColor("#008000") }, + { String, QColor("#800000") }, + { Operator, QColor("#808000") }, + { Identifier, QColor("#000020") }, + { Keyword, QColor("#000080") }, + { BuiltIn, QColor("#008080") }, + { Marker, QColor("#ffff00") }, + }, + m_keywords { + // https://developer.mozilla.org/en/JavaScript/Reference/Reserved_Words + "break", + "case", + "catch", + "continue", + "default", + "delete", + "do", + "else", + "finally", + "for", + "function", + "if", + "in", + "instanceof", + "new", + "return", + "switch", + "this", + "throw", + "try", + "typeof", + "var", + "void", + "while", + "with", + + "true", + "false", + "null", + }, + m_knownIds { + // built-in and other popular objects + properties + "Object", + "prototype", + "create", + "defineProperty", + "defineProperties", + "getOwnPropertyDescriptor", + "keys", + "getOwnPropertyNames", + "constructor", + "__parent__", + "__proto__", + "__defineGetter__", + "__defineSetter__", + "eval", + "hasOwnProperty", + "isPrototypeOf", + "__lookupGetter__", + "__lookupSetter__", + "__noSuchMethod__", + "propertyIsEnumerable", + "toSource", + "toLocaleString", + "toString", + "unwatch", + "valueOf", + "watch", + + "Function", + "arguments", + "arity", + "caller", + "constructor", + "length", + "name", + "apply", + "bind", + "call", + + "String", + "fromCharCode", + "length", + "charAt", + "charCodeAt", + "concat", + "indexOf", + "lastIndexOf", + "localCompare", + "match", + "quote", + "replace", + "search", + "slice", + "split", + "substr", + "substring", + "toLocaleLowerCase", + "toLocaleUpperCase", + "toLowerCase", + "toUpperCase", + "trim", + "trimLeft", + "trimRight", + + "Array", + "isArray", + "index", + "input", + "pop", + "push", + "reverse", + "shift", + "sort", + "splice", + "unshift", + "concat", + "join", + "filter", + "forEach", + "every", + "map", + "some", + "reduce", + "reduceRight", + + "RegExp", + "global", + "ignoreCase", + "lastIndex", + "multiline", + "source", + "exec", + "test", + + "JSON", + "parse", + "stringify", + + "decodeURI", + "decodeURIComponent", + "encodeURI", + "encodeURIComponent", + "eval", + "isFinite", + "isNaN", + "parseFloat", + "parseInt", + "Infinity", + "NaN", + "undefined", + + "Math", + "E", + "LN2", + "LN10", + "LOG2E", + "LOG10E", + "PI", + "SQRT1_2", + "SQRT2", + "abs", + "acos", + "asin", + "atan", + "atan2", + "ceil", + "cos", + "exp", + "floor", + "log", + "max", + "min", + "pow", + "random", + "round", + "sin", + "sqrt", + "tan", + + "document", + "window", + "navigator", + "userAgent", + }, + m_markCaseSensitivity{Qt::CaseInsensitive} +{ +} + +void JSHighlighter::setColor(ColorComponent component, const QColor &color) +{ + m_colors[component] = color; + rehighlight(); +} + +void JSHighlighter::highlightBlock(const QString &text) +{ + // parsing state + enum { + Start = 0, + Number = 1, + Identifier = 2, + String = 3, + Comment = 4, + Regex = 5 + }; + + QList bracketPositions; + + int blockState = previousBlockState(); + int bracketLevel = blockState >> 4; + int state = blockState & 15; + if (blockState < 0) + { + bracketLevel = 0; + state = Start; + } + + int start = 0; + int i = 0; + while (i <= text.length()) + { + QChar ch = (i < text.length()) ? text.at(i) : QChar(); + QChar next = (i < text.length() - 1) ? text.at(i + 1) : QChar(); + + switch (state) + { + case Start: + start = i; + if (ch.isSpace()) + { + ++i; + } + else if (ch.isDigit()) + { + ++i; + state = Number; + } + else if (ch.isLetter() || ch == '_') + { + ++i; + state = Identifier; + } + else if (ch == '\'' || ch == '\"') + { + ++i; + state = String; + } + else if (ch == '/' && next == '*') + { + ++i; + ++i; + state = Comment; + } + else if (ch == '/' && next == '/') + { + i = text.length(); + setFormat(start, text.length(), m_colors[ColorComponent::Comment]); + } + else if (ch == '/' && next != '*') + { + ++i; + state = Regex; + } + else + { + if (!QString("(){}[]").contains(ch)) + setFormat(start, 1, m_colors[Operator]); + if (ch =='{' || ch == '}') + { + bracketPositions += i; + if (ch == '{') + bracketLevel++; + else + bracketLevel--; + } + ++i; + state = Start; + } + break; + + case Number: + if (ch.isSpace() || !ch.isDigit()) + { + setFormat(start, i - start, m_colors[ColorComponent::Number]); + state = Start; + } + else + { + ++i; + } + break; + + case Identifier: + if (ch.isSpace() || !(ch.isDigit() || ch.isLetter() || ch == '_')) + { + QString token = text.mid(start, i - start).trimmed(); + if (m_keywords.contains(token)) + setFormat(start, i - start, m_colors[Keyword]); + else if (m_knownIds.contains(token)) + setFormat(start, i - start, m_colors[BuiltIn]); + state = Start; + } + else + { + ++i; + } + break; + + case String: + if (ch == text.at(start)) { + QChar prev = (i > 0) ? text.at(i - 1) : QChar(); + if (prev != '\\') { + ++i; + setFormat(start, i - start, m_colors[ColorComponent::String]); + state = Start; + } else { + ++i; + } + } else { + ++i; + } + break; + + case Comment: + if (ch == '*' && next == '/') + { + ++i; + ++i; + setFormat(start, i - start, m_colors[ColorComponent::Comment]); + state = Start; + } + else + { + ++i; + } + break; + + case Regex: + if (ch == '/') + { + QChar prev = (i > 0) ? text.at(i - 1) : QChar(); + if (prev != '\\') + { + ++i; + setFormat(start, i - start, m_colors[ColorComponent::String]); + state = Start; + } + else + { + ++i; + } + } + else + { + ++i; + } + break; + + default: + state = Start; + break; + } + } + + if (state == Comment) + setFormat(start, text.length(), m_colors[ColorComponent::Comment]); + else + state = Start; + + if (!m_markString.isEmpty()) + { + int pos = 0; + int len = m_markString.length(); + QTextCharFormat markerFormat; + markerFormat.setBackground(m_colors[Marker]); + markerFormat.setForeground(m_colors[Normal]); + for (;;) + { + pos = text.indexOf(m_markString, pos, m_markCaseSensitivity); + if (pos < 0) + break; + setFormat(pos, len, markerFormat); + ++pos; + } + } + + if (!bracketPositions.isEmpty()) + { + JSBlockData *blockData = reinterpret_cast(currentBlock().userData()); + if (!blockData) + { + blockData = new JSBlockData; + currentBlock().setUserData(blockData); + } + blockData->bracketPositions = bracketPositions; + } + + blockState = (state & 15) | (bracketLevel << 4); + setCurrentBlockState(blockState); +} + +void JSHighlighter::mark(const QString &str, Qt::CaseSensitivity caseSensitivity) +{ + m_markString = str; + m_markCaseSensitivity = caseSensitivity; + rehighlight(); +} + +QStringList JSHighlighter::keywords() const +{ + return QStringList{std::begin(m_keywords), std::end(m_keywords)}; +} + +void JSHighlighter::setKeywords(std::set &&keywords) +{ + m_keywords = std::move(keywords); + rehighlight(); +} + +void JSHighlighter::setKeywords(const std::set &keywords) +{ + m_keywords = keywords; + rehighlight(); +} + +struct BlockInfo +{ + int position; + int number; + bool foldable: 1; + bool folded : 1; +}; + +Q_DECLARE_TYPEINFO(BlockInfo, Q_PRIMITIVE_TYPE); diff --git a/jshighlighter.h b/jshighlighter.h new file mode 100644 index 0000000..6e3100f --- /dev/null +++ b/jshighlighter.h @@ -0,0 +1,48 @@ +#pragma once + +#include + +#include +#include + +enum ColorComponent { + Background, + Normal, + Comment, + Number, + String, + Operator, + Identifier, + Keyword, + BuiltIn, + Sidebar, + LineNumber, + Cursor, + Marker, + BracketMatch, + BracketError, + FoldIndicator +}; + +class JSHighlighter : public QSyntaxHighlighter +{ +public: + JSHighlighter(QTextDocument *parent = 0); + void setColor(ColorComponent component, const QColor &color); + void mark(const QString &str, Qt::CaseSensitivity caseSensitivity); + + QStringList keywords() const; + void setKeywords(std::set &&keywords); + void setKeywords(const std::set &keywords); + +protected: + void highlightBlock(const QString &text); + +private: + std::unordered_map m_colors; + std::set m_keywords; + std::set m_knownIds; + + QString m_markString; + Qt::CaseSensitivity m_markCaseSensitivity; +}; diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..8546f97 --- /dev/null +++ b/main.cpp @@ -0,0 +1,30 @@ +#include +#include +#include + +#include "mainwindow.h" + +int main(int argc, char *argv[]) +{ + qSetMessagePattern(QStringLiteral("%{time dd.MM.yyyy HH:mm:ss.zzz} " + "[" + "%{if-debug}D%{endif}" + "%{if-info}I%{endif}" + "%{if-warning}W%{endif}" + "%{if-critical}C%{endif}" + "%{if-fatal}F%{endif}" + "] " + "%{function}(): " + "%{message}")); + + Q_INIT_RESOURCE(resources); + + QApplication app(argc, argv); + + QApplication::setStyle(QStyleFactory::create("Windows")); + + MainWindow mainWindow; + mainWindow.show(); + + return app.exec(); +} diff --git a/mainwindow.cpp b/mainwindow.cpp new file mode 100644 index 0000000..7e95d35 --- /dev/null +++ b/mainwindow.cpp @@ -0,0 +1,978 @@ +#include "mainwindow.h" +#include "ui_mainwindow.h" + +#include +#include +#include +#include + +#include "projecttreemodel.h" +#include "dialogs/spritepropertiesdialog.h" +#include "dialogs/soundpropertiesdialog.h" +#include "dialogs/backgroundpropertiesdialog.h" +#include "dialogs/pathpropertiesdialog.h" +#include "dialogs/scriptpropertiesdialog.h" +#include "dialogs/fontpropertiesdialog.h" +#include "dialogs/preferencesdialog.h" +#include "dialogs/gameinformationdialog.h" +#include "dialogs/globalgamesettingsdialog.h" +#include "dialogs/extensionpackagesdialog.h" + +MainWindow::MainWindow(QWidget *parent) : + QMainWindow{parent}, + m_ui{std::make_unique()}, + m_projectTreeModel{std::make_unique(&m_project, this)} +{ + m_ui->setupUi(this); + + { + QList sizes; + sizes.append(0.5 * m_ui->splitter->width()); + sizes.append(0.5 * m_ui->splitter->width()); + m_ui->splitter->setSizes(sizes); + } + + m_ui->actionNew->setShortcut(QKeySequence::New); + m_ui->actionOpen->setShortcut(QKeySequence::Open); + m_ui->actionSave->setShortcut(QKeySequence::Save); + m_ui->actionSaveAs->setShortcut(QKeySequence::SaveAs); + m_ui->actionExit->setShortcut(QKeySequence::Quit); + m_ui->actionFindResource->setShortcut(QKeySequence::Find); + m_ui->actionPrevious->setShortcut(QKeySequence::PreviousChild); + m_ui->actionNext->setShortcut(QKeySequence::NextChild); + m_ui->actionContents->setShortcut(QKeySequence::HelpContents); + + { + const auto updateViewActions = [this](){ + m_ui->actionSubWindowedView->setChecked(m_ui->mdiArea->viewMode() == QMdiArea::SubWindowView); + m_ui->actionTabbedView->setChecked(m_ui->mdiArea->viewMode() == QMdiArea::TabbedView); + }; + updateViewActions(); + connect(m_ui->actionSubWindowedView, &QAction::triggered, m_ui->mdiArea, [mdiArea=m_ui->mdiArea,updateViewActions](){ + mdiArea->setViewMode(QMdiArea::SubWindowView); + updateViewActions(); + }); + connect(m_ui->actionTabbedView, &QAction::triggered, m_ui->mdiArea, [mdiArea=m_ui->mdiArea,updateViewActions](){ + mdiArea->setViewMode(QMdiArea::TabbedView); + updateViewActions(); + }); + } + + connect(m_ui->actionNew, &QAction::triggered, this, &MainWindow::newFile); + connect(m_ui->actionOpen, &QAction::triggered, this, &MainWindow::openFile); + connect(m_ui->actionSave, &QAction::triggered, this, &MainWindow::saveFile); + connect(m_ui->actionSaveAs, &QAction::triggered, this, &MainWindow::saveFileAs); + connect(m_ui->actionCreateExecutable, &QAction::triggered, this, &MainWindow::createExecutable); + connect(m_ui->actionPublishGame, &QAction::triggered, this, &MainWindow::publishGame); + connect(m_ui->actionImportResources, &QAction::triggered, this, &MainWindow::importResources); + connect(m_ui->actionExportResources, &QAction::triggered, this, &MainWindow::exportResources); + connect(m_ui->actionPreferences, &QAction::triggered, this, &MainWindow::preferences); + connect(m_ui->actionCreate, &QAction::triggered, this, &MainWindow::create); + connect(m_ui->actionDuplicate, &QAction::triggered, this, &MainWindow::duplicate); + connect(m_ui->actionCreateGroup, &QAction::triggered, this, &MainWindow::createGroup); + connect(m_ui->actionSortByName, &QAction::triggered, this, &MainWindow::sortByName); + connect(m_ui->actionDelete, &QAction::triggered, this, &MainWindow::delete_); + connect(m_ui->actionRename, &QAction::triggered, this, &MainWindow::rename); + connect(m_ui->actionProperties, &QAction::triggered, this, &MainWindow::showProperties); + connect(m_ui->actionCreateSprite, &QAction::triggered, this, &MainWindow::createSprite); + connect(m_ui->actionCreateSound, &QAction::triggered, this, &MainWindow::createSound); + connect(m_ui->actionCreateBackground, &QAction::triggered, this, &MainWindow::createBackground); + connect(m_ui->actionCreatePath, &QAction::triggered, this, &MainWindow::createPath); + connect(m_ui->actionCreateScript, &QAction::triggered, this, &MainWindow::createScript); + connect(m_ui->actionCreateFont, &QAction::triggered, this, &MainWindow::createFont); + connect(m_ui->actionGameInformation, &QAction::triggered, this, &MainWindow::showGameInformation); + connect(m_ui->actionGlobalGameSettings, &QAction::triggered, this, &MainWindow::showGlobalGameSettings); + connect(m_ui->actionExtensionPackages, &QAction::triggered, this, &MainWindow::showExtensionPackages); + connect(m_ui->actionAbout, &QAction::triggered, this, &MainWindow::about); + connect(m_ui->actionAboutQt, &QAction::triggered, qApp, &QApplication::aboutQt); + + m_ui->treeView->setModel(m_projectTreeModel.get()); + + connect(m_ui->treeView, &QTreeView::customContextMenuRequested, + this, &MainWindow::contextMenuRequested); + + connect(m_ui->treeView, &QTreeView::doubleClicked, + this, &MainWindow::doubleClicked); + + connect(m_ui->treeView->selectionModel(), &QItemSelectionModel::currentChanged, + this, &MainWindow::selectionChanged); + + connect(m_projectTreeModel.get(), &ProjectTreeModel::rowsInserted, + this, &MainWindow::rowsInserted); + connect(m_projectTreeModel.get(), &ProjectTreeModel::rowsAboutToBeRemoved, + this, &MainWindow::rowsAboutToBeRemoved); + connect(m_projectTreeModel.get(), &ProjectTreeModel::modelAboutToBeReset, + this, &MainWindow::modelAboutToBeReset); + + updateTitle(); +} + +void MainWindow::closeEvent(QCloseEvent *event) +{ + m_ui->mdiArea->closeAllSubWindows(); + if (!m_ui->mdiArea->subWindowList().empty()) + { + event->ignore(); + return; + } + + if (m_unsavedChanges) + { + const auto result = QMessageBox::warning( + this, + tr("The Game has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + saveFile(); + if (m_unsavedChanges) + { + event->ignore(); + return; + } + else + break; + case QMessageBox::Discard: + break; + case QMessageBox::Cancel: + event->ignore(); + return; + default: + qWarning() << "unexpected dialog result" << result; + event->ignore(); + return; + } + } + + QMainWindow::closeEvent(event); +} + +MainWindow::~MainWindow() = default; + +void MainWindow::contextMenuRequested(const QPoint &pos) +{ + QMenu menu{this}; + menu.addAction(m_ui->actionCreate); + menu.addAction(m_ui->actionDuplicate); + menu.addSeparator(); + menu.addAction(m_ui->actionCreateGroup); + menu.addSeparator(); + menu.addAction(m_ui->actionSortByName); + menu.addSeparator(); + menu.addAction(m_ui->actionDelete); + menu.addSeparator(); + menu.addAction(m_ui->actionRename); + menu.addSeparator(); + menu.addAction(m_ui->actionProperties); + menu.exec(m_ui->treeView->viewport()->mapToGlobal(pos)); +} + +void MainWindow::doubleClicked(const QModelIndex &index) +{ + switch (m_projectTreeModel->nodeType(index)) + { + case ProjectTreeModel::NodeType::Root: + if (index == m_projectTreeModel->gameInformationRoot()) + showGameInformation(); + else if (index == m_projectTreeModel->globalGameSettingsRoot()) + showGlobalGameSettings(); + else if (index == m_projectTreeModel->extensionPackagesRoot()) + showExtensionPackages(); + break; + case ProjectTreeModel::NodeType::Sprite: + { + auto sprite = m_projectTreeModel->getSprite(index); + if (!sprite) + break; + + if (const auto iter = m_spritePropertiesDialogs.find(sprite); iter != std::cend(m_spritePropertiesDialogs)) + { + m_ui->mdiArea->setActiveSubWindow(iter->second); + } + else + { + auto dialog = new SpritePropertiesDialog{*sprite}; + auto subwindow = m_ui->mdiArea->addSubWindow(dialog); + auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); + action->setCheckable(true); + connect(action, &QAction::triggered, + m_ui->mdiArea, [mdiArea=m_ui->mdiArea,subwindow,action](){ + mdiArea->setActiveSubWindow(subwindow); + action->setChecked(subwindow->windowState().testFlag(Qt::WindowActive)); + }); + connect(subwindow, &QMdiSubWindow::windowStateChanged, + action, [action](Qt::WindowStates oldState, Qt::WindowStates newState){ + action->setChecked(newState.testFlag(Qt::WindowActive)); + }); + connect(dialog, &QWidget::windowTitleChanged, action, &QAction::setText); + connect(dialog, &QDialog::finished, + this, [&spritePropertiesDialogs=m_spritePropertiesDialogs,subwindow](){ + for (auto iter = std::begin(spritePropertiesDialogs); iter != std::end(spritePropertiesDialogs); ) + { + if (iter->second == subwindow) + iter = spritePropertiesDialogs.erase(iter); + else + iter++; + } + }); + connect(dialog, &QDialog::finished, + subwindow, &QObject::deleteLater); + connect(dialog, &QDialog::finished, + action, &QObject::deleteLater); + m_spritePropertiesDialogs[sprite] = subwindow; + dialog->show(); + } + break; + } + case ProjectTreeModel::NodeType::Sound: + { + auto sound = m_projectTreeModel->getSound(index); + if (!sound) + break; + + if (const auto iter = m_soundPropertiesDialogs.find(sound); iter != std::cend(m_soundPropertiesDialogs)) + { + m_ui->mdiArea->setActiveSubWindow(iter->second); + } + else + { + auto dialog = new SoundPropertiesDialog{*sound}; + auto subwindow = m_ui->mdiArea->addSubWindow(dialog); + auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); + action->setCheckable(true); + connect(action, &QAction::triggered, + m_ui->mdiArea, [mdiArea=m_ui->mdiArea,subwindow,action](){ + mdiArea->setActiveSubWindow(subwindow); + action->setChecked(subwindow->windowState().testFlag(Qt::WindowActive)); + }); + connect(subwindow, &QMdiSubWindow::windowStateChanged, + action, [action](Qt::WindowStates oldState, Qt::WindowStates newState){ + action->setChecked(newState.testFlag(Qt::WindowActive)); + }); + connect(dialog, &QWidget::windowTitleChanged, action, &QAction::setText); + connect(dialog, &QDialog::finished, + this, [&soundPropertiesDialogs=m_soundPropertiesDialogs,subwindow](){ + for (auto iter = std::begin(soundPropertiesDialogs); iter != std::end(soundPropertiesDialogs); ) + { + if (iter->second == subwindow) + iter = soundPropertiesDialogs.erase(iter); + else + iter++; + } + }); + connect(dialog, &QDialog::finished, + subwindow, &QObject::deleteLater); + connect(dialog, &QDialog::finished, + action, &QObject::deleteLater); + m_soundPropertiesDialogs[sound] = subwindow; + dialog->show(); + } + break; + } + case ProjectTreeModel::NodeType::Background: + { + auto background = m_projectTreeModel->getBackground(index); + if (!background) + break; + + if (const auto iter = m_backgroundPropertiesDialogs.find(background); iter != std::cend(m_backgroundPropertiesDialogs)) + { + m_ui->mdiArea->setActiveSubWindow(iter->second); + } + else + { + auto dialog = new BackgroundPropertiesDialog{*background}; + auto subwindow = m_ui->mdiArea->addSubWindow(dialog); + auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); + action->setCheckable(true); + connect(action, &QAction::triggered, + m_ui->mdiArea, [mdiArea=m_ui->mdiArea,subwindow,action](){ + mdiArea->setActiveSubWindow(subwindow); + action->setChecked(subwindow->windowState().testFlag(Qt::WindowActive)); + }); + connect(subwindow, &QMdiSubWindow::windowStateChanged, + action, [action](Qt::WindowStates oldState, Qt::WindowStates newState){ + action->setChecked(newState.testFlag(Qt::WindowActive)); + }); + connect(dialog, &QWidget::windowTitleChanged, action, &QAction::setText); + connect(dialog, &QDialog::finished, + this, [&backgroundPropertiesDialogs=m_backgroundPropertiesDialogs,subwindow](){ + for (auto iter = std::begin(backgroundPropertiesDialogs); iter != std::end(backgroundPropertiesDialogs); ) + { + if (iter->second == subwindow) + iter = backgroundPropertiesDialogs.erase(iter); + else + iter++; + } + }); + connect(dialog, &QDialog::finished, + subwindow, &QObject::deleteLater); + connect(dialog, &QDialog::finished, + action, &QObject::deleteLater); + m_backgroundPropertiesDialogs[background] = subwindow; + dialog->show(); + } + break; + } + case ProjectTreeModel::NodeType::Path: + { + auto path = m_projectTreeModel->getPath(index); + if (!path) + break; + + if (const auto iter = m_pathPropertiesDialogs.find(path); iter != std::cend(m_pathPropertiesDialogs)) + { + m_ui->mdiArea->setActiveSubWindow(iter->second); + } + else + { + auto dialog = new PathPropertiesDialog{*path}; + auto subwindow = m_ui->mdiArea->addSubWindow(dialog); + auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); + action->setCheckable(true); + connect(action, &QAction::triggered, + m_ui->mdiArea, [mdiArea=m_ui->mdiArea,subwindow,action](){ + mdiArea->setActiveSubWindow(subwindow); + action->setChecked(subwindow->windowState().testFlag(Qt::WindowActive)); + }); + connect(subwindow, &QMdiSubWindow::windowStateChanged, + action, [action](Qt::WindowStates oldState, Qt::WindowStates newState){ + action->setChecked(newState.testFlag(Qt::WindowActive)); + }); + connect(dialog, &QWidget::windowTitleChanged, action, &QAction::setText); + connect(dialog, &QDialog::finished, + this, [&pathPropertiesDialogs=m_pathPropertiesDialogs,subwindow](){ + for (auto iter = std::begin(pathPropertiesDialogs); iter != std::end(pathPropertiesDialogs); ) + { + if (iter->second == subwindow) + iter = pathPropertiesDialogs.erase(iter); + else + iter++; + } + }); + connect(dialog, &QDialog::finished, + subwindow, &QObject::deleteLater); + connect(dialog, &QDialog::finished, + action, &QObject::deleteLater); + m_pathPropertiesDialogs[path] = subwindow; + dialog->show(); + } + break; + } + case ProjectTreeModel::NodeType::Script: + { + auto script = m_projectTreeModel->getScript(index); + if (!script) + break; + + if (const auto iter = m_scriptPropertiesDialogs.find(script); iter != std::cend(m_scriptPropertiesDialogs)) + { + m_ui->mdiArea->setActiveSubWindow(iter->second); + } + else + { + auto dialog = new ScriptPropertiesDialog{*script}; + auto subwindow = m_ui->mdiArea->addSubWindow(dialog); + auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); + action->setCheckable(true); + connect(action, &QAction::triggered, + m_ui->mdiArea, [mdiArea=m_ui->mdiArea,subwindow,action](){ + mdiArea->setActiveSubWindow(subwindow); + action->setChecked(subwindow->windowState().testFlag(Qt::WindowActive)); + }); + connect(subwindow, &QMdiSubWindow::windowStateChanged, + action, [action](Qt::WindowStates oldState, Qt::WindowStates newState){ + action->setChecked(newState.testFlag(Qt::WindowActive)); + }); + connect(dialog, &QWidget::windowTitleChanged, action, &QAction::setText); + connect(dialog, &QDialog::finished, + this, [&scriptPropertiesDialogs=m_scriptPropertiesDialogs,subwindow](){ + for (auto iter = std::begin(scriptPropertiesDialogs); iter != std::end(scriptPropertiesDialogs); ) + { + if (iter->second == subwindow) + iter = scriptPropertiesDialogs.erase(iter); + else + iter++; + } + }); + connect(dialog, &QDialog::finished, + subwindow, &QObject::deleteLater); + connect(dialog, &QDialog::finished, + action, &QObject::deleteLater); + m_scriptPropertiesDialogs[script] = subwindow; + dialog->show(); + } + break; + } + case ProjectTreeModel::NodeType::Font: + { + auto font = m_projectTreeModel->getFont(index); + if (!font) + break; + + if (const auto iter = m_fontPropertiesDialogs.find(font); iter != std::cend(m_fontPropertiesDialogs)) + { + m_ui->mdiArea->setActiveSubWindow(iter->second); + } + else + { + auto dialog = new FontPropertiesDialog{*font}; + auto subwindow = m_ui->mdiArea->addSubWindow(dialog); + auto action = m_ui->menuWindow->addAction(dialog->windowTitle()); + action->setCheckable(true); + connect(action, &QAction::triggered, + m_ui->mdiArea, [mdiArea=m_ui->mdiArea,subwindow,action](){ + mdiArea->setActiveSubWindow(subwindow); + action->setChecked(subwindow->windowState().testFlag(Qt::WindowActive)); + }); + connect(subwindow, &QMdiSubWindow::windowStateChanged, + action, [action](Qt::WindowStates oldState, Qt::WindowStates newState){ + action->setChecked(newState.testFlag(Qt::WindowActive)); + }); + connect(dialog, &QWidget::windowTitleChanged, action, &QAction::setText); + connect(dialog, &QDialog::finished, + this, [&fontPropertiesDialogs=m_fontPropertiesDialogs,subwindow](){ + for (auto iter = std::begin(fontPropertiesDialogs); iter != std::end(fontPropertiesDialogs); ) + { + if (iter->second == subwindow) + iter = fontPropertiesDialogs.erase(iter); + else + iter++; + } + }); + connect(dialog, &QDialog::finished, + subwindow, &QObject::deleteLater); + connect(dialog, &QDialog::finished, + action, &QObject::deleteLater); + m_fontPropertiesDialogs[font] = subwindow; + dialog->show(); + } + break; + } + } +} + +void MainWindow::selectionChanged(const QModelIndex &index) +{ + switch (const auto nodeType = m_projectTreeModel->nodeType(index)) + { + case ProjectTreeModel::NodeType::Root: + if (index == m_projectTreeModel->spritesRoot() || + index == m_projectTreeModel->soundsRoot() || + index == m_projectTreeModel->backgroundsRoot() || + index == m_projectTreeModel->pathsRoot() || + index == m_projectTreeModel->scriptsRoot() || + index == m_projectTreeModel->fontsRoot()) + { + m_ui->actionCreate->setEnabled(true); + m_ui->actionCreateGroup->setText(tr("Cr&eate Group")); + m_ui->actionCreateGroup->setEnabled(true); + m_ui->actionSortByName->setEnabled(true); + + if (index == m_projectTreeModel->spritesRoot()) + m_ui->actionCreate->setText(tr("&Create Sprite")); + else if (index == m_projectTreeModel->soundsRoot()) + m_ui->actionCreate->setText(tr("&Create Sound")); + else if (index == m_projectTreeModel->backgroundsRoot()) + m_ui->actionCreate->setText(tr("&Create Background")); + else if (index == m_projectTreeModel->pathsRoot()) + m_ui->actionCreate->setText(tr("&Create Path")); + else if (index == m_projectTreeModel->scriptsRoot()) + m_ui->actionCreate->setText(tr("&Create Script")); + else if (index == m_projectTreeModel->fontsRoot()) + m_ui->actionCreate->setText(tr("&Create Font")); + } + else + { + m_ui->actionCreate->setEnabled(false); + m_ui->actionCreate->setText(tr("&Create")); + m_ui->actionCreateGroup->setText(tr("Cr&eate Group")); + m_ui->actionCreateGroup->setEnabled(false); + m_ui->actionSortByName->setEnabled(false); + } + + m_ui->actionDuplicate->setEnabled(false); + m_ui->actionDelete->setEnabled(false); + m_ui->actionRename->setEnabled(false); + m_ui->actionProperties->setEnabled( + index == m_projectTreeModel->gameInformationRoot() || + index == m_projectTreeModel->globalGameSettingsRoot() || + index == m_projectTreeModel->extensionPackagesRoot()); + break; + case ProjectTreeModel::NodeType::Sprite: + case ProjectTreeModel::NodeType::Sound: + case ProjectTreeModel::NodeType::Background: + case ProjectTreeModel::NodeType::Path: + case ProjectTreeModel::NodeType::Script: + case ProjectTreeModel::NodeType::Font: + m_ui->actionCreate->setEnabled(true); + switch (nodeType) + { + case ProjectTreeModel::NodeType::Sprite: m_ui->actionCreate->setText(tr("&Insert Sprite")); break; + case ProjectTreeModel::NodeType::Sound: m_ui->actionCreate->setText(tr("&Insert Sound")); break; + case ProjectTreeModel::NodeType::Background: m_ui->actionCreate->setText(tr("&Insert Background")); break; + case ProjectTreeModel::NodeType::Path: m_ui->actionCreate->setText(tr("&Insert Path")); break; + case ProjectTreeModel::NodeType::Script: m_ui->actionCreate->setText(tr("&Insert Script")); break; + case ProjectTreeModel::NodeType::Font: m_ui->actionCreate->setText(tr("&Insert Font")); break; + default: + __builtin_unreachable(); + } + m_ui->actionDuplicate->setEnabled(true); + m_ui->actionCreateGroup->setText(tr("I&nsert Group")); + m_ui->actionCreateGroup->setEnabled(true); + m_ui->actionSortByName->setEnabled(false); + m_ui->actionDelete->setEnabled(true); + m_ui->actionRename->setEnabled(true); + m_ui->actionProperties->setEnabled(true); + break; + default: + m_ui->actionCreate->setEnabled(false); + m_ui->actionCreate->setText(tr("&Create")); + m_ui->actionDuplicate->setEnabled(false); + m_ui->actionCreateGroup->setText(tr("Cr&eate Group")); + m_ui->actionCreateGroup->setEnabled(false); + m_ui->actionSortByName->setEnabled(false); + m_ui->actionDelete->setEnabled(false); + m_ui->actionRename->setEnabled(false); + m_ui->actionProperties->setEnabled(false); + } +} + +void MainWindow::newFile() +{ + m_ui->mdiArea->closeAllSubWindows(); + if (!m_ui->mdiArea->subWindowList().empty()) + return; + + if (m_unsavedChanges) + { + const auto result = QMessageBox::warning( + this, + tr("The Game has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + saveFile(); + if (m_unsavedChanges) + return; + else + break; + case QMessageBox::Discard: + break; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + return; + } + } + + m_project = {}; + m_projectTreeModel->setProject(&m_project); + + m_filePath = {}; + m_unsavedChanges = false; + + updateTitle(); +} + +void MainWindow::openFile() +{ + auto path = QFileDialog::getOpenFileName(this, tr("Load a game"), {}, tr("GMK Files (*.gmk)")); + if (path.isEmpty()) + return; + + ProjectContainer project; + + { + QFile file{path}; + if (!file.open(QIODevice::ReadOnly)) + { + QMessageBox::warning(this, tr("Could not load game!"), tr("Could not load game!") + "\n\n" + file.errorString()); + return; + } + + QDataStream dataStream{&file}; + dataStream >> project; + } + + m_ui->mdiArea->closeAllSubWindows(); + if (!m_ui->mdiArea->subWindowList().empty()) + return; + + if (m_unsavedChanges) + { + const auto result = QMessageBox::warning( + this, + tr("The Game has been modified."), + tr("Do you want to save your changes?"), + QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, + QMessageBox::Save + ); + switch (result) + { + case QMessageBox::Save: + saveFile(); + if (m_unsavedChanges) + return; + else + break; + case QMessageBox::Discard: + break; + case QMessageBox::Cancel: + return; + default: + qWarning() << "unexpected dialog result" << result; + return; + } + } + + m_project = std::move(project); + m_projectTreeModel->setProject(&m_project); + + m_filePath = path; + m_unsavedChanges = false; + + updateTitle(); +} + +void MainWindow::saveFile() +{ + if (m_filePath.isEmpty()) + { + saveFileAs(); + return; + } + + { + QFile file{m_filePath}; + if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) + { + QMessageBox::warning(this, tr("Could not save game!"), tr("Could not save game!") + "\n\n" + file.errorString()); + saveFileAs(); + return; + } + + QDataStream dataStream{&file}; + dataStream << m_project; + } + + m_unsavedChanges = false; + + updateTitle(); +} + +void MainWindow::saveFileAs() +{ + auto path = QFileDialog::getSaveFileName(this, tr("Save the game"), "mygame.gmk", tr("GMK Files (*.gmk)")); + if (path.isEmpty()) + return; + + { + QFile file{path}; + if (!file.open(QIODevice::WriteOnly | QIODevice::Truncate)) + { + QMessageBox::warning(this, tr("Could not save game!"), tr("Could not save game!") + "\n\n" + file.errorString()); + return; + } + + QDataStream dataStream{&file}; + dataStream << m_project; + } + + m_filePath = path; + m_unsavedChanges = false; + + updateTitle(); +} + +void MainWindow::createExecutable() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::publishGame() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::importResources() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::exportResources() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::preferences() +{ + PreferencesDialog{this}.exec(); +} + +void MainWindow::create() +{ + const auto index = m_ui->treeView->currentIndex(); + if (!index.isValid()) + return; + + if (index == m_projectTreeModel->spritesRoot()) + createSprite(); + else if (index == m_projectTreeModel->soundsRoot()) + createSound(); + else if (index == m_projectTreeModel->backgroundsRoot()) + createBackground(); + else if (index == m_projectTreeModel->pathsRoot()) + createPath(); + else if (index == m_projectTreeModel->scriptsRoot()) + createScript(); + else if (index == m_projectTreeModel->fontsRoot()) + createFont(); + else + { + switch (m_projectTreeModel->nodeType(index)) + { + case ProjectTreeModel::NodeType::Sprite: + case ProjectTreeModel::NodeType::Sound: + case ProjectTreeModel::NodeType::Background: + case ProjectTreeModel::NodeType::Path: + case ProjectTreeModel::NodeType::Script: + case ProjectTreeModel::NodeType::Font: + if (!m_projectTreeModel->insertRows(index.row(), 1, index.parent())) + QMessageBox::warning(this, tr("Inserting failed!"), tr("Inserting failed!")); + break; + } + } +} + +void MainWindow::duplicate() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::createGroup() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::sortByName() +{ + QMessageBox::warning(this, tr("Not yet implemented"), tr("Not yet implemented")); +} + +void MainWindow::delete_() +{ + const auto index = m_ui->treeView->currentIndex(); + if (!index.isValid()) + return; + if (!m_projectTreeModel->removeRow(index.row(), index.parent())) + QMessageBox::warning(this, tr("Deleting failed!"), tr("Deleting failed!")); +} + +void MainWindow::rename() +{ + m_ui->treeView->edit(m_ui->treeView->currentIndex()); +} + +void MainWindow::showProperties() +{ + const auto index = m_ui->treeView->currentIndex(); + if (!index.isValid()) + { + qWarning() << "unexpected invalid index"; + return; + } + + doubleClicked(index); +} + +void MainWindow::createSprite() +{ + if (!m_projectTreeModel->insertRows(m_project.sprites.size(), 1, m_projectTreeModel->spritesRoot())) + QMessageBox::warning(this, tr("Creating Sprite failed!"), tr("Creating Sprite failed!")); +} + +void MainWindow::createSound() +{ + if (!m_projectTreeModel->insertRows(m_project.sounds.size(), 1, m_projectTreeModel->soundsRoot())) + QMessageBox::warning(this, tr("Creating Sound failed!"), tr("Creating Sound failed!")); +} + +void MainWindow::createBackground() +{ + if (!m_projectTreeModel->insertRows(m_project.backgrounds.size(), 1, m_projectTreeModel->backgroundsRoot())) + QMessageBox::warning(this, tr("Creating Background failed!"), tr("Creating Background failed!")); +} + +void MainWindow::createPath() +{ + if (!m_projectTreeModel->insertRows(m_project.paths.size(), 1, m_projectTreeModel->pathsRoot())) + QMessageBox::warning(this, tr("Creating Path failed!"), tr("Creating Path failed!")); +} + +void MainWindow::createScript() +{ + if (!m_projectTreeModel->insertRows(m_project.scripts.size(), 1, m_projectTreeModel->scriptsRoot())) + QMessageBox::warning(this, tr("Creating Script failed!"), tr("Creating Script failed!")); +} + +void MainWindow::createFont() +{ + if (!m_projectTreeModel->insertRows(m_project.fonts.size(), 1, m_projectTreeModel->fontsRoot())) + QMessageBox::warning(this, tr("Creating Font failed!"), tr("Creating Font failed!")); +} + +void MainWindow::showGameInformation() +{ + GameInformationDialog{this}.exec(); +} + +void MainWindow::showGlobalGameSettings() +{ + GlobalGameSettingsDialog{this}.exec(); +} + +void MainWindow::showExtensionPackages() +{ + ExtensionPackagesDialog{this}.exec(); +} + +void MainWindow::about() +{ + QMessageBox::about(this, tr("About Qt Game Maker"), + tr("This About-Dialog is not finished.")); +} + +void MainWindow::rowsInserted(const QModelIndex &parent, int first, int last) +{ + m_ui->treeView->expand(parent); + const auto index = m_projectTreeModel->index(first, 0, parent); + m_ui->treeView->selectionModel()->select(index, QItemSelectionModel::ClearAndSelect); + doubleClicked(index); +} + +void MainWindow::rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last) +{ + if (parent == m_projectTreeModel->spritesRoot()) + { + for (int row = first; row <= last; row++) + { + if (const auto sprite = m_projectTreeModel->getSprite(m_projectTreeModel->index(row, 0, parent))) + { + if (const auto iter = m_spritePropertiesDialogs.find(sprite); iter != std::end(m_spritePropertiesDialogs)) + { + delete iter->second; + m_spritePropertiesDialogs.erase(iter); + } + } + } + } + else if (parent == m_projectTreeModel->soundsRoot()) + { + for (int row = first; row <= last; row++) + { + if (const auto sound = m_projectTreeModel->getSound(m_projectTreeModel->index(row, 0, parent))) + { + if (const auto iter = m_soundPropertiesDialogs.find(sound); iter != std::end(m_soundPropertiesDialogs)) + { + delete iter->second; + m_soundPropertiesDialogs.erase(iter); + } + } + } + } + else if (parent == m_projectTreeModel->backgroundsRoot()) + { + for (int row = first; row <= last; row++) + { + if (const auto background = m_projectTreeModel->getBackground(m_projectTreeModel->index(row, 0, parent))) + { + if (const auto iter = m_backgroundPropertiesDialogs.find(background); iter != std::end(m_backgroundPropertiesDialogs)) + { + delete iter->second; + m_backgroundPropertiesDialogs.erase(iter); + } + } + } + } + else if (parent == m_projectTreeModel->pathsRoot()) + { + for (int row = first; row <= last; row++) + { + if (const auto path = m_projectTreeModel->getPath(m_projectTreeModel->index(row, 0, parent))) + { + if (const auto iter = m_pathPropertiesDialogs.find(path); iter != std::end(m_pathPropertiesDialogs)) + { + delete iter->second; + m_pathPropertiesDialogs.erase(iter); + } + } + } + } + else if (parent == m_projectTreeModel->scriptsRoot()) + { + for (int row = first; row <= last; row++) + { + if (const auto script = m_projectTreeModel->getScript(m_projectTreeModel->index(row, 0, parent))) + { + if (const auto iter = m_scriptPropertiesDialogs.find(script); iter != std::end(m_scriptPropertiesDialogs)) + { + delete iter->second; + m_scriptPropertiesDialogs.erase(iter); + } + } + } + } + else if (parent == m_projectTreeModel->fontsRoot()) + { + for (int row = first; row <= last; row++) + { + if (const auto font = m_projectTreeModel->getFont(m_projectTreeModel->index(row, 0, parent))) + { + if (const auto iter = m_fontPropertiesDialogs.find(font); iter != std::end(m_fontPropertiesDialogs)) + { + delete iter->second; + m_fontPropertiesDialogs.erase(iter); + } + } + } + } +} + +void MainWindow::modelAboutToBeReset() +{ + for (const auto &pair : m_spritePropertiesDialogs) + delete pair.second; + m_spritePropertiesDialogs.clear(); + for (const auto &pair : m_soundPropertiesDialogs) + delete pair.second; + m_soundPropertiesDialogs.clear(); + for (const auto &pair : m_backgroundPropertiesDialogs) + delete pair.second; + m_backgroundPropertiesDialogs.clear(); + for (const auto &pair : m_pathPropertiesDialogs) + delete pair.second; + m_pathPropertiesDialogs.clear(); + for (const auto &pair : m_scriptPropertiesDialogs) + delete pair.second; + m_scriptPropertiesDialogs.clear(); + for (const auto &pair : m_fontPropertiesDialogs) + delete pair.second; + m_fontPropertiesDialogs.clear(); +} + +void MainWindow::updateTitle() +{ + setWindowTitle(tr("%0 - Qt Gamemaker 1.0 Ultimate%1") + .arg(m_filePath.isEmpty() ? "" : QFileInfo{m_filePath}.fileName()) + .arg(m_unsavedChanges ? tr("*") : QString{})); +} diff --git a/mainwindow.h b/mainwindow.h new file mode 100644 index 0000000..bd21b2b --- /dev/null +++ b/mainwindow.h @@ -0,0 +1,79 @@ +#pragma once + +#include + +#include +#include + +#include "projectcontainer.h" + +class QMdiSubWindow; +namespace Ui { class MainWindow; } +class ProjectTreeModel; + +class MainWindow : public QMainWindow +{ + Q_OBJECT + +public: + explicit MainWindow(QWidget *parent = nullptr); + ~MainWindow(); + +protected: + void closeEvent(QCloseEvent *event) override; + +private slots: + void contextMenuRequested(const QPoint &pos); + void doubleClicked(const QModelIndex &index); + void selectionChanged(const QModelIndex &index); + + void newFile(); + void openFile(); + void saveFile(); + void saveFileAs(); + void createExecutable(); + void publishGame(); + void importResources(); + void exportResources(); + void preferences(); + void create(); + void duplicate(); + void createGroup(); + void sortByName(); + void delete_(); + void rename(); + void showProperties(); + void createSprite(); + void createSound(); + void createBackground(); + void createPath(); + void createScript(); + void createFont(); + void showGameInformation(); + void showGlobalGameSettings(); + void showExtensionPackages(); + void about(); + + void rowsInserted(const QModelIndex &parent, int first, int last); + void rowsAboutToBeRemoved(const QModelIndex &parent, int first, int last); + void modelAboutToBeReset(); + +private: + void updateTitle(); + + const std::unique_ptr m_ui; + + ProjectContainer m_project; + + QString m_filePath; + bool m_unsavedChanges{}; + + const std::unique_ptr m_projectTreeModel; + + std::map m_spritePropertiesDialogs; + std::map m_soundPropertiesDialogs; + std::map m_backgroundPropertiesDialogs; + std::map m_pathPropertiesDialogs; + std::map m_scriptPropertiesDialogs; + std::map m_fontPropertiesDialogs; +}; diff --git a/mainwindow.ui b/mainwindow.ui new file mode 100644 index 0000000..46000c1 --- /dev/null +++ b/mainwindow.ui @@ -0,0 +1,967 @@ + + + MainWindow + + + + 0 + 0 + 800 + 600 + + + + Qt Gamemaker 1.0 Ultimate + + + + Qt::Horizontal + + + + Qt::CustomContextMenu + + + QAbstractItemView::EditKeyPressed + + + true + + + + 16 + 16 + + + + true + + + true + + + + + + + 159 + 159 + 159 + + + + + + + + + 0 + 0 + 800 + 20 + + + + + &File + + + + &Recent Files + + + + + + + + + + + + + + + + + + + + + + + + &Edit + + + + + + + + + + + + + + + + + + + + + &Resources + + + + + + + + + + + + + + + + + + + + + + &Scripts + + + + + + + + + + + + + + + + + + R&un + + + + + + + &Window + + + + + + + + + + + + + + + + + &Help + + + + &Tutorials + + + + + + &Extension Packages + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + toolBar + + + false + + + + 16 + 16 + + + + TopToolBarArea + + + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + :/qtgameengine/icons/actions/new.png:/qtgameengine/icons/actions/new.png + + + &New + + + + + + :/qtgameengine/icons/actions/open.png:/qtgameengine/icons/actions/open.png + + + &Open + + + + + + :/qtgameengine/icons/actions/save.png:/qtgameengine/icons/actions/save.png + + + &Save + + + + + + :/qtgameengine/icons/actions/save-as.png:/qtgameengine/icons/actions/save-as.png + + + Save &As... + + + + + + :/qtgameengine/icons/actions/create-executable.png:/qtgameengine/icons/actions/create-executable.png + + + &Create Executable... + + + + + + :/qtgameengine/icons/actions/publish-game.png:/qtgameengine/icons/actions/publish-game.png + + + P&ublish your Game... + + + + + + :/qtgameengine/icons/actions/import-resources.png:/qtgameengine/icons/actions/import-resources.png + + + &Import Resources... + + + + + + :/qtgameengine/icons/actions/export-resources.png:/qtgameengine/icons/actions/export-resources.png + + + &Export Resources... + + + + + true + + + true + + + Ad&vanced Mode + + + + + + :/qtgameengine/icons/actions/preferences.png:/qtgameengine/icons/actions/preferences.png + + + &Preferences... + + + QAction::PreferencesRole + + + + + + :/qtgameengine/icons/actions/exit.png:/qtgameengine/icons/actions/exit.png + + + E&xit + + + QAction::QuitRole + + + + + false + + + (none) + + + + + + :/qtgameengine/icons/actions/create.png:/qtgameengine/icons/actions/create.png + + + &Create + + + + + + :/qtgameengine/icons/actions/duplicate.png:/qtgameengine/icons/actions/duplicate.png + + + D&uplicate + + + Alt+Ins + + + + + + :/qtgameengine/icons/actions/create-group.png:/qtgameengine/icons/actions/create-group.png + + + Cr&eate Group + + + + + &Sort by Name + + + + + + :/qtgameengine/icons/actions/delete.png:/qtgameengine/icons/actions/delete.png + + + &Delete + + + + + + :/qtgameengine/icons/actions/rename.png:/qtgameengine/icons/actions/rename.png + + + &Rename + + + + + + :/qtgameengine/icons/actions/properties.png:/qtgameengine/icons/actions/properties.png + + + &Properties + + + Alt+Return + + + + + + :/qtgameengine/icons/actions/find.png:/qtgameengine/icons/actions/find.png + + + &Find Resource + + + + + E&xpand Resource Tree + + + + + C&ollapse Resource Tree + + + + + &Show Object Information + + + + + + :/qtgameengine/icons/actions/sprite.png:/qtgameengine/icons/actions/sprite.png + + + Create &Sprite + + + Ctrl+Shift+S + + + + + + :/qtgameengine/icons/actions/sound.png:/qtgameengine/icons/actions/sound.png + + + Create So&und + + + Ctrl+Shift+U + + + + + + :/qtgameengine/icons/actions/background.png:/qtgameengine/icons/actions/background.png + + + Create &Background + + + Ctrl+Shift+B + + + + + + :/qtgameengine/icons/actions/path.png:/qtgameengine/icons/actions/path.png + + + Create &Path + + + Ctrl+Shift+P + + + + + + :/qtgameengine/icons/actions/script.png:/qtgameengine/icons/actions/script.png + + + Create S&cript + + + Ctrl+Shift+C + + + + + + :/qtgameengine/icons/actions/font.png:/qtgameengine/icons/actions/font.png + + + Create &Font + + + Ctrl+Shift+F + + + + + + :/qtgameengine/icons/actions/timeline.png:/qtgameengine/icons/actions/timeline.png + + + Create &Time Line + + + Ctrl+Shift+T + + + + + + :/qtgameengine/icons/actions/object.png:/qtgameengine/icons/actions/object.png + + + Create &Object + + + Ctrl+Shift+O + + + + + + :/qtgameengine/icons/actions/room.png:/qtgameengine/icons/actions/room.png + + + Create &Room + + + Ctrl+Shift+R + + + + + + :/qtgameengine/icons/actions/game-information.png:/qtgameengine/icons/actions/game-information.png + + + Change Game &Information + + + Ctrl+Shift+I + + + + + + :/qtgameengine/icons/actions/global-game-settings.png:/qtgameengine/icons/actions/global-game-settings.png + + + Change &Global Game Settings + + + Ctrl+Shift+G + + + + + + :/qtgameengine/icons/actions/extension-packages.png:/qtgameengine/icons/actions/extension-packages.png + + + Select &Extension Packages + + + Ctrl+Shift+E + + + + + Define Co&nstants... + + + Ctrl+Shift+N + + + + + &Define Triggers... + + + Ctrl+Shift+D + + + + + Inc&luded Files... + + + Ctrl+Shift+L + + + + + + :/qtgameengine/icons/actions/run.png:/qtgameengine/icons/actions/run.png + + + &Run normally + + + F5 + + + + + + :/qtgameengine/icons/actions/debug.png:/qtgameengine/icons/actions/debug.png + + + Run in &Debug mode + + + F6 + + + + + &Import Scripts... + + + + + + :/qtgameengine/icons/actions/help.png:/qtgameengine/icons/actions/help.png + + + &Contents + + + + + &News... + + + + + &Book... + + + + + &More Tutorials... + + + + + &Website... + + + + + &Forum... + + + + + W&iki... + + + + + &About Game Maker... + + + QAction::AboutRole + + + + + About &Qt... + + + QAction::AboutQtRole + + + + + &Export All Scripts... + + + + + Show Built-in &Variables + + + + + Show Build-in &Functions + + + + + S&how Extension Functions + + + + + Show &Constants + + + + + &Show Resource Names + + + + + Search i&n Scripts... + + + + + Check &Resource Names + + + + + Check &All Scripts + + + + + Cl&ose + + + + + Close &All + + + + + + :/qtgameengine/icons/actions/tile.png:/qtgameengine/icons/actions/tile.png + + + &Tile + + + + + + :/qtgameengine/icons/actions/cascade.png:/qtgameengine/icons/actions/cascade.png + + + &Cascade + + + + + Ne&xt + + + + + Pre&vious + + + + + true + + + Sub-Windowed view + + + + + true + + + Tabbed view + + + + + + + + + actionExit + triggered() + MainWindow + close() + + + -1 + -1 + + + 399 + 299 + + + + + actionExpandResourceTree + triggered() + treeView + expandAll() + + + -1 + -1 + + + 66 + 314 + + + + + actionCollapseResourceTree + triggered() + treeView + collapseAll() + + + -1 + -1 + + + 66 + 314 + + + + + actionClose + triggered() + mdiArea + closeActiveSubWindow() + + + -1 + -1 + + + 468 + 314 + + + + + actionCloseAll + triggered() + mdiArea + closeAllSubWindows() + + + -1 + -1 + + + 468 + 314 + + + + + actionTile + triggered() + mdiArea + tileSubWindows() + + + -1 + -1 + + + 468 + 314 + + + + + actionCascade + triggered() + mdiArea + cascadeSubWindows() + + + -1 + -1 + + + 468 + 314 + + + + + actionPrevious + triggered() + mdiArea + activatePreviousSubWindow() + + + -1 + -1 + + + 468 + 314 + + + + + actionNext + triggered() + mdiArea + activateNextSubWindow() + + + -1 + -1 + + + 468 + 314 + + + + + diff --git a/projdata/backgrounds/background0.png b/projdata/backgrounds/background0.png new file mode 100644 index 0000000000000000000000000000000000000000..6a036b2da1a82c0214ddafe1468ece88bb561ac3 GIT binary patch literal 5358 zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sV0^&A#=yW}dhyN^1_qI>o-U3d6?5KRQ|w!D zv$XYMTVvb8#rIWa> zPV@Tzv+mdF`TxJXo&WUw|DW&g|NA0e|L5EB`rp^{>wg^HU-SFr^7;Gz{{P-z|L5`l zx_`f_e{|LTmH%gJ|Lc9z`;XP{r^na*{AOSO|L5)d_5WUPpa1{c{rmrZP5=LE`CWkr zzyHM5|NXM~KLevjC&LmK2B&6*7DEubg^iITnQ4L$BM0w!_6Nt0w=+EP7H*ir;gBKF zV4%jJDcEq~Lk&Y+T^*OhJ`+q0`S0E9zdWesbns$PFyU~JK+~$gkm$n@q{Oh$k>St` zT=p^v9Ai;XWfG8LQRo>p2z%U&h7ldo(T|4g#)S2IRj+^J0wsU`9c2!0wr+oND~^$a zm+1rJb-s?h-=@Xf)&?bKy9c)zH(tLtDZ83g!Gz-gdyKWhw_DLgx$7BP*cg8_WV0WM ztM*>^Rv@6UK*I;2#D7i}O7 zZ~wmNm#fi7D<9!nM+>&m!hh&gkn#n(0;A;~!w@Us6?$U1S#IHPg@KByuK`>R`-}*d zR5tPr^78Ub6ZCyi+i!W~d(Qmf@ndI( zPfO9-jTLqb_V)Iy3h}d0d$k}9+rKZiulleTt$ZBq9HWmnz$0d~c|3TV$2AAGI&2v2 v=MJ?Vy+N6-K!z}A@B!xlT-*KE>;JQsbP0l+XkKF5-?U literal 0 HcmV?d00001 diff --git a/projdata/sounds/background_music.mid b/projdata/sounds/background_music.mid new file mode 100644 index 0000000000000000000000000000000000000000..5e3a30b722734b940d8a8cd6fff9591a93992a53 GIT binary patch literal 5141 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 NhP1@w5*7vs007$yihuwB literal 0 HcmV?d00001 diff --git a/projdata/sounds/sirens.wav b/projdata/sounds/sirens.wav new file mode 100644 index 0000000000000000000000000000000000000000..e9629d0c7044ddb6711e3d36fe37aa72089d1837 GIT binary patch literal 4571 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�PV*|l=S%D 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 E07NpOI{*Lx literal 0 HcmV?d00001 diff --git a/projdata/sprites/banana.png b/projdata/sprites/banana.png new file mode 100644 index 0000000000000000000000000000000000000000..1c4cd06954cf68445ce707ff1f5dc2df2f01fe19 GIT binary patch literal 3855 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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�PV*|l=S%D z)AOqf92giLmegJRr=!1Fs==DAA@|=R)pslzaoh_^zjvo?;&<4}u;Asb@XrOHuyI{D zVdu@8PoF%w;dR6*I`LF^?Z5Ox@dv{H=KQR)`SbnjgME)w8jWHb-C2G-ICSQV&r+H5 zlQ>(F?mX*v|FfO@{~y`QN=H1Cc1CE4JPs5p>~opb^Vw*rQm4}-&7-Q9{-->;uk)MP z?!GC*hAcbA>WR85Vw0J_d8-RVlpJ{Uoq^%g?)-ySG&qj}HTE=evN)dL5KdIQ z)xnt56`|b6AwIM9hvGpG7NKqxg_9j3flA&JO+5^QxN*)_l1-a!&&`e3ua#^+9GA!W47@5h1D7SxBBgz zj~g6#A;E5ZB*#GS*kPxQ7CM}hlTU9{TEnyYnAC=_HO#v^zb2pGSk5BU=z4(DjHTR3 zAyLlJBf=-b?}o<;1sN3+!CRc>oXjnOht!oOukhZYwoCBm5s4%t!}bUd9p!66{lfYJ z)g8`9%vFRsosHCYPGIufxFqC~&?UD^c|poAbym(c@sLuUeDYRG_9k}ADLM+;Ct9D( zeRBAT@e}DMil3sn<|a85F8LAsNF(S}mY3vHfu|-<*-~d1IfgEt6?AvS!Vp2z{wSxl z3%3QW4{To{Y*ISQ@@%u1r}xsei>6+d$`H@^p1J--$u7aWQ|0`oUkJZ+`lb7e=`WbS zl=JYmi8deaNY{{@Ex|64E?F+IeumF7$;;i6$3qOv4PVcAK9hfDerSZ&Hmw@biKn=x zdQDZEDy^j-vU1h3RrgkLhkgz{9n!xtF1U7`Tc~mHe>d_u9`{m@QFl-8KgT-vdGO8PyUV$j zi}~7GeO;%wDtoE)!rd*_s-Zv4yNvdDMa_T;rjSw=362#t!}?6!99TGea2*X~{}xO}JIWWUw(uB9K| z@NwJ8Z7a7+Zg_fw?e@BDx!Y zH{DKew)C;PC-y$^D*0L%`>^WL*SWJd&pz~a#qIU)%-&_bYrix9jLCe>d6CA&7Y?6r zeh~QdqCNNgsRr5i*VOqt`!}Xte?weiF{Ks~WZOrc( z-HVJrV}4-!iS4KT59iN|Z@uqaulzsdf7Sns49go-8Pl0N8yy>?nSTGMs!`nEXK!^o z_1mVKZykFU>~s`$>~C7z^z`6b#f%egCahKb{(Q!{iRUu;S_A4{T)V)Y_$;yea2=0& zYkO;Wn|)tFM}*Wx!|A5w7w~uqa%k{cmrdoEZ^s;PjneQ^$Wq(XB zE%MCOh`AA-Io>jsdRptu@^bdw|MT{9`=hy!xF1)G&(J>+TTr?1+@UY6%f(je3F%l( zbMWc#vzYS1Q9x^jSdZ!_;d0eJuF6BQhtiewFPdHKxZxb5CFl3aL(8{n(wm8UOe9?^Mp05k-A*loR+-^iPE^P#l9&$H9T$q+0Ijz(^k*ZKKu5}=2N#P zn9q4X|NmQ|LqZQHZCl#r9j+@I@oev!EXz$cg_XCt9*eSSw}r8-vDwkJO)K}R|LV8l z)7RDQRjcyNZj3v4s_EcX#_ZSJpLO=5U*2G_JbEWM>JG<72+!miM zT7N_1PQ_E{_WV=(XWp5zW##H4J5$c5T}pfT?4IttXufHyrazm`m&bea))wCTVO!pQ z{pNaGfBIRC+q;{$IqzJ&-)6_2)a577owc?PSrYOkt)mB z$?2cY_spF-x3*62=bePxi?&riPd;})i$DMUE`gGVmt6mMKeygveJhIR>@!u2w#o?{vP3ODqSM8(!-MR7pPJPya z@&%tS-f{oV*4ljj-^8!|{LZZXGy6}s@wUC5XJKb)`N+QL@5?{SozJJ7SDPpPZ_&Tg z>%_(M>wa8)ef`|U85b8$|1^E_{@j|Se_tJVExG>ou|vn?_MNOSHjMic_WSL@@;l|S z?-$?a_kU8OP_OYn%y{D2X6)LM!8D?Ou8!5m6i)U_P)6A=l2CiH$8UslPdaQTr9Eg`|p46 zYu{HpGbk_!WXbN%ohag*@ipzxQWnmWx4k@i0~c-n&hYW*j+qwLt191qstyefw=cW5 zqiW5+XMa@83+rP3XX(ZH9qDGUFiz6h`z!G5)av+ckI(1t`k1g#+?#-; zL|a~P3QpQSRiIX|-2Hsr*{$cF{Iq|z=tt_VXYbdm&sga#{On0<`Hkb7+j)-v3vZaS zYOZg~lU&{Jd+zPLVQKK|{7nD*$J&3txn9K-bMoRou1Bj6mz-=p{A<%q=eF>9;tN`q z%#c+%`bI@FZF$u3cOjX*);wv}ij~gq+jo6iocvz#$9EZq_c>8lqVEW&?cQzkY`x;S zUg^%A4z+mrG`5{hgif z4XnQP9sYf6_J->f2~U@*&rzuUGL0>%{*2!odGkE}h9xs%wbmvEElw7f+^n4YRMkS7 zsX)_l#}tLEn6m{}st$Y_;@-}4Igu&h?7&lgQ;5>7c3s4Tp-H0UG4 zl4}xIE)dgyUGS}Bll>*`orXLY zCo^h_#6M?!E|4gi5)$$H-_;At(s*-~xVEY`cxCe#q*d=SywDnPUqk6*;*np%9beT2 z-buO~KOnK_qu>vwSb?bzE(?5(E7-%*H{HQ_+7_>D9+AAfV1`Lar?zhSIq^xZ^O}5- zhd%^|1`T^V72)T(O!EquD zUfDC&Y_ilE&pvo>%U z$-#@%XKb(ibVXDrW`F;Ed7Ves^7##o>)GA?^%bs}&+N#Bm|-ckBq@!a1J+J14n zdRHz^!)kBC z%JchAizlwhFPSWLg0UrGb(#2*gHx0=-R`g~NYX4{bEh}aXh8|Gi6WoCjL;~+wqM@QA+;iCgHr0mZMBd-fZPkiNAd+X`Vogmq1anh5mG* zI~Tq!zf~l*V1<-|X7Z%9LZ8m2Ty2_np=%pQ%#Ds~CX3JdGkO}<&Dz+o{=1l9O84FC z)rn`{?R#Oj;M&Gisad|EH|IWhU3*@1jy6YJiTas1x5+-L{Hqo0Cktmc=YQ5q;N04$ zd;P*Q_nodks`B^UN{zq0>*_pf!|dj0*6-i)53k{7ob~k5Oje`rkEL-}ymSR@7ly8y z8ue-VxvbRY%`vlFoa(by{T+~$`qrJ7RI}a{4*s*q(qH)g};XN4*YlIzn zbEDFcQJ+?e z(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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 V%gy)87#J8BJYD@<);T3K0RYM$+I#>2 literal 0 HcmV?d00001 diff --git a/projdata/sprites/strawberry.png b/projdata/sprites/strawberry.png new file mode 100644 index 0000000000000000000000000000000000000000..2d07aca0bba84037a4197c8bd4b5b1aa9d981d4e GIT binary patch literal 4285 zcmeAS@N?(olHy`uVBq!ia0y~yU{C;I4mJh`hT^KKFANL}oCO|{#S9GG!XV7ZFl&wk z0|S?Trn7TEKt_H^esM;Afr6*AvqC{pep+TuDg#5st+~PJA;B-jY`@?8;^f`YFvUAR zNR&e%$f>(QWTKjuBBy{?hvLGUqJakmU0qqEPb}zQ?(1vl5e?Mg>EgP<{zP$6U-ROQ zu2a7sRxi%Jw&(k^v;VeUw|lQz`~GlIyvbvLx3(rf_nY4%M1;3f6T0AWQd-kD9X5C zB7=f(YKIF$hBd>Q^I=`C3=swlB5B@7EE#U-G8lMT#JFBV&*2Bohp{DjnN#sh3w(sdU6`)JjJy| z%o3RrXF2E{s+=il)M�PV*|l=S%D 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�PV*|l=S%D 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 &ds, Sprite &sprite) +{ + ds >> sprite.name; + { + int pixmaps; + ds >> pixmaps; + + for (int i = 0; i < pixmaps; i++) + { + QPixmap pixmap; + ds >> pixmap; + sprite.pixmaps.emplace_back(std::move(pixmap)); + } + } + ds >> sprite.origin.x; + ds >> sprite.origin.y; + ds >> sprite.preciseCollisionChecking; + ds >> sprite.separateCollisionMasks; + return ds; +} + +QDataStream &operator<<(QDataStream &ds, const Sound &sound) +{ + ds << sound.name; + ds << sound.type; + ds << sound.path; + ds << sound.effects.chorus; + ds << sound.effects.flanger; + ds << sound.effects.gargle; + ds << sound.effects.echo; + ds << sound.effects.reverb; + ds << sound.volume; + ds << sound.pan; + ds << sound.preload; + return ds; +} + +QDataStream &operator>>(QDataStream &ds, Sound &sound) +{ + ds >> sound.name; + ds >> sound.type; + ds >> sound.path; + ds >> sound.effects.chorus; + ds >> sound.effects.flanger; + ds >> sound.effects.gargle; + ds >> sound.effects.echo; + ds >> sound.effects.reverb; + ds >> sound.volume; + ds >> sound.pan; + ds >> sound.preload; + return ds; +} + +QDataStream &operator<<(QDataStream &ds, const Background &background) +{ + ds << background.name; + ds << background.pixmap; + return ds; +} + +QDataStream &operator>>(QDataStream &ds, Background &background) +{ + ds >> background.name; + ds >> background.pixmap; + return ds; +} + +QDataStream &operator<<(QDataStream &ds, const Path &path) +{ + ds << path.name; + return ds; +} + +QDataStream &operator>>(QDataStream &ds, Path &path) +{ + ds >> path.name; + return ds; +} + +QDataStream &operator<<(QDataStream &ds, const Script &script) +{ + ds << script.name; + ds << script.script; + return ds; +} + +QDataStream &operator>>(QDataStream &ds, Script &script) +{ + ds >> script.name; + ds >> script.script; + return ds; +} + +QDataStream &operator<<(QDataStream &ds, const Font &font) +{ + ds << font.name; + ds << font.font; + return ds; +} + +QDataStream &operator>>(QDataStream &ds, Font &font) +{ + ds >> font.name; + ds >> font.font; + return ds; +} + +QDataStream &operator<<(QDataStream &ds, const ProjectContainer &project) +{ + { + int sprites = project.sprites.size(); + ds << sprites; + for (const auto &sprite : project.sprites) + ds << sprite; + } + { + int sounds = project.sounds.size(); + ds << sounds; + for (const auto &sound : project.sounds) + ds << sound; + } + { + int backgrounds = project.backgrounds.size(); + ds << backgrounds; + for (const auto &background : project.backgrounds) + ds << background; + } + { + int paths = project.paths.size(); + ds << paths; + for (const auto &path : project.paths) + ds << path; + } + { + int scripts = project.scripts.size(); + ds << scripts; + for (const auto &script : project.scripts) + ds << script; + } + { + int fonts = project.fonts.size(); + ds << fonts; + for (const auto &font : project.fonts) + ds << font; + } + return ds; +} + +QDataStream &operator>>(QDataStream &ds, ProjectContainer &project) +{ + { + int sprites; + ds >> sprites; + + for (int i = 0; i < sprites; i++) + { + Sprite sprite; + ds >> sprite; + project.sprites.emplace_back(std::move(sprite)); + } + } + { + int sounds; + ds >> sounds; + + for (int i = 0; i < sounds; i++) + { + Sound sound; + ds >> sound; + project.sounds.emplace_back(std::move(sound)); + } + } + { + int backgrounds; + ds >> backgrounds; + + for (int i = 0; i < backgrounds; i++) + { + Background background; + ds >> background; + project.backgrounds.emplace_back(std::move(background)); + } + } + { + int paths; + ds >> paths; + + for (int i = 0; i < paths; i++) + { + Path path; + ds >> path; + project.paths.emplace_back(std::move(path)); + } + } + { + int scripts; + ds >> scripts; + + for (int i = 0; i < scripts; i++) + { + Script script; + ds >> script; + project.scripts.emplace_back(std::move(script)); + } + } + { + int fonts; + ds >> fonts; + + for (int i = 0; i < fonts; i++) + { + Font font; + ds >> font; + project.fonts.emplace_back(std::move(font)); + } + } + return ds; +} + diff --git a/projectcontainer.h b/projectcontainer.h new file mode 100644 index 0000000..a17671b --- /dev/null +++ b/projectcontainer.h @@ -0,0 +1,92 @@ +#pragma once + +#include +#include + +#include +#include +#include +#include + +struct Sprite +{ + QString name; + std::vector pixmaps; + struct { + int x{}; + int y{}; + } origin; + bool preciseCollisionChecking{true}; + bool separateCollisionMasks{true}; +}; + +struct Sound +{ + QString name; + enum class Type { Sound, Music }; + Type type; + QString path; + struct { + bool chorus{}; + bool flanger{}; + bool gargle{}; + bool echo{}; + bool reverb{}; + } effects; + + int volume{100}; + int pan{}; + bool preload{true}; +}; + +struct Background +{ + QString name; + QPixmap pixmap; +}; + +struct Path +{ + QString name; +}; + +struct Script +{ + QString name; + QString script; +}; + +struct Font +{ + QString name; + QFont font; + struct { + int from{32}; + int to{127}; + } range; +}; + +struct ProjectContainer +{ + std::list sprites; + std::list sounds; + std::list backgrounds; + std::list paths; + std::list