[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [labplot/gsoc2016_fits] src/backend/datasources: FileInfoDialog improved for FITS files
From:       Fabian Kristof <f-kristof () hotmail ! com>
Date:       2016-07-31 18:12:08
Message-ID: E1bTvDc-0000po-Jg () code ! kde ! org
[Download RAW message or body]

Git commit 60a752c0f0d29086c562da100f0abaeb859d5ed3 by Fabian Kristof.
Committed on 31/07/2016 at 18:12.
Pushed by fkristof into branch 'gsoc2016_fits'.

FileInfoDialog improved for FITS files

M  +15   -4    src/backend/datasources/FileDataSource.cpp
M  +18   -1    src/backend/datasources/filters/FITSFilter.cpp
M  +2    -0    src/backend/datasources/filters/FITSFilter.h
M  +2    -1    src/backend/datasources/filters/FITSFilterPrivate.h

http://commits.kde.org/labplot/60a752c0f0d29086c562da100f0abaeb859d5ed3

diff --git a/src/backend/datasources/FileDataSource.cpp b/src/backend/datasources/FileDataSource.cpp
index f571c21..b78614c 100644
--- a/src/backend/datasources/FileDataSource.cpp
+++ b/src/backend/datasources/FileDataSource.cpp
@@ -244,10 +244,10 @@ QString FileDataSource::fileInfoString(const QString &name){
 	QIODevice *file = new QFile(name);
 
 	QString fileName;
-	if ( name.left(1)!=QDir::separator()){
-		fileName=QDir::homePath() + QDir::separator() + name;
-	}else{
-		fileName=name;
+    if (name.left(1)!=QDir::separator()) {
+        fileName = QDir::homePath() + QDir::separator() + name;
+    } else {
+        fileName = name;
 	}
 
 	if(file==0)
@@ -273,6 +273,17 @@ QString FileDataSource::fileInfoString(const QString &name){
 		infoStrings << i18n("Group: %1", fileInfo.group());
 		infoStrings << i18n("Size: %1", i18np("%1 cByte", "%1 cBytes", fileInfo.size()));
 
+#ifdef HAVE_FITS
+        if (fileName.endsWith(QLatin1String(".fits"))) {
+            FITSFilter* fitsFilter = new FITSFilter;
+
+            infoStrings << i18n("Images: %1", QString::number(fitsFilter->imagesCount(fileName) ));
+            infoStrings << i18n("Tables: %1", QString::number(fitsFilter->tablesCount(fileName) ));
+
+            delete fitsFilter;
+        }
+#endif
+
 		// file type and type specific information about the file
 #ifdef Q_OS_LINUX
 		QProcess *proc = new QProcess();
diff --git a/src/backend/datasources/filters/FITSFilter.cpp b/src/backend/datasources/filters/FITSFilter.cpp
index 73d6916..04e167e 100644
--- a/src/backend/datasources/filters/FITSFilter.cpp
+++ b/src/backend/datasources/filters/FITSFilter.cpp
@@ -248,6 +248,15 @@ void FITSFilter::setExportTo(const int exportTo) {
     d->exportTo = exportTo;
 }
 
+int FITSFilter::imagesCount(const QString &fileName) {
+    return d->imagesCount(fileName);
+}
+
+int FITSFilter::tablesCount(const QString &fileName) {
+    return d->tablesCount(fileName);
+}
+
+
 //#####################################################################
 //################### Private implementation ##########################
 //#####################################################################
@@ -654,7 +663,7 @@ QString FITSFilterPrivate::readCHDU(const QString &fileName, AbstractDataSource
 
 void FITSFilterPrivate::writeCHDU(const QString &fileName, AbstractDataSource *dataSource) {
 #ifdef HAVE_FITS
-    if (!(fileName.right(4) == QLatin1String("fits"))) {
+    if (!fileName.endsWith(QLatin1String(".fits"))) {
         return;
     }
     int status = 0;
@@ -1635,6 +1644,14 @@ void FITSFilterPrivate::parseExtensions(const QString &fileName, QTreeWidget *tw
 #endif
 }
 
+int FITSFilterPrivate::imagesCount(const QString &fileName)  {
+    return extensionNames(fileName).values(QLatin1String("IMAGES")).size();
+}
+
+int FITSFilterPrivate::tablesCount(const QString &fileName) {
+    return extensionNames(fileName).values(QLatin1String("TABLES")).size();
+}
+
 /*!
  * \brief FITSFilterPrivate::~FITSFilterPrivate
  */
diff --git a/src/backend/datasources/filters/FITSFilter.h b/src/backend/datasources/filters/FITSFilter.h
index 32abc02..27a24b7 100644
--- a/src/backend/datasources/filters/FITSFilter.h
+++ b/src/backend/datasources/filters/FITSFilter.h
@@ -74,6 +74,8 @@ class FITSFilter : public AbstractFileFilter {
         KeywordUpdate updates;
     };  
 
+    int imagesCount(const QString& fileName);
+    int tablesCount(const QString& fileName);
     void updateKeywords(const QString& fileName, const QList<Keyword>& originals, const QVector<Keyword>& updates);
     void addNewKeyword(const QString& filename, const QList<Keyword> &keywords);
     void addKeywordUnit(const QString& fileName, const QList<Keyword> &keywords);
diff --git a/src/backend/datasources/filters/FITSFilterPrivate.h b/src/backend/datasources/filters/FITSFilterPrivate.h
index 27e5bdf..66ae693 100644
--- a/src/backend/datasources/filters/FITSFilterPrivate.h
+++ b/src/backend/datasources/filters/FITSFilterPrivate.h
@@ -49,7 +49,8 @@ public:
     void deleteKeyword(const QString &fileName, const QList<FITSFilter::Keyword>& keywords);
     void removeExtensions(const QStringList& extensions);
     const QString valueOf(const QString &fileName, const char* key);
-
+    int imagesCount(const QString& fileName) ;
+    int tablesCount(const QString& fileName) ;
     QList<FITSFilter::Keyword> chduKeywords(const QString &fileName);
     void parseHeader(const QString& fileName, QTableWidget* headerEditTable,
                      bool readKeys = true,
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic