diff --git a/Plugins/org.mitk.gui.qt.chartExample/files.cmake b/Plugins/org.mitk.gui.qt.chartExample/files.cmake index e992f3f792..7024c3059d 100644 --- a/Plugins/org.mitk.gui.qt.chartExample/files.cmake +++ b/Plugins/org.mitk.gui.qt.chartExample/files.cmake @@ -1,30 +1,30 @@ set(INTERNAL_CPP_FILES org_mitk_gui_qt_chartExample_Activator.cpp - ChartExample.cpp + QmitkChartExampleView.cpp ) set(UI_FILES - src/internal/ChartExampleControls.ui + src/internal/QmitkChartExampleViewControls.ui ) set(MOC_H_FILES src/internal/org_mitk_gui_qt_chartExample_Activator.h - src/internal/ChartExample.h + src/internal/QmitkChartExampleView.h ) # list of resource files which can be used by the plug-in # system without loading the plug-ins shared library, # for example the icon used in the menu and tabs for the # plug-in views in the workbench set(CACHED_RESOURCE_FILES resources/chart.svg plugin.xml ) foreach(file ${SRC_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/${file}) endforeach(file ${SRC_CPP_FILES}) foreach(file ${INTERNAL_CPP_FILES}) set(CPP_FILES ${CPP_FILES} src/internal/${file}) endforeach(file ${INTERNAL_CPP_FILES}) diff --git a/Plugins/org.mitk.gui.qt.chartExample/plugin.xml b/Plugins/org.mitk.gui.qt.chartExample/plugin.xml index ccea1d50e4..511fd199b2 100644 --- a/Plugins/org.mitk.gui.qt.chartExample/plugin.xml +++ b/Plugins/org.mitk.gui.qt.chartExample/plugin.xml @@ -1,12 +1,12 @@ diff --git a/Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExample.cpp b/Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleView.cpp similarity index 83% rename from Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExample.cpp rename to Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleView.cpp index 56b9af0cc3..6a065d3858 100644 --- a/Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExample.cpp +++ b/Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleView.cpp @@ -1,450 +1,450 @@ /*=================================================================== 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. ===================================================================*/ // Blueberry #include #include // Qmitk -#include "ChartExample.h" +#include "QmitkChartExampleView.h" #include -const std::string ChartExample::VIEW_ID = "org.mitk.views.chartexample"; +const std::string ChartExampleView::VIEW_ID = "org.mitk.views.chartexample"; -void ChartExample::SetFocus() +void ChartExampleView::SetFocus() { m_Controls.m_buttonCreateChart->setFocus(); } -void ChartExample::CreateQtPartControl(QWidget *parent) +void ChartExampleView::CreateQtPartControl(QWidget *parent) { // create GUI widgets from the Qt Designer's .ui file m_Controls.setupUi(parent); CreateConnectionsForGUIElements(); - connect(m_Controls.m_comboBoxChartType, &QComboBox::currentTextChanged, this, &ChartExample::AdaptDataGUI); + connect(m_Controls.m_comboBoxChartType, &QComboBox::currentTextChanged, this, &ChartExampleView::AdaptDataGUI); m_Controls.m_lineEditDataXVector->setText("0;1;2;3;4;5;6;7;8;9"); m_Controls.m_lineEditDataYVector->setText("0;1;2;3;4;5;6;7;8;9"); m_Controls.m_lineEditDataLabel->setText("Test"); m_Controls.m_lineEditXAxisLabel->setText("X-Axis"); m_Controls.m_lineEditYAxisLabel->setText("Y-Axis"); m_Controls.m_lineEditTitle->setText("Title"); m_Controls.m_labelPieData->setVisible(false); m_Controls.m_lineEditPieDataLabel->setVisible(false); m_Controls.m_groupBoxErrors->setVisible(false); m_Controls.m_groupBoxXErrors->setVisible(false); m_Controls.m_groupBoxYErrors->setVisible(false); m_Controls.m_doubleSpinBox_maxZoomX->setValue(10); m_Controls.m_doubleSpinBox_maxZoomY->setValue(10); m_LineNameToLineType.emplace("solid", QmitkChartWidget::LineStyle::solid); m_LineNameToLineType.emplace("dashed", QmitkChartWidget::LineStyle::dashed); m_AxisScaleNameToAxisScaleType.emplace("linear", QmitkChartWidget::AxisScale::linear); m_AxisScaleNameToAxisScaleType.emplace("logarithmic", QmitkChartWidget::AxisScale::log); m_LegendPositionNameToLegendPositionType.emplace("bottom middle", QmitkChartWidget::LegendPosition::bottomMiddle); m_LegendPositionNameToLegendPositionType.emplace("bottom right", QmitkChartWidget::LegendPosition::bottomRight); m_LegendPositionNameToLegendPositionType.emplace("top right", QmitkChartWidget::LegendPosition::topRight); m_LegendPositionNameToLegendPositionType.emplace("top left", QmitkChartWidget::LegendPosition::topLeft); m_LegendPositionNameToLegendPositionType.emplace("middle right", QmitkChartWidget::LegendPosition::middleRight); } -void ChartExample::CreateConnectionsForGUIElements() +void ChartExampleView::CreateConnectionsForGUIElements() { - connect(m_Controls.m_buttonCreateChart, &QPushButton::clicked, this, &ChartExample::CreateChart); - connect(m_Controls.m_buttonUpdateData, &QPushButton::clicked, this, &ChartExample::UpdateData); - connect(m_Controls.m_buttonClearChart, &QPushButton::clicked, this, &ChartExample::ClearChart); - connect(m_Controls.m_buttonAddData, &QPushButton::clicked, this, &ChartExample::AddData); - connect(m_Controls.m_comboBoxExistingData, &QComboBox::currentTextChanged, this, &ChartExample::UpdateSelectedData); - connect(m_Controls.m_checkBoxEnableErrors, &QCheckBox::toggled, this, &ChartExample::ShowErrorOptions); - connect(m_Controls.m_checkBoxEnableXErrors, &QCheckBox::toggled, this, &ChartExample::ShowXErrorOptions); - connect(m_Controls.m_checkBoxEnableYErrors, &QCheckBox::toggled, this, &ChartExample::ShowYErrorOptions); - connect(m_Controls.m_doubleSpinBox_minZoomX, &QSpinBox::editingFinished, this, &ChartExample::AdaptZoomX); - connect(m_Controls.m_doubleSpinBox_maxZoomX, &QSpinBox::editingFinished, this, &ChartExample::AdaptZoomX); - connect(m_Controls.m_doubleSpinBox_minZoomY, &QSpinBox::editingFinished, this, &ChartExample::AdaptZoomY); - connect(m_Controls.m_doubleSpinBox_maxZoomY, &QSpinBox::editingFinished, this, &ChartExample::AdaptZoomY); - connect(m_Controls.m_comboBoxLegendPosition, &QComboBox::currentTextChanged, this, &ChartExample::OnLegendPositionChanged); - connect(m_Controls.m_lineEditTitle, &QLineEdit::editingFinished, this, &ChartExample::OnTitleChanged); - connect(m_Controls.m_lineEditXAxisLabel, &QLineEdit::editingFinished, this, &ChartExample::OnXAxisLabelChanged); - connect(m_Controls.m_lineEditYAxisLabel, &QLineEdit::editingFinished, this, &ChartExample::OnYAxisLabelChanged); - connect(m_Controls.m_comboBoxYAxisScale, &QComboBox::currentTextChanged, this, &ChartExample::OnYAxisScaleChanged); - connect(m_Controls.m_checkBoxShowLegend, &QCheckBox::stateChanged, this, &ChartExample::OnShowLegendChanged); - connect(m_Controls.m_checkBoxStackedData, &QCheckBox::stateChanged, this, &ChartExample::OnStackedDataChanged); - connect(m_Controls.m_checkBoxShowDataPoints, &QCheckBox::stateChanged, this, &ChartExample::OnShowDataPointsChanged); - connect(m_Controls.m_checkBoxShowSubchart, &QCheckBox::stateChanged, this, &ChartExample::OnShowSubchartChanged); + connect(m_Controls.m_buttonCreateChart, &QPushButton::clicked, this, &ChartExampleView::CreateChart); + connect(m_Controls.m_buttonUpdateData, &QPushButton::clicked, this, &ChartExampleView::UpdateData); + connect(m_Controls.m_buttonClearChart, &QPushButton::clicked, this, &ChartExampleView::ClearChart); + connect(m_Controls.m_buttonAddData, &QPushButton::clicked, this, &ChartExampleView::AddData); + connect(m_Controls.m_comboBoxExistingData, &QComboBox::currentTextChanged, this, &ChartExampleView::UpdateSelectedData); + connect(m_Controls.m_checkBoxEnableErrors, &QCheckBox::toggled, this, &ChartExampleView::ShowErrorOptions); + connect(m_Controls.m_checkBoxEnableXErrors, &QCheckBox::toggled, this, &ChartExampleView::ShowXErrorOptions); + connect(m_Controls.m_checkBoxEnableYErrors, &QCheckBox::toggled, this, &ChartExampleView::ShowYErrorOptions); + connect(m_Controls.m_doubleSpinBox_minZoomX, &QSpinBox::editingFinished, this, &ChartExampleView::AdaptZoomX); + connect(m_Controls.m_doubleSpinBox_maxZoomX, &QSpinBox::editingFinished, this, &ChartExampleView::AdaptZoomX); + connect(m_Controls.m_doubleSpinBox_minZoomY, &QSpinBox::editingFinished, this, &ChartExampleView::AdaptZoomY); + connect(m_Controls.m_doubleSpinBox_maxZoomY, &QSpinBox::editingFinished, this, &ChartExampleView::AdaptZoomY); + connect(m_Controls.m_comboBoxLegendPosition, &QComboBox::currentTextChanged, this, &ChartExampleView::OnLegendPositionChanged); + connect(m_Controls.m_lineEditTitle, &QLineEdit::editingFinished, this, &ChartExampleView::OnTitleChanged); + connect(m_Controls.m_lineEditXAxisLabel, &QLineEdit::editingFinished, this, &ChartExampleView::OnXAxisLabelChanged); + connect(m_Controls.m_lineEditYAxisLabel, &QLineEdit::editingFinished, this, &ChartExampleView::OnYAxisLabelChanged); + connect(m_Controls.m_comboBoxYAxisScale, &QComboBox::currentTextChanged, this, &ChartExampleView::OnYAxisScaleChanged); + connect(m_Controls.m_checkBoxShowLegend, &QCheckBox::stateChanged, this, &ChartExampleView::OnShowLegendChanged); + connect(m_Controls.m_checkBoxStackedData, &QCheckBox::stateChanged, this, &ChartExampleView::OnStackedDataChanged); + connect(m_Controls.m_checkBoxShowDataPoints, &QCheckBox::stateChanged, this, &ChartExampleView::OnShowDataPointsChanged); + connect(m_Controls.m_checkBoxShowSubchart, &QCheckBox::stateChanged, this, &ChartExampleView::OnShowSubchartChanged); } -void ChartExample::AddData() +void ChartExampleView::AddData() { QString lineEditDataX = m_Controls.m_lineEditDataXVector->text(); QString lineEditDataY = m_Controls.m_lineEditDataYVector->text(); auto dataX = ConvertToDoubleVector(lineEditDataX); auto dataY = ConvertToDoubleVector(lineEditDataY); auto dataXandY = CreateMap(dataX, dataY); QString data = QString::fromStdString(ConvertToText(dataXandY)); std::string dataLabel = m_Controls.m_lineEditDataLabel->text().toStdString(); std::string chartTypeAsString = m_Controls.m_comboBoxChartType->currentText().toLower().toStdString(); std::string chartColorAsString = m_Controls.m_comboBoxColor->currentText().toLower().toStdString(); std::string chartStyleAsString = m_Controls.m_comboBoxLineStyle->currentText().toLower().toStdString(); auto chartStyle = m_LineNameToLineType.at(chartStyleAsString); if (std::find(labelStorage.begin(), labelStorage.end(), dataLabel) != labelStorage.end()) { m_Controls.m_labelInfo->setText("This data already exists"); m_Controls.m_labelInfo->setStyleSheet("color: red;"); return; } if (dataX.size() != dataY.size()) { m_Controls.m_labelInfo->setText("Data x and y size have to be equal"); m_Controls.m_labelInfo->setStyleSheet("color: red;"); return; } QString pieLabelsData = m_Controls.m_lineEditPieDataLabel->text(); if (chartTypeAsString == "Pie") { if (!pieLabelsData.isEmpty()) { auto pieLabels = ConvertToStringVector(pieLabelsData); m_Controls.m_Chart->SetPieLabels(pieLabels, dataLabel); } } labelStorage.push_back(dataLabel); m_Controls.m_Chart->AddChartExampleData(dataXandY, dataLabel, chartTypeAsString, chartColorAsString, chartStyleAsString, pieLabelsData.toStdString()); m_Controls.m_comboBoxExistingData->addItem(m_Controls.m_lineEditDataLabel->text()); if (m_Controls.m_checkBoxEnableErrors->isChecked()) { if (m_Controls.m_checkBoxEnableXErrors->isChecked()) { auto errorsPlus = ConvertToDoubleVector(m_Controls.m_lineEditXErrorPlus->text()); auto errorsMinus = ConvertToDoubleVector(m_Controls.m_lineEditXErrorMinus->text()); m_Controls.m_Chart->SetXErrorBars(m_Controls.m_lineEditDataLabel->text().toStdString(), errorsPlus, errorsMinus); } if (m_Controls.m_checkBoxEnableYErrors->isChecked()) { auto errorsPlus = ConvertToDoubleVector(m_Controls.m_lineEditYErrorPlus->text()); auto errorsMinus = ConvertToDoubleVector(m_Controls.m_lineEditYErrorMinus->text()); m_Controls.m_Chart->SetYErrorBars(m_Controls.m_lineEditDataLabel->text().toStdString(), errorsPlus, errorsMinus); } } m_Controls.m_Chart->SetLineStyle(dataLabel, chartStyle); QString dataOverview; dataOverview.append(m_Controls.m_lineEditDataLabel->text()); dataOverview.append("(").append(m_Controls.m_comboBoxChartType->currentText()); dataOverview.append(", ").append(m_Controls.m_comboBoxLineStyle->currentText()); dataOverview.append(")"); dataOverview.append(":").append(data); m_Controls.m_plainTextEditDataView->appendPlainText(dataOverview); } -void ChartExample::CreateChart() +void ChartExampleView::CreateChart() { auto dataYAxisScaleType = m_AxisScaleNameToAxisScaleType.at(m_Controls.m_comboBoxYAxisScale->currentText().toStdString()); auto xAxisLabel = m_Controls.m_lineEditXAxisLabel->text().toStdString(); auto yAxisLabel = m_Controls.m_lineEditYAxisLabel->text().toStdString(); auto showLegend = m_Controls.m_checkBoxShowLegend->isChecked(); auto legendPosition = m_LegendPositionNameToLegendPositionType.at(m_Controls.m_comboBoxLegendPosition->currentText().toStdString()); auto showDataPoints = m_Controls.m_checkBoxShowDataPoints->isChecked(); auto stackedData = m_Controls.m_checkBoxStackedData->isChecked(); auto showSubchart = m_Controls.m_checkBoxShowSubchart->isChecked(); auto title = m_Controls.m_lineEditTitle->text().toStdString(); m_Controls.m_Chart->SetTitle(title); m_Controls.m_Chart->SetYAxisScale(dataYAxisScaleType); m_Controls.m_Chart->SetXAxisLabel(xAxisLabel); m_Controls.m_Chart->SetYAxisLabel(yAxisLabel); m_Controls.m_Chart->SetShowLegend(showLegend); m_Controls.m_Chart->SetLegendPosition(legendPosition); m_Controls.m_Chart->SetShowErrorBars(true); m_Controls.m_Chart->SetShowDataPoints(showDataPoints); m_Controls.m_Chart->SetStackedData(stackedData); m_Controls.m_Chart->Show(showSubchart); } -void ChartExample::UpdateData() +void ChartExampleView::UpdateData() { if (m_Controls.m_comboBoxExistingData->currentText().isEmpty()) { m_Controls.m_labelInfo->setText("Please enter a valid Datalabel"); m_Controls.m_labelInfo->setStyleSheet("color: red;"); return; } if (m_Controls.m_lineEditDataLabel->text() != m_Controls.m_comboBoxExistingData->currentText()) { return; } auto dataLabel = m_Controls.m_lineEditDataLabel->text().toStdString(); m_Controls.m_Chart->RemoveData(dataLabel); auto it = std::find(labelStorage.begin(), labelStorage.end(), dataLabel); labelStorage.erase(it); auto index = m_Controls.m_comboBoxExistingData->findText(QString::fromStdString(dataLabel)); m_Controls.m_comboBoxExistingData->removeItem(index); AddData(); } -void ChartExample::UpdateSelectedData() +void ChartExampleView::UpdateSelectedData() { std::string label = m_Controls.m_comboBoxExistingData->currentText().toStdString(); auto data = m_Controls.m_Chart->GetDataElementByLabel(label); if (data == nullptr) { return; } auto x = data->GetXData(); auto y = data->GetYData(); auto xVector = x.toVector().toStdVector(); auto yVector = y.toVector().toStdVector(); QString xString = QString::fromStdString(ConvertToText(xVector)); QString yString = QString::fromStdString(ConvertToText(yVector)); auto color = data->GetColor(); auto type = data->GetChartType(); auto style = data->GetLineStyle(); int colorIndex = m_Controls.m_Chart->GetIndexByString(color.toString().toStdString()); int typeIndex = m_Controls.m_Chart->GetIndexByString(type.toString().toStdString()); int styleIndex = m_Controls.m_Chart->GetIndexByString(style.toString().toStdString()); if (type.toString() == "Pie") { m_Controls.m_comboBoxLineStyle->setVisible(false); m_Controls.m_labelLineStyle->setVisible(false); m_Controls.m_lineEditPieDataLabel->setVisible(true); m_Controls.m_labelPieData->setVisible(true); auto pieLabels = data->GetPieLabels(); auto pieLabelsVector = pieLabels.toVector().toStdVector(); QString pieLabelsString = QString::fromStdString(ConvertToText(pieLabelsVector)); m_Controls.m_lineEditPieDataLabel->setText(pieLabelsString); } else { m_Controls.m_lineEditPieDataLabel->setVisible(false); m_Controls.m_labelPieData->setVisible(false); m_Controls.m_comboBoxLineStyle->setVisible(true); m_Controls.m_labelLineStyle->setVisible(true); m_Controls.m_comboBoxLineStyle->setCurrentIndex(styleIndex); } m_Controls.m_lineEditDataXVector->setText(xString); m_Controls.m_lineEditDataYVector->setText(yString); m_Controls.m_lineEditDataLabel->setText(QString::fromStdString(label)); m_Controls.m_comboBoxColor->setCurrentIndex(colorIndex); m_Controls.m_comboBoxChartType->setCurrentIndex(typeIndex); } -void ChartExample::ClearChart() +void ChartExampleView::ClearChart() { m_Controls.m_Chart->Clear(); m_Controls.m_plainTextEditDataView->clear(); m_Controls.m_comboBoxExistingData->clear(); labelStorage.clear(); } -void ChartExample::ShowErrorOptions(bool show) +void ChartExampleView::ShowErrorOptions(bool show) { m_Controls.m_groupBoxErrors->setVisible(show); } -void ChartExample::ShowXErrorOptions(bool show) +void ChartExampleView::ShowXErrorOptions(bool show) { m_Controls.m_groupBoxXErrors->setVisible(show); } -void ChartExample::ShowYErrorOptions(bool show) +void ChartExampleView::ShowYErrorOptions(bool show) { m_Controls.m_groupBoxYErrors->setVisible(show); } -void ChartExample::AdaptZoomX() +void ChartExampleView::AdaptZoomX() { m_Controls.m_Chart->SetMinMaxValueXView(m_Controls.m_doubleSpinBox_minZoomX->value(), m_Controls.m_doubleSpinBox_maxZoomX->value()); m_Controls.m_Chart->Show(); } -void ChartExample::AdaptZoomY() +void ChartExampleView::AdaptZoomY() { m_Controls.m_Chart->SetMinMaxValueYView(m_Controls.m_doubleSpinBox_minZoomY->value(), m_Controls.m_doubleSpinBox_maxZoomY->value()); m_Controls.m_Chart->Show(); } -void ChartExample::AdaptDataGUI(QString chartType) +void ChartExampleView::AdaptDataGUI(QString chartType) { if (chartType == "Pie") { m_Controls.m_labelPieData->setVisible(true); m_Controls.m_lineEditPieDataLabel->setVisible(true); m_Controls.m_labelLineStyle->setVisible(false); m_Controls.m_comboBoxLineStyle->setVisible(false); } else { m_Controls.m_labelLineStyle->setVisible(true); m_Controls.m_comboBoxLineStyle->setVisible(true); m_Controls.m_labelPieData->setVisible(false); m_Controls.m_lineEditPieDataLabel->setVisible(false); } } -void ChartExample::OnLegendPositionChanged(const QString &newText) +void ChartExampleView::OnLegendPositionChanged(const QString &newText) { auto legendPosition = m_LegendPositionNameToLegendPositionType.at(newText.toStdString()); m_Controls.m_Chart->SetLegendPosition(legendPosition); } -void ChartExample::OnTitleChanged() { +void ChartExampleView::OnTitleChanged() { auto newTitle = m_Controls.m_lineEditTitle->text(); m_Controls.m_Chart->SetTitle(newTitle.toStdString()); } -void ChartExample::OnXAxisLabelChanged() { +void ChartExampleView::OnXAxisLabelChanged() { auto newXAxisLabel = m_Controls.m_lineEditXAxisLabel->text(); m_Controls.m_Chart->SetXAxisLabel(newXAxisLabel.toStdString()); } -void ChartExample::OnYAxisLabelChanged() { +void ChartExampleView::OnYAxisLabelChanged() { auto newYAxisLabel = m_Controls.m_lineEditYAxisLabel->text(); m_Controls.m_Chart->SetYAxisLabel(newYAxisLabel.toStdString()); } -void ChartExample::OnYAxisScaleChanged(const QString &newYAxisScale) { +void ChartExampleView::OnYAxisScaleChanged(const QString &newYAxisScale) { auto yAxisScale = m_AxisScaleNameToAxisScaleType.at(newYAxisScale.toStdString()); m_Controls.m_Chart->SetYAxisScale(yAxisScale); } -void ChartExample::OnShowLegendChanged(int newState) { +void ChartExampleView::OnShowLegendChanged(int newState) { m_Controls.m_Chart->SetShowLegend(newState == Qt::Checked); } -void ChartExample::OnStackedDataChanged(int newState) { +void ChartExampleView::OnStackedDataChanged(int newState) { m_Controls.m_Chart->SetStackedData(newState == Qt::Checked); } -void ChartExample::OnShowDataPointsChanged(int newState) { +void ChartExampleView::OnShowDataPointsChanged(int newState) { m_Controls.m_Chart->SetShowDataPoints(newState == Qt::Checked); } -void ChartExample::OnShowSubchartChanged(int newState) { +void ChartExampleView::OnShowSubchartChanged(int newState) { m_Controls.m_Chart->SetShowSubchart(newState == Qt::Checked); } -std::map ChartExample::CreateMap(std::vector keys, std::vector values) const +std::map ChartExampleView::CreateMap(std::vector keys, std::vector values) const { std::map aMap; std::transform(keys.begin(), keys.end(), values.begin(), std::inserter(aMap, aMap.end()), [](double a, double b) { return std::make_pair(a, b); }); return aMap; } -std::string ChartExample::ConvertToText(std::map numbers, std::string delimiter) const +std::string ChartExampleView::ConvertToText(std::map numbers, std::string delimiter) const { std::ostringstream oss; oss.precision(3); if (!numbers.empty()) { for (const auto keyValue : numbers) { oss << keyValue.first << ":" << keyValue.second << delimiter; } } auto aString = oss.str(); aString.pop_back(); return aString; } -std::string ChartExample::ConvertToText(std::vector numbers, std::string delimiter) const +std::string ChartExampleView::ConvertToText(std::vector numbers, std::string delimiter) const { std::ostringstream oss; oss.precision(3); if (!numbers.empty()) { for (auto number : numbers) { oss << number.toDouble() << delimiter; } } auto aString = oss.str(); aString.pop_back(); return aString; } -std::vector ChartExample::ConvertToDoubleVector(const QString& data, QChar delimiter) const +std::vector ChartExampleView::ConvertToDoubleVector(const QString& data, QChar delimiter) const { std::vector output; if (data.isEmpty()) { return output; } for (const QString entry : data.split(delimiter)) { output.push_back(entry.toDouble()); } return output; } -std::vector ChartExample::ConvertToStringVector(const QString& data, QChar delimiter) const +std::vector ChartExampleView::ConvertToStringVector(const QString& data, QChar delimiter) const { std::vector output; if (data.isEmpty()) { return output; } for (const QString entry : data.split(delimiter)) { output.push_back(entry.toStdString()); } return output; } diff --git a/Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExample.h b/Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleView.h similarity index 98% rename from Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExample.h rename to Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleView.h index 0274f8467f..ab0fbf99d5 100644 --- a/Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExample.h +++ b/Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleView.h @@ -1,90 +1,90 @@ /*=================================================================== 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 ChartExample_h #define ChartExample_h #include #include "ui_ChartExampleControls.h" /** \brief Basic example for use of module mitkChart \sa QmitkAbstractView \ingroup ${plugin_target}_internal */ -class ChartExample : public QmitkAbstractView +class ChartExampleView : public QmitkAbstractView { // this is needed for all Qt objects that should have a Qt meta-object // (everything that derives from QObject and wants to have signal/slots) Q_OBJECT public: static const std::string VIEW_ID; protected: virtual void CreateQtPartControl(QWidget *parent) override; void CreateConnectionsForGUIElements(); virtual void SetFocus() override; void AddData(); void CreateChart(); void UpdateData(); void UpdateSelectedData(); void ClearChart(); private: std::map m_ChartNameToChartType; std::map m_ChartNameToChartColor; std::map m_LineNameToLineType; std::map m_AxisScaleNameToAxisScaleType; std::map m_LegendPositionNameToLegendPositionType; std::vector labelStorage; void ShowErrorOptions(bool show); void ShowXErrorOptions(bool show); void ShowYErrorOptions(bool show); void AdaptZoomX(); void AdaptZoomY(); void AdaptDataGUI(QString chartType); void OnLegendPositionChanged(const QString &newPosition); void OnTitleChanged(); void OnXAxisLabelChanged(); void OnYAxisLabelChanged(); void OnYAxisScaleChanged(const QString &newYAxisScale); void OnShowLegendChanged(int newState); void OnStackedDataChanged(int newState); void OnShowDataPointsChanged(int newState); void OnShowSubchartChanged(int newState); std::map CreateMap(std::vector keys, std::vector values) const; std::string ConvertToText(std::vector numbers, std::string delimiter = ";") const; std::string ConvertToText(std::map numbers, std::string delimiter = ";") const; std::vector ConvertToDoubleVector(const QString& data, QChar delimiter = ';') const; std::vector ConvertToStringVector(const QString& data, QChar delimiter = ';') const; unsigned int countForUID = 0; Ui::ChartExampleControls m_Controls; }; #endif // ChartExample_h diff --git a/Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExampleControls.ui b/Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleViewControls.ui similarity index 100% rename from Plugins/org.mitk.gui.qt.chartExample/src/internal/ChartExampleControls.ui rename to Plugins/org.mitk.gui.qt.chartExample/src/internal/QmitkChartExampleViewControls.ui diff --git a/Plugins/org.mitk.gui.qt.chartExample/src/internal/org_mitk_gui_qt_chartExample_Activator.cpp b/Plugins/org.mitk.gui.qt.chartExample/src/internal/org_mitk_gui_qt_chartExample_Activator.cpp index e6ef11119c..fbe56687e7 100644 --- a/Plugins/org.mitk.gui.qt.chartExample/src/internal/org_mitk_gui_qt_chartExample_Activator.cpp +++ b/Plugins/org.mitk.gui.qt.chartExample/src/internal/org_mitk_gui_qt_chartExample_Activator.cpp @@ -1,29 +1,29 @@ /*=================================================================== 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 "org_mitk_gui_qt_chartExample_Activator.h" -#include "ChartExample.h" +#include "QmitkChartExampleView.h" namespace mitk { void org_mitk_gui_qt_chartExample_Activator::start(ctkPluginContext *context) { - BERRY_REGISTER_EXTENSION_CLASS(ChartExample, context) + BERRY_REGISTER_EXTENSION_CLASS(ChartExampleView, context) } void org_mitk_gui_qt_chartExample_Activator::stop(ctkPluginContext *context) { Q_UNUSED(context) } }