diff --git a/src/kdefrontend/datasources/ImportFileWidget.h b/src/kdefrontend/datasources/ImportFileWidget.h --- a/src/kdefrontend/datasources/ImportFileWidget.h +++ b/src/kdefrontend/datasources/ImportFileWidget.h @@ -109,6 +109,9 @@ void fileInfoDialog(); void refreshPreview(); +private: + void updateContent(const QString&, int); + signals: void fileNameChanged(); void sourceTypeChanged(); diff --git a/src/kdefrontend/datasources/ImportFileWidget.cpp b/src/kdefrontend/datasources/ImportFileWidget.cpp --- a/src/kdefrontend/datasources/ImportFileWidget.cpp +++ b/src/kdefrontend/datasources/ImportFileWidget.cpp @@ -605,18 +605,23 @@ /************** SLOTS **************************************************************/ +QString absolutePath(const QString& fileName) +{ +#ifndef HAVE_WINDOWS + // make absolute path // FIXME + if ( !fileName.isEmpty() && fileName.at(0) != QDir::separator()) + return QDir::homePath() + QDir::separator() + fileName; +#endif + return fileName; +} + /*! called on file name changes. Determines the file format (ASCII, binary etc.), if the file exists, and activates the corresponding options. */ void ImportFileWidget::fileNameChanged(const QString& name) { - QString fileName = name; -#ifndef HAVE_WINDOWS - // make relative path - if ( !fileName.isEmpty() && fileName.at(0) != QDir::separator()) - fileName = QDir::homePath() + QDir::separator() + fileName; -#endif + QString fileName = absolutePath(name); bool fileExists = QFile::exists(fileName); if (fileExists) @@ -648,33 +653,7 @@ if (currentSourceType() == LiveDataSource::FileOrPipe) { const AbstractFileFilter::FileType fileType = AbstractFileFilter::fileType(fileName); ui.cbFileType->setCurrentIndex(fileType); - if (auto filter = currentFileFilter()) { - switch(fileType) { - case AbstractFileFilter::HDF5: - m_hdf5OptionsWidget->updateContent((HDF5Filter*)filter, fileName); - break; - case AbstractFileFilter::NETCDF: - m_netcdfOptionsWidget->updateContent((NetCDFFilter*)filter, fileName); - break; - case AbstractFileFilter::FITS: -#ifdef HAVE_FITS - m_fitsOptionsWidget->updateContent((FITSFilter*)filter, fileName); -#endif - break; - case AbstractFileFilter::Json: - m_jsonOptionsWidget->loadDocument(fileName); - break; - case AbstractFileFilter::ROOT: - m_rootOptionsWidget->updateContent((ROOTFilter*)filter, fileName); - break; - case AbstractFileFilter::Ascii: - case AbstractFileFilter::Binary: - case AbstractFileFilter::Image: - case AbstractFileFilter::NgspiceRawAscii: - case AbstractFileFilter::NgspiceRawBinary: - break; - } - } + updateContent(fileName, fileType); } refreshPreview(); @@ -790,6 +769,13 @@ ui.cbFilter->setCurrentIndex(lastUsedFilterIndex); filterChanged(lastUsedFilterIndex); + if (currentSourceType() == LiveDataSource::FileOrPipe) { + const QString fileName = absolutePath(ui.leFileName->text()); + + if (QFile::exists(fileName)) + updateContent(fileName, fileType); + } + refreshPreview(); } @@ -854,11 +840,7 @@ WAIT_CURSOR; - QString fileName = ui.leFileName->text(); -#ifndef HAVE_WINDOWS - if (!fileName.isEmpty() && fileName.at(0) != QDir::separator()) - fileName = QDir::homePath() + QDir::separator() + fileName; -#endif + QString fileName = absolutePath(ui.leFileName->text()); DEBUG("refreshPreview(): file name = " << fileName.toStdString()); QVector importedStrings; @@ -1121,6 +1103,36 @@ RESET_CURSOR; } +void ImportFileWidget::updateContent(const QString& fileName, int fileType) +{ + if (auto filter = currentFileFilter()) { + switch(fileType) { + case AbstractFileFilter::HDF5: + m_hdf5OptionsWidget->updateContent((HDF5Filter*)filter, fileName); + break; + case AbstractFileFilter::NETCDF: + m_netcdfOptionsWidget->updateContent((NetCDFFilter*)filter, fileName); + break; + case AbstractFileFilter::FITS: +#ifdef HAVE_FITS + m_fitsOptionsWidget->updateContent((FITSFilter*)filter, fileName); +#endif + break; + case AbstractFileFilter::ROOT: + m_rootOptionsWidget->updateContent((ROOTFilter*)filter, fileName); + break; + case AbstractFileFilter::Ascii: + case AbstractFileFilter::Binary: + case AbstractFileFilter::Image: + case AbstractFileFilter::Json: + case AbstractFileFilter::NgspiceRawAscii: + case AbstractFileFilter::NgspiceRawBinary: + break; + } + } +} + + void ImportFileWidget::updateTypeChanged(int idx) { const LiveDataSource::UpdateType UpdateType = static_cast(idx);