diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.cpp b/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.cpp index 7f1e16b8f5..9905339eef 100644 --- a/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.cpp +++ b/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.cpp @@ -1,123 +1,135 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #include "QmitkIntensityProfileVisualizationWidget.h" #include <QClipboard> QmitkIntensityProfileVisualizationWidget::QmitkIntensityProfileVisualizationWidget(QWidget* parent) : QWidget(parent) { m_Controls.setupUi(this); #if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) WarnQtVersionTooLow(); #else m_Controls.labelIntensityProfileIsInvisibleWarning->setVisible(false); m_Controls.checkBoxShowSubchart->setChecked(false); #endif CreateConnections(); } void QmitkIntensityProfileVisualizationWidget::SetIntensityProfile(mitk::IntensityProfile::ConstPointer intensityProfile, const std::string& dataLabel) { if (intensityProfile == nullptr) return; m_IntensityProfileList = mitk::CreateVectorFromIntensityProfile(intensityProfile); if (m_IntensityProfileList.empty()) return; m_Controls.chartWidget->AddData1D(m_IntensityProfileList, dataLabel); m_Controls.chartWidget->SetChartType(dataLabel, QmitkChartWidget::ChartType::line); m_Controls.chartWidget->SetXAxisLabel("Distance"); m_Controls.chartWidget->SetYAxisLabel("Intensity"); #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked()); #endif SetGUIElementsEnabled(true); } void QmitkIntensityProfileVisualizationWidget::Reset() { #if QT_VERSION >= QT_VERSION_CHECK(5, 10, 0) m_Controls.chartWidget->Clear(); #endif SetGUIElementsEnabled(false); m_IntensityProfileList.clear(); } +void QmitkIntensityProfileVisualizationWidget::SetTheme(QmitkChartWidget::ChartStyle style) +{ + m_ChartStyle = style; +} + void QmitkIntensityProfileVisualizationWidget::CreateConnections() { connect(m_Controls.checkBoxShowSubchart, &QCheckBox::clicked, this, &QmitkIntensityProfileVisualizationWidget::OnShowSubchartCheckBoxChanged); connect(m_Controls.buttonCopyToClipboard, &QPushButton::clicked, this, &QmitkIntensityProfileVisualizationWidget::OnClipboardButtonClicked); + connect(m_Controls.chartWidget, &QmitkChartWidget::PageSuccessfullyLoaded, this, &QmitkIntensityProfileVisualizationWidget::OnPageSuccessfullyLoaded); } void QmitkIntensityProfileVisualizationWidget::SetGUIElementsEnabled(bool enabled) { this->setEnabled(enabled); m_Controls.groupBoxIntensityProfile->setEnabled(enabled); m_Controls.groupBoxPlot->setEnabled(enabled); m_Controls.buttonCopyToClipboard->setEnabled(enabled); m_Controls.checkBoxShowSubchart->setEnabled(enabled); m_Controls.chartWidget->setEnabled(enabled); m_Controls.labelIntensityProfileIsInvisibleWarning->setEnabled(enabled); m_Controls.labelInfo->setEnabled(enabled); } std::vector<double> QmitkIntensityProfileVisualizationWidget::ConvertIntensityProfileToVector(mitk::IntensityProfile::ConstPointer intensityProfile) const { std::vector<double> intensityProfileList; if (intensityProfile != nullptr) { auto end = intensityProfile->End(); for (auto it = intensityProfile->Begin(); it != end; ++it) { intensityProfileList.push_back(it.GetMeasurementVector()[0]); } } return intensityProfileList; } void QmitkIntensityProfileVisualizationWidget::OnClipboardButtonClicked() { if (m_IntensityProfileList.empty()) return; QApplication::clipboard()->clear(); QString clipboard("Pixel \t Intensity\n"); for (unsigned int i = 0; i < m_IntensityProfileList.size(); i++) { clipboard = clipboard.append("%L1 \t %L2\n") .arg(QString::number(i)) .arg(QString::number(m_IntensityProfileList.at(i))); } QApplication::clipboard()->setText(clipboard, QClipboard::Clipboard); } void QmitkIntensityProfileVisualizationWidget::OnShowSubchartCheckBoxChanged() { m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked()); } + +void QmitkIntensityProfileVisualizationWidget::OnPageSuccessfullyLoaded() +{ + m_Controls.chartWidget->SetTheme(m_ChartStyle); +} + void QmitkIntensityProfileVisualizationWidget::WarnQtVersionTooLow() { m_Controls.labelIntensityProfileIsInvisibleWarning->setVisible(true); m_Controls.labelIntensityProfileIsInvisibleWarning->setText("<font color = 'red'>Intensity profile is not visible because Qt 5.10 is required for MitkChart. You can use the button <i>Copy to Clipboard</i> below to retrieve values.< / font>"); m_Controls.groupBoxPlot->setVisible(false); m_Controls.chartWidget->setVisible(false); } diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.h b/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.h index cb248a62ba..22687716e9 100644 --- a/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.h +++ b/Modules/ImageStatisticsUI/Qmitk/QmitkIntensityProfileVisualizationWidget.h @@ -1,65 +1,69 @@ /*=================================================================== The Medical Imaging Interaction Toolkit (MITK) Copyright (c) German Cancer Research Center, Division of Medical and Biological Informatics. All rights reserved. This software is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See LICENSE.txt or http://www.mitk.org for details. ===================================================================*/ #ifndef QmitkIntensityProfileVisualizationWidget_H__INCLUDED #define QmitkIntensityProfileVisualizationWidget_H__INCLUDED //Qt #include <QWidget> #include <MitkImageStatisticsUIExports.h> #include <ui_QmitkIntensityProfileVisualizationWidget.h> //mitk #include <mitkIntensityProfile.h> /** * \brief Widget for displaying intensity profiles. */ class MITKIMAGESTATISTICSUI_EXPORT QmitkIntensityProfileVisualizationWidget : public QWidget { Q_OBJECT public: QmitkIntensityProfileVisualizationWidget(QWidget* parent = nullptr); - + void SetIntensityProfile(mitk::IntensityProfile::ConstPointer intensityProfile, const std::string& dataLabel); /** \brief Clears the intensity profile and disables all GUI elements. */ void Reset(); + void SetTheme(QmitkChartWidget::ChartStyle style); + private: void CreateConnections(); void SetGUIElementsEnabled(bool enabled); std::vector<double> ConvertIntensityProfileToVector(mitk::IntensityProfile::ConstPointer intensityProfile) const; -//slots /** \brief Saves the intensity profile to the clipboard. */ void OnClipboardButtonClicked(); /** \brief Shows / Hides the subchart. */ void OnShowSubchartCheckBoxChanged(); + void OnPageSuccessfullyLoaded(); + private: void WarnQtVersionTooLow(); Ui::QmitkIntensityProfileControls m_Controls; + QmitkChartWidget::ChartStyle m_ChartStyle = QmitkChartWidget::ChartStyle::darkstyle; std::vector<double> m_IntensityProfileList; }; #endif //QmitkIntensityProfileVisualizationWidget_H__INCLUDED \ No newline at end of file