MCPcopy Create free account
hub / github.com/KDE/labplot / PlotDataDialog

Method PlotDataDialog

src/frontend/spreadsheet/PlotDataDialog.cpp:57–177  ·  view source on GitHub ↗

! \class PlotDataDialog \brief Dialog for generating plots for the spreadsheet data. \ingroup frontend */

Source from the content-addressed store, hash-verified

55 \ingroup frontend
56 */
57PlotDataDialog::PlotDataDialog(AbstractAspect* parentAspect, Plot::PlotType type, QWidget* parent)
58 : QDialog(parent)
59 , ui(new Ui::PlotDataWidget())
60 , m_parentAspect(parentAspect)
61 , m_plotsModel(new AspectTreeModel(m_parentAspect->project()))
62 , m_worksheetsModel(new AspectTreeModel(m_parentAspect->project()))
63 , m_plotType(type) {
64 setAttribute(Qt::WA_DeleteOnClose);
65 setWindowTitle(i18nc("@title:window", "Plot Spreadsheet Data"));
66 setWindowIcon(QIcon::fromTheme(QStringLiteral("office-chart-line")));
67
68 m_basicPlotType = (m_plotType == Plot::PlotType::Line || m_plotType == Plot::PlotType::LineHorizontalStep || m_plotType == Plot::PlotType::LineVerticalStep
69 || m_plotType == Plot::PlotType::LineSpline || m_plotType == Plot::PlotType::Scatter || m_plotType == Plot::PlotType::ScatterYError
70 || m_plotType == Plot::PlotType::ScatterXYError || m_plotType == Plot::PlotType::LineSymbol || m_plotType == Plot::PlotType::LineSymbol2PointSegment
71 || m_plotType == Plot::PlotType::LineSymbol3PointSegment);
72
73 auto* mainWidget = new QWidget(this);
74 ui->setupUi(mainWidget);
75
76 auto* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
77 m_okButton = buttonBox->button(QDialogButtonBox::Ok);
78 m_okButton->setDefault(true);
79 m_okButton->setToolTip(i18n("Plot the selected data"));
80 m_okButton->setText(i18n("&Plot"));
81
82 auto* layout = new QVBoxLayout(this);
83 layout->addWidget(mainWidget);
84 layout->addWidget(buttonBox);
85 setLayout(layout);
86
87 // create combox boxes for the existing plots and worksheets
88 auto* gridLayout = dynamic_cast<QGridLayout*>(ui->gbPlotPlacement->layout());
89 cbExistingPlots = new TreeViewComboBox(ui->gbPlotPlacement);
90 cbExistingPlots->setMinimumWidth(250); // TODO: use proper sizeHint in TreeViewComboBox
91 gridLayout->addWidget(cbExistingPlots, 0, 1, 1, 1);
92
93 cbExistingWorksheets = new TreeViewComboBox(ui->gbPlotPlacement);
94 cbExistingWorksheets->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred));
95 gridLayout->addWidget(cbExistingWorksheets, 1, 1, 1, 1);
96
97 cbExistingPlots->setTopLevelClasses({AspectType::Folder, AspectType::Worksheet, AspectType::CartesianPlot});
98 m_plotsModel->setSelectableAspects({AspectType::CartesianPlot});
99 cbExistingPlots->setModel(m_plotsModel);
100
101 // select the first available plot, if available
102 auto plots = m_parentAspect->project()->children<CartesianPlot>(AbstractAspect::ChildIndexFlag::Recursive);
103 if (!plots.isEmpty()) {
104 const auto* plot = plots.first();
105 cbExistingPlots->setCurrentModelIndex(m_plotsModel->modelIndexOfAspect(plot));
106 }
107
108 cbExistingWorksheets->setTopLevelClasses({AspectType::Folder, AspectType::Worksheet});
109 m_worksheetsModel->setSelectableAspects({AspectType::Worksheet});
110 cbExistingWorksheets->setModel(m_worksheetsModel);
111
112 // select the first available worksheet, if available
113 auto worksheets = m_parentAspect->project()->children<Worksheet>(AbstractAspect::ChildIndexFlag::Recursive);
114 if (!worksheets.isEmpty()) {

Callers

nothing calls this directly

Calls 15

groupFunction · 0.85
buttonMethod · 0.80
setDefaultMethod · 0.80
setToolTipMethod · 0.80
setTopLevelClassesMethod · 0.80
setSelectableAspectsMethod · 0.80
setCurrentModelIndexMethod · 0.80
modelIndexOfAspectMethod · 0.80
heightMethod · 0.80
existsMethod · 0.80
projectMethod · 0.45
setTextMethod · 0.45

Tested by

no test coverage detected