diff --git a/viewer/CMakeLists.txt b/viewer/CMakeLists.txt index acef49e3..c50ef4dd 100644 --- a/viewer/CMakeLists.txt +++ b/viewer/CMakeLists.txt @@ -69,6 +69,8 @@ ADD_EXECUTABLE(jfjoch_viewer jfjoch_viewer.cpp JFJochViewerWindow.cpp JFJochView widgets/JFJochSimpleImageViewer.h windows/JFJochCalibrationWindow.cpp windows/JFJochCalibrationWindow.h + windows/JFJochHelperWindow.cpp + windows/JFJochHelperWindow.h ) TARGET_LINK_LIBRARIES(jfjoch_viewer Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Charts Qt6::DBus diff --git a/viewer/windows/JFJochCalibrationWindow.cpp b/viewer/windows/JFJochCalibrationWindow.cpp index e45f9d13..cf06e202 100644 --- a/viewer/windows/JFJochCalibrationWindow.cpp +++ b/viewer/windows/JFJochCalibrationWindow.cpp @@ -7,7 +7,7 @@ #include #include -JFJochCalibrationWindow::JFJochCalibrationWindow(QWidget *parent) : QMainWindow(parent) { +JFJochCalibrationWindow::JFJochCalibrationWindow(QWidget *parent) : JFJochHelperWindow(parent) { QWidget *centralWidget = new QWidget(this); setCentralWidget(centralWidget); @@ -60,17 +60,6 @@ JFJochCalibrationWindow::JFJochCalibrationWindow(QWidget *parent) : QMainWindow( statusBar, &QStatusBar::showMessage); } -void JFJochCalibrationWindow::closeEvent(QCloseEvent *event) { - event->accept(); - emit closing(); -} - -void JFJochCalibrationWindow::open() { - show(); - raise(); - activateWindow(); -} - void JFJochCalibrationWindow::datasetLoaded(std::shared_ptr in_dataset) { dataset = std::move(in_dataset); diff --git a/viewer/windows/JFJochCalibrationWindow.h b/viewer/windows/JFJochCalibrationWindow.h index d2bead56..c06e6919 100644 --- a/viewer/windows/JFJochCalibrationWindow.h +++ b/viewer/windows/JFJochCalibrationWindow.h @@ -8,15 +8,15 @@ #include #include +#include "JFJochHelperWindow.h" #include "../widgets/JFJochSimpleImageViewer.h" #include "../../reader/JFJochReaderDataset.h" #include "../SimpleImage.h" #include "../widgets/SliderPlusBox.h" -class JFJochCalibrationWindow : public QMainWindow { +class JFJochCalibrationWindow : public JFJochHelperWindow { Q_OBJECT - QComboBox *calibration_option; QComboBox *color_map_select; SliderPlusBox *foreground_slider; @@ -28,21 +28,17 @@ class JFJochCalibrationWindow : public QMainWindow { JFJochSimpleImageViewer *viewer = nullptr; - void closeEvent(QCloseEvent *event) override; - public: JFJochCalibrationWindow(QWidget *parent = nullptr); signals: - void closing(); void loadCalibration(QString name); private slots: void LoadMask(); void CalibrationSelected(int val); public slots: - void open(); - void datasetLoaded(std::shared_ptr in_dataset); + void datasetLoaded(std::shared_ptr in_dataset) override; void calibrationLoaded(std::shared_ptr image); void setFeatureColor(QColor input); }; diff --git a/viewer/windows/JFJochHelperWindow.cpp b/viewer/windows/JFJochHelperWindow.cpp new file mode 100644 index 00000000..f6eefecc --- /dev/null +++ b/viewer/windows/JFJochHelperWindow.cpp @@ -0,0 +1,22 @@ +// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute +// SPDX-License-Identifier: GPL-3.0-only + +#include "JFJochHelperWindow.h" +#include + +void JFJochHelperWindow::closeEvent(QCloseEvent *event) { + event->accept(); + emit closing(); +} + +void JFJochHelperWindow::open() { + show(); + raise(); + activateWindow(); +} + +JFJochHelperWindow::JFJochHelperWindow(QWidget *parent) : QMainWindow(parent) {} + +void JFJochHelperWindow::datasetLoaded(std::shared_ptr in_dataset) {} + +void JFJochHelperWindow::imageLoaded(std::shared_ptr image) {} diff --git a/viewer/windows/JFJochHelperWindow.h b/viewer/windows/JFJochHelperWindow.h new file mode 100644 index 00000000..0a4be2fb --- /dev/null +++ b/viewer/windows/JFJochHelperWindow.h @@ -0,0 +1,28 @@ +// SPDX-FileCopyrightText: 2025 Filip Leonarski, Paul Scherrer Institute +// SPDX-License-Identifier: GPL-3.0-only + +#ifndef JFJOCH_JFJOCHHELPERWINDOW_H +#define JFJOCH_JFJOCHHELPERWINDOW_H + +#include +#include "../../reader/JFJochReaderDataset.h" +#include "../../reader/JFJochReaderImage.h" + +class JFJochHelperWindow : public QMainWindow { + Q_OBJECT + + void closeEvent(QCloseEvent *event) override; + +signals: + void closing(); + +public slots: + void open(); + virtual void datasetLoaded(std::shared_ptr in_dataset); + virtual void imageLoaded(std::shared_ptr image); +public: + JFJochHelperWindow(QWidget *parent = nullptr); +}; + + +#endif //JFJOCH_JFJOCHHELPERWINDOW_H \ No newline at end of file diff --git a/viewer/windows/JFJochViewerImageListWindow.cpp b/viewer/windows/JFJochViewerImageListWindow.cpp index 1375bcad..351c0352 100644 --- a/viewer/windows/JFJochViewerImageListWindow.cpp +++ b/viewer/windows/JFJochViewerImageListWindow.cpp @@ -150,17 +150,6 @@ void JFJochViewerImageListWindow::imageLoaded(std::shared_ptraccept(); - emit closing(); -} - -void JFJochViewerImageListWindow::open() { - show(); - raise(); - activateWindow(); -} - void JFJochViewerImageListWindow::onTableRowDoubleClicked(const QModelIndex &index) { if (!index.isValid()) return; diff --git a/viewer/windows/JFJochViewerImageListWindow.h b/viewer/windows/JFJochViewerImageListWindow.h index f875d81f..7a8e78e9 100644 --- a/viewer/windows/JFJochViewerImageListWindow.h +++ b/viewer/windows/JFJochViewerImageListWindow.h @@ -8,9 +8,11 @@ #include #include #include + +#include "JFJochHelperWindow.h" #include "../../reader/JFJochReader.h" -class JFJochViewerImageListWindow : public QMainWindow { +class JFJochViewerImageListWindow : public JFJochHelperWindow { Q_OBJECT QTableView *tableView; @@ -23,18 +25,15 @@ class JFJochViewerImageListWindow : public QMainWindow { double resolutionEstimate, int64_t max_value); void clearAllData(); - void closeEvent(QCloseEvent *event) override; public: explicit JFJochViewerImageListWindow(QWidget *parent = nullptr); signals: - void closing(); void imageSelected(int64_t image_number, int64_t summation); public slots: - void open(); - void datasetLoaded(std::shared_ptr dataset); - void imageLoaded(std::shared_ptr image); + void datasetLoaded(std::shared_ptr dataset) override; + void imageLoaded(std::shared_ptr image) override; private slots: void onTableRowDoubleClicked(const QModelIndex &index); }; diff --git a/viewer/windows/JFJochViewerMetadataWindow.cpp b/viewer/windows/JFJochViewerMetadataWindow.cpp index 32ee08ae..85d0e430 100644 --- a/viewer/windows/JFJochViewerMetadataWindow.cpp +++ b/viewer/windows/JFJochViewerMetadataWindow.cpp @@ -11,7 +11,7 @@ #include "JFJochViewerMetadataWindow.h" -JFJochViewerMetadataWindow::JFJochViewerMetadataWindow(QWidget *parent) : QMainWindow(parent) { +JFJochViewerMetadataWindow::JFJochViewerMetadataWindow(QWidget *parent) : JFJochHelperWindow(parent) { setWindowTitle("Dataset metadata"); @@ -127,12 +127,6 @@ JFJochViewerMetadataWindow::JFJochViewerMetadataWindow(QWidget *parent) : QMainW mainLayout->addWidget(updateButton); } -void JFJochViewerMetadataWindow::open() { - show(); - raise(); - activateWindow(); -} - void JFJochViewerMetadataWindow::datasetUpdate() { if (dataset) { try { @@ -237,11 +231,6 @@ void JFJochViewerMetadataWindow::updateSpaceGroupName() { } } -void JFJochViewerMetadataWindow::closeEvent(QCloseEvent *event) { - event->accept(); - emit closing(); -} - void JFJochViewerMetadataWindow::toggleUnitCellFields(bool enabled) { unit_cell_a->setEnabled(enabled); unit_cell_b->setEnabled(enabled); diff --git a/viewer/windows/JFJochViewerMetadataWindow.h b/viewer/windows/JFJochViewerMetadataWindow.h index 2ab59e9f..18220d82 100644 --- a/viewer/windows/JFJochViewerMetadataWindow.h +++ b/viewer/windows/JFJochViewerMetadataWindow.h @@ -4,14 +4,13 @@ #ifndef JFJOCH_JFJOCHVIEWERMETADATAWINDOW_H #define JFJOCH_JFJOCHVIEWERMETADATAWINDOW_H - -#include #include +#include "JFJochHelperWindow.h" #include "../widgets/NumberLineEdit.h" #include "../../reader/JFJochReader.h" -class JFJochViewerMetadataWindow : public QMainWindow { +class JFJochViewerMetadataWindow : public JFJochHelperWindow { Q_OBJECT std::shared_ptr dataset; @@ -40,21 +39,18 @@ Q_OBJECT void updateSpaceGroupName(); void toggleUnitCellFields(bool enabled); - void closeEvent(QCloseEvent *event) override; public: explicit JFJochViewerMetadataWindow(QWidget *parent = nullptr); signals: void datasetUpdated(const DiffractionExperiment& experiment); - void closing(); private slots: void datasetUpdate(); public slots: - void datasetLoaded(std::shared_ptr dataset); - void open(); + void datasetLoaded(std::shared_ptr dataset) override; }; diff --git a/viewer/windows/JFJochViewerProcessingWindow.cpp b/viewer/windows/JFJochViewerProcessingWindow.cpp index 21a4730b..b3ac2a10 100644 --- a/viewer/windows/JFJochViewerProcessingWindow.cpp +++ b/viewer/windows/JFJochViewerProcessingWindow.cpp @@ -9,7 +9,7 @@ #include JFJochViewerProcessingWindow::JFJochViewerProcessingWindow(const SpotFindingSettings &settings, const IndexingSettings& indexing,QWidget *parent) - : QMainWindow(parent), m_settings(settings), m_indexing(indexing) { + : JFJochHelperWindow(parent), m_settings(settings), m_indexing(indexing) { setWindowTitle("Processing settings"); @@ -238,14 +238,3 @@ void JFJochViewerProcessingWindow::Update() { const auto max_spots = std::lround(m_maxSpotCount->value()); emit settingsChanged(m_settings, m_indexing, max_spots, m_reanalyzeCheckBox->isChecked()); } - -void JFJochViewerProcessingWindow::open() { - show(); - raise(); - activateWindow(); -} - -void JFJochViewerProcessingWindow::closeEvent(QCloseEvent *event) { - event->accept(); - emit closing(); -} \ No newline at end of file diff --git a/viewer/windows/JFJochViewerProcessingWindow.h b/viewer/windows/JFJochViewerProcessingWindow.h index 6ddae814..d007696f 100644 --- a/viewer/windows/JFJochViewerProcessingWindow.h +++ b/viewer/windows/JFJochViewerProcessingWindow.h @@ -9,11 +9,12 @@ #include #include +#include "JFJochHelperWindow.h" #include "../common/IndexingSettings.h" #include "../widgets/SliderPlusBox.h" #include "../../image_analysis/spot_finding/SpotFindingSettings.h" -class JFJochViewerProcessingWindow : public QMainWindow { +class JFJochViewerProcessingWindow : public JFJochHelperWindow { Q_OBJECT QCheckBox *m_enableCheckBox; @@ -45,17 +46,12 @@ class JFJochViewerProcessingWindow : public QMainWindow { IndexingSettings m_indexing; void Update(); - void closeEvent(QCloseEvent *event) override; public: explicit JFJochViewerProcessingWindow(const SpotFindingSettings &settings, const IndexingSettings& indexing, QWidget *parent = nullptr); -public slots: - void open(); - signals: void settingsChanged(const SpotFindingSettings &settings, const IndexingSettings &indexing, int64_t max_spots, bool reanalyze); - void closing(); }; diff --git a/viewer/windows/JFJochViewerReflectionListWindow.cpp b/viewer/windows/JFJochViewerReflectionListWindow.cpp index 3cc3f357..98a45ed0 100644 --- a/viewer/windows/JFJochViewerReflectionListWindow.cpp +++ b/viewer/windows/JFJochViewerReflectionListWindow.cpp @@ -91,13 +91,6 @@ void JFJochViewerReflectionListWindow::addReflectionRow(int index, const Reflect tableModel->appendRow(row); } - -void JFJochViewerReflectionListWindow::open() { - show(); - raise(); - activateWindow(); -} - void JFJochViewerReflectionListWindow::onTableRowDoubleClicked(const QModelIndex& index) { if (!index.isValid()) return; @@ -112,12 +105,6 @@ void JFJochViewerReflectionListWindow::onTableRowDoubleClicked(const QModelIndex image->ImageData().reflections[reflIndex].predicted_y); } -void JFJochViewerReflectionListWindow::closeEvent(QCloseEvent* event) { - event->accept(); - emit closing(); -} - - void JFJochViewerReflectionListWindow::datasetLoaded(std::shared_ptr dataset) { image = {}; tableModel->removeRows(0, tableModel->rowCount()); diff --git a/viewer/windows/JFJochViewerReflectionListWindow.h b/viewer/windows/JFJochViewerReflectionListWindow.h index 18e27301..20eba468 100644 --- a/viewer/windows/JFJochViewerReflectionListWindow.h +++ b/viewer/windows/JFJochViewerReflectionListWindow.h @@ -5,16 +5,16 @@ #ifndef JFJOCH_JFJOCHVIEWERREFLECTIONLISTWINDOW_H #define JFJOCH_JFJOCHVIEWERREFLECTIONLISTWINDOW_H -#include +#include "JFJochHelperWindow.h" #include #include #include #include -#include + #include "../../common/Reflection.h" #include "../../reader/JFJochReaderImage.h" -class JFJochViewerReflectionListWindow : public QMainWindow { +class JFJochViewerReflectionListWindow : public JFJochHelperWindow { Q_OBJECT std::shared_ptr image; @@ -22,8 +22,6 @@ class JFJochViewerReflectionListWindow : public QMainWindow { void setupTableModel(); void addReflectionRow(int index, const Reflection& r); - void closeEvent(QCloseEvent *event) override; - QTableView* tableView = nullptr; QStandardItemModel* tableModel = nullptr; QSortFilterProxyModel* proxyModel = nullptr; @@ -33,15 +31,13 @@ public: signals: void reflectionSelected(float x, float y); - void closing(); private slots: void onTableRowDoubleClicked(const QModelIndex& index); public slots: - void open(); - void datasetLoaded(std::shared_ptr dataset); - void imageLoaded(std::shared_ptr image); + void datasetLoaded(std::shared_ptr dataset) override; + void imageLoaded(std::shared_ptr image) override; }; diff --git a/viewer/windows/JFJochViewerSpotListWindow.cpp b/viewer/windows/JFJochViewerSpotListWindow.cpp index ab6800df..edaafc79 100644 --- a/viewer/windows/JFJochViewerSpotListWindow.cpp +++ b/viewer/windows/JFJochViewerSpotListWindow.cpp @@ -7,7 +7,7 @@ #include JFJochViewerSpotListWindow::JFJochViewerSpotListWindow(QWidget* parent) - : QMainWindow(parent) { + : JFJochHelperWindow(parent) { QWidget* centralWidget = new QWidget(this); setCentralWidget(centralWidget); @@ -125,12 +125,6 @@ void JFJochViewerSpotListWindow::imageLoaded(std::shared_ptrImageData().spots[spotIndex].x, image->ImageData().spots[spotIndex].y); } -void JFJochViewerSpotListWindow::closeEvent(QCloseEvent* event) { - event->accept(); - emit closing(); -} diff --git a/viewer/windows/JFJochViewerSpotListWindow.h b/viewer/windows/JFJochViewerSpotListWindow.h index c7713f39..7c665d4a 100644 --- a/viewer/windows/JFJochViewerSpotListWindow.h +++ b/viewer/windows/JFJochViewerSpotListWindow.h @@ -4,8 +4,7 @@ #ifndef JFJOCH_JFJOCHVIEWERSPOTLISTWINDOW_H #define JFJOCH_JFJOCHVIEWERSPOTLISTWINDOW_H - -#include +#include "JFJochHelperWindow.h" #include #include #include @@ -15,7 +14,7 @@ #include "../../reader/JFJochReaderImage.h" #include "../../common/JFJochMessages.h" -class JFJochViewerSpotListWindow : public QMainWindow { +class JFJochViewerSpotListWindow : public JFJochHelperWindow { Q_OBJECT std::shared_ptr image; @@ -23,8 +22,6 @@ class JFJochViewerSpotListWindow : public QMainWindow { void setupTableModel(); void addSpotRow(int index, const SpotToSave& s); - void closeEvent(QCloseEvent *event) override; - QTableView* tableView = nullptr; QStandardItemModel* tableModel = nullptr; QSortFilterProxyModel* proxyModel = nullptr; @@ -33,16 +30,14 @@ public: explicit JFJochViewerSpotListWindow(QWidget* parent = nullptr); signals: - void closing(); void spotSelected(double x, double y); private slots: void onTableRowDoubleClicked(const QModelIndex& index); public slots: - void open(); - void datasetLoaded(std::shared_ptr dataset); - void imageLoaded(std::shared_ptr image); + void datasetLoaded(std::shared_ptr dataset) override; + void imageLoaded(std::shared_ptr image) override; };