Przeglądaj źródła

ENH: ctkSimplePythonShell - Conditionally include wrapper initialization code

The file ctkSimplePythonShellConfigure.h.in is configure using the variable
CTK_WRAP_PYTHONQT_{LIGHT, FULL}. Doing so allow to include the code responsible
to initialize the wrapper only if it's required.
Jean-Christophe Fillion-Robin 15 lat temu
rodzic
commit
0377ce5c93

+ 6 - 0
Applications/ctkSimplePythonShell/CMakeLists.txt

@@ -33,6 +33,12 @@ ctkMacroGetTargetLibraries(KIT_target_libraries)
 SET(KIT_include_directories
   )
 
+# Configure file will be configured using CTK_WRAP_PYTHONQT_{LIGHT, FULL} variable
+CONFIGURE_FILE(
+  ctkSimplePythonShellConfigure.h.in
+  ${CMAKE_CURRENT_BINARY_DIR}/ctkSimplePythonShellConfigure.h
+  )
+  
 IF(CTK_WRAP_PYTHONQT_LIGHT OR CTK_WRAP_PYTHONQT_FULL)
   LIST(APPEND KIT_target_libraries CTKCorePythonQt)
   LIST(APPEND KIT_target_libraries CTKWidgetsPythonQt)

+ 8 - 2
Applications/ctkSimplePythonShell/ctkSimplePythonManager.cpp

@@ -1,14 +1,18 @@
 
+// PythonQT includes
+#include <PythonQt.h>
+
 // CTK includes
 #include "ctkSimplePythonManager.h"
 #include "ctkSimplePythonQtDecorators.h"
 
-// PythonQT includes
-#include <PythonQt.h>
+#include "ctkScriptingPythonCoreConfigure.h" // For CTK_WRAP_PYTHONQT_{LIGHT, FULL}
 
+#if defined(CTK_WRAP_PYTHONQT_LIGHT) || defined(CTK_WRAP_PYTHONQT_FULL)
 // PythonQt wrapper initialization methods
 void PythonQt_init_org_commontk_CTKCore(PyObject*);
 void PythonQt_init_org_commontk_CTKWidgets(PyObject*);
+#endif
 
 //-----------------------------------------------------------------------------
 ctkSimplePythonManager::ctkSimplePythonManager(QObject* _parent) : Superclass(_parent)
@@ -34,9 +38,11 @@ void ctkSimplePythonManager::preInitialization()
 {
   Superclass::preInitialization();
 
+#if defined(CTK_WRAP_PYTHONQT_LIGHT) || defined(CTK_WRAP_PYTHONQT_FULL)
   // Initialize wrappers
   PythonQt_init_org_commontk_CTKCore(0);
   PythonQt_init_org_commontk_CTKWidgets(0);
+#endif
 
   // Register decorators
   this->registerPythonQtDecorator(new ctkSimplePythonQtDecorators(this));  

+ 13 - 0
Applications/ctkSimplePythonShell/ctkSimplePythonShellConfigure.h.in

@@ -0,0 +1,13 @@
+#ifndef __ctkSimplePythonShellConfigure_h
+#define __ctkSimplePythonShellConfigure_h
+
+
+///
+/// Here is where system computed values get stored
+///
+
+#cmakedefine CTK_WRAP_PYTHONQT_LIGHT
+#cmakedefine CTK_WRAP_PYTHONQT_FULL
+
+#endif
+