#pragma once #include "dvhTypes.h" #include "itkStlCompat.h" #include #include #include #include #include class QLineEdit; class QListWidget; class QTableWidget; class QTextEdit; class QProgressBar; class QCheckBox; class QPushButton; class DvhPlotWidget; class DvhComparePage : public QWidget { Q_OBJECT public: explicit DvhComparePage(QWidget* parent = nullptr); ~DvhComparePage() override; private slots: void onBrowseImage(); void onBrowseRts(); void onAddDose(); void onRemoveDose(); void onCalculate(); void onSelectAllRoi(); void onClearAllRoi(); void onRoiVisibilityChanged(); private: void buildUi(); void freeResults(); void rebuildRoiList(); void refreshPlot(); QString defaultOpenDir() const; void rememberOpenPath(const QString& path); QString resolveAlgoDllPath() const; void appendLog(const QString& msg); QLineEdit* m_imgEdit = nullptr; QLineEdit* m_rtsEdit = nullptr; QTableWidget* m_doseTable = nullptr; QListWidget* m_roiList = nullptr; QTextEdit* m_log = nullptr; QProgressBar* m_progress = nullptr; DvhPlotWidget* m_plot = nullptr; QPushButton* m_calcBtn = nullptr; QVector m_roiChecks; int m_doseNum = 0; StrucSet* m_strucSet = nullptr; std::vector::Pointer> m_keptDoses; std::vector::Pointer> m_keptMasks; };