diff --git a/GUI/View/Data/DatafilesSelector.cpp b/GUI/View/Data/DatafilesSelector.cpp index 73412429d66899a12c475aaccc8bdbfac73a6f36..c725726b8b74f66f35ef90ddc002145f2b0c403a 100644 --- a/GUI/View/Data/DatafilesSelector.cpp +++ b/GUI/View/Data/DatafilesSelector.cpp @@ -16,6 +16,7 @@ #include "Base/Util/Assert.h" #include "Device/Data/Datafield.h" #include "Device/IO/IOFactory.h" +#include "Device/IO/ZipUtil.h" #include "GUI/Model/Data/DataItem.h" #include "GUI/Model/Device/DatafileItem.h" #include "GUI/Model/Files/DatafilesQModel.h" @@ -338,11 +339,16 @@ void DatafilesSelector::importData2D() const IO::Filetype2D global_ftype = ::filterkey2type(filters2D, selectedFilter); for (const QString& fname : fnames) { - IO::Filetype2D ftype = global_ftype; - if (ftype == IO::unknown2D) - ftype = IO::filename2type2D(fname.toStdString()); - try { + if (IO::isPure1dFile(fname.toStdString())) + throw std::runtime_error("File \"" + + ZipUtil::uncompressedExtension(fname.toStdString()) + + "\" may contain only 1D data"); + + IO::Filetype2D ftype = global_ftype; + if (ftype == IO::unknown2D) + ftype = IO::filename2type2D(fname.toStdString()); + Datafield df = IO::readData2D(fname.toStdString(), ftype); if (df.rank() != 2) throw std::runtime_error("File does not contain a 2d data set");