jfjoch_viewer: Handle errors in reading files much better + include retry logic when using over DBus (to be seen if this requires some extra tweaking)
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
#include "toolbar/JFJochViewerToolbarImage.h"
|
||||
#include "windows/JFJoch2DAzintImageWindow.h"
|
||||
#include "windows/JFJochAzIntWindow.h"
|
||||
#include <QMessageBox>
|
||||
|
||||
JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString &file) : QMainWindow(parent) {
|
||||
menuBar = new JFJochViewerMenu(this);
|
||||
@@ -315,6 +316,12 @@ JFJochViewerWindow::JFJochViewerWindow(QWidget *parent, bool dbus, const QString
|
||||
connect(reading_worker, &JFJochImageReadingWorker::imageLoaded, this,
|
||||
[this](std::shared_ptr<const JFJochReaderImage> im) { lastImage = std::move(im); });
|
||||
|
||||
connect(reading_worker, &JFJochImageReadingWorker::fileLoadError,
|
||||
this, &JFJochViewerWindow::OnFileLoadError);
|
||||
|
||||
connect(reading_worker, &JFJochImageReadingWorker::fileLoadRetryStatus,
|
||||
this, &JFJochViewerWindow::OnFileLoadRetryStatus);
|
||||
|
||||
connect(menuBar, &JFJochViewerMenu::openDatasetInfo, this, &JFJochViewerWindow::NewDatasetInfo);
|
||||
NewDatasetInfo();
|
||||
|
||||
@@ -384,3 +391,28 @@ void JFJochViewerWindow::keyReleaseEvent(QKeyEvent *event) {
|
||||
}
|
||||
QMainWindow::keyReleaseEvent(event);
|
||||
}
|
||||
|
||||
void JFJochViewerWindow::OnFileLoadError(QString title, QString message) {
|
||||
QMessageBox::critical(this, title, message);
|
||||
}
|
||||
|
||||
void JFJochViewerWindow::OnFileLoadRetryStatus(bool active, QString message) {
|
||||
if (active) {
|
||||
if (!retryDialog) {
|
||||
retryDialog = new QProgressDialog(this);
|
||||
retryDialog->setWindowModality(Qt::WindowModal);
|
||||
retryDialog->setRange(0, 0); // Infinite/Busy indicator
|
||||
retryDialog->setCancelButton(nullptr); // Disable cancel for now
|
||||
retryDialog->setMinimumDuration(0); // Show immediately
|
||||
retryDialog->setWindowTitle("Loading File");
|
||||
}
|
||||
retryDialog->setLabelText(message);
|
||||
retryDialog->show();
|
||||
} else {
|
||||
if (retryDialog) {
|
||||
retryDialog->close();
|
||||
retryDialog->deleteLater();
|
||||
retryDialog = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user