[nostalgia/core/studio] Make TileSheetEditor reload when the current palette is updated

This commit is contained in:
Gary Talent 2020-03-29 19:00:02 -05:00
parent 11cb4d5a44
commit 4c6e053e81
2 changed files with 12 additions and 1 deletions

View File

@ -294,6 +294,10 @@ void SheetData::load(const studio::Context *ctx, QString ngPath, QString palPath
updatePixels(ng.get());
}
void SheetData::reload(const studio::Context *ctx) {
load(ctx, m_tilesheetPath, m_currentPalettePath);
}
void SheetData::save(const studio::Context *ctx, QString ngPath) const {
auto ng = toNostalgiaGraphic();
ctx->project->writeObj(ngPath, ng.get());
@ -512,6 +516,11 @@ QWidget *TileSheetEditor::setupColorPicker(QWidget *parent) {
m_colorPicker.palette->addItem(name);
}
});
m_ctx->project->subscribe(studio::ProjectEvent::FileUpdated, m_colorPicker.palette, [this](QString path) {
if (path == m_sheetData.palettePath()) {
m_sheetData.reload(m_ctx);
}
});
m_ctx->project->subscribe(studio::ProjectEvent::FileDeleted, m_colorPicker.palette, [this](QString path) {
if (path.startsWith(PaletteDir) && path.endsWith(FileExt_npal)) {
auto name = paletteName(path);

View File

@ -61,6 +61,8 @@ class SheetData: public QObject {
void load(const studio::Context *ctx, QString ngPath, QString palPath = "");
void reload(const studio::Context *ctx);
void save(const studio::Context *ctx, QString ngPath) const;
void setPalette(const NostalgiaPalette *pal);
@ -129,7 +131,7 @@ class TileSheetEditor: public studio::Editor {
virtual ~TileSheetEditor();
QString itemName() override;
QString itemName() const override;
void exportFile() override;