diff --git a/include/editor.h b/include/editor.h index baf32b5e..2b24f883 100644 --- a/include/editor.h +++ b/include/editor.h @@ -194,6 +194,7 @@ signals: void selectedObjectsChanged(); void loadMapRequested(QString, QString); void tilesetChanged(QString); + void wildMonDataChanged(); void warpEventDoubleClicked(QString mapName, QString warpNum); void currentMetatilesSelectionChanged(); void wheelZoom(int delta); diff --git a/include/mainwindow.h b/include/mainwindow.h index c4490965..29ae028b 100644 --- a/include/mainwindow.h +++ b/include/mainwindow.h @@ -125,6 +125,7 @@ private slots: void onMapChanged(Map *map); void onMapNeedsRedrawing(); void onTilesetsSaved(QString, QString); + void onWildMonDataChanged(); void openNewMapPopupWindow(int, QVariant); void onNewMapCreated(); diff --git a/src/editor.cpp b/src/editor.cpp index dcb32ee6..0ad2fd6c 100644 --- a/src/editor.cpp +++ b/src/editor.cpp @@ -355,6 +355,7 @@ void Editor::addNewWildMonGroup(QWidget *window) { tabIndex++; } saveEncounterTabData(); + emit wildMonDataChanged(); } } @@ -586,6 +587,7 @@ void Editor::configureEncounterJSON(QWidget *window) { // Re-draw the tab accordingly. displayWildMonTables(); + emit wildMonDataChanged(); } } diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 4efc3270..f721b877 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -115,6 +115,7 @@ void MainWindow::initEditor() { connect(this->editor, SIGNAL(tilesetChanged(QString)), this, SLOT(onTilesetChanged(QString))); connect(this->editor, SIGNAL(warpEventDoubleClicked(QString,QString)), this, SLOT(openWarpMap(QString,QString))); connect(this->editor, SIGNAL(currentMetatilesSelectionChanged()), this, SLOT(currentMetatilesSelectionChanged())); + connect(this->editor, SIGNAL(wildMonDataChanged()), this, SLOT(onWildMonDataChanged())); connect(this->editor, &Editor::wheelZoom, this, &MainWindow::scaleMapView); this->loadUserSettings(); @@ -2182,6 +2183,10 @@ void MainWindow::onTilesetsSaved(QString primaryTilesetLabel, QString secondaryT this->editor->updateSecondaryTileset(secondaryTilesetLabel, true); } +void MainWindow::onWildMonDataChanged() { + projectHasUnsavedChanges = true; +} + void MainWindow::on_action_Export_Map_Image_triggered() { showExportMapImageWindow(false); } diff --git a/src/ui/montabwidget.cpp b/src/ui/montabwidget.cpp index a2aa5fc0..829bacd6 100644 --- a/src/ui/montabwidget.cpp +++ b/src/ui/montabwidget.cpp @@ -48,6 +48,7 @@ void MonTabWidget::askActivateTab(int tabIndex, QPoint menuPos) { populateTab(tabIndex, getDefaultMonInfo(editor->project->wildMonFields.at(tabIndex)), tabText); editor->saveEncounterTabData(); setCurrentIndex(tabIndex); + emit editor->wildMonDataChanged(); }); contextMenu.addAction(&actionActivateTab); contextMenu.exec(mapToGlobal(menuPos)); @@ -97,6 +98,7 @@ void MonTabWidget::populateTab(int tabIndex, WildMonInfo monInfo, QString fieldN encounterRate->setValue(monInfo.encounterRate); connect(encounterRate, QOverload::of(&QSpinBox::valueChanged), [this](int) { editor->saveEncounterTabData(); + emit editor->wildMonDataChanged(); }); encounterLayout->addWidget(encounterRate); encounterFrame->setLayout(encounterLayout); @@ -125,6 +127,7 @@ void MonTabWidget::createSpeciesTableRow(QTableWidget *table, WildPokemon mon, i QObject::connect(monSelector, &QComboBox::currentTextChanged, [=](QString newSpecies) { QPixmap monIcon = QPixmap(editor->project->speciesToIconPath.value(newSpecies)).copy(0, 0, 32, 32); monLabel->setPixmap(monIcon); + emit editor->wildMonDataChanged(); if (!monIcon.isNull()) editor->saveEncounterTabData(); }); @@ -141,10 +144,12 @@ void MonTabWidget::createSpeciesTableRow(QTableWidget *table, WildPokemon mon, i connect(minLevel, QOverload::of(&QSpinBox::valueChanged), [maxLevel, this](int min) { maxLevel->setMinimum(min); editor->saveEncounterTabData(); + emit editor->wildMonDataChanged(); }); connect(maxLevel, QOverload::of(&QSpinBox::valueChanged), [maxLevel, this](int) { editor->saveEncounterTabData(); + emit editor->wildMonDataChanged(); }); int fieldIndex = 0;