Changeset View
Changeset View
Standalone View
Standalone View
src/kdefrontend/datasources/ImportFileDialog.cpp
Show All 28 Lines | |||||
29 | 29 | | |||
30 | #include "ImportFileDialog.h" | 30 | #include "ImportFileDialog.h" | ||
31 | #include "ImportFileWidget.h" | 31 | #include "ImportFileWidget.h" | ||
32 | #include "backend/core/AspectTreeModel.h" | 32 | #include "backend/core/AspectTreeModel.h" | ||
33 | #include "backend/datasources/LiveDataSource.h" | 33 | #include "backend/datasources/LiveDataSource.h" | ||
34 | #include "backend/datasources/filters/AbstractFileFilter.h" | 34 | #include "backend/datasources/filters/AbstractFileFilter.h" | ||
35 | #include "backend/datasources/filters/HDF5Filter.h" | 35 | #include "backend/datasources/filters/HDF5Filter.h" | ||
36 | #include "backend/datasources/filters/NetCDFFilter.h" | 36 | #include "backend/datasources/filters/NetCDFFilter.h" | ||
37 | #include "backend/datasources/filters/ROOTFilter.h" | ||||
37 | #include "backend/spreadsheet/Spreadsheet.h" | 38 | #include "backend/spreadsheet/Spreadsheet.h" | ||
38 | #include "backend/matrix/Matrix.h" | 39 | #include "backend/matrix/Matrix.h" | ||
39 | #include "backend/core/Workbook.h" | 40 | #include "backend/core/Workbook.h" | ||
40 | #include "commonfrontend/widgets/TreeViewComboBox.h" | 41 | #include "commonfrontend/widgets/TreeViewComboBox.h" | ||
41 | #include "kdefrontend/MainWin.h" | 42 | #include "kdefrontend/MainWin.h" | ||
42 | 43 | | |||
43 | #include <KMessageBox> | 44 | #include <KMessageBox> | ||
44 | #include <KSharedConfig> | 45 | #include <KSharedConfig> | ||
▲ Show 20 Lines • Show All 155 Lines • ▼ Show 20 Line(s) | 199 | } else if (aspect->inherits("Spreadsheet")) { | |||
200 | Spreadsheet* spreadsheet = qobject_cast<Spreadsheet*>(aspect); | 201 | Spreadsheet* spreadsheet = qobject_cast<Spreadsheet*>(aspect); | ||
201 | DEBUG(" Calling readDataFromFile()"); | 202 | DEBUG(" Calling readDataFromFile()"); | ||
202 | filter->readDataFromFile(fileName, spreadsheet, mode); | 203 | filter->readDataFromFile(fileName, spreadsheet, mode); | ||
203 | } else if (aspect->inherits("Workbook")) { | 204 | } else if (aspect->inherits("Workbook")) { | ||
204 | DEBUG(" to Workbook"); | 205 | DEBUG(" to Workbook"); | ||
205 | Workbook* workbook = qobject_cast<Workbook*>(aspect); | 206 | Workbook* workbook = qobject_cast<Workbook*>(aspect); | ||
206 | QVector<AbstractAspect*> sheets = workbook->children<AbstractAspect>(); | 207 | QVector<AbstractAspect*> sheets = workbook->children<AbstractAspect>(); | ||
207 | 208 | | |||
208 | QStringList names; | | |||
209 | LiveDataSource::FileType fileType = m_importFileWidget->currentFileType(); | 209 | LiveDataSource::FileType fileType = m_importFileWidget->currentFileType(); | ||
210 | if (fileType == LiveDataSource::HDF5) | 210 | // multiple data sets/variables for HDF5, NetCDF and ROOT | ||
211 | if (fileType == LiveDataSource::HDF5 || | ||||
212 | fileType == LiveDataSource::NETCDF || | ||||
213 | fileType == LiveDataSource::ROOT) { | ||||
214 | QStringList names; | ||||
215 | switch (fileType) { | ||||
216 | case LiveDataSource::HDF5: | ||||
211 | names = m_importFileWidget->selectedHDF5Names(); | 217 | names = m_importFileWidget->selectedHDF5Names(); | ||
212 | else if (fileType == LiveDataSource::NETCDF) | 218 | break; | ||
219 | case LiveDataSource::NETCDF: | ||||
213 | names = m_importFileWidget->selectedNetCDFNames(); | 220 | names = m_importFileWidget->selectedNetCDFNames(); | ||
221 | break; | ||||
222 | case LiveDataSource::ROOT: | ||||
223 | names = m_importFileWidget->selectedROOTNames(); | ||||
224 | break; | ||||
225 | case LiveDataSource::Ascii: | ||||
226 | case LiveDataSource::Binary: | ||||
227 | case LiveDataSource::Image: | ||||
228 | case LiveDataSource::FITS: | ||||
229 | break; // never reached, omit warning | ||||
230 | } | ||||
214 | 231 | | |||
215 | //multiple extensions selected | | |||
216 | | ||||
217 | // multiple data sets/variables for HDF5/NetCDF | | |||
218 | if (fileType == LiveDataSource::HDF5 || fileType == LiveDataSource::NETCDF) { | | |||
219 | int nrNames = names.size(), offset = sheets.size(); | 232 | int nrNames = names.size(), offset = sheets.size(); | ||
sgerlach: ... and ROOT | |||||
220 | 233 | | |||
221 | int start=0; | 234 | int start=0; | ||
222 | if (mode == AbstractFileFilter::Replace) | 235 | if (mode == AbstractFileFilter::Replace) | ||
223 | start=offset; | 236 | start=offset; | ||
224 | 237 | | |||
225 | // add additional sheets | 238 | // add additional sheets | ||
226 | for (int i = start; i < nrNames; ++i) { | 239 | for (int i = start; i < nrNames; ++i) { | ||
227 | Spreadsheet *spreadsheet = new Spreadsheet(0, i18n("Spreadsheet")); | 240 | Spreadsheet *spreadsheet = new Spreadsheet(0, i18n("Spreadsheet")); | ||
228 | if (mode == AbstractFileFilter::Prepend) | 241 | if (mode == AbstractFileFilter::Prepend) | ||
229 | workbook->insertChildBefore(spreadsheet,sheets[0]); | 242 | workbook->insertChildBefore(spreadsheet,sheets[0]); | ||
230 | else | 243 | else | ||
231 | workbook->addChild(spreadsheet); | 244 | workbook->addChild(spreadsheet); | ||
232 | } | 245 | } | ||
233 | 246 | | |||
234 | if (mode != AbstractFileFilter::Append) | 247 | if (mode != AbstractFileFilter::Append) | ||
235 | offset = 0; | 248 | offset = 0; | ||
236 | 249 | | |||
237 | // import to sheets | 250 | // import to sheets | ||
238 | sheets = workbook->children<AbstractAspect>(); | 251 | sheets = workbook->children<AbstractAspect>(); | ||
239 | for (int i = 0; i < nrNames; ++i) { | 252 | for (int i = 0; i < nrNames; ++i) { | ||
240 | if (fileType == LiveDataSource::HDF5) | 253 | switch (fileType) { | ||
254 | case LiveDataSource::HDF5: | ||||
241 | ((HDF5Filter*) filter)->setCurrentDataSetName(names[i]); | 255 | ((HDF5Filter*) filter)->setCurrentDataSetName(names[i]); | ||
242 | else | 256 | break; | ||
257 | case LiveDataSource::NETCDF: | ||||
243 | ((NetCDFFilter*) filter)->setCurrentVarName(names[i]); | 258 | ((NetCDFFilter*) filter)->setCurrentVarName(names[i]); | ||
259 | break; | ||||
260 | case LiveDataSource::ROOT: | ||||
261 | ((ROOTFilter*) filter)->setCurrentHistogram(names[i]); | ||||
262 | break; | ||||
263 | case LiveDataSource::Ascii: | ||||
264 | case LiveDataSource::Binary: | ||||
265 | case LiveDataSource::Image: | ||||
266 | case LiveDataSource::FITS: | ||||
267 | break; // never reached, omit warning | ||||
268 | } | ||||
244 | 269 | | |||
245 | if (sheets[i+offset]->inherits("Matrix")) | 270 | if (sheets[i+offset]->inherits("Matrix")) | ||
246 | filter->readDataFromFile(fileName, qobject_cast<Matrix*>(sheets[i+offset])); | 271 | filter->readDataFromFile(fileName, qobject_cast<Matrix*>(sheets[i+offset])); | ||
247 | else if (sheets[i+offset]->inherits("Spreadsheet")) | 272 | else if (sheets[i+offset]->inherits("Spreadsheet")) | ||
248 | filter->readDataFromFile(fileName, qobject_cast<Spreadsheet*>(sheets[i+offset])); | 273 | filter->readDataFromFile(fileName, qobject_cast<Spreadsheet*>(sheets[i+offset])); | ||
249 | } | 274 | } | ||
250 | } else { // single import file types | 275 | } else { // single import file types | ||
251 | // use active spreadsheet/matrix if present, else new spreadsheet | 276 | // use active spreadsheet/matrix if present, else new spreadsheet | ||
▲ Show 20 Lines • Show All 189 Lines • Show Last 20 Lines |
... and ROOT