Bläddra i källkod

Merge branch 'master' of git@github.com:pieper/CTK

Jean-Christophe Fillion-Robin 15 år sedan
förälder
incheckning
8868b9074f

+ 2 - 1
CMakeLists.txt

@@ -96,7 +96,8 @@ SET(ctk_libs
   Core
   Core
   Widgets
   Widgets
   DICOM/Core
   DICOM/Core
-  DICOM/Widgets)
+  DICOM/Widgets
+  DICOM/Applications)
   
   
 #-----------------------------------------------------------------------------
 #-----------------------------------------------------------------------------
 # To make options show up in both CTK-SuperBuild and CTK regular build, let's add them
 # To make options show up in both CTK-SuperBuild and CTK regular build, let's add them

+ 2 - 1
Libs/DICOM/Applications/CMakeLists.txt

@@ -1,5 +1,5 @@
 
 
-
+INCLUDE_DIRECTORIES(${CTK_BASE_INCLUDE_DIRS})
 # Create executable
 # Create executable
 ADD_EXECUTABLE(ctkDMCTK
 ADD_EXECUTABLE(ctkDMCTK
   Main.cxx
   Main.cxx
@@ -7,6 +7,7 @@ ADD_EXECUTABLE(ctkDMCTK
 
 
 SET(KIT_LIBRARIES
 SET(KIT_LIBRARIES
   ${CTK_BASE_LIBRARIES}
   ${CTK_BASE_LIBRARIES}
+  # ${QT_LIBRARIES}
   )
   )
 
 
 TARGET_LINK_LIBRARIES(ctkDMCTK ${KIT_LIBRARIES})
 TARGET_LINK_LIBRARIES(ctkDMCTK ${KIT_LIBRARIES})

+ 2 - 2
Libs/DICOM/CMakeLists.txt

@@ -1,6 +1,6 @@
 
 
 
 
-# ADD_SUBDIRECTORY(Core)
+ADD_SUBDIRECTORY(Core)
 # ADD_SUBDIRECTORY(Widgets)
 # ADD_SUBDIRECTORY(Widgets)
-# ADD_SUBDIRECTORY(Applications)
+ADD_SUBDIRECTORY(Applications)
 
 

+ 2 - 0
Libs/DICOM/Core/Resources/dicom.qrc

@@ -3,3 +3,5 @@
   <file>dicom-schema.sql</file>
   <file>dicom-schema.sql</file>
 </qresource>
 </qresource>
 </RCC>
 </RCC>
+
+

+ 2 - 0
Libs/DICOM/Core/Testing/CMakeLists.txt

@@ -2,6 +2,7 @@ SET(KIT CTKDICOMCore)
 
 
 CREATE_TEST_SOURCELIST(Tests ${KIT}CxxTests.cxx
 CREATE_TEST_SOURCELIST(Tests ${KIT}CxxTests.cxx
   qCTKDCMTKModelTest1.cxx
   qCTKDCMTKModelTest1.cxx
+  qCTKDCMTKTest1.cxx
   )
   )
 
 
 SET (TestsToRun ${Tests})
 SET (TestsToRun ${Tests})
@@ -18,3 +19,4 @@ IF(WIN32)
 ENDIF(WIN32)
 ENDIF(WIN32)
 
 
 ADD_TEST( qCTKDCMTKModelTest1 ${CTKDICOMCore_TESTS} qCTKDCMTKModelTest1 ../../Resources/dicom-sample.sql)
 ADD_TEST( qCTKDCMTKModelTest1 ${CTKDICOMCore_TESTS} qCTKDCMTKModelTest1 ../../Resources/dicom-sample.sql)
+ADD_TEST( qCTKDCMTKTest1 ${CTKDICOMCore_TESTS} qCTKDCMTKTest1 ${CMAKE_CURRENT_BINARY_DIR}/dicom.db)

+ 3 - 1
Libs/DICOM/Core/Testing/qCTKDCMTKTest1.cxx

@@ -1,4 +1,5 @@
 #include <QTextStream>
 #include <QTextStream>
+#include <QApplication>
 
 
 #include "qCTKDCMTK.h"
 #include "qCTKDCMTK.h"
 
 
@@ -6,7 +7,8 @@
 #include <cstdlib>
 #include <cstdlib>
 
 
 int qCTKDCMTKTest1(int argc, char** argv) {
 int qCTKDCMTKTest1(int argc, char** argv) {
- 
+  
+  QApplication app(argc, argv);
   QTextStream out(stdout);
   QTextStream out(stdout);
   qCTKDCMTK myCTK;
   qCTKDCMTK myCTK;
   if ( myCTK.openDatabase( argv[1]) )
   if ( myCTK.openDatabase( argv[1]) )

+ 41 - 0
Libs/DICOM/Core/qCTKDCMTK.cxx

@@ -3,8 +3,13 @@
 #include "qCTKDCMTK.h"
 #include "qCTKDCMTK.h"
 
 
 // Qt includes
 // Qt includes
+#include <QDebug>
 #include <QSqlDatabase>
 #include <QSqlDatabase>
 #include <QSqlError>
 #include <QSqlError>
+#include <QSqlQuery>
+#include <QFile>
+#include <QStringList>
+
 #include <iostream>
 #include <iostream>
 
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -12,6 +17,8 @@ class qCTKDCMTKPrivate: public qCTKPrivate<qCTKDCMTK>
 {
 {
 public:
 public:
   qCTKDCMTKPrivate(); 
   qCTKDCMTKPrivate(); 
+  bool executeScript(const QString& script);
+
   QSqlDatabase  Database;
   QSqlDatabase  Database;
   QString       DatabaseFileName;
   QString       DatabaseFileName;
   QString       LastError;
   QString       LastError;
@@ -56,4 +63,38 @@ const QString& qCTKDCMTK::GetLastError() const {
   QCTK_D(const qCTKDCMTK);
   QCTK_D(const qCTKDCMTK);
   return d->LastError; 
   return d->LastError; 
 }
 }
+QSqlDatabase& qCTKDCMTK::database() {
+  QCTK_D(qCTKDCMTK);
+  return d->Database;
+}
+
+bool qCTKDCMTKPrivate::executeScript(const QString& script) {
+  QFile scriptFile(script);
+  qDebug() << scriptFile.exists();
+  qDebug() << scriptFile.size();
+  QString sqlCommands( scriptFile.readAll() );
+  qDebug() << sqlCommands ;
+  sqlCommands.replace( '\n', ' ' );
+  sqlCommands.replace("; ", ";\n");
+  QStringList sqlCommandsLines = sqlCommands.split('\n');
+  QSqlQuery query(Database);
+  for (QStringList::iterator it = sqlCommandsLines.begin(); it != sqlCommandsLines.end()-1; ++it)
+    {
+    query.exec(*it);
+    if (query.lastError().type())
+      {
+      std::cerr 
+      << "There was an error during execution of the statement: " 
+      << (*it).toStdString();
+      }
+      return false;
+    }
+  return true;
+}
+
+bool qCTKDCMTK::initializeDatabase() 
+{
+  QCTK_D(qCTKDCMTK);
+  return d->executeScript(":/dicom/dicom-schema.sql");
+}
 
 

+ 14 - 1
Libs/DICOM/Core/qCTKDCMTK.h

@@ -3,6 +3,7 @@
 
 
 // QT includes 
 // QT includes 
 #include <QObject>
 #include <QObject>
+#include <QSqlDatabase>
 
 
 // qCTK includes
 // qCTK includes
 #include <qCTKPimpl.h>
 #include <qCTKPimpl.h>
@@ -19,10 +20,22 @@ public:
   virtual ~qCTKDCMTK();
   virtual ~qCTKDCMTK();
   
   
   /// 
   /// 
-  ///
+  /// 
   void setDatabaseFileName(const QString& file);
   void setDatabaseFileName(const QString& file);
+  
+  ///
+  /// open the SQLite database in file
   virtual bool openDatabase(const QString& file);
   virtual bool openDatabase(const QString& file);
+
+  QSqlDatabase& database();
   const QString& GetLastError() const; 
   const QString& GetLastError() const; 
+  
+  
+  
+  ///
+  /// delete all data and initialize the database with
+  /// the default schema
+  bool initializeDatabase();
 private:
 private:
   QCTK_DECLARE_PRIVATE(qCTKDCMTK);
   QCTK_DECLARE_PRIVATE(qCTKDCMTK);
 };
 };

+ 3 - 0
Libs/Widgets/CMakeLists.txt

@@ -53,3 +53,6 @@ ctkMacroBuildQtLib(
 IF(BUILD_TESTING)
 IF(BUILD_TESTING)
   #ADD_SUBDIRECTORY(Testing)
   #ADD_SUBDIRECTORY(Testing)
 ENDIF(BUILD_TESTING)
 ENDIF(BUILD_TESTING)
+# ADD_EXECUTABLE(MyMain dummyMain.cpp)
+# TARGET_LINK_LIBRARIES(MyMain ${PROJECT_NAME})
+