Procházet zdrojové kódy

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

Steve Pieper před 15 roky
rodič
revize
6d5239b719

+ 3 - 3
CMake/CTKBuildQtLibMacro.cmake

@@ -2,8 +2,8 @@
 #
 #
 #
-MACRO(ctk_build_qtlib)
-  CTK_PARSE_ARGUMENTS(MYQTLIB
+MACRO(CtkMacroBuildQtLib)
+  CtkMacroParseArguments(MYQTLIB
     "NAME;EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;RESOURCES;LIBRARY_TYPE"
     ""
     ${ARGN}
@@ -96,6 +96,6 @@ MACRO(ctk_build_qtlib)
     DESTINATION ${CTK_INSTALL_INCLUDE_DIR} COMPONENT Development
     )
 
-ENDMACRO(ctk_build_qtlib)
+ENDMACRO(CtkMacroBuildQtLib)
 
 

+ 3 - 3
CMake/CTKBuildQtPluginMacro.cmake

@@ -2,8 +2,8 @@
 #
 #
 #
-MACRO(ctk_build_qtplugin)
-  CTK_PARSE_ARGUMENTS(MYQTPLUGIN
+MACRO(CtkMacroBuildQtPlugin)
+  CtkMacroParseArguments(MYQTPLUGIN
     "NAME;EXPORT_DIRECTIVE;SRCS;MOC_SRCS;UI_FORMS;INCLUDE_DIRECTORIES;TARGET_LIBRARIES;UI_RESOURCES;LIBRARY_TYPE"
     ""
     ${ARGN}
@@ -93,6 +93,6 @@ MACRO(ctk_build_qtplugin)
   #  DESTINATION ${CTK_INSTALL_INCLUDE_DIR} COMPONENT Development
   #  )
 
-ENDMACRO(ctk_build_qtplugin)
+ENDMACRO(CtkMacroBuildQtPlugin)
 
 

+ 2 - 2
CMake/CTKParseArgumentsMacro.cmake

@@ -2,7 +2,7 @@
 #
 # See http://www.cmake.org/Wiki/CMakeMacroParseArguments
 #
-MACRO(CTK_PARSE_ARGUMENTS prefix arg_names option_names)
+MACRO(CtkMacroParseArguments prefix arg_names option_names)
   SET(DEFAULT_ARGS)
   FOREACH(arg_name ${arg_names})
     SET(${prefix}_${arg_name})
@@ -31,4 +31,4 @@ MACRO(CTK_PARSE_ARGUMENTS prefix arg_names option_names)
     ENDIF (is_arg_name GREATER -1)
   ENDFOREACH(arg)
   SET(${prefix}_${current_arg_name} ${current_arg_list})
-ENDMACRO(CTK_PARSE_ARGUMENTS)
+ENDMACRO(CtkMacroParseArguments)

+ 2 - 2
CMake/CTKSetupQt.cmake

@@ -5,7 +5,7 @@
 #
 
 
-MACRO(ctk_setup_qt)
+MACRO(ctkMacroSetupQt)
 
   IF(DEFINED CTK_QMAKE_EXECUTABLE)
     SET(QT_QMAKE_EXECUTABLE ${CTK_QMAKE_EXECUTABLE})
@@ -30,4 +30,4 @@ MACRO(ctk_setup_qt)
     MESSAGE(FATAL_ERROR "error: Qt4 was not found on your system. You probably need to set the QT_QMAKE_EXECUTABLE variable")
   ENDIF(QT4_FOUND)
 
-ENDMACRO(ctk_setup_qt)
+ENDMACRO(ctkMacroSetupQt)

+ 7 - 6
CMakeLists.txt

@@ -43,10 +43,10 @@ SET(CTK_BASE_INCLUDE_DIRS CACHE INTERNAL "CTK includes" FORCE)
 #-----------------------------------------------------------------------------
 # CMake Macro(s)
 # 
-INCLUDE(CMake/CTKParseArgumentsMacro.cmake)
-INCLUDE(CMake/CTKBuildQtLibMacro.cmake)
-INCLUDE(CMake/CTKBuildQtPluginMacro.cmake)
-INCLUDE(CMake/CTKSetupQt.cmake)
+INCLUDE(CMake/ctkMacroParseArguments.cmake)
+INCLUDE(CMake/ctkMacroBuildQtLib.cmake)
+INCLUDE(CMake/ctkMacroBuildQtPlugin.cmake)
+INCLUDE(CMake/ctkMacroSetupQt.cmake)
 
 #-----------------------------------------------------------------------------
 # Testing
@@ -87,7 +87,7 @@ ENDIF()
 #-----------------------------------------------------------------------------
 # QT
 #
-ctk_setup_qt()
+ctkMacroSetupQt()
 
 #-----------------------------------------------------------------------------
 # CTK Libraries
@@ -96,7 +96,8 @@ SET(ctk_libs
   Core
   Widgets
   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

+ 1 - 1
Libs/Core/CMakeLists.txt

@@ -33,7 +33,7 @@ SET(KIT_target_libraries
   ${QT_LIBRARIES}
   )
 
-ctk_build_qtlib(
+ctkMacroBuildQtLib(
   NAME ${PROJECT_NAME}
   EXPORT_DIRECTIVE ${KIT_export_directive}
   INCLUDE_DIRECTORIES ${KIT_include_directories}

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

@@ -1,5 +1,5 @@
 
-
+INCLUDE_DIRECTORIES(${CTK_BASE_INCLUDE_DIRS})
 # Create executable
 ADD_EXECUTABLE(ctkDMCTK
   Main.cxx
@@ -7,6 +7,7 @@ ADD_EXECUTABLE(ctkDMCTK
 
 SET(KIT_LIBRARIES
   ${CTK_BASE_LIBRARIES}
+  # ${QT_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(Applications)
+ADD_SUBDIRECTORY(Applications)
 

+ 1 - 1
Libs/DICOM/Core/CMakeLists.txt

@@ -38,7 +38,7 @@ SET(KIT_target_libraries
   CTKCore
   )
 
-ctk_build_qtlib(
+ctkMacroBuildQtLib(
   NAME ${PROJECT_NAME}
   EXPORT_DIRECTIVE ${KIT_export_directive}
   INCLUDE_DIRECTORIES ${KIT_include_directories}

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

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

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

@@ -2,6 +2,7 @@ SET(KIT CTKDICOMCore)
 
 CREATE_TEST_SOURCELIST(Tests ${KIT}CxxTests.cxx
   qCTKDCMTKModelTest1.cxx
+  qCTKDCMTKTest1.cxx
   )
 
 SET (TestsToRun ${Tests})
@@ -18,3 +19,4 @@ IF(WIN32)
 ENDIF(WIN32)
 
 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 <QApplication>
 
 #include "qCTKDCMTK.h"
 
@@ -6,7 +7,8 @@
 #include <cstdlib>
 
 int qCTKDCMTKTest1(int argc, char** argv) {
- 
+  
+  QApplication app(argc, argv);
   QTextStream out(stdout);
   qCTKDCMTK myCTK;
   if ( myCTK.openDatabase( argv[1]) )

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

@@ -3,8 +3,13 @@
 #include "qCTKDCMTK.h"
 
 // Qt includes
+#include <QDebug>
 #include <QSqlDatabase>
 #include <QSqlError>
+#include <QSqlQuery>
+#include <QFile>
+#include <QStringList>
+
 #include <iostream>
 
 //----------------------------------------------------------------------------
@@ -12,6 +17,8 @@ class qCTKDCMTKPrivate: public qCTKPrivate<qCTKDCMTK>
 {
 public:
   qCTKDCMTKPrivate(); 
+  bool executeScript(const QString& script);
+
   QSqlDatabase  Database;
   QString       DatabaseFileName;
   QString       LastError;
@@ -56,4 +63,38 @@ const QString& qCTKDCMTK::GetLastError() const {
   QCTK_D(const qCTKDCMTK);
   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 
 #include <QObject>
+#include <QSqlDatabase>
 
 // qCTK includes
 #include <qCTKPimpl.h>
@@ -19,10 +20,22 @@ public:
   virtual ~qCTKDCMTK();
   
   /// 
-  ///
+  /// 
   void setDatabaseFileName(const QString& file);
+  
+  ///
+  /// open the SQLite database in file
   virtual bool openDatabase(const QString& file);
+
+  QSqlDatabase& database();
   const QString& GetLastError() const; 
+  
+  
+  
+  ///
+  /// delete all data and initialize the database with
+  /// the default schema
+  bool initializeDatabase();
 private:
   QCTK_DECLARE_PRIVATE(qCTKDCMTK);
 };

+ 1 - 1
Libs/DICOM/Widgets/CMakeLists.txt

@@ -41,7 +41,7 @@ SET(KIT_target_libraries
   CTKDICOMCore
   )
 
-ctk_build_qtlib(
+ctkMacroBuildQtLib(
   NAME ${PROJECT_NAME}
   EXPORT_DIRECTIVE ${KIT_export_directive}
   INCLUDE_DIRECTORIES ${KIT_include_directories}

+ 4 - 1
Libs/Widgets/CMakeLists.txt

@@ -34,7 +34,7 @@ SET(KIT_target_libraries
   CTKCore
   )
 
-ctk_build_qtlib(
+ctkMacroBuildQtLib(
   NAME ${PROJECT_NAME}
   EXPORT_DIRECTIVE ${KIT_export_directive}
   INCLUDE_DIRECTORIES ${KIT_include_directories}
@@ -53,3 +53,6 @@ ctk_build_qtlib(
 IF(BUILD_TESTING)
   #ADD_SUBDIRECTORY(Testing)
 ENDIF(BUILD_TESTING)
+# ADD_EXECUTABLE(MyMain dummyMain.cpp)
+# TARGET_LINK_LIBRARIES(MyMain ${PROJECT_NAME})
+