Advertisement
Guest User

SBK_MODULE_INIT

a guest
Aug 6th, 2012
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.74 KB | None | 0 0
  1. SBK_MODULE_INIT_FUNCTION_BEGIN(PyHybrid)
  2.     {
  3.         Shiboken::AutoDecRef requiredModule(Shiboken::Module::import("PySide.QtCore"));
  4.         if (requiredModule.isNull())
  5.             SBK_MODULE_INIT_ERROR;
  6.         SbkPySide_QtCoreTypes = Shiboken::Module::getTypes(requiredModule);
  7.         SbkPySide_QtCoreTypeConverters = Shiboken::Module::getTypeConverters(requiredModule);
  8.     }
  9.  
  10.     {
  11.         Shiboken::AutoDecRef requiredModule(Shiboken::Module::import("PySide.QtGui"));
  12.         if (requiredModule.isNull())
  13.             SBK_MODULE_INIT_ERROR;
  14.         SbkPySide_QtGuiTypes = Shiboken::Module::getTypes(requiredModule);
  15.         SbkPySide_QtGuiTypeConverters = Shiboken::Module::getTypeConverters(requiredModule);
  16.     }
  17.  
  18.     // Create an array of wrapper types for the current module.
  19.     static PyTypeObject* cppApi[SBK_PyHybrid_IDX_COUNT];
  20.     SbkPyHybridTypes = cppApi;
  21.  
  22.     // Create an array of primitive type converters for the current module.
  23.     static SbkConverter* sbkConverters[SBK_PyHybrid_CONVERTERS_IDX_COUNT];
  24.     SbkPyHybridTypeConverters = sbkConverters;
  25.  
  26. #ifdef IS_PY3K
  27.     PyObject* module = Shiboken::Module::create("PyHybrid", &moduledef);
  28. #else
  29.     PyObject* module = Shiboken::Module::create("PyHybrid", PyHybrid_methods);
  30. #endif
  31.  
  32.     // Initialize classes in the type system
  33.     init_MainWindow(module);
  34.     // Register converter for type 'QList<QAction*>'.
  35.     SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QACTIONPTR_IDX] = Shiboken::Conversions::createConverter(&PyList_Type, _QList_QActionPTR__CppToPython__QList_QActionPTR_);
  36.     Shiboken::Conversions::registerConverterName(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QACTIONPTR_IDX], "QList<QAction*>");
  37.     Shiboken::Conversions::addPythonToCppValueConversion(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QACTIONPTR_IDX],
  38.         _QList_QActionPTR__PythonToCpp__QList_QActionPTR_,
  39.         is__QList_QActionPTR__PythonToCpp__QList_QActionPTR__Convertible);
  40.  
  41.     // Register converter for type 'QList<QDockWidget*>'.
  42.     SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QDOCKWIDGETPTR_IDX] = Shiboken::Conversions::createConverter(&PyList_Type, _QList_QDockWidgetPTR__CppToPython__QList_QDockWidgetPTR_);
  43.     Shiboken::Conversions::registerConverterName(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QDOCKWIDGETPTR_IDX], "QList<QDockWidget*>");
  44.     Shiboken::Conversions::addPythonToCppValueConversion(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QDOCKWIDGETPTR_IDX],
  45.         _QList_QDockWidgetPTR__PythonToCpp__QList_QDockWidgetPTR_,
  46.         is__QList_QDockWidgetPTR__PythonToCpp__QList_QDockWidgetPTR__Convertible);
  47.  
  48.     // Register converter for type 'QList<QVariant>'.
  49.     SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QVARIANT_IDX] = Shiboken::Conversions::createConverter(&PyList_Type, _QList_QVariant__CppToPython__QList_QVariant_);
  50.     Shiboken::Conversions::registerConverterName(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QVARIANT_IDX], "QList<QVariant>");
  51.     Shiboken::Conversions::addPythonToCppValueConversion(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QVARIANT_IDX],
  52.         _QList_QVariant__PythonToCpp__QList_QVariant_,
  53.         is__QList_QVariant__PythonToCpp__QList_QVariant__Convertible);
  54.  
  55.     // Register converter for type 'QList<QString>'.
  56.     SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QSTRING_IDX] = Shiboken::Conversions::createConverter(&PyList_Type, _QList_QString__CppToPython__QList_QString_);
  57.     Shiboken::Conversions::registerConverterName(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QSTRING_IDX], "QList<QString>");
  58.     Shiboken::Conversions::addPythonToCppValueConversion(SbkPyHybridTypeConverters[SBK_PYHYBRID_QLIST_QSTRING_IDX],
  59.         _QList_QString__PythonToCpp__QList_QString_,
  60.         is__QList_QString__PythonToCpp__QList_QString__Convertible);
  61.  
  62.     // Register converter for type 'QMap<QString,QVariant>'.
  63.     SbkPyHybridTypeConverters[SBK_PYHYBRID_QMAP_QSTRING_QVARIANT_IDX] = Shiboken::Conversions::createConverter(&PyDict_Type, _QMap_QString_QVariant__CppToPython__QMap_QString_QVariant_);
  64.     Shiboken::Conversions::registerConverterName(SbkPyHybridTypeConverters[SBK_PYHYBRID_QMAP_QSTRING_QVARIANT_IDX], "QMap<QString,QVariant>");
  65.     Shiboken::Conversions::addPythonToCppValueConversion(SbkPyHybridTypeConverters[SBK_PYHYBRID_QMAP_QSTRING_QVARIANT_IDX],
  66.         _QMap_QString_QVariant__PythonToCpp__QMap_QString_QVariant_,
  67.         is__QMap_QString_QVariant__PythonToCpp__QMap_QString_QVariant__Convertible);
  68.     // Register primitive types converters.
  69.  
  70.     Shiboken::Module::registerTypes(module, SbkPyHybridTypes);
  71.     Shiboken::Module::registerTypeConverters(module, SbkPyHybridTypeConverters);
  72.  
  73.     if (PyErr_Occurred()) {
  74.         PyErr_Print();
  75.         Py_FatalError("can't initialize module PyHybrid");
  76.     }
  77. SBK_MODULE_INIT_FUNCTION_END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement