From 23d1e497d87ee9ba4b6aff96f65e67e91cc73705 Mon Sep 17 00:00:00 2001 From: Renato Filho Date: Tue, 7 Jun 2011 11:07:06 -0300 Subject: Implemented support to MSG type on windows. --- PySide/QtCore/CMakeLists.txt | 15 ++++++++++++++- PySide/QtCore/glue/hwnd_conversions.h | 32 +++++++++++++++++++++++++++++++ PySide/QtCore/typesystem_core.xml | 36 ++++++++++++++++++++++++++++++++++- PySide/QtCore/typesystem_core_win.xml | 35 ++++++++++++++++++++++++++++++++++ PySide/global.h.in | 1 + PySide/pysidewtypes.h | 27 ++++++++++++++++++++++++++ 6 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 PySide/QtCore/glue/hwnd_conversions.h create mode 100644 PySide/QtCore/typesystem_core_win.xml create mode 100644 PySide/pysidewtypes.h (limited to 'PySide') diff --git a/PySide/QtCore/CMakeLists.txt b/PySide/QtCore/CMakeLists.txt index df05bf652..86df1d172 100644 --- a/PySide/QtCore/CMakeLists.txt +++ b/PySide/QtCore/CMakeLists.txt @@ -36,6 +36,17 @@ else() ) endif() +if(ENABLE_WIN) + set(QtCore_typesystem "typesystem_core_win.xml") + set(QtCore_extra_SRC + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/msg_wrapper.cpp + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/point_wrapper.cpp + ) +else() + set(QtCore_typesystem "typesystem_core.xml") + set(QtCore_extra_SRC "") +endif() + set(QtCore_SRC ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qabstracteventdispatcher_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qabstractfileengine_wrapper.cpp @@ -135,6 +146,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamreader_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamwriter_wrapper.cpp ${QtCore_46_SRC} ${QtCore_47_SRC} +${QtCore_extra_SRC} ) set(QtCore_typesystem_path "") @@ -155,4 +167,5 @@ create_pyside_module(QtCore "" QtCore_typesystem_path QtCore_SRC - QtCore_gluecode) + QtCore_gluecode + ${CMAKE_CURRENT_SOURCE_DIR}/${QtCore_typesystem}) diff --git a/PySide/QtCore/glue/hwnd_conversions.h b/PySide/QtCore/glue/hwnd_conversions.h new file mode 100644 index 000000000..bf2de4df1 --- /dev/null +++ b/PySide/QtCore/glue/hwnd_conversions.h @@ -0,0 +1,32 @@ +namespace Shiboken { +template <> +struct Converter +{ + static bool checkType(PyObject* pyObj) + { + return false; + } + + static bool isConvertible(PyObject* pyobj) + { + return PyCObject_Check(pyobj); + } + + static inline PyObject* toPython(void* cppobj) + { + // not supported + Q_ASSERT(true); + return 0; + } + + static PyObject* toPython(HWND__ cppobj) + { + return PyCObject_FromVoidPtr(&cppobj, 0); + } + + static HWND__ toCpp(PyObject* pyobj) + { + return *((HWND__*) PyCObject_AsVoidPtr(pyobj)); + } +}; +} diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index b78642138..6de9e4556 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2477,6 +2477,29 @@ + + + + + long *%out = new long; + %out = 0; + + + + + + %RETURN_TYPE %out = false; + if (PySequence_Check(%PYARG_0) && (PySequence_Size(%PYARG_0) == 2)) { + Shiboken::AutoDecRef pyResult(PySequence_GetItem(%PYARG_0, 0)); + %out = %CONVERTTOCPP[bool](pyResult); + } + + + + %PYARG_0 = Shiboken::makeTuple(%0, *result_out); + delete result_out; + + @@ -3243,7 +3266,6 @@ - @@ -3272,4 +3294,16 @@ + + + + + + + + + + + + diff --git a/PySide/QtCore/typesystem_core_win.xml b/PySide/QtCore/typesystem_core_win.xml new file mode 100644 index 000000000..c4150cd80 --- /dev/null +++ b/PySide/QtCore/typesystem_core_win.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + diff --git a/PySide/global.h.in b/PySide/global.h.in index a0a0ed12b..acd30d0c6 100644 --- a/PySide/global.h.in +++ b/PySide/global.h.in @@ -319,6 +319,7 @@ QT_END_HEADER #elif @ENABLE_MAC@ #define Q_WS_MAC #elif @ENABLE_WIN@ + #include "pysidewtypes.h" #define Q_WS_WIN #elif @ENABLE_SIMULATOR@ #define Q_WS_SIMULATOR diff --git a/PySide/pysidewtypes.h b/PySide/pysidewtypes.h new file mode 100644 index 000000000..4d9d4f0bb --- /dev/null +++ b/PySide/pysidewtypes.h @@ -0,0 +1,27 @@ +#ifndef __PYSIDEWTYPES__ +#define __PYSIDEWTYPES__ + +typedef struct HWND__ *HWND; +typedef unsigned UINT; +typedef long LONG; +typedef unsigned long DWORD; +typedef UINT WPARAM; +typedef LONG LPARAM; + +struct POINT +{ + LONG x; + LONG y; +}; + +struct MSG +{ + HWND hwnd; + UINT message; + WPARAM wParam; + LPARAM lParam; + DWORD time; + POINT pt; +}; + +#endif -- cgit v1.2.3