From 8178efdafdba5350b0d31dbc4ebd36c23f90ae42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Wed, 9 Apr 2025 14:58:23 +0200 Subject: [PATCH] Reload image when header is updated --- imageringlist.cpp | 10 ++++++++++ imageringlist.h | 1 + mainwindow.cpp | 1 + platesolving.cpp | 1 + platesolving.h | 2 ++ solver.cpp | 1 + solver.h | 1 + 7 files changed, 17 insertions(+) diff --git a/imageringlist.cpp b/imageringlist.cpp index 55e1882..654eb0d 100644 --- a/imageringlist.cpp +++ b/imageringlist.cpp @@ -294,6 +294,16 @@ void ImageRingList::setMarked() setFilesPrivate(files); } +void ImageRingList::reloadImage() +{ + if(*m_currImage) + { + int index = (*m_currImage)->info().index; + (*m_currImage)->release(); + (*m_currImage)->load(index, m_loadPool); + } +} + void ImageRingList::setLiveMode(bool live) { m_liveMode = live; diff --git a/imageringlist.h b/imageringlist.h index d90d8df..13d49a1 100644 --- a/imageringlist.h +++ b/imageringlist.h @@ -109,6 +109,7 @@ public slots: void prevSubImage(); void nextSubImage(); void setMarked(); + void reloadImage(); protected: void setFilesPrivate(const QStringList files, const QString ¤tFile = QString()); QList::iterator increment(QList::iterator iter); diff --git a/mainwindow.cpp b/mainwindow.cpp index da38668..81a268f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -166,6 +166,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) connect(m_ringList, &ImageRingList::pixmapLoaded, histogram, &Histogram::imageLoaded); #ifdef PLATESOLVER connect(m_ringList, &ImageRingList::pixmapLoaded, _plateSolving, &PlateSolving::imageLoaded); + connect(_plateSolving, &PlateSolving::headerUpdated, m_ringList, &ImageRingList::reloadImage); #endif connect(m_image, &ImageScrollArea::fileDropped, this, static_cast(&MainWindow::loadFile)); diff --git a/platesolving.cpp b/platesolving.cpp index b7d17a0..32bff6a 100644 --- a/platesolving.cpp +++ b/platesolving.cpp @@ -44,6 +44,7 @@ PlateSolving::PlateSolving(QWidget *parent) connect(_solver, &Solver::solvingDone, this, &PlateSolving::solvingDone); connect(_solver, &Solver::extractionDone, this, &PlateSolving::extractionDone); connect(_solver, &Solver::logOutput, [this](const QString &log){ _ui->log->appendPlainText(log); }); + connect(_solver, &Solver::headerUpdated, this, &PlateSolving::headerUpdated); } PlateSolving::~PlateSolving() diff --git a/platesolving.h b/platesolving.h index b74a2fe..d941c53 100644 --- a/platesolving.h +++ b/platesolving.h @@ -32,6 +32,8 @@ public slots: void updateHeader(); void imageLoaded(Image *image); void settings(); +signals: + void headerUpdated(const QString &path); private: Ui::PlateSolving *_ui; }; diff --git a/solver.cpp b/solver.cpp index b5125ef..3bc221e 100644 --- a/solver.cpp +++ b/solver.cpp @@ -188,6 +188,7 @@ bool Solver::updateHeader(QString &error) modify.updateKeyword("EQUINOX", 2000, QByteArray("Equinox of coordinates")); bool ret = file.modifyFITSRecords(&modify); if(!ret)error = tr("Failed to update file header"); + else emit headerUpdated(_path); return ret; } diff --git a/solver.h b/solver.h index 858364c..bf42fce 100644 --- a/solver.h +++ b/solver.h @@ -46,6 +46,7 @@ public slots: signals: void solvingDone(); void extractionDone(); + void headerUpdated(const QString &path); void logOutput(const QString &log); };