diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp index ec3d8612a6..b6d877b6b6 100644 --- a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp +++ b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.cpp @@ -1,127 +1,127 @@ /*=================================================================== 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 "QmitkHistogramVisualizationWidget.h" #include -HistogramVisualizationWidget::HistogramVisualizationWidget(QWidget* parent) : QWidget(parent) +QmitkHistogramVisualizationWidget::QmitkHistogramVisualizationWidget(QWidget* parent) : QWidget(parent) { m_Controls.setupUi(this); CreateConnections(); } -void HistogramVisualizationWidget::setHistogram(itk::Statistics::Histogram::ConstPointer histogram, std::string dataLabel) +void QmitkHistogramVisualizationWidget::setHistogram(itk::Statistics::Histogram::ConstPointer histogram, const std::string& dataLabel) { if (histogram == nullptr) return; m_Histogram = histogram; m_Controls.chartWidget->AddData2D(ConvertHistogramToMap(m_Histogram), dataLabel); m_Controls.chartWidget->SetChartType(dataLabel, QmitkChartWidget::ChartType::bar); m_Controls.chartWidget->SetXAxisLabel("Gray value"); m_Controls.chartWidget->SetYAxisLabel("Frequency"); m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked()); SetGUIElementsEnabled(true); } -void HistogramVisualizationWidget::Reset() +void QmitkHistogramVisualizationWidget::Reset() { m_Controls.chartWidget->Clear(); SetGUIElementsEnabled(false); } -void HistogramVisualizationWidget::CreateConnections() +void QmitkHistogramVisualizationWidget::CreateConnections() { - connect(m_Controls.buttonCopyHistogramToClipboard, &QPushButton::clicked, this, &HistogramVisualizationWidget::OnClipboardButtonClicked); - connect(m_Controls.checkBoxUseDefaultNBins, &QCheckBox::clicked, this, &HistogramVisualizationWidget::OnDefaultNBinsCheckBoxChanged); - connect(m_Controls.spinBoxNBins, &QSpinBox::editingFinished, this, &HistogramVisualizationWidget::OnNBinsSpinBoxValueChanged); - connect(m_Controls.checkBoxShowSubchart, &QCheckBox::clicked, this, &HistogramVisualizationWidget::OnShowSubchartCheckBoxChanged); + connect(m_Controls.buttonCopyHistogramToClipboard, &QPushButton::clicked, this, &QmitkHistogramVisualizationWidget::OnClipboardButtonClicked); + connect(m_Controls.checkBoxUseDefaultNBins, &QCheckBox::clicked, this, &QmitkHistogramVisualizationWidget::OnDefaultNBinsCheckBoxChanged); + connect(m_Controls.spinBoxNBins, &QSpinBox::editingFinished, this, &QmitkHistogramVisualizationWidget::OnNBinsSpinBoxValueChanged); + connect(m_Controls.checkBoxShowSubchart, &QCheckBox::clicked, this, &QmitkHistogramVisualizationWidget::OnShowSubchartCheckBoxChanged); } -void HistogramVisualizationWidget::SetGUIElementsEnabled(bool enabled) +void QmitkHistogramVisualizationWidget::SetGUIElementsEnabled(bool enabled) { this->setEnabled(enabled); m_Controls.groupBoxHistogram->setEnabled(enabled); m_Controls.groupBoxPlot->setEnabled(enabled); m_Controls.checkBoxShowSubchart->setEnabled(enabled); m_Controls.checkBoxUseDefaultNBins->setEnabled(enabled); m_Controls.spinBoxNBins->setEnabled(!m_Controls.checkBoxUseDefaultNBins->isChecked()); m_Controls.buttonCopyHistogramToClipboard->setEnabled(enabled); } -std::map HistogramVisualizationWidget::ConvertHistogramToMap(itk::Statistics::Histogram::ConstPointer histogram) const +std::map QmitkHistogramVisualizationWidget::ConvertHistogramToMap(itk::Statistics::Histogram::ConstPointer histogram) const { std::map histogramMap; if (histogram) { auto endIt = histogram->End(); auto it = histogram->Begin(); // generating Lists of measurement and frequencies for (; it != endIt; ++it) { double frequency = it.GetFrequency(); double measurement = it.GetMeasurementVector()[0]; histogramMap.emplace(measurement, frequency); } } return histogramMap; } -void HistogramVisualizationWidget::OnClipboardButtonClicked() +void QmitkHistogramVisualizationWidget::OnClipboardButtonClicked() { if (m_Histogram) { QApplication::clipboard()->clear(); QString clipboard("Measurement \t Frequency\n"); auto iter = m_Histogram->Begin(); auto iterEnd = m_Histogram->End(); for (; iter != iterEnd; ++iter) { clipboard = clipboard.append("%L1 \t %L2\n") .arg(iter.GetMeasurementVector()[0], 0, 'f', 2) .arg(iter.GetFrequency()); } QApplication::clipboard()->setText(clipboard, QClipboard::Clipboard); } } -void HistogramVisualizationWidget::OnDefaultNBinsCheckBoxChanged() +void QmitkHistogramVisualizationWidget::OnDefaultNBinsCheckBoxChanged() { if (m_Controls.checkBoxUseDefaultNBins->isChecked()) { m_Controls.spinBoxNBins->setEnabled(false); m_Controls.spinBoxNBins->setValue(100); } else { m_Controls.spinBoxNBins->setEnabled(true); } } -void HistogramVisualizationWidget::OnNBinsSpinBoxValueChanged() +void QmitkHistogramVisualizationWidget::OnNBinsSpinBoxValueChanged() { emit RequestHistogramUpdate(m_Controls.spinBoxNBins->value()); } -void HistogramVisualizationWidget::OnShowSubchartCheckBoxChanged() +void QmitkHistogramVisualizationWidget::OnShowSubchartCheckBoxChanged() { m_Controls.chartWidget->Show(m_Controls.checkBoxShowSubchart->isChecked()); } \ No newline at end of file diff --git a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h index 8afedb4309..0266f964aa 100644 --- a/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h +++ b/Modules/ImageStatisticsUI/Qmitk/QmitkHistogramVisualizationWidget.h @@ -1,66 +1,71 @@ /*=================================================================== 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. ===================================================================*/ -#pragma once +#ifndef QmitkHistogramVisualizationWidget_H__INCLUDED +#define QmitkHistogramVisualizationWidget_H__INCLUDED //Qt #include #include #include //itk #include -class MITKIMAGESTATISTICSUI_EXPORT HistogramVisualizationWidget : public QWidget +/** +* \brief Widget for displaying Histograms. +*/ + +class MITKIMAGESTATISTICSUI_EXPORT QmitkHistogramVisualizationWidget : public QWidget { Q_OBJECT public: - HistogramVisualizationWidget(QWidget* parent = nullptr); - /** \brief Draws the histogram and enables the GUI elements */ - void setHistogram(itk::Statistics::Histogram::ConstPointer histogram, std::string dataLabel); - /** \brief Clears the histogram and disables all GUI elements */ + QmitkHistogramVisualizationWidget(QWidget* parent = nullptr); + /** \brief Draws the histogram and enables the GUI elements. */ + void setHistogram(itk::Statistics::Histogram::ConstPointer histogram, const std::string& dataLabel); + /** \brief Clears the histogram and disables all GUI elements. */ void Reset(); signals: - /** - * \brief Signal to be emitted when the number of bins is changed by the user. The HistogramCalculator should connect to this signal and recalculate the data accordingly. - */ + /** \brief Signal to be emitted when the number of bins is changed by the user. The HistogramCalculator should connect to this signal and recalculate the data accordingly. */ void RequestHistogramUpdate(unsigned int nBins); private: void CreateConnections(); void SetGUIElementsEnabled(bool enabled); - + /** \brief Helper function to convert the histogram in order to forward it to the ChartWidget. */ std::map ConvertHistogramToMap(itk::Statistics::Histogram::ConstPointer histogram) const; //slots - /** \brief Saves the histogram to the clipboard */ + /** \brief Saves the histogram to the clipboard. */ void OnClipboardButtonClicked(); - /** \brief Toogle GUI elements if histogram default bin size checkbox value changed. */ + /** \brief Enables / Disables SpinBox to change the number of bins. */ void OnDefaultNBinsCheckBoxChanged(); - + /** \brief Emits the signal RequestHistogramUpdate(unsigned int nBins) with the updated value. */ void OnNBinsSpinBoxValueChanged(); - + /** \brief Shows / Hides the subchart. */ void OnShowSubchartCheckBoxChanged(); private: Ui::QmitkHistogramVisualizationControls m_Controls; itk::Statistics::Histogram::ConstPointer m_Histogram; -}; \ No newline at end of file +}; + +#endif //QmitkHistogramVisualizationWidget_H__INCLUDED \ No newline at end of file diff --git a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedViewControls.ui b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedViewControls.ui index 395c159cb8..05770d05ae 100644 --- a/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedViewControls.ui +++ b/Plugins/org.mitk.gui.qt.measurementtoolbox/src/internal/QmitkImageStatisticsReloadedViewControls.ui @@ -1,90 +1,90 @@ QmitkImageStatisticsReloadedViewControls true 0 0 548 853 Form false Statistics 9 9 9 false 400 450 Histogram false - + Qt::Vertical 20 40 - HistogramVisualizationWidget + QmitkHistogramVisualizationWidget QWidget
QmitkHistogramVisualizationWidget.h
1