[Kst] branches/work/kst/1.5/kst/src

Andrew Walker arwalker at sumusltd.com
Fri Jul 20 03:42:22 CEST 2007


SVN commit 690077 by arwalker:

CCBUG:142897 continue work for hierarchical data sources

 M  +10 -5     datasources/planckIDEF/planckIDEF.cpp  
 M  +11 -0     libkst/kstdataplugin.h  
 M  +18 -1     libkst/kstdatasource.cpp  
 M  +3 -0      libkst/kstdatasource.h  
 M  +5 -1      libkstapp/kstdatawizard_i.cpp  


--- branches/work/kst/1.5/kst/src/datasources/planckIDEF/planckIDEF.cpp #690076:690077
@@ -501,7 +501,7 @@
                         iResult = fits_read_keyword( ffits, "EXTNAME", value, comment, &iStatus );
                         if( iResult == 0 )
                         {
-                          prefixNew = prefix + QDir::separator() + QString( value ).remove( QChar( '\'' ) );
+                          prefixNew = prefix + separator() + QString( value ).remove( QChar( '\'' ) );
                         }
 
                         iResult = 0;
@@ -554,7 +554,7 @@
         fileList*   folderFields;
         folderField folderField;
         QString     baseName = baseFilename(*it);
-        QString     pathname = folder.path() + QDir::separator() + *it;
+        QString     pathname = folder.path() + separator() + *it;
         int         numFrames;
 
         folderFields = _basefiles.find( baseName );
@@ -574,7 +574,7 @@
             fld->table = 0;
             fld->column = 0;
 
-            strIndex = baseName + QDir::separator() + "INDEX";
+            strIndex = baseName + separator() + "INDEX";
             _fields.insert( strIndex, fld );
             _fieldList.append( strIndex );
 
@@ -833,7 +833,7 @@
     fld = _fields.find( fieldName );
     if( fld != 0L ) 
     {
-      if( fieldName == fld->basefile + QDir::separator() + QString("INDEX") )
+      if( fieldName == fld->basefile + separator() + QString("INDEX") )
       {
         for( i = 0; i < n; ++i )
         {
@@ -965,7 +965,7 @@
   {
     for (QStringList::ConstIterator it = files.begin(); it != files.end(); ++it) 
     {
-      pathname = folder.path() + QDir::separator() + *it;
+      pathname = folder.path() + separator() + *it;
 
       if( checkValidPlanckIDEFFile( pathname ) )
       {
@@ -1190,6 +1190,11 @@
     return rc;
   }
 
+  bool supportsHierarchy_planckIDEF( )
+  {
+    return true;
+  }
+
   int understands_planckIDEF( KConfig*, const QString& filename )
   {
     QFileInfo fileinfo( filename );
--- branches/work/kst/1.5/kst/src/libkst/kstdataplugin.h #690076:690077
@@ -224,6 +224,17 @@
         return false;
       }
 
+      bool supportsHierarchy() const {
+        bool (*sym)() = (bool(*)())symbol("supportsHierarchy");
+        if (sym) {
+          //kstdDebug() << "Checking if " << service->property("Name").toString() << " provides " << type << endl;
+          bool rc = (sym)();
+          return rc;
+        }
+
+        return false;
+      }
+
       bool provides(const QString& type) const {
         return provides().contains(type);
       }
--- branches/work/kst/1.5/kst/src/libkst/kstdatasource.cpp #690076:690077
@@ -318,6 +318,24 @@
 }
 
 
+bool KstDataSource::supportsHierarchy(const QString& filename, const QString& type) {
+  if (filename.isEmpty() || filename == "stdin" || filename == "-") {
+    return false;
+  }
+
+  QString fn = obtainFile(filename);
+  if (fn.isEmpty()) {
+    return false;
+  }
+
+  QValueList<PluginSortContainer> bestPlugins = bestPluginsForSource(fn, type);
+  if (bestPlugins.isEmpty()) {
+    return false;
+  }
+  return (*bestPlugins.begin()).plugin->supportsHierarchy();
+}
+
+
 QStringList KstDataSource::fieldListForSource(const QString& filename, const QString& type, QString *outType, bool *complete) {
   if (filename == "stdin" || filename == "-") {
     return QStringList();
@@ -360,7 +378,6 @@
     }
   }
 
-
   return rc;
 }
 
--- branches/work/kst/1.5/kst/src/libkst/kstdatasource.h #690076:690077
@@ -19,6 +19,7 @@
 #define KSTDATASOURCE_H
 
 #include <qdict.h>
+#include <qdir.h>
 #include <qdom.h>
 #include <qguardedptr.h>
 #include <qstring.h>
@@ -74,6 +75,8 @@
     static bool pluginHasConfigWidget(const QString& plugin);
     // @since 1.1.0
     static bool supportsTime(const QString& plugin, const QString& type = QString::null);
+    static bool supportsHierarchy(const QString& filename, const QString& type = QString::null);
+    static char separator() { return QDir::separator(); }
 
     KstDataSourceConfigWidget *configWidget() const;
 
--- branches/work/kst/1.5/kst/src/libkstapp/kstdatawizard_i.cpp #690076:690077
@@ -299,6 +299,7 @@
       ds = 0L;
     } else {
       fl = KstDataSource::fieldListForSource(file, QString::null, &fileType, &complete);
+      hierarchy = KstDataSource::supportsHierarchy(file, QString::null);
     }
 
     if (!fl.isEmpty() && !fileType.isEmpty()) {
@@ -337,12 +338,14 @@
 
     for (QStringList::ConstIterator it = fl.begin(); it != fl.end(); ++it) {
       QListViewItem *item = new QListViewItem(_vectors, *it);
+      QString str;
+
       item->setDragEnabled(true);
-      QString str;
       str.sprintf("%0*d", count, index++);
       item->setText(1, str);
       _countMap[*it] = str;
     }
+
     _vectors->sort();
 
     KST::vectorDefaults.sync();
@@ -548,6 +551,7 @@
   _vectors->setSorting(3, true); // Qt 3.1 compat
   QRegExp re(filter, true /* case insensitive */, true /* wildcard */);
   QListViewItemIterator it(_vectors);
+
   while (it.current()) {
     QListViewItem *i = it.current();
     ++it;


More information about the Kst mailing list