Compare commits

..

No commits in common. "master" and "0.3.0" have entirely different histories.

1487 changed files with 9558 additions and 91569 deletions

2
.gitattributes vendored
View file

@ -1,2 +0,0 @@
.gitignore export-ignore
.gitattributes export-ignore

View file

@ -1,81 +1,38 @@
include(cmake/Macros/icecc.cmake) # this must be the first line! include(icecc.cmake) # this must be the first line!
project(pysidebindings) project(pysidebindings)
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 2.6)
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Macros/
${CMAKE_MODULE_PATH}) set(CMAKE_CXX_FLAGS_RELEASE "-Wall -DNDEBUG -Os -Wl,-O1 -Wl,--hash-style=gnu -Wno-strict-aliasing -fvisibility=hidden")
find_package(Shiboken 1.1.1 REQUIRED) set(CMAKE_CXX_FLAGS_DEBUG "-g -fno-common -Wall -fno-strict-aliasing -fvisibility=hidden")
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
option(AVOID_PROTECTED_HACK "Avoid protected hack on generated bindings." FALSE)
if (AVOID_PROTECTED_HACK OR WIN32)
add_definitions(-DAVOID_PROTECTED_HACK)
message(STATUS "Avoiding protected hack!")
endif()
find_package(PythonLibs REQUIRED)
find_package(PythonInterp REQUIRED)
find_package(Shiboken REQUIRED)
find_package(Qt4 4.5.0 REQUIRED) find_package(Qt4 4.5.0 REQUIRED)
find_file(GL_H "gl.h" PATH_SUFFIXES "GL")
include(FindQt4Extra)
set(XVFB_EXEC "")
option(USE_XVFB "Uses xvfb-run with the unit tests to avoid QtGui tests popping windows on the screen." FALSE)
if(USE_XVFB)
find_program(XVFB_RUN NAMES xvfb-run)
if (NOT ${XVFB_RUN} MATCHES "XVFB_RUN-NOTFOUND")
set(XVFB_EXEC ${XVFB_RUN} -a)
message(STATUS "Using xvfb-run to perform QtGui tests.")
endif()
endif()
option(BUILD_TESTS "Build tests." TRUE)
option(ENABLE_VERSION_SUFFIX "Used to use current version in suffix to generated files. This is used to allow multiples versions installed simultaneous." FALSE)
set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
if(CMAKE_HOST_APPLE)
set(ALTERNATIVE_QT_INCLUDE_DIR "" CACHE PATH "The Alternative value to QT_INCLUDE_DIR. Necessary to fix bug on cmake 2.8 MACOS users")
endif()
if(MSVC)
set(CMAKE_CXX_FLAGS "/Zc:wchar_t- /GR /EHsc /DNOCOLOR /DWIN32 /D_WINDOWS /D_SCL_SECURE_NO_WARNINGS")
else()
if(CMAKE_HOST_UNIX AND NOT CYGWIN)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fvisibility=hidden -Wno-strict-aliasing")
endif()
set(CMAKE_CXX_FLAGS_DEBUG "-g")
option(ENABLE_GCC_OPTIMIZATION "Enable specific GCC flags to optimization library size and performance. Only available on Release Mode" 0)
if(ENABLE_GCC_OPTIMIZATION)
set(CMAKE_BUILD_TYPE Release)
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG -Os -Wl,-O1")
if(NOT CMAKE_HOST_APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,--hash-style=gnu")
endif()
endif()
if(CMAKE_HOST_APPLE)
if (NOT QT_INCLUDE_DIR)
set(QT_INCLUDE_DIR "/Library/Frameworks")
endif()
if(ALTERNATIVE_QT_INCLUDE_DIR)
set(QT_INCLUDE_DIR ${ALTERNATIVE_QT_INCLUDE_DIR})
endif()
string(REPLACE " " ":" QT_INCLUDE_DIR ${QT_INCLUDE_DIR})
endif()
endif()
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE ${SHIBOKEN_BUILD_TYPE})
endif()
set(BINDING_NAME PySide) set(BINDING_NAME PySide)
set(BINDING_API_MAJOR_VERSION "1") set(BINDING_API_MAJOR_VERSION "0")
set(BINDING_API_MINOR_VERSION "1") set(BINDING_API_MINOR_VERSION "3")
set(BINDING_API_MICRO_VERSION "1") set(BINDING_API_MICRO_VERSION "0")
set(BINDING_API_RELEASE_LEVEL "final") # alpha, beta, rc, or final set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}")
set(BINDING_API_SERIAL 1) # leave as 0 when release level is final
set(BINDING_API_VERSION "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}" CACHE STRING "PySide version" FORCE) set(LIB_SUFFIX "" CACHE STRING "Define suffix of directory name (32/64)" )
if (BINDING_API_RELEASE_LEVEL STREQUAL "final") set(LIB_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}" CACHE PATH "The subdirectory relative to the install prefix where libraries will be installed (default is /lib${LIB_SUFFIX})" FORCE)
set(BINDING_API_VERSION_FULL "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}"
CACHE STRING "PySide version [full]" FORCE) if (NOT CMAKE_BUILD_TYPE)
else() set(CMAKE_BUILD_TYPE Release)
set(BINDING_API_VERSION_FULL "${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}.${BINDING_API_MICRO_VERSION}~${BINDING_API_RELEASE_LEVEL}${BINDING_API_SERIAL}"
CACHE STRING "PySide version [full]" FORCE)
endif()
set(PYSIDE_QT_VERSION "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}" CACHE STRING "Qt version used to compile PySide" FORCE)
if(ENABLE_VERSION_SUFFIX)
set(pyside_SUFFIX "-${BINDING_API_MAJOR_VERSION}.${BINDING_API_MINOR_VERSION}")
endif() endif()
include(${QT_USE_FILE}) include(${QT_USE_FILE})
@ -83,42 +40,12 @@ if (${QTVERSION} VERSION_LESS 4.5.0)
message(FATAL_ERROR "You need Qt4.5, found ${QTVERSION}.") message(FATAL_ERROR "You need Qt4.5, found ${QTVERSION}.")
endif() endif()
# Configure OS support
set(ENABLE_X11 "0")
set(ENABLE_MAC "0")
set(ENABLE_WIN "0")
set(ENABLE_SIMULATOR "0")
if(Q_WS_X11)
set(ENABLE_X11 "1")
if(Q_WS_MAEMO_5)
set(AUTO_OS "maemo")
else()
set(AUTO_OS "x11")
endif()
elseif(Q_WS_MAC)
set(ENABLE_MAC "1")
set(AUTO_OS "mac")
elseif(Q_WS_WIN)
set(ENABLE_WIN "1")
set(AUTO_OS "win")
elseif(Q_WS_SIMULATOR)
set(ENABLE_SIMULATOR "1")
set(AUTO_OS "simulator")
else()
message(FATAL_ERROR "OS not supported")
endif()
message(STATUS "Detected OS: ${AUTO_OS}")
if (WIN32)
set(PATH_SEP "\;")
else()
set(PATH_SEP ":")
endif()
# Define supported Qt Version
set(SUPPORTED_QT_VERSION "${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}")
set(BINDING_VERSION ${BINDING_API_VERSION}.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}) set(BINDING_VERSION ${BINDING_API_VERSION}.${QT_VERSION_MAJOR}.${QT_VERSION_MINOR})
find_program(GENERATOR generatorrunner REQUIRED)
if (NOT GENERATOR)
message(FATAL_ERROR "You need to specify GENERATOR variable (-DGENERATOR=value)")
endif()
# uninstall target # uninstall target
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake" configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake"
@ -128,52 +55,30 @@ add_custom_target(uninstall "${CMAKE_COMMAND}"
-P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake") -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
set(ARCHIVE_NAME pyside-qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}+${BINDING_API_VERSION_FULL}) set(ARCHIVE_NAME ${CMAKE_PROJECT_NAME}-qt${QT_VERSION_MAJOR}.${QT_VERSION_MINOR}+${BINDING_API_VERSION})
add_custom_target(dist add_custom_target(dist
COMMAND mkdir -p "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}" && COMMAND mkdir -p "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}" &&
git log > "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}/ChangeLog" && git log > "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}/ChangeLog" &&
git archive --prefix=${ARCHIVE_NAME}/ HEAD --format=tar --output="${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" && git archive --prefix=${ARCHIVE_NAME}/ HEAD --format=tar -o "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" &&
tar -C "${CMAKE_BINARY_DIR}" --owner=root --group=root -r "${ARCHIVE_NAME}/ChangeLog" -f "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" && tar -C "${CMAKE_BINARY_DIR}" --owner=root --group=root -r "${ARCHIVE_NAME}/ChangeLog" -f "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" &&
bzip2 -f9 "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" && bzip2 -f9 "${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar" &&
echo "Source package created at ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2.\n" echo "Source package created at ${CMAKE_BINARY_DIR}/${ARCHIVE_NAME}.tar.bz2.\n"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -c "from distutils import sysconfig; \\
print sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}')"
OUTPUT_VARIABLE SITE_PACKAGE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT SITE_PACKAGE) if (NOT SITE_PACKAGE)
execute_process( message(FATAL_ERROR "Could not detect Python module installation directory.")
COMMAND ${SHIBOKEN_PYTHON_INTERPRETER} -c "from distutils import sysconfig; \\
print(sysconfig.get_python_lib(1,0,prefix='${CMAKE_INSTALL_PREFIX}'))"
OUTPUT_VARIABLE SITE_PACKAGE
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (NOT SITE_PACKAGE)
message(FATAL_ERROR "Could not detect Python module installation directory.")
elseif (APPLE)
message(STATUS "!!! The generated bindings will be installed on ${SITE_PACKAGE}, is it right!?")
endif()
endif() endif()
set(GENERATOR_EXTRA_FLAGS --generator-set=shiboken --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic --use-isnull-as-nb_nonzero) set(GENERATOR_EXTRA_FLAGS --generatorSet=shiboken --enable-parent-ctor-heuristic --enable-pyside-extensions --enable-return-value-heuristic)
if(WIN32 OR DEFINED AVOID_PROTECTED_HACK)
message(STATUS "PySide will be generated avoiding the protected hack!") enable_testing()
set(GENERATOR_EXTRA_FLAGS ${GENERATOR_EXTRA_FLAGS} --avoid-protected-hack)
add_definitions(-DAVOID_PROTECTED_HACK)
else()
message(STATUS "PySide will be generated using the protected hack!")
endif()
add_subdirectory(libpyside) add_subdirectory(libpyside)
if(QT_QTUITOOLS_FOUND AND QT_QTDESIGNER_FOUND)
add_subdirectory(plugins)
endif()
# project directories # project directories
add_subdirectory(PySide) add_subdirectory(${BINDING_NAME})
if (BUILD_TESTS) add_subdirectory(tests)
enable_testing()
add_subdirectory(tests)
endif ()
find_program(DOT_EXEC dot)
if (QT_SRC_DIR AND DOT_EXEC)
add_subdirectory(doc)
else ()
message(STATUS "QT_SRC_DIR variable not set or graphviz not found, apidoc generation targets disabled.")
endif()

View file

@ -1,13 +1,34 @@
project(pyside) project(pyside)
install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/__init__.py"
DESTINATION "${SITE_PACKAGE}/${BINDING_NAME}")
include(PySideModules) macro(execute_generator module sources typesystem_path)
add_custom_command(OUTPUT ${${sources}}
COMMAND ${GENERATOR} ${GENERATOR_EXTRA_FLAGS}
${pyside_SOURCE_DIR}/global.h
--include-paths=${pyside_SOURCE_DIR}:${QT_INCLUDE_DIR}
--typesystem-paths=${pyside_SOURCE_DIR}:${typesystem_path}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
--license-file=${CMAKE_CURRENT_SOURCE_DIR}/../licensecomment.txt
${CMAKE_CURRENT_SOURCE_DIR}/typesystem_${module}.xml
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Running generator for ${module}..."
)
endmacro(execute_generator)
# Configure include based on platform # Only add subdirectory if the associated Qt module is found.
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/global.h.in" macro(HAS_QT_MODULE var name)
"${CMAKE_CURRENT_BINARY_DIR}/pyside_global.h" @ONLY) IF (${var})
add_subdirectory(${name})
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_BINARY_DIR}/${name}/${name}${CMAKE_SHARED_MODULE_SUFFIX}"
"${CMAKE_BINARY_DIR}/PySide/${name}${CMAKE_SHARED_MODULE_SUFFIX}")
else()
message(STATUS "${name} NOT found. ${name} support disabled.")
endif()
endmacro(HAS_QT_MODULE)
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/__init__.py.in" execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_CURRENT_SOURCE_DIR}/__init__.py"
"${CMAKE_CURRENT_BINARY_DIR}/__init__.py" @ONLY) "${CMAKE_BINARY_DIR}/PySide/__init__.py")
HAS_QT_MODULE(QT_QTCORE_FOUND QtCore) HAS_QT_MODULE(QT_QTCORE_FOUND QtCore)
HAS_QT_MODULE(QT_QTGUI_FOUND QtGui) HAS_QT_MODULE(QT_QTGUI_FOUND QtGui)
@ -18,23 +39,3 @@ HAS_QT_MODULE(QT_QTXML_FOUND QtXml)
HAS_QT_MODULE(QT_QTTEST_FOUND QtTest) HAS_QT_MODULE(QT_QTTEST_FOUND QtTest)
HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL) HAS_QT_MODULE(QT_QTOPENGL_FOUND QtOpenGL)
HAS_QT_MODULE(QT_QTSQL_FOUND QtSql) HAS_QT_MODULE(QT_QTSQL_FOUND QtSql)
if(QT_QTDESIGNER_FOUND)
HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools)
endif()
HAS_QT_MODULE(QT_QTHELP_FOUND QtHelp)
HAS_QT_MODULE(QT_QTXMLPATTERNS_FOUND QtXmlPatterns)
HAS_QT_MODULE(QT_QTMAEMO5_FOUND QtMaemo5)
HAS_QT_MODULE(QT_QTSCRIPT_FOUND QtScript)
HAS_QT_MODULE(QT_QTSCRIPTTOOLS_FOUND QtScriptTools)
HAS_QT_MODULE(QT_QTMULTIMEDIA_FOUND QtMultimedia)
HAS_QT_MODULE(QT_PHONON_FOUND phonon)
HAS_QT_MODULE(QT_QTDECLARATIVE_FOUND QtDeclarative)
# install
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/__init__.py"
DESTINATION "${SITE_PACKAGE}/${BINDING_NAME}${pyside_SUFFIX}")
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_templates.xml
DESTINATION share/PySide${pyside_SUFFIX}/typesystems)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pyside_global.h
DESTINATION include/${BINDING_NAME}${pyside_SUFFIX})

View file

@ -1,7 +1,5 @@
project(QtCore) project(QtCore)
set(QtCore_gluecode "${CMAKE_CURRENT_SOURCE_DIR}/glue/qeasingcurve_glue.cpp")
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set (QtCore_46_SRC ) set (QtCore_46_SRC )
else() else()
@ -28,22 +26,6 @@ else()
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qvariantanimation_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qvariantanimation_wrapper.cpp
) )
endif() endif()
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 7)
set (QtCore_47_SRC )
else()
set(QtCore_47_SRC
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/qelapsedtimer_wrapper.cpp
)
endif()
if(ENABLE_WIN)
set(SPECIFIC_OS_FILES
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/msg_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/point_wrapper.cpp
)
else()
set(SPECIFIC_OS_FILES "")
endif()
set(QtCore_SRC set(QtCore_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qabstracteventdispatcher_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qabstracteventdispatcher_wrapper.cpp
@ -58,6 +40,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbitarray_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbuffer_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbuffer_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbytearray_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbytearray_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbytearraymatcher_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qbytearraymatcher_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qchar_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qchildevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qchildevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qcoreapplication_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qcoreapplication_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qcryptographichash_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qcryptographichash_wrapper.cpp
@ -69,7 +52,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qdiriterator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qdynamicpropertychangeevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qdynamicpropertychangeevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qeventloop_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qeventloop_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfactoryinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfile_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfile_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfileinfo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfileinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfilesystemwatcher_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfilesystemwatcher_wrapper.cpp
@ -77,6 +59,8 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qfsfileengine_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qgenericargument_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qgenericargument_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qgenericreturnargument_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qgenericreturnargument_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qiodevice_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qiodevice_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlatin1char_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlatin1string_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlibraryinfo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlibraryinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qline_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qline_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlinef_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlinef_wrapper.cpp
@ -84,7 +68,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qlocale_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaclassinfo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaclassinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaenum_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaenum_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaproperty_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaproperty_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetamethod_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaobject_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmetaobject_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmimedata_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmimedata_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmodelindex_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmodelindex_wrapper.cpp
@ -92,7 +75,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmutex_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmutexlocker_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qmutexlocker_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qobject_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qobject_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpersistentmodelindex_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpersistentmodelindex_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpluginloader_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpoint_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpoint_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpointf_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qpointf_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qprocess_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qprocess_wrapper.cpp
@ -102,14 +84,16 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qrect_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qrectf_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qrectf_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qregexp_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qregexp_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qresource_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qresource_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qrunnable_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsemaphore_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsemaphore_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsettings_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsettings_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsignalmapper_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsignalmapper_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsize_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsize_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsizef_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsizef_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsocketnotifier_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsocketnotifier_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsysinfo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qstring_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qstringlist_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qstringmatcher_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qstringref_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsystemlocale_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsystemlocale_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsystemsemaphore_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qsystemsemaphore_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qt_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qt_wrapper.cpp
@ -124,7 +108,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtextencoder_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtextstream_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtextstream_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtextstreammanipulator_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtextstreammanipulator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qthread_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qthread_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qthreadpool_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtime_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtime_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtimeline_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtimeline_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtimer_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtimer_wrapper.cpp
@ -132,6 +115,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtimerevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtranslator_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qtranslator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qurl_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qurl_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/quuid_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/quuid_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qvariant_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qwaitcondition_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qwaitcondition_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qwritelocker_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qwritelocker_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamattribute_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamattribute_wrapper.cpp
@ -142,32 +126,30 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamnamespacedeclaration_wrapper
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamnotationdeclaration_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamnotationdeclaration_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamreader_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamreader_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamwriter_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/qxmlstreamwriter_wrapper.cpp
${QtCore_46_SRC} ${QtCore_46_SRC}
${QtCore_47_SRC}
${SPECIFIC_OS_FILES}
) )
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/typesystem_core.xml.in" execute_generator(core QtCore_SRC "")
"${CMAKE_CURRENT_BINARY_DIR}/typesystem_core.xml" @ONLY)
set(QtCore_typesystem_path "${QtCore_SOURCE_DIR}") include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/
set(QtCore_include_dirs ${CMAKE_CURRENT_SOURCE_DIR} ${QT_INCLUDE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtCore/ ${SHIBOKEN_INCLUDE_DIR}
${QT_INCLUDE_DIR} ${libpyside_SOURCE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${PYTHON_INCLUDE_PATH}
${libpyside_SOURCE_DIR} )
${SHIBOKEN_PYTHON_INCLUDE_DIR}) add_library(QtCore MODULE ${QtCore_SRC})
set(QtCore_libraries pyside set_property(TARGET QtCore PROPERTY PREFIX "")
${SHIBOKEN_PYTHON_LIBRARIES} target_link_libraries(QtCore
pyside
${PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY} ${SHIBOKEN_LIBRARY}
${QT_QTCORE_LIBRARY}) ${QT_QTCORE_LIBRARY}
)
create_pyside_module(QtCore # install
QtCore_include_dirs install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtCore.so
QtCore_libraries DESTINATION ${SITE_PACKAGE}/${BINDING_NAME})
"" install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtCore/pyside_qtcore_python.h
QtCore_typesystem_path DESTINATION include/PySide/QtCore/)
QtCore_SRC
QtCore_gluecode
${CMAKE_CURRENT_BINARY_DIR}/typesystem_core.xml)

View file

@ -15,10 +15,10 @@ static Py_ssize_t SbkQByteArray_segcountproc(PyObject* self, Py_ssize_t* lenp)
static Py_ssize_t SbkQByteArray_readbufferproc(PyObject* self, Py_ssize_t segment, void** ptrptr) static Py_ssize_t SbkQByteArray_readbufferproc(PyObject* self, Py_ssize_t segment, void** ptrptr)
{ {
if (segment || !Shiboken::Object::isValid(self)) if (segment || Shiboken::cppObjectIsInvalid(self))
return -1; return -1;
QByteArray* cppSelf = %CONVERTTOCPP[QByteArray*](self); QByteArray* cppSelf = Converter<QByteArray*>::toCpp(self);
*ptrptr = reinterpret_cast<void*>(cppSelf->data()); *ptrptr = reinterpret_cast<void*>(cppSelf->data());
return cppSelf->size(); return cppSelf->size();
} }

View file

@ -2,23 +2,40 @@
static int QCoreApplicationArgCount; static int QCoreApplicationArgCount;
static char** QCoreApplicationArgValues; static char** QCoreApplicationArgValues;
void QCoreApplication_constructor(PyObject* self, PyObject* args, QCoreApplicationWrapper** cptr) /**
* Called at QtCore module exit
*/
void DeleteQCoreApplicationAtExit() {
if (QCoreApplication::instance()) {
delete QCoreApplication::instance();
for (int i = 0; i < QCoreApplicationArgCount; ++i)
delete[] QCoreApplicationArgValues[i];
}
}
int SbkQCoreApplication_Init(PyObject* self, PyObject* args, PyObject*)
{ {
if (QCoreApplication::instance()) { if (QCoreApplication::instance()) {
PyErr_SetString(PyExc_RuntimeError, "A QCoreApplication instance already exists."); PyErr_SetString(PyExc_RuntimeError, "A QCoreApplication instance already exists.");
return; return -1;
} }
int numArgs = PyTuple_GET_SIZE(args); int numArgs = PyTuple_GET_SIZE(args);
if (numArgs != 1 if (numArgs != 1) {
|| !Shiboken::sequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QCoreApplicationArgCount, &QCoreApplicationArgValues, "PySideApp")) {
PyErr_BadArgument(); PyErr_BadArgument();
return; return -1;
} }
*cptr = new QCoreApplicationWrapper(QCoreApplicationArgCount, QCoreApplicationArgValues); if (!PySequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QCoreApplicationArgCount, &QCoreApplicationArgValues, "PySideApp")) {
PyErr_BadArgument();
return -1;
}
SbkBaseWrapper_setCptr(self, new QCoreApplication(QCoreApplicationArgCount, QCoreApplicationArgValues));
SbkBaseWrapper_setValidCppObject(self, 1);
Shiboken::BindingManager::instance().registerWrapper(reinterpret_cast<SbkBaseWrapper*>(self));
Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject*>(self));
PySide::registerCleanupFunction(&PySide::destroyQCoreApplication);
Py_INCREF(self); Py_INCREF(self);
Py_AtExit(DeleteQCoreApplicationAtExit);
return 1;
} }

View file

@ -1,120 +0,0 @@
#include <Python.h>
#include <shiboken.h>
#include <pysideweakref.h>
#include <QEasingCurve>
#include "glue/qeasingcurve_glue.h"
#define __ECF_ATT_NAME__ "__ecf__"
#define MAX_CUSTOM_FUNCTIONS 10
static void deleteData(void* data);
struct CustomFunctionsData
{
static CustomFunctionsData m_list[MAX_CUSTOM_FUNCTIONS];
PySideEasingCurveFunctor* m_obj;
QEasingCurve::EasingFunction m_func;
};
CustomFunctionsData CustomFunctionsData::m_list[MAX_CUSTOM_FUNCTIONS];
template<int N>
struct CustomFunctions
{
static void init()
{
CustomFunctionsData data;
data.m_obj = 0;
data.m_func = &CustomFunctions<N>::callback;
CustomFunctionsData::m_list[N] = data;
CustomFunctions<N-1>::init();
}
static qreal callback(qreal v)
{
return (*CustomFunctionsData::m_list[N].m_obj)(v);
}
};
template<>
struct CustomFunctions<0>
{
static void init()
{
CustomFunctionsData data;
data.m_obj = 0;
data.m_func = &CustomFunctions<0>::callback;
CustomFunctionsData::m_list[0] = data;
}
static qreal callback(qreal v)
{
return (*CustomFunctionsData::m_list[0].m_obj)(v);
}
};
void deleteData(void* data)
{
delete (PySideEasingCurveFunctor*)(data);
}
void PySideEasingCurveFunctor::init()
{
CustomFunctions<MAX_CUSTOM_FUNCTIONS-1>::init();
}
QEasingCurve::EasingFunction PySideEasingCurveFunctor::createCustomFuntion(PyObject* parent, PyObject* pyFunc)
{
for(int i=0; i < MAX_CUSTOM_FUNCTIONS; i++) {
CustomFunctionsData& data = CustomFunctionsData::m_list[i];
if (data.m_obj == 0) {
data.m_obj = new PySideEasingCurveFunctor(i, parent, pyFunc);
return data.m_func;
}
}
//PyErr_Format(PyExc_RuntimeError, "PySide only supports %d custom functions simultaneously.", MAX_CUSTOM_FUNCTIONS);
return 0;
}
PySideEasingCurveFunctor::~PySideEasingCurveFunctor()
{
CustomFunctionsData::m_list[m_index].m_obj = 0;
PyObject_SetAttrString(m_parent, __ECF_ATT_NAME__, Py_None);
}
qreal PySideEasingCurveFunctor::operator()(qreal progress)
{
Shiboken::GilState state;
PyObject* args = Py_BuildValue("(f)", progress);
PyObject* result = PyObject_CallObject(m_func, args);
qreal cppResult = 0.0;
if (result) {
Shiboken::Conversions::pythonToCppCopy(Shiboken::Conversions::PrimitiveTypeConverter<qreal>(), result, &cppResult);
Py_DECREF(result);
}
Py_DECREF(args);
return cppResult;
}
PyObject* PySideEasingCurveFunctor::callable()
{
Py_INCREF(m_func);
return m_func;
}
PyObject* PySideEasingCurveFunctor::callable(PyObject* parent)
{
return PyObject_GetAttrString(parent, __ECF_ATT_NAME__);
}
PySideEasingCurveFunctor::PySideEasingCurveFunctor(int index, PyObject* parent, PyObject* pyFunc)
: m_parent(parent), m_func(pyFunc), m_index(index)
{
PyObject_SetAttrString(m_parent, __ECF_ATT_NAME__, m_func);
PySide::WeakRef::create(m_parent, deleteData, this);
}

View file

@ -1,27 +0,0 @@
#ifndef __QEASINGCURVE_GLUE__
#define __QEASINGCURVE_GLUE__
#include <Python.h>
#include <QEasingCurve>
class PySideEasingCurveFunctor
{
public:
static void init();
static QEasingCurve::EasingFunction createCustomFuntion(PyObject* parent, PyObject* pyFunc);
qreal operator()(qreal progress);
PyObject* callable(); //Return New reference
static PyObject* callable(PyObject* parent); //Return New reference
~PySideEasingCurveFunctor();
private:
PyObject* m_parent;
PyObject* m_func;
int m_index;
PySideEasingCurveFunctor(int index, PyObject* parent, PyObject *pyFunc);
};
#endif

View file

@ -1,46 +1,24 @@
static bool isDecorator(PyObject* method, PyObject* self) static bool getReceiver(PyObject *callback, QObject **receiver, PyObject **self)
{ {
Shiboken::AutoDecRef methodName(PyObject_GetAttrString(method, "__name__"));
if (!PyObject_HasAttr(self, methodName))
return true;
Shiboken::AutoDecRef otherMethod(PyObject_GetAttr(self, methodName));
return reinterpret_cast<PyMethodObject*>(otherMethod.object())->im_func != \
reinterpret_cast<PyMethodObject*>(method)->im_func;
}
static bool getReceiver(QObject *source, const char* signal, PyObject* callback, QObject** receiver, PyObject** self, QByteArray* callbackSig)
{
bool forceGlobalReceiver = false;
if (PyMethod_Check(callback)) { if (PyMethod_Check(callback)) {
*self = PyMethod_GET_SELF(callback); *self = PyMethod_GET_SELF(callback);
if (%CHECKTYPE[QObject*](*self)) if (SbkQObject_Check(*self))
*receiver = %CONVERTTOCPP[QObject*](*self); *receiver = Converter<QObject*>::toCpp(*self);
forceGlobalReceiver = isDecorator(callback, *self);
} else if (PyCFunction_Check(callback)) { } else if (PyCFunction_Check(callback)) {
*self = PyCFunction_GET_SELF(callback); *self = PyCFunction_GET_SELF(callback);
if (*self && %CHECKTYPE[QObject*](*self)) if (*self && SbkQObject_Check(*self))
*receiver = %CONVERTTOCPP[QObject*](*self); *receiver = Converter<QObject*>::toCpp(*self);
} else if (PyCallable_Check(callback)) { } else if (!PyFunction_Check(callback)) {
// Ok, just a callable object
*receiver = 0; *receiver = 0;
*self = 0; *self = 0;
qWarning() << "Invalid callback object.";
return false;
} }
bool usingGlobalReceiver = !*receiver || forceGlobalReceiver; bool usingGlobalReceiver = !*receiver;
// Check if this callback is a overwrite of a non-virtual Qt slot.
if (!usingGlobalReceiver && receiver && self) {
*callbackSig = PySide::Signal::getCallbackSignature(signal, *receiver, callback, usingGlobalReceiver).toAscii();
const QMetaObject* metaObject = (*receiver)->metaObject();
int slotIndex = metaObject->indexOfSlot(callbackSig->constData());
if (slotIndex != -1 && slotIndex < metaObject->methodOffset() && PyMethod_Check(callback))
usingGlobalReceiver = true;
}
if (usingGlobalReceiver) { if (usingGlobalReceiver) {
PySide::SignalManager& signalManager = PySide::SignalManager::instance(); PySide::SignalManager& signalManager = PySide::SignalManager::instance();
*receiver = signalManager.globalReceiver(source, callback); *receiver = signalManager.globalReceiver();
*callbackSig = PySide::Signal::getCallbackSignature(signal, *receiver, callback, usingGlobalReceiver).toAscii();
} }
return usingGlobalReceiver; return usingGlobalReceiver;
@ -48,17 +26,13 @@ static bool getReceiver(QObject *source, const char* signal, PyObject* callback,
static bool qobjectConnect(QObject* source, const char* signal, QObject* receiver, const char* slot, Qt::ConnectionType type) static bool qobjectConnect(QObject* source, const char* signal, QObject* receiver, const char* slot, Qt::ConnectionType type)
{ {
if (!signal || !slot) if (!PySide::checkSignal(signal))
return false;
if (!PySide::Signal::checkQtSignal(signal))
return false; return false;
signal++; signal++;
if (!PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal)) PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal);
return false;
bool isSignal = PySide::Signal::isQtSignal(slot); bool isSignal = PySide::isSignal(slot);
slot++; slot++;
PySide::SignalManager::registerMetaMethod(receiver, slot, isSignal ? QMetaMethod::Signal : QMetaMethod::Slot); PySide::SignalManager::registerMetaMethod(receiver, slot, isSignal ? QMetaMethod::Signal : QMetaMethod::Slot);
return QObject::connect(source, signal - 1, receiver, slot - 1, type); return QObject::connect(source, signal - 1, receiver, slot - 1, type);
@ -66,73 +40,58 @@ static bool qobjectConnect(QObject* source, const char* signal, QObject* receive
static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject* callback, Qt::ConnectionType type) static bool qobjectConnectCallback(QObject* source, const char* signal, PyObject* callback, Qt::ConnectionType type)
{ {
if (!signal || !PySide::Signal::checkQtSignal(signal)) if (!PySide::checkSignal(signal))
return false; return false;
signal++; signal++;
int signalIndex = PySide::SignalManager::registerMetaMethodGetIndex(source, signal, QMetaMethod::Signal); PySide::SignalManager::registerMetaMethod(source, signal, QMetaMethod::Signal);
if (signalIndex == -1) int signalIndex = source->metaObject()->indexOfMethod(signal);
return false;
PySide::SignalManager& signalManager = PySide::SignalManager::instance(); PySide::SignalManager& signalManager = PySide::SignalManager::instance();
// Extract receiver from callback // Extract receiver from callback
QObject* receiver = 0; QObject* receiver = 0;
PyObject* self = 0; PyObject* self = 0;
QByteArray callbackSig; bool usingGlobalReceiver = getReceiver(callback, &receiver, &self);
bool usingGlobalReceiver = getReceiver(source, signal, callback, &receiver, &self, &callbackSig); if (receiver == 0 and self == 0)
if (receiver == 0 && self == 0)
return false; return false;
const QMetaObject* metaObject = receiver->metaObject(); const QMetaObject* metaObject = receiver->metaObject();
const QByteArray callbackSig = PySide::getCallbackSignature(signal, callback, usingGlobalReceiver).toAscii();
const char* slot = callbackSig.constData(); const char* slot = callbackSig.constData();
int slotIndex = metaObject->indexOfSlot(slot); int slotIndex = metaObject->indexOfSlot(slot);
if (slotIndex == -1) { if (slotIndex == -1) {
if (!usingGlobalReceiver && self && !Shiboken::Object::hasCppWrapper((SbkObject*)self)) { if (!usingGlobalReceiver and self and !((SbkBaseWrapper*)self)->containsCppWrapper) {
qWarning() << "You can't add dynamic slots on an object originated from C++."; qWarning() << "You can't add dynamic slots on an object originated from C++.";
if (usingGlobalReceiver)
signalManager.releaseGlobalReceiver(source, receiver);
return false; return false;
} }
if (usingGlobalReceiver) {
if (usingGlobalReceiver) signalManager.addGlobalSlot(slot, callback);
slotIndex = signalManager.globalReceiverSlotIndex(receiver, slot); } else {
else PySide::SignalManager::registerMetaMethod(receiver, slot, QMetaMethod::Slot);
slotIndex = PySide::SignalManager::registerMetaMethodGetIndex(receiver, slot, QMetaMethod::Slot);
if (slotIndex == -1) {
if (usingGlobalReceiver)
signalManager.releaseGlobalReceiver(source, receiver);
return false;
} }
slotIndex = metaObject->indexOfSlot(slot);
} }
if (QMetaObject::connect(source, signalIndex, receiver, slotIndex, type)) { if (QMetaObject::connect(source, signalIndex, receiver, slotIndex, type)) {
if (usingGlobalReceiver) // FIXME: Need to cast to QObjectWrapper* and call the public version of connectNotify
signalManager.notifyGlobalReceiver(receiver); // when avoiding the protected hack.
#ifndef AVOID_PROTECTED_HACK #ifndef AVOID_PROTECTED_HACK
source->connectNotify(signal - 1); source->connectNotify(signal);
#else #else
// Need to cast to QObjectWrapper* and call the public version of reinterpret_cast<QObjectWrapper*>(source)->connectNotify_protected(signal);
// connectNotify when avoiding the protected hack.
reinterpret_cast<QObjectWrapper*>(source)->connectNotify(signal - 1);
#endif #endif
if (usingGlobalReceiver)
signalManager.globalReceiverConnectNotify(source, slotIndex);
return true; return true;
} }
if (usingGlobalReceiver)
signalManager.releaseGlobalReceiver(source, receiver);
return false; return false;
} }
static bool qobjectDisconnectCallback(QObject* source, const char* signal, PyObject* callback) static bool qobjectDisconnectCallback(QObject* source, const char* signal, PyObject* callback)
{ {
if (!PySide::Signal::checkQtSignal(signal)) if (!PySide::checkSignal(signal))
return false; return false;
PySide::SignalManager& signalManager = PySide::SignalManager::instance(); PySide::SignalManager& signalManager = PySide::SignalManager::instance();
@ -140,28 +99,20 @@ static bool qobjectDisconnectCallback(QObject* source, const char* signal, PyObj
// Extract receiver from callback // Extract receiver from callback
QObject* receiver = 0; QObject* receiver = 0;
PyObject* self = 0; PyObject* self = 0;
QByteArray callbackSig; bool usingGlobalReceiver = getReceiver(callback, &receiver, &self);
bool usingGlobalReceiver = getReceiver(NULL, signal, callback, &receiver, &self, &callbackSig); if (receiver == 0 and self == 0)
if (receiver == 0 && self == 0)
return false; return false;
const QMetaObject* metaObject = receiver->metaObject(); const QMetaObject* metaObject = receiver->metaObject();
int signalIndex = source->metaObject()->indexOfSignal(++signal); const QByteArray callbackSig = PySide::getCallbackSignature(signal, callback, usingGlobalReceiver).toAscii();
int slotIndex = -1; QByteArray qtSlotName(callbackSig);
qtSlotName = qtSlotName.prepend('1');
slotIndex = metaObject->indexOfSlot(callbackSig); if (QObject::disconnect(source, signal, receiver, qtSlotName.constData())) {
if (usingGlobalReceiver) {
if (QMetaObject::disconnectOne(source, signalIndex, receiver, slotIndex)) { int slotIndex = metaObject->indexOfSlot(callbackSig.constData());
if (usingGlobalReceiver) signalManager.globalReceiverDisconnectNotify(source, slotIndex);
signalManager.releaseGlobalReceiver(source, receiver); }
#ifndef AVOID_PROTECTED_HACK
source->disconnectNotify(callbackSig);
#else
// Need to cast to QObjectWrapper* and call the public version of
// connectNotify when avoiding the protected hack.
reinterpret_cast<QObjectWrapper*>(source)->disconnectNotify(callbackSig);
#endif
return true; return true;
} }
return false; return false;

View file

@ -1,39 +0,0 @@
static QObject* _findChildHelper(const QObject* parent, const QString& name, PyTypeObject* desiredType)
{
foreach(QObject* child, parent->children()) {
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject*](child));
if (PyType_IsSubtype(pyChild->ob_type, desiredType)
&& (name.isNull() || name == child->objectName())) {
return child;
}
}
QObject* obj;
foreach(QObject* child, parent->children()) {
obj = _findChildHelper(child, name, desiredType);
if (obj)
return obj;
}
return 0;
}
static inline bool _findChildrenComparator(const QObject*& child, const QRegExp& name)
{
return name.indexIn(child->objectName()) != -1;
}
static inline bool _findChildrenComparator(const QObject*& child, const QString& name)
{
return name.isNull() || name == child->objectName();
}
template<typename T>
static void _findChildrenHelper(const QObject* parent, const T& name, PyTypeObject* desiredType, PyObject* result)
{
foreach(const QObject* child, parent->children()) {
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject*](child));
if (PyType_IsSubtype(pyChild->ob_type, desiredType) && _findChildrenComparator(child, name))
PyList_Append(result, pyChild);
_findChildrenHelper(child, name, desiredType, result);
}
}

View file

@ -0,0 +1,43 @@
#if PY_VERSION_HEX < 0x03000000
// QByteArray buffer protocol functions
// see: http://www.python.org/dev/peps/pep-3118/
extern "C" {
static Py_ssize_t SbkQString_segcountproc(PyObject* self, Py_ssize_t* lenp)
{
if (lenp)
*lenp = self->ob_type->tp_as_sequence->sq_length(self);
return 1;
}
static Py_ssize_t SbkQString_readbufferproc(PyObject* self, Py_ssize_t segment, char** ptrptr)
{
if (segment || Shiboken::cppObjectIsInvalid(self))
return -1;
QString* cppSelf = Converter<QString*>::toCpp(self);
QByteArray decodedData = cppSelf->toLocal8Bit();
Shiboken::AutoDecRef decodedString(PyString_FromStringAndSize(decodedData.constData(), decodedData.size()));
// delete __encodedStr attr if it exists
Shiboken::AutoDecRef attrName(PyString_FromStringAndSize("__encodedStr", sizeof("__encodedStr")-1));
if (PyObject_HasAttr(self, attrName))
PyObject_DelAttr(self, attrName);
PyObject_SetAttr(self, attrName, decodedString);
*ptrptr = PyString_AS_STRING(decodedString.object());
return decodedData.size();
}
PyBufferProcs SbkQStringBufferProc = {
/*bf_getreadbuffer*/ 0,
/*bf_getwritebuffer*/ 0,
/*bf_getsegcount*/ &SbkQString_segcountproc,
/*bf_getcharbuffer*/ &SbkQString_readbufferproc
};
}
#endif

View file

@ -0,0 +1,16 @@
namespace Shiboken {
template <>
struct Converter<QBool> : public ValueTypeConverter<QBool>
{
using ValueTypeConverter<QBool>::toPython;
static PyObject* toPython(const QBool& cppobj)
{
return PyBool_FromLong((bool) cppobj);
}
static QBool toCpp(PyObject* pyobj)
{
return QBool(pyobj == Py_True);
}
};
}

View file

@ -0,0 +1,30 @@
namespace Shiboken {
inline bool Shiboken::Converter<QChar >::isConvertible(PyObject* pyObj)
{
return PyObject_TypeCheck(pyObj, SbkType<QChar>())
|| SbkPySide_QtCore_QChar_SpecialCharacter_Check(pyObj)
|| SbkQLatin1Char_Check(pyObj)
|| (PyString_Check(pyObj) && (PyString_Size(pyObj) == 1))
|| PyInt_Check(pyObj);
}
inline QChar Shiboken::Converter<QChar >::toCpp(PyObject* pyObj)
{
if (!Shiboken_TypeCheck(pyObj, QChar)) {
if (SbkPySide_QtCore_QChar_SpecialCharacter_Check(pyObj))
return QChar(Shiboken::Converter<QChar::SpecialCharacter >::toCpp(pyObj));
else if (SbkQLatin1Char_Check(pyObj))
return QChar(Shiboken::Converter<QLatin1Char >::toCpp(pyObj));
else if (PyString_Check(pyObj) && PyString_Size(pyObj) == 1)
return QChar(Shiboken::Converter<char >::toCpp(pyObj));
else if (PyInt_Check(pyObj))
return QChar(Shiboken::Converter<int >::toCpp(pyObj));
}
return *Converter<QChar*>::toCpp(pyObj);
}
inline PyObject* Converter<QChar>::toPython(const QChar& cppObj)
{
return ValueTypeConverter<QChar>::toPython(cppObj);
}
}

View file

@ -0,0 +1,4 @@
namespace Shiboken {
template<typename KT, typename VT>
struct Converter<QHash<KT, VT> > : QtDictConverter<QHash<KT, VT> > {};
}

View file

@ -0,0 +1,4 @@
namespace Shiboken {
template<typename T>
struct Converter<QList<T> > : StdListConverter<QList<T> > {};
}

View file

@ -0,0 +1,5 @@
namespace Shiboken {
template<typename KT, typename VT>
struct Converter<QMap<KT, VT> > : QtDictConverter<QMap<KT, VT> > {
};
}

View file

@ -0,0 +1,4 @@
namespace Shiboken {
template<typename FT, typename ST>
struct Converter<QPair<FT, ST> > : StdPairConverter<QPair<FT, ST> > {};
}

View file

@ -0,0 +1,4 @@
namespace Shiboken {
template<typename T>
struct Converter<QSet<T> > : QSequenceConverter<QSet<T> > {};
}

View file

@ -0,0 +1,69 @@
namespace Shiboken {
inline bool Converter<QString>::isConvertible(PyObject* pyObj)
{
SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QString>());
return PyString_Check(pyObj)
|| PyObject_TypeCheck(pyObj, SbkType<QString>())
|| PyUnicode_Check(pyObj)
|| SbkQByteArray_Check(pyObj)
|| SbkQLatin1String_Check(pyObj)
#if PY_VERSION_HEX < 0x03000000
|| (pyObj->ob_type->tp_as_buffer
&& PyType_HasFeature(pyObj->ob_type, Py_TPFLAGS_HAVE_GETCHARBUFFER)
&& pyObj->ob_type->tp_as_buffer->bf_getcharbuffer)
#endif
|| SbkQChar_Check(pyObj)
|| (shiboType->ext_isconvertible && shiboType->ext_isconvertible(pyObj));
}
inline QString Converter<QString>::toCpp(PyObject* pyObj)
{
SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QString>());
if (SbkQChar_Check(pyObj)) {
return QString(Converter< QChar >::toCpp(pyObj));
} else if (SbkQByteArray_Check(pyObj)) {
return QString(Converter< QByteArray >::toCpp(pyObj));
} else if (SbkQLatin1String_Check(pyObj)) {
return QString(Converter< QLatin1String >::toCpp(pyObj));
} else if (PyUnicode_Check(pyObj)) {
Py_UNICODE* unicode = PyUnicode_AS_UNICODE(pyObj);
#if defined(Py_UNICODE_WIDE)
// cast as Py_UNICODE can be a different type
return QString::fromUcs4(reinterpret_cast<const uint*>(unicode));
#else
return QString::fromUtf16(unicode, PyUnicode_GET_SIZE(pyObj));
#endif
} else if (PyString_Check(pyObj)) {
return QString(Converter< char * >::toCpp(pyObj));
}
#if PY_VERSION_HEX < 0x03000000
// Support for buffer objects on QString constructor
else if (pyObj->ob_type->tp_as_buffer
&& PyType_HasFeature(pyObj->ob_type, Py_TPFLAGS_HAVE_GETCHARBUFFER)
&& pyObj->ob_type->tp_as_buffer->bf_getcharbuffer) {
QByteArray data;
PyBufferProcs* bufferProcs = pyObj->ob_type->tp_as_buffer;
int segments = bufferProcs->bf_getsegcount(pyObj, 0);
for (int i = 0; i < segments; ++i) {
char* segmentData;
int length = bufferProcs->bf_getcharbuffer(pyObj, i, &segmentData);
if (length == -1)
break;
data.append(segmentData, length);
}
return QString(data);
}
#endif
else if (shiboType->ext_isconvertible && shiboType->ext_tocpp && shiboType->ext_isconvertible(pyObj)) {
QString* cptr = reinterpret_cast<QString*>(shiboType->ext_tocpp(pyObj));
std::auto_ptr<QString> cptr_auto_ptr(cptr);
return *cptr;
}
return *Converter<QString*>::toCpp(pyObj);
}
inline PyObject* Converter<QString>::toPython(const QString& cppObj)
{
return ValueTypeConverter<QString>::toPython(cppObj);
}
}

View file

@ -0,0 +1,17 @@
namespace Shiboken
{
inline bool Converter<QStringList>::isConvertible(PyObject* pyObj)
{
return StdListConverter<QStringList>::isConvertible(pyObj);
}
inline QStringList Converter<QStringList>::toCpp(PyObject* pyObj)
{
return StdListConverter<QStringList>::toCpp(pyObj);
}
inline PyObject* Converter<QStringList>::toPython(const QStringList& cppObj)
{
return ValueTypeConverter<QStringList>::toPython(cppObj);
}
}

View file

@ -0,0 +1,94 @@
// We use this thin wrapper instead of the plain PyObject pointer to avoid conflicts with specializations of T*
// in QVariant.
struct PyObjectHolder
{
PyObject* m_me;
PyObjectHolder(PyObject* me) : m_me(me) {}
PyObjectHolder() : m_me(Py_None) {}
operator PyObject*() { return m_me; }
};
/**
* Q_DECLARE_METATYPE(PyObjectHolder);
* Use the expanded version of Q_DECLARE_METATYPE macro to define a typename
* compatible with PyQt4
**/
QT_BEGIN_NAMESPACE
template <>
struct QMetaTypeId< PyObjectHolder >
{
enum { Defined = 1 };
static int qt_metatype_id()
{
static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0);
if (!metatype_id)
metatype_id =
qRegisterMetaType<PyObjectHolder>("PyQt_PyObject");
return metatype_id;
}
};
QT_END_NAMESPACE
namespace Shiboken {
// all types are convertible to QVariant
inline bool Converter<QVariant>::isConvertible(PyObject* pyobj)
{
return true;
}
inline QVariant Converter<QVariant>::toCpp(PyObject* pyobj)
{
if (SbkQVariant_Check(pyobj))
return *Converter<QVariant*>::toCpp(pyobj);
// voodoo stuff to avoid linking qtcore bindings with qtgui bindings
QString className(pyobj->ob_type->tp_name);
className = className.mid(className.lastIndexOf(".") + 1);
uint typeCode = QMetaType::type(className.toAscii());
if (!typeCode || typeCode > QVariant::UserType) {
// Check the implicit conversion stuff for most python-native types
if (SbkPySide_QtCore_QVariant_Type_CheckExact(pyobj)) {
QVariant::Type cpp_arg0 = Shiboken::Converter<QVariant::Type >::toCpp(pyobj);
// QVariant(QVariant::Type)
return QVariant(cpp_arg0);
} else if (SbkPySide_QtCore_Qt_GlobalColor_CheckExact(pyobj)) {
Qt::GlobalColor cpp_arg0 = Shiboken::Converter<Qt::GlobalColor >::toCpp(pyobj);
// QVariant(Qt::GlobalColor)
return QVariant(cpp_arg0);
} else if (PyBool_Check(pyobj)) {
bool cpp_arg0 = Shiboken::Converter<bool >::toCpp(pyobj);
// QVariant(bool)
return QVariant(cpp_arg0);
} else if (PyString_Check(pyobj)) {
const char * cpp_arg0 = Shiboken::Converter<const char * >::toCpp(pyobj);
// QVariant(const char*)
return QVariant(cpp_arg0);
} else if (PyFloat_Check(pyobj)) {
double cpp_arg0 = Shiboken::Converter<double >::toCpp(pyobj);
// QVariant(double)
return QVariant(cpp_arg0);
} else if (PyNumber_Check(pyobj)) {
int cpp_arg0 = Shiboken::Converter<int >::toCpp(pyobj);
// QVariant(int)
return QVariant(cpp_arg0);
} else if (PyLong_Check(pyobj)) {
qlonglong cpp_arg0 = Shiboken::Converter<qlonglong >::toCpp(pyobj);
// QVariant(qlonglong)
return QVariant(cpp_arg0);
} else {
Py_INCREF(pyobj);
return QVariant::fromValue<PyObjectHolder>(pyobj);
}
} else {
// Is a known Qt type
return QVariant(typeCode, reinterpret_cast<SbkBaseWrapper*>(pyobj)->cptr);
}
}
inline PyObject* Converter<QVariant>::toPython(const QVariant& cppObj)
{
return ValueTypeConverter<QVariant>::toPython(cppObj);
}
}

View file

@ -0,0 +1,4 @@
namespace Shiboken {
template<typename T>
struct Converter<QVector<T> > : StdListConverter<QVector<T> > {};
}

File diff suppressed because it is too large Load diff

View file

@ -1,24 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtCore">
<load-typesystem name="typesystem_core_@AUTO_OS@.xml" generate="yes"/>
<load-typesystem name="typesystem_core_common.xml" generate="yes"/>
</typesystem>

File diff suppressed because it is too large Load diff

View file

@ -1,23 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtCore">
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject" />
</typesystem>

View file

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtCore">
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyLong">
<!-- FIXME APIExtractor or shiboken do not support multiple includes by primitive type -->
<include file-name="QTextDocument" location="global"/>
</primitive-type>
</typesystem>

View file

@ -1,57 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtCore">
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject" />
<primitive-type name="HWND">
<conversion-rule>
<native-to-target>
#ifdef IS_PY3K
return PyCapsule_New(%in, 0, 0);
#else
return PyCObject_FromVoidPtr(%in, 0);
#endif
</native-to-target>
<target-to-native>
<add-conversion type="PyNone">
%out = 0;
</add-conversion>
<add-conversion check="checkPyCapsuleOrPyCObject(%in)" type="PyObject">
#ifdef IS_PY3K
%out = (%OUTTYPE)PyCapsule_GetPointer(%in, 0);
#else
%out = (%OUTTYPE)PyCObject_AsVoidPtr(%in);
#endif
</add-conversion>
</target-to-native>
</conversion-rule>
</primitive-type>
<inject-code class="native" position="beginning">
<insert-template name="checkPyCapsuleOrPyCObject_func"/>
</inject-code>
<value-type name="POINT">
<include file-name="wtypes.h" location="global"/>
</value-type>
<value-type name="MSG">
<include file-name="wtypes.h" location="global"/>
</value-type>
<suppress-warning text="class 'MSG' inherits from unknown base class 'tagMSG'"/>
<suppress-warning text="class not found for setup inheritance 'tagMSG'"/>
</typesystem>

View file

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtCore">
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyLong">
<!-- FIXME APIExtractor or shiboken do not support multiple includes by primitive type -->
<include file-name="QTextDocument" location="global"/>
</primitive-type>
</typesystem>

View file

@ -1,62 +0,0 @@
project(QtDeclarative)
set(QtDeclarative_registerType "${CMAKE_CURRENT_SOURCE_DIR}/pysideqmlregistertype.cpp")
set(QtDeclarative_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativecomponent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativecontext_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeengine_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeerror_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeexpression_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeextensioninterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeextensionplugin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeimageprovider_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeitem_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativelistreference_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativenetworkaccessmanagerfactory_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeparserstatus_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativepropertymap_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativepropertyvaluesource_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeproperty_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativescriptstring_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qdeclarativeview_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative/qtdeclarative_module_wrapper.cpp
)
set(QtDeclarative_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtDeclarative_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
set(QtDeclarative_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTNETWORK_INCLUDE_DIR}
${QT_QTDECLARATIVE_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${QtGui_BINARY_DIR}/PySide/QtGui/
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtNetwork_BINARY_DIR}/PySide/QtNetwork/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtDeclarative)
set(QtDeclarative_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
${QT_QTNETWORK_LIBRARY}
${QT_QTSCRIPT_LIBRARY}
${QT_QTSVG_LIBRARY}
${QT_QTSQL_LIBRARY}
${QT_QTXMLPATTERNS_LIBRARY}
${QT_QTOPENGL_LIBRARY}
${QT_QTDECLARATIVE_LIBRARY})
set(QtDeclarative_deps QtGui QtNetwork)
create_pyside_module(QtDeclarative
QtDeclarative_include_dirs
QtDeclarative_libraries
QtDeclarative_deps
QtDeclarative_typesystem_path
QtDeclarative_SRC
QtDeclarative_registerType)

View file

@ -1,366 +0,0 @@
/*
* This file is part of the Shiboken Python Bindings Generator project.
*
* Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
*
* Contact: PySide team <contact@pyside.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "pysideqmlregistertype.h"
// Qt
#include <QObject>
#include <QDeclarativeEngine>
#include <QMutex>
// shiboken
#include <typeresolver.h>
#include <gilstate.h>
#include <sbkdbg.h>
// pyside
#include <pyside.h>
#include <dynamicqmetaobject.h>
#include <pysideproperty.h>
// auto generated headers
#include "qdeclarativeitem_wrapper.h"
#include "pyside_qtcore_python.h"
#include "pyside_qtdeclarative_python.h"
#ifndef PYSIDE_MAX_QML_TYPES
// Maximum number of different types the user cna export to QML using qmlRegisterType.
#define PYSIDE_MAX_QML_TYPES 50
#endif
// Forward declarations
static void propListMetaCall(PySideProperty* pp, PyObject* self, QMetaObject::Call call, void** args);
// All registered python types
static PyObject* pyTypes[PYSIDE_MAX_QML_TYPES];
static void (*createFuncs[PYSIDE_MAX_QML_TYPES])(void*);
// Mutex used to avoid race condition on PySide::nextQObjectMemoryAddr
static QMutex nextQmlElementMutex;
template<int N>
struct ElementFactoryBase
{
static void createInto(void* memory)
{
QMutexLocker locker(&nextQmlElementMutex);
PySide::setNextQObjectMemoryAddr(memory);
Shiboken::GilState state;
PyObject* obj = PyObject_CallObject(pyTypes[N], 0);
if (!obj || PyErr_Occurred())
PyErr_Print();
PySide::setNextQObjectMemoryAddr(0);
}
};
template<int N>
struct ElementFactory : ElementFactoryBase<N>
{
static void init()
{
createFuncs[N] = &ElementFactoryBase<N>::createInto;
ElementFactory<N-1>::init();
}
};
template<>
struct ElementFactory<0> : ElementFactoryBase<0>
{
static void init()
{
createFuncs[0] = &ElementFactoryBase<0>::createInto;
}
};
int PySide::qmlRegisterType(PyObject* pyObj, const char* uri, int versionMajor, int versionMinor, const char* qmlName)
{
using namespace Shiboken;
static PyTypeObject* qobjectType = Shiboken::Conversions::getPythonTypeObject("QObject*");
static PyTypeObject* qdeclarativeType = Shiboken::Conversions::getPythonTypeObject("QDeclarativeItem*");
assert(qobjectType);
static int nextType = 0;
if (nextType >= PYSIDE_MAX_QML_TYPES) {
PyErr_Format(PyExc_TypeError, "QML doesn't really like language bindings, so you can only export %d types to QML.", PYSIDE_MAX_QML_TYPES);
return -1;
}
if (!PySequence_Contains(((PyTypeObject*)pyObj)->tp_mro, (PyObject*)qobjectType)) {
PyErr_Format(PyExc_TypeError, "A type inherited from %s expected, got %s.", qobjectType->tp_name, ((PyTypeObject*)pyObj)->tp_name);
return -1;
}
bool isDeclarativeType = PySequence_Contains(((PyTypeObject*)pyObj)->tp_mro, (PyObject*)qdeclarativeType);
QMetaObject* metaObject = reinterpret_cast<QMetaObject*>(ObjectType::getTypeUserData(reinterpret_cast<SbkObjectType*>(pyObj)));
Q_ASSERT(metaObject);
// Inc ref the type object, don't worry about dec ref them because there's no way to unregister a QML type
Py_INCREF(pyObj);
// All ready... now the ugly code begins... :-)
pyTypes[nextType] = pyObj;
// Init proxy object static meta object
QDeclarativePrivate::RegisterType type;
type.version = 0;
if (isDeclarativeType) {
type.typeId = qMetaTypeId<QDeclarativeItem*>();
type.listId = qMetaTypeId<QDeclarativeListProperty<QDeclarativeItem> >();
type.attachedPropertiesFunction = QDeclarativePrivate::attachedPropertiesFunc<QDeclarativeItem>();
type.attachedPropertiesMetaObject = QDeclarativePrivate::attachedPropertiesMetaObject<QDeclarativeItem>();
type.parserStatusCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativeParserStatus>::cast();
type.valueSourceCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativePropertyValueSource>::cast();
type.valueInterceptorCast = QDeclarativePrivate::StaticCastSelector<QDeclarativeItem, QDeclarativePropertyValueInterceptor>::cast();
} else {
type.typeId = qMetaTypeId<QObject*>();
type.listId = qMetaTypeId<QDeclarativeListProperty<QObject> >();
type.attachedPropertiesFunction = QDeclarativePrivate::attachedPropertiesFunc<QObject>();
type.attachedPropertiesMetaObject = QDeclarativePrivate::attachedPropertiesMetaObject<QObject>();
type.parserStatusCast = QDeclarativePrivate::StaticCastSelector<QObject, QDeclarativeParserStatus>::cast();
type.valueSourceCast = QDeclarativePrivate::StaticCastSelector<QObject, QDeclarativePropertyValueSource>::cast();
type.valueInterceptorCast = QDeclarativePrivate::StaticCastSelector<QObject, QDeclarativePropertyValueInterceptor>::cast();
}
type.objectSize = PySide::getSizeOfQObject(reinterpret_cast<SbkObjectType*>(pyObj));
type.create = createFuncs[nextType];
type.uri = uri;
type.versionMajor = versionMajor;
type.versionMinor = versionMinor;
type.elementName = qmlName;
type.metaObject = metaObject;
type.extensionObjectCreate = 0;
type.extensionMetaObject = 0;
type.customParser = 0;
int qmlTypeId = QDeclarativePrivate::qmlregister(QDeclarativePrivate::TypeRegistration, &type);
++nextType;
return qmlTypeId;
}
extern "C"
{
// This is the user data we store in the property.
struct DeclarativeListProperty
{
PyTypeObject* type;
PyObject* append;
PyObject* at;
PyObject* clear;
PyObject* count;
};
static int propListTpInit(PyObject* self, PyObject* args, PyObject* kwds)
{
static const char *kwlist[] = {"type", "append", "at", "clear", "count", 0};
PySideProperty* pySelf = reinterpret_cast<PySideProperty*>(self);
DeclarativeListProperty* data = new DeclarativeListProperty;
memset(data, 0, sizeof(DeclarativeListProperty));
if (!PyArg_ParseTupleAndKeywords(args, kwds,
"OO|OOO:QtDeclarative.ListProperty", (char**) kwlist,
&data->type,
&data->append,
&data->at,
&data->clear,
&data->count)) {
return 0;
}
PySide::Property::setMetaCallHandler(pySelf, &propListMetaCall);
PySide::Property::setTypeName(pySelf, "QDeclarativeListProperty<QDeclarativeItem>");
PySide::Property::setUserData(pySelf, data);
return 1;
}
void propListTpFree(void* self)
{
PySideProperty* pySelf = reinterpret_cast<PySideProperty*>(self);
delete reinterpret_cast<DeclarativeListProperty*>(PySide::Property::userData(pySelf));
// calls base type constructor
Py_TYPE(pySelf)->tp_base->tp_free(self);
}
PyTypeObject PropertyListType = {
PyVarObject_HEAD_INIT(0, 0)
"ListProperty", /*tp_name*/
sizeof(PySideProperty), /*tp_basicsize*/
0, /*tp_itemsize*/
0, /*tp_dealloc*/
0, /*tp_print*/
0, /*tp_getattr*/
0, /*tp_setattr*/
0, /*tp_compare*/
0, /*tp_repr*/
0, /*tp_as_number*/
0, /*tp_as_sequence*/
0, /*tp_as_mapping*/
0, /*tp_hash */
0, /*tp_call*/
0, /*tp_str*/
0, /*tp_getattro*/
0, /*tp_setattro*/
0, /*tp_as_buffer*/
Py_TPFLAGS_DEFAULT, /*tp_flags*/
0, /*tp_doc */
0, /*tp_traverse */
0, /*tp_clear */
0, /*tp_richcompare */
0, /*tp_weaklistoffset */
0, /*tp_iter */
0, /*tp_iternext */
0, /*tp_methods */
0, /*tp_members */
0, /*tp_getset */
&PySidePropertyType, /*tp_base */
0, /*tp_dict */
0, /*tp_descr_get */
0, /*tp_descr_set */
0, /*tp_dictoffset */
propListTpInit, /*tp_init */
0, /*tp_alloc */
0, /*tp_new */
propListTpFree, /*tp_free */
0, /*tp_is_gc */
0, /*tp_bases */
0, /*tp_mro */
0, /*tp_cache */
0, /*tp_subclasses */
0, /*tp_weaklist */
0, /*tp_del */
};
} // extern "C"
// Implementation of QDeclarativeListProperty<T>::AppendFunction callback
void propListAppender(QDeclarativeListProperty<QDeclarativeItem>* propList, QDeclarativeItem* item)
{
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(2));
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtDeclarativeTypes[SBK_QDECLARATIVEITEM_IDX], item));
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->append, args));
if (PyErr_Occurred())
PyErr_Print();
}
// Implementation of QDeclarativeListProperty<T>::CountFunction callback
int propListCount(QDeclarativeListProperty<QDeclarativeItem>* propList)
{
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(1));
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->count, args));
// Check return type
int cppResult = 0;
PythonToCppFunc pythonToCpp;
if (PyErr_Occurred())
PyErr_Print();
else if ((pythonToCpp = Shiboken::Conversions::isPythonToCppConvertible(Shiboken::Conversions::PrimitiveTypeConverter<int>(), retVal)))
pythonToCpp(retVal, &cppResult);
return cppResult;
}
// Implementation of QDeclarativeListProperty<T>::AtFunction callback
QDeclarativeItem* propListAt(QDeclarativeListProperty<QDeclarativeItem>* propList, int index)
{
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(2));
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
PyTuple_SET_ITEM(args, 1, Shiboken::Conversions::copyToPython(Shiboken::Conversions::PrimitiveTypeConverter<int>(), &index));
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->at, args));
QDeclarativeItem* result = 0;
if (PyErr_Occurred())
PyErr_Print();
else if (PyType_IsSubtype(Py_TYPE(retVal), data->type))
Shiboken::Conversions::pythonToCppPointer((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QDECLARATIVEITEM_IDX], retVal, &result);
return result;
}
// Implementation of QDeclarativeListProperty<T>::ClearFunction callback
void propListClear(QDeclarativeListProperty<QDeclarativeItem>* propList)
{
Shiboken::GilState state;
Shiboken::AutoDecRef args(PyTuple_New(1));
PyTuple_SET_ITEM(args, 0, Shiboken::Conversions::pointerToPython((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], propList->object));
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(propList->data);
Shiboken::AutoDecRef retVal(PyObject_CallObject(data->clear, args));
if (PyErr_Occurred())
PyErr_Print();
}
// qt_metacall specialization for ListProperties
static void propListMetaCall(PySideProperty* pp, PyObject* self, QMetaObject::Call call, void** args)
{
if (call != QMetaObject::ReadProperty)
return;
DeclarativeListProperty* data = reinterpret_cast<DeclarativeListProperty*>(PySide::Property::userData(pp));
QObject* qobj;
Shiboken::Conversions::pythonToCppPointer((SbkObjectType*)SbkPySide_QtCoreTypes[SBK_QOBJECT_IDX], self, &qobj);
QDeclarativeListProperty<QDeclarativeItem> declProp(qobj, data, &propListAppender);
if (data->count)
declProp.count = &propListCount;
if (data->at)
declProp.at = &propListAt;
if (data->clear)
declProp.clear = &propListClear;
// Copy the data to the memory location requested by the meta call
void* v = args[0];
*reinterpret_cast<QDeclarativeListProperty<QDeclarativeItem>*>(v) = declProp;
}
void PySide::initQmlSupport(PyObject* module)
{
ElementFactory<PYSIDE_MAX_QML_TYPES - 1>::init();
// Export DeclarativeListProperty type
if (PyType_Ready(&PropertyListType) < 0)
return;
Py_INCREF((PyObject*)&PropertyListType);
PyModule_AddObject(module, PropertyListType.tp_name, (PyObject*)&PropertyListType);
}

View file

@ -1,57 +0,0 @@
/*
* This file is part of the Shiboken Python Bindings Generator project.
*
* Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
*
* Contact: PySide team <contact@pyside.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef PYSIDEQMLREGISTERTYPE_H
#define PYSIDEQMLREGISTERTYPE_H
#include <Python.h>
struct SbkObjectType;
namespace PySide
{
extern void* nextQmlElementMemoryAddr;
/**
* Init the QML support doign things like registering QtDeclarative.ListProperty and create the necessary stuff for
* qmlRegisterType.
*
* \param module QtDeclarative python module
*/
void initQmlSupport(PyObject* module);
/**
* PySide implementation of qmlRegisterType<T> function.
*
* \param pyObj Python type to be registered.
* \param uri QML element uri.
* \param versionMajor QML component major version.
* \param versionMinor QML component minor version.
* \param qmlName QML element name
* \return the metatype id of the registered type.
*/
int qmlRegisterType(PyObject* pyObj, const char* uri, int versionMajor, int versionMinor, const char* qmlName);
}
#endif

View file

@ -1,169 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtDeclarative">
<load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_network.xml" generate="no"/>
<load-typesystem name="typesystem_gui.xml" generate="no"/>
<add-function signature="qmlRegisterType(PyTypeObject, const char*, int, int, const char*)" return-type="int">
<inject-documentation format="target" mode="append">
This function registers the Python type in the QML system with the name qmlName, in the library imported from uri having the version number composed from versionMajor and versionMinor.
Returns the QML type id.
For example, this registers a Python class MySliderItem as a QML type named Slider for version 1.0 of a module called "com.mycompany.qmlcomponents":
::
qmlRegisterType(MySliderItem, "com.mycompany.qmlcomponents", 1, 0, "Slider")
Once this is registered, the type can be used in QML by importing the specified module name and version number:
::
import com.mycompany.qmlcomponents 1.0
Slider { ... }
Note that it's perfectly reasonable for a library to register types to older versions than the actual version of the library. Indeed, it is normal for the new library to allow QML written to previous versions to continue to work, even if more advanced versions of some of its types are available.
</inject-documentation>
<inject-code class="target">
int %0 = PySide::qmlRegisterType(%ARGUMENT_NAMES);
%PYARG_0 = %CONVERTTOPYTHON[int](%0);
</inject-code>
</add-function>
<enum-type identified-by-value="QML_HAS_ATTACHED_PROPERTIES" since="4.7">
<extra-includes>
<include file-name="QtDeclarative" location="global"/>
<!-- FIXME The include tag doesn't work on modules -->
<include file-name="pysideqmlregistertype.h" location="local"/>
</extra-includes>
</enum-type>
<inject-code class="target" position="end">
PySide::initQmlSupport(module);
</inject-code>
<object-type name="QDeclarativeExtensionInterface"/>
<object-type name="QDeclarativeComponent">
<enum-type name="Status"/>
<!-- This ctor isn't part of Qt public API -->
<modify-function signature="QDeclarativeComponent(QObject*)" remove="all" />
</object-type>
<object-type name="QDeclarativeContext">
<modify-function signature="setContextProperty(const QString &amp;, QObject*)">
<inject-code class="target" position="end">
QByteArray key("%FUNCTION_NAME_");
key.append(%1.toLocal8Bit());
Shiboken::Object::keepReference(reinterpret_cast&lt;SbkObject*&gt;(%PYSELF), key.constData(), %PYARG_2);
</inject-code>
</modify-function>
</object-type>
<object-type name="QDeclarativeEngine">
<enum-type name="ObjectOwnership" />
<modify-function signature="QDeclarativeEngine(QObject*)">
<modify-argument index="1">
<rename to="parent" /> <!-- Qt names this just p -->
</modify-argument>
</modify-function>
<modify-function signature="setNetworkAccessManagerFactory(QDeclarativeNetworkAccessManagerFactory*)">
<modify-argument index="1">
<parent index="this" action="add" />
</modify-argument>
</modify-function>
<modify-function signature="importPlugin(QString,QString,QString*)">
<modify-argument index="3">
<remove-argument/>
</modify-argument>
<modify-argument index="return">
<replace-type modified-type="(ok, errorString)" />
</modify-argument>
<inject-code class="target" position="beginning">
QString errorString;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE ok_ = %CPPSELF.%FUNCTION_NAME(%1, %2, &amp;errorString);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](ok_));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](errorString));
</inject-code>
</modify-function>
</object-type>
<value-type name="QDeclarativeError" />
<object-type name="QDeclarativeExpression">
<modify-function signature="evaluate(bool*)">
<modify-argument index="1">
<remove-argument/>
</modify-argument>
<inject-code class="target" position="beginning">
<insert-template name="fix_bool*"/>
</inject-code>
</modify-function>
</object-type>
<object-type name="QDeclarativeExtensionPlugin" />
<object-type name="QDeclarativeImageProvider">
<enum-type name="ImageType" />
</object-type>
<object-type name="QDeclarativeItem">
<extra-includes>
<include file-name="pysideqmlregistertype.h" location="local"/>
</extra-includes>
<enum-type name="TransformOrigin" />
</object-type>
<value-type name="QDeclarativeListReference" />
<object-type name="QDeclarativeNetworkAccessManagerFactory" >
<modify-function signature="create(QObject *)">
<modify-argument index="return">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QDeclarativeParserStatus" />
<value-type name="QDeclarativeProperty">
<enum-type name="PropertyTypeCategory" />
<enum-type name="Type" />
</value-type>
<object-type name="QDeclarativePropertyMap">
<modify-documentation xpath="description/code[1]">&lt;code># create our data
ownerData = QDeclarativePropertyMap()
ownerData.insert(&quot;name&quot;, &quot;John Smith&quot;)
ownerData.insert(&quot;phone&quot;, &quot;555-5555&quot;)
# expose it to the UI layer
view = QDeclarativeView()
ctxt = view.rootContext()
ctxt.setContextProperty(&quot;owner&quot;, ownerData)
view.setSource(QUrl.fromLocalFile(&quot;main.qml&quot;))
view.show()&lt;/code></modify-documentation>
</object-type>
<object-type name="QDeclarativePropertyValueSource" />
<value-type name="QDeclarativeScriptString" />
<object-type name="QDeclarativeView">
<enum-type name="ResizeMode" />
<enum-type name="Status" />
</object-type>
</typesystem>

View file

@ -1,22 +1,55 @@
project(QtGui) project(QtGui)
if(ENABLE_X11) # Check QtGui support
macro(CHECK_QT_GUI_MACRO macro_display_name qt_macro module_sources global_sources)
if (DEFINED PYSIDE_${qt_macro})
if (PYSIDE_${qt_macro})
list(APPEND ${global_sources} ${${module_sources}})
endif()
else()
set(SRC_FILE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test${qt_macro}.cxx)
file(WRITE ${SRC_FILE}
"#include <QtGui>\n"
"int main() { \n"
"#ifdef ${qt_macro}\n"
"#error not supported.\n"
"#endif\n"
"}\n")
try_compile(Q_WORKS ${CMAKE_BINARY_DIR}
${SRC_FILE}
CMAKE_FLAGS
-DINCLUDE_DIRECTORIES:STRING=${QT_QTGUI_INCLUDE_DIR}\;${QT_INCLUDE_DIR}
-DLINK_LIBRARIES:PATH=${QT_QTGUI_LIBRARY_RELEASE}
OUTPUT_VARIABLE OUTPUT)
set("PYSIDE_${qt_macro}" ${Q_WORKS} CACHE STRING "Has this Qt module been found by pyside?")
if(Q_WORKS)
message(STATUS "Testing support to ${macro_display_name} -- enabled")
list(APPEND ${global_sources} ${${module_sources}})
else()
message(STATUS "Testing support to ${macro_display_name} -- disabled")
endif()
endif()
endmacro(CHECK_QT_GUI_MACRO)
if(Q_WS_X11)
set(MODULE_NAME gui_x11)
set(SPECIFIC_OS_FILES set(SPECIFIC_OS_FILES
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qx11info_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qx11info_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qx11embedcontainer_wrapper.cpp )
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qx11embedwidget_wrapper.cpp
)
if(Q_WS_MAEMO_5) elseif(Q_WS_MAC)
set(SPECIFIC_OS_FILES set(MODULE_NAME gui_mac)
${SPECIFIC_OS_FILES} set(SPECIFIC_OS_FILES
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractkineticscroller_wrapper.cpp )
) else()
endif() message(FATAL_ERROR "OS not supported")
endif() endif(Q_WS_X11)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set(QtGui_46_SRC "") set (QtGui_46_SRC )
else() else()
set(QtGui_46_SRC set(QtGui_46_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qmatrix2x2_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qmatrix2x2_wrapper.cpp
@ -29,7 +62,6 @@ else()
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qmatrix4x3_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qmatrix4x3_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qmatrix4x4_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qmatrix4x4_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgesture_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgesture_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgestureevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgesturerecognizer_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgesturerecognizer_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgraphicsanchor_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgraphicsanchor_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgraphicsanchorlayout_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgraphicsanchorlayout_wrapper.cpp
@ -48,8 +80,6 @@ else()
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpinchgesture_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpinchgesture_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qquaternion_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qquaternion_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qswipegesture_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qswipegesture_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtapandholdgesture_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtapgesture_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtilerules_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtilerules_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtouchevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtouchevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtouchevent_touchpoint_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qtouchevent_touchpoint_wrapper.cpp
@ -57,34 +87,7 @@ else()
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qvector3d_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qvector3d_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qvector4d_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qvector4d_wrapper.cpp
) )
endif () endif (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 7)
set(QtGui_47_SRC "")
else()
set(QtGui_47_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpainter_pixmapfragment_wrapper.cpp
)
endif()
set(QtGui_OPTIONAL_SRC )
set(QtGui_DROPPED_ENTRIES )
check_qt_class(QtGui QAbstractPageSetupDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QAbstractPrintDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QGtkStyle QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPageSetupDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPrintDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPrintEngine QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPrintPreviewDialog QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPrintPreviewWidget QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPrinter QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QPrinterInfo QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QSessionManager QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QSizeGrip QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QSystemTrayIcon QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
check_qt_class(QtGui QMacStyle QtGui_OPTIONAL_SRC QtGui_DROPPED_ENTRIES)
qt4_wrap_cpp(QPYTEXTOBJECT_MOC "${pyside_SOURCE_DIR}/qpytextobject.h")
set(QtGui_SRC set(QtGui_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractbutton_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractbutton_wrapper.cpp
@ -98,7 +101,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractspinbox_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_paintcontext_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_paintcontext_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_selection_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_selection_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstracttextdocumentlayout_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaccessibleevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactionevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactionevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactiongroup_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qactiongroup_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaction_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qaction_wrapper.cpp
@ -249,7 +251,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpen_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpictureio_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpictureio_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpicture_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpicture_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpixmapcache_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpixmapcache_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpixmapcache_key_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpixmap_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpixmap_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qplaintextdocumentlayout_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qplaintextdocumentlayout_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qplaintextedit_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qplaintextedit_wrapper.cpp
@ -259,7 +260,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpolygon_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprogressbar_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprogressbar_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprogressdialog_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprogressdialog_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qproxymodel_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qproxymodel_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpytextobject_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpushbutton_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpushbutton_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qradialgradient_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qradialgradient_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qradiobutton_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qradiobutton_wrapper.cpp
@ -269,6 +269,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qresizeevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qrubberband_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qrubberband_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qscrollarea_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qscrollarea_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qscrollbar_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qscrollbar_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qsessionmanager_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qshortcutevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qshortcutevent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qshortcut_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qshortcut_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qshowevent_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qshowevent_wrapper.cpp
@ -403,38 +404,80 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qwizard_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qworkspace_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qworkspace_wrapper.cpp
${SPECIFIC_OS_FILES} ${SPECIFIC_OS_FILES}
${QPYTEXTOBJECT_MOC}
${QtGui_46_SRC} ${QtGui_46_SRC}
${QtGui_47_SRC}
${QtGui_OPTIONAL_SRC}
) )
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/typesystem_gui.xml.in" #Check GtkStyle
set(QT_GTKSTYLE_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qgtkstyle_wrapper.cpp
)
CHECK_QT_GUI_MACRO("GtkStyle" QT_NO_STYLE_GTK QT_GTKSTYLE_SRCS QtGui_SRC)
#Check SystemTray
set(QT_SYSTEMTRAY_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qsystemtrayicon_wrapper.cpp
)
CHECK_QT_GUI_MACRO("SystemTray" QT_NO_SYSTEMTRAYICON QT_SYSTEMTRAY_SRCS QtGui_SRC)
#Check QT_PRINTDIALOG support
set(QT_PRINTDIALOG_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractpagesetupdialog_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qabstractprintdialog_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qpagesetupdialog_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprintdialog_wrapper.cpp
)
CHECK_QT_GUI_MACRO("PrintDialog Support" QT_NO_PRINTDIALOG QT_PRINTDIALOG_SRCS QtGui_SRC)
#Check QT_PRITPREVIEW support
set(QT_PRINTPREVIEW_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprintpreviewwidget_wrapper.cpp
)
CHECK_QT_GUI_MACRO("PrintPreview Support" QT_NO_PRINTPREVIEWWIDGET QT_PRINTPREVIEW_SRCS QtGui_SRC)
#Check QT_PRINTPREVIEWDIALOG support
set(QT_PRINTPREVIEWDIALOG_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprintpreviewdialog_wrapper.cpp
)
CHECK_QT_GUI_MACRO("PrintPreviewDialog Support" QT_NO_PRINTPREVIEWDIALOG QT_PRINTPREVIEWDIALOG_SRCS QtGui_SRC)
#Check QT_PRINTER
set(QT_PRINTER_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprinter_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprinterinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qprintengine_wrapper.cpp
)
CHECK_QT_GUI_MACRO("Printer Support" QT_NO_PRINTER QT_PRINTER_SRCS QtGui_SRC)
#Check QT_SIZEGRIP support
set(QT_SIZEGRIP_SRCS
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/qsizegrip_wrapper.cpp
)
CHECK_QT_GUI_MACRO("SizeGrip Support" QT_NO_SIZEGRIP QT_SIZEGRIP_SRCS QtGui_SRC)
configure_file(typesystem_gui.xml.in
"${CMAKE_CURRENT_BINARY_DIR}/typesystem_gui.xml" @ONLY) "${CMAKE_CURRENT_BINARY_DIR}/typesystem_gui.xml" @ONLY)
set(QtGui_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}") execute_generator(gui QtGui_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}")
set(QtGui_include_dirs ${CMAKE_CURRENT_SOURCE_DIR} include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/
${pyside_SOURCE_DIR} ${QT_INCLUDE_DIR}
${QT_INCLUDE_DIR} ${SHIBOKEN_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${libpyside_SOURCE_DIR}
${libpyside_SOURCE_DIR} ${PYTHON_INCLUDE_PATH}
${SHIBOKEN_PYTHON_INCLUDE_DIR} ${QtCore_BINARY_DIR}/PySide/QtCore/
${QtCore_BINARY_DIR}/PySide/QtCore/) )
set(QtGui_libraries pyside add_library(QtGui MODULE ${QtGui_SRC})
${SHIBOKEN_PYTHON_LIBRARIES} set_property(TARGET QtGui PROPERTY PREFIX "")
target_link_libraries(QtGui
pyside
${PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY} ${SHIBOKEN_LIBRARY}
${QT_QTGUI_LIBRARY}) ${QT_QTGUI_LIBRARY}
set(QtGui_deps "QtCore") )
add_dependencies(QtGui QtCore)
create_pyside_module(QtGui # install
QtGui_include_dirs install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtGui.so DESTINATION "${SITE_PACKAGE}/PySide")
QtGui_libraries install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtGui/pyside_qtgui_python.h
QtGui_deps DESTINATION include/PySide/QtGui/)
QtGui_typesystem_path
QtGui_SRC
""
${CMAKE_CURRENT_BINARY_DIR}/typesystem_gui.xml)
install(FILES ${pyside_SOURCE_DIR}/qpytextobject.h DESTINATION include/PySide/QtGui/)

View file

@ -3,48 +3,49 @@ extern PyObject* moduleQtGui;
static int QApplicationArgCount; static int QApplicationArgCount;
static char** QApplicationArgValues; static char** QApplicationArgValues;
static const char QAPP_MACRO[] = "qApp";
bool QApplicationConstructorStart(PyObject* argv) void DeleteQApplicationAtExit() {
if (QApplication::instance()) {
delete QApplication::instance();
for (int i = 0; i < QApplicationArgCount; ++i)
delete[] QApplicationArgValues[i];
}
}
int SbkQApplication_Init(PyObject* self, PyObject* args, PyObject*)
{ {
if (QApplication::instance()) { if (QApplication::instance()) {
PyErr_SetString(PyExc_RuntimeError, "A QApplication instance already exists."); PyErr_SetString(PyExc_RuntimeError, "A QApplication instance already exists.");
return false; return -1;
} }
return Shiboken::sequenceToArgcArgv(argv, &QApplicationArgCount, &QApplicationArgValues, "PySideApp"); int numArgs = PyTuple_GET_SIZE(args);
} if (numArgs != 1) {
PyErr_BadArgument();
return -1;
}
if (!PySequenceToArgcArgv(PyTuple_GET_ITEM(args, 0), &QApplicationArgCount, &QApplicationArgValues, "PySideApp")) {
PyErr_BadArgument();
return -1;
}
SbkBaseWrapper_setCptr(self, new QApplication(QApplicationArgCount, QApplicationArgValues));
SbkBaseWrapper_setValidCppObject(self, 1);
Shiboken::BindingManager::instance().registerWrapper(reinterpret_cast<SbkBaseWrapper*>(self));
void QApplicationConstructorEnd(PyObject* self)
{
// Verify if qApp is in main module // Verify if qApp is in main module
PyObject* globalsDict = PyEval_GetGlobals(); const char QAPP_MACRO[] = "qApp";
if (globalsDict) { PyObject* localsDict = PyEval_GetLocals();
PyObject* qAppObj = PyDict_GetItemString(globalsDict, QAPP_MACRO); if (localsDict) {
PyObject* qAppObj = PyDict_GetItemString(localsDict, QAPP_MACRO);
if (qAppObj) if (qAppObj)
PyDict_SetItemString(globalsDict, QAPP_MACRO, self); PyDict_SetItemString(localsDict, QAPP_MACRO, self);
} }
PyObject_SetAttrString(moduleQtGui, QAPP_MACRO, self); PyObject_SetAttrString(moduleQtGui, QAPP_MACRO, self);
PySide::registerCleanupFunction(&PySide::destroyQCoreApplication);
Py_INCREF(self); Py_INCREF(self);
} Py_AtExit(DeleteQApplicationAtExit);
static void QApplicationConstructor(PyObject* self, PyObject* argv, QApplicationWrapper** cptr) return 1;
{
if (QApplicationConstructorStart(argv)) {
*cptr = new QApplicationWrapper(QApplicationArgCount, QApplicationArgValues);
Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject*>(self));
QApplicationConstructorEnd(self);
}
}
template <typename T>
static void QApplicationConstructor(PyObject* self, PyObject* argv, T extraArg, QApplicationWrapper** cptr)
{
if (QApplicationConstructorStart(argv)) {
*cptr = new QApplicationWrapper(QApplicationArgCount, QApplicationArgValues, extraArg);
Shiboken::Object::releaseOwnership(reinterpret_cast<SbkObject*>(self));
QApplicationConstructorEnd(self);
}
} }

View file

@ -1,122 +0,0 @@
void addLayoutOwnership(QLayout* layout, QLayoutItem* item);
void removeLayoutOwnership(QLayout* layout, QWidget* widget);
inline QByteArray retrieveObjectName(PyObject* obj)
{
Shiboken::AutoDecRef objName(PyObject_Str(obj));
return Shiboken::String::toCString(objName);
}
inline void addLayoutOwnership(QLayout* layout, QWidget* widget)
{
//transfer ownership to parent widget
QWidget *lw = layout->parentWidget();
QWidget *pw = widget->parentWidget();
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget));
//Transfer parent to layout widget
if (pw && lw && pw != lw)
Shiboken::Object::setParent(0, pyChild);
if (!lw && !pw) {
//keep the reference while the layout is orphan
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](layout));
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
} else {
if (!lw)
lw = pw;
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](lw));
Shiboken::Object::setParent(pyParent, pyChild);
}
}
inline void addLayoutOwnership(QLayout* layout, QLayout* other)
{
//transfer all children widgets from other to layout parent widget
QWidget* parent = layout->parentWidget();
if (!parent) {
//keep the reference while the layout is orphan
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout));
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](other));
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild, true);
return;
}
for (int i=0, i_max=other->count(); i < i_max; i++) {
QLayoutItem* item = other->itemAt(i);
if (PyErr_Occurred() || !item)
return;
addLayoutOwnership(layout, item);
}
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout));
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](other));
Shiboken::Object::setParent(pyParent, pyChild);
}
inline void addLayoutOwnership(QLayout* layout, QLayoutItem* item)
{
if (!item)
return;
QWidget* w = item->widget();
if (w)
addLayoutOwnership(layout, w);
else {
QLayout* l = item->layout();
if (l)
addLayoutOwnership(layout, l);
}
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QLayout*](layout));
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayoutItem*](item));
Shiboken::Object::setParent(pyParent, pyChild);
}
static void removeWidgetFromLayout(QLayout* layout, QWidget* widget)
{
QWidget* parent = widget->parentWidget();
if (!parent) {
//remove reference on layout
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](layout));
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget));
Shiboken::Object::removeReference(reinterpret_cast<SbkObject*>(pyParent.object()), retrieveObjectName(pyParent).data(), pyChild);
} else {
//give the ownership to parent
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent));
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](widget));
Shiboken::Object::setParent(pyParent, pyChild);
}
}
inline void removeLayoutOwnership(QLayout* layout, QLayoutItem* item)
{
QWidget* w = item->widget();
if (w)
removeWidgetFromLayout(layout, w);
else {
QLayout* l = item->layout();
if (l)
removeLayoutOwnership(layout, l);
}
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayoutItem*](item));
Shiboken::Object::invalidate(pyChild);
Shiboken::Object::setParent(0, pyChild);
}
inline void removeLayoutOwnership(QLayout* layout, QWidget* widget)
{
if (!widget)
return;
for (int i=0, i_max=layout->count(); i < i_max; i++) {
QLayoutItem* item = layout->itemAt(i);
if (PyErr_Occurred() || !item)
return;
if (item->widget() == widget)
removeLayoutOwnership(layout, item);
}
}

View file

@ -1,21 +0,0 @@
inline PyObject* addActionWithPyObject(QMenu* self, const QIcon& icon, const QString& text, PyObject* callback, const QKeySequence& shortcut)
{
QAction* act = new QAction(text, self);
if (!icon.isNull())
act->setIcon(icon);
if (!shortcut.isEmpty())
act->setShortcut(shortcut);
self->addAction(act);
PyObject* pyAct = %CONVERTTOPYTHON[QAction*](act);
Shiboken::AutoDecRef result(PyObject_CallMethod(pyAct, "connect", "OsO", pyAct, SIGNAL(triggered()), callback));
if (result.isNull()) {
Py_DECREF(pyAct);
return 0;
}
return pyAct;
}

View file

@ -0,0 +1,23 @@
inline PyObject*
addActionWithPyObject(QMenu *self, const QIcon& icon, const QString& text, PyObject *callback, const QKeySequence &shortcut)
{
QAction *act = new QAction(text, self);
if (!icon.isNull())
act->setIcon(icon);
if (!shortcut.isEmpty())
act->setShortcut(shortcut);
self->addAction(act);
PyObject *pyAct = Shiboken::Converter<QAction*>::toPython(act);
PyObject* result = PyObject_CallMethod(pyAct, "connect", "OsO", pyAct, SIGNAL(triggered(bool)), callback);
if (result == 0) {
Py_DECREF(pyAct);
return 0;
}
return pyAct;
}

View file

@ -5,7 +5,7 @@ addActionWithPyObject(QMenuBar* self, const QString& text, PyObject* callback)
self->addAction(act); self->addAction(act);
PyObject* pyAct = %CONVERTTOPYTHON[QAction*](act); PyObject* pyAct = Shiboken::Converter<QAction*>::toPython(act);
PyObject* result = PyObject_CallMethod(pyAct, "connect", "OsO", pyAct, PyObject* result = PyObject_CallMethod(pyAct, "connect", "OsO", pyAct,
SIGNAL(triggered(bool)), callback); SIGNAL(triggered(bool)), callback);

View file

@ -1,10 +1,4 @@
// Init qApp macro to None. // Init qApp macro to None.
if (qApp) { Py_INCREF(Py_None);
PyObject* pyApp = %CONVERTTOPYTHON[QApplication*](qApp); PyModule_AddObject(module, "qApp", Py_None);
Py_INCREF(pyApp);
PyModule_AddObject(module, "qApp", pyApp);
} else {
Py_INCREF(Py_None);
PyModule_AddObject(module, "qApp", Py_None);
}
moduleQtGui = module; moduleQtGui = module;

View file

@ -1,65 +0,0 @@
static QString retrieveObjectName(PyObject *obj)
{
Shiboken::AutoDecRef objName(PyObject_Str(obj));
return QString(Shiboken::String::toCString(objName));
}
/**
* Tranfer objects ownership from layout to widget
**/
static inline void qwidgetReparentLayout(QWidget *parent, QLayout *layout)
{
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent));
for (int i=0; i < layout->count(); i++) {
QLayoutItem* item = layout->itemAt(i);
if (PyErr_Occurred() || !item)
return;
QWidget* w = item->widget();
if (w) {
QWidget* pw = w->parentWidget();
if (pw != parent) {
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QWidget*](w));
Shiboken::Object::setParent(pyParent, pyChild);
}
} else {
QLayout* l = item->layout();
if (l)
qwidgetReparentLayout(parent, l);
}
}
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QLayout*](layout));
Shiboken::Object::setParent(pyParent, pyChild);
//remove previous references
Shiboken::Object::keepReference(reinterpret_cast<SbkObject*>(pyChild.object()), qPrintable(retrieveObjectName(pyChild)), Py_None);
}
static inline void qwidgetSetLayout(QWidget *self, QLayout *layout)
{
if (!layout || self->layout())
return;
QObject* oldParent = layout->parent();
if (oldParent && oldParent != self) {
if (oldParent->isWidgetType()) {
// remove old parent policy
Shiboken::AutoDecRef pyLayout(%CONVERTTOPYTHON[QLayout*](layout));
Shiboken::Object::setParent(Py_None, pyLayout);
} else {
PyErr_Format(PyExc_RuntimeError, "QWidget::setLayout: Attempting to set QLayout \"%s\" on %s \"%s\", when the QLayout already has a parent",
qPrintable(layout->objectName()), self->metaObject()->className(), qPrintable(self->objectName()));
return;
}
}
if (oldParent != self) {
qwidgetReparentLayout(self, layout);
if (PyErr_Occurred())
return;
self->setLayout(layout);
}
}

View file

@ -0,0 +1,39 @@
/**
* Tranfer objects ownership from layout to widget
**/
static inline void
qwidgetReparentLayout(QWidget *parent, QLayout *layout)
{
Shiboken::AutoDecRef pyParent(Shiboken::Converter<QWidget*>::toPython(parent));
for (int i=0; i < layout->count(); i++)
{
QLayoutItem *item = layout->itemAt(i);
QWidget *w = item->widget();
if (w)
{
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QWidget*>::toPython(w));
Shiboken::setParent(pyParent, pyChild);
}
else
{
QLayout *l = item->layout();
if (l)
qwidgetReparentLayout(parent, l);
}
}
Shiboken::AutoDecRef pyChild(Shiboken::Converter<QLayout*>::toPython(layout));
Shiboken::setParent(pyParent, pyChild);
}
static inline void
qwidgetSetLayout(QWidget *self, QLayout *layout)
{
if (self->layout())
return;
qwidgetReparentLayout(self, layout);
self->setLayout(layout);
}

View file

@ -0,0 +1,44 @@
namespace Shiboken {
inline bool Converter< QPixmap >::isConvertible(PyObject* pyobj)
{
if (ValueTypeConverter<QPixmap>::isConvertible(pyobj))
return true;
SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QPixmap>());
bool isVariant = SbkQVariant_Check(pyobj);
if (isVariant) {
QVariant var(Converter<QVariant>::toCpp(pyobj));
return var.type() == QVariant::Pixmap;
} else if (SbkQSize_Check(pyobj) || SbkQString_Check(pyobj)) {
return true;
} else if (shiboType->ext_isconvertible) {
return shiboType->ext_isconvertible(pyobj);
}
return false;
}
inline QPixmap Converter< QPixmap >::toCpp(PyObject* pyobj)
{
SbkBaseWrapperType* shiboType = reinterpret_cast<SbkBaseWrapperType*>(SbkType<QPixmap>());
bool isVariant = SbkQVariant_Check(pyobj);
if (isVariant) {
QVariant var(Converter<QVariant>::toCpp(pyobj));
return var.value<QPixmap>();
} else if (SbkQSize_Check(pyobj)) {
return QPixmap(Shiboken::Converter<QSize& >::toCpp(pyobj));
} else if (SbkQString_Check(pyobj)) {
return QPixmap(Shiboken::Converter<QString& >::toCpp(pyobj));
} else if (shiboType->ext_isconvertible && shiboType->ext_tocpp && shiboType->ext_isconvertible(pyobj)) {
QPixmap* cptr = reinterpret_cast<QPixmap*>(shiboType->ext_tocpp(pyobj));
std::auto_ptr<QPixmap> cptr_auto_ptr(cptr);
return *cptr;
}
return *Converter<QPixmap*>::toCpp(pyobj);
}
inline PyObject* Converter<QPixmap>::toPython(const QPixmap& cppObj)
{
return ValueTypeConverter<QPixmap>::toPython(cppObj);
}
}

View file

@ -1,25 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtGui"> <typesystem package="PySide.QtGui">
<load-typesystem name="typesystem_core.xml" generate="no"/> <load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_gui_@AUTO_OS@.xml" generate="yes"/> <!-- TODO: Replace x11 for a proper variable which identifies the current platform -->
<load-typesystem name="typesystem_gui_common.xml" generate="yes"/> <load-typesystem name="typesystem_gui_x11.xml" generate="yes"/>
</typesystem> </typesystem>

File diff suppressed because it is too large Load diff

View file

@ -1,34 +1,12 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtGui"> <typesystem package="PySide.QtGui">
<rejection class="*" function-name="qt_mac_set_cursor"/> <rejection class="*" function-name="qt_mac_set_cursor"/>
<rejection class="*" function-name="macMenu"/> <rejection class="*" function-name="macMenu"/>
<primitive-type name="Qt::HANDLE" target-lang-api-name="PyObject"/> <!-- qApp macro register -->
<object-type name="QMacStyle" > <inject-code class="target" file="glue/qtgui_boost.cpp" position="end"/>
<enum-type name="FocusRectPolicy"/> <inject-code class="native" file="glue/qtgui_glue.cpp" position="beginning"/>
<enum-type name="WidgetSizePolicy"/>
</object-type>
<suppress-warning text="enum 'QPixmap::ShareMode' does not have a type entry or is not an enum" /> <load-typesystem name="typesystem_gui.xml" generate="yes"/>
<suppress-warning text="enum 'QSysInfo::Endian' is specified in typesystem, but not declared" />
<suppress-warning text="type 'QGtkStyle' is specified in typesystem, but not defined. This could potentially lead to compilation errors." />
</typesystem> </typesystem>

View file

@ -1,30 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtGui">
<object-type name="QAbstractKineticScroller">
<enum-type name="Mode"/>
<enum-type name="OvershootPolicy"/>
<enum-type name="State"/>
</object-type>
<load-typesystem name="typesystem_gui_x11.xml" generate="yes"/>
</typesystem>

View file

@ -1,52 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtGui">
<!-- These classes are not present in Qt Simulator build, even though
QT_NO_PRINTER is *not* set -->
<rejection class="QAbstractPageSetupDialog"/>
<rejection class="QAbstractPrintDialog"/>
<rejection class="QPageSetupDialog"/>
<rejection class="QPrintDialog"/>
<rejection class="QPrintPreviewDialog"/>
<rejection class="QPrintPreviewWidget"/>
<rejection class="QPrintEngine"/>
<rejection class="QPrinterInfo"/>
<rejection class="QPrinter"/>
<object-type name="QPlainTextEdit">
<modify-function signature="print(QPrinter*)const" remove="all"/>
</object-type>
<object-type name="QTextDocument">
<modify-function signature="print(QPrinter*)const" remove="all"/>
</object-type>
<object-type name="QTextEdit">
<modify-function signature="print(QPrinter*)const" remove="all"/>
</object-type>
<!-- Qt::HANDLE is typedef to "void *", which gives compilation errors on
conversion templates -->
<value-type name="QCursor">
<modify-function signature="QCursor(Qt::HANDLE)" remove="all"/>
</value-type>
<value-type name="QFont">
<modify-function signature="handle()const" remove="all"/>
</value-type>
</typesystem>

View file

@ -1,49 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtGui">
<primitive-type name="WId" target-lang-api-name="PyObject">
<conversion-rule>
<native-to-target>
#ifdef IS_PY3K
return PyCapsule_New(%in, 0, 0);
#else
return PyCObject_FromVoidPtr(%in, 0);
#endif
</native-to-target>
<target-to-native>
<add-conversion type="PyNone">
%out = 0;
</add-conversion>
<add-conversion check="checkPyCapsuleOrPyCObject(%in)" type="PyObject">
#ifdef IS_PY3K
%out = (%OUTTYPE)PyCapsule_GetPointer(%in, 0);
#else
%out = (%OUTTYPE)PyCObject_AsVoidPtr(%in);
#endif
</add-conversion>
</target-to-native>
</conversion-rule>
</primitive-type>
<inject-code class="native" position="beginning">
<insert-template name="checkPyCapsuleOrPyCObject_func"/>
</inject-code>
<enum-type name="QPixmap::HBitmapFormat" />
</typesystem>

View file

@ -1,50 +1,12 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtGui"> <typesystem package="PySide.QtGui">
<rejection class="" function-name="qt_x11_getX11InfoForWindow"/> <rejection class="" function-name="qt_x11_getX11InfoForWindow"/>
<rejection class="QX11Info" field-name="x11data"/> <rejection class="QX11Info" field-name="x11data"/>
<value-type name="QX11Info"> <value-type name="QX11Info">
<add-function signature="display()" return-type="unsigned long" static="yes"> <modify-function signature="visual()const" remove="all"/>
<inject-code> <modify-function signature="appVisual(int)" remove="all"/>
%PYARG_0 = PyLong_FromVoidPtr(%TYPE::%FUNCTION_NAME());
</inject-code>
</add-function>
<modify-function signature="visual()const">
<inject-code>
%PYARG_0 = PyLong_FromVoidPtr(%CPPSELF.%FUNCTION_NAME());
</inject-code>
</modify-function>
<modify-function signature="appVisual(int)">
<inject-code>
%PYARG_0 = PyLong_FromVoidPtr(%CPPSELF.%FUNCTION_NAME());
</inject-code>
</modify-function>
</value-type> </value-type>
<object-type name="QX11EmbedContainer">
<enum-type name="Error"/>
</object-type>
<object-type name="QX11EmbedWidget">
<enum-type name="Error"/>
</object-type>
<enum-type name="QPixmap::ShareMode"/> <load-typesystem name="typesystem_gui_common.xml" generate="yes"/>
</typesystem> </typesystem>

View file

@ -1,42 +0,0 @@
project(QtHelp)
set(QtHelp_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpcontentitem_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpcontentmodel_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpcontentwidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpenginecore_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpengine_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpindexmodel_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpindexwidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchengine_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchquerywidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchquery_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qhelpsearchresultwidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp/qthelp_module_wrapper.cpp
)
set(QtHelp_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtHelp_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
set(QtHelp_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTHELP_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${QtGui_BINARY_DIR}/PySide/QtGui/
${QtCore_BINARY_DIR}/PySide/QtCore/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtHelp)
set(QtHelp_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
${QT_QTHELP_LIBRARY})
set(QtHelp_deps QtGui)
create_pyside_module(QtHelp
QtHelp_include_dirs
QtHelp_libraries
QtHelp_deps
QtHelp_typesystem_path
QtHelp_SRC
"")

View file

@ -1,44 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtHelp">
<load-typesystem name="typesystem_gui.xml" generate="no" />
<value-type name="QHelpContentItem">
<modify-function signature="parent() const">
<modify-argument index="return">
<define-ownership owner="default"/>
</modify-argument>
</modify-function>
</value-type>
<object-type name="QHelpContentModel" polymorphic-id-expression="qobject_cast&lt;QHelpContentModel*&gt;(%1)"/>
<object-type name="QHelpContentWidget"/>
<object-type name="QHelpEngine" />
<object-type name="QHelpEngineCore"/>
<object-type name="QHelpIndexModel"/>
<object-type name="QHelpIndexWidget"/>
<object-type name="QHelpSearchEngine"/>
<value-type name="QHelpSearchQuery">
<enum-type name="FieldName"/>
</value-type>
<object-type name="QHelpSearchQueryWidget"/>
<object-type name="QHelpSearchResultWidget"/>
</typesystem>

View file

@ -1,50 +0,0 @@
project(QtMaemo5)
set(QtMaemo5_SRC
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5abstractpickselector_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5datepickselector_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5editbar_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5informationbox_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5listpickselector_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5timepickselector_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qmaemo5valuebutton_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5/qtmaemo5_module_wrapper.cpp
)
set(QtMaemo5_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtMaemo5_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
# QT_QTMAEMO5_* variables are not defined by CMake
if(NOT QT_QTMAEMO5_INCLUDE_DIR)
FIND_PATH(QT_QTMAEMO5_INCLUDE_DIR QtMaemo5
PATHS ${QT_HEADERS_DIR}/QtMaemo5 NO_DEFAULT_PATH)
endif()
if(NOT QT_QTMAEMO5_LIBRARY)
FIND_LIBRARY(QT_QTMAEMO5_LIBRARY QtMaemo5
PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
endif()
set(QtMaemo5_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTMAEMO5_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/${BINDING_NAME}/QtCore/
${QtGui_BINARY_DIR}/${BINDING_NAME}/QtGui/
${CMAKE_CURRENT_BINARY_DIR}/${BINDING_NAME}/QtMaemo5)
set(QtMaemo5_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
${QT_QTMAEMO5_LIBRARY})
set(QtMaemo5_deps QtGui)
create_pyside_module(QtMaemo5
QtMaemo5_include_dirs
QtMaemo5_libraries
QtMaemo5_deps
QtMaemo5_typesystem_path
QtMaemo5_SRC
"")

View file

@ -1,89 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtMaemo5">
<load-typesystem name="typesystem_gui.xml" generate="no"/>
<object-type name="QMaemo5AbstractPickSelector">
<modify-function signature="widget(QWidget*)">
<modify-argument index="return">
<parent index="1" action="add"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QMaemo5DatePickSelector"/>
<object-type name="QMaemo5EditBar">
<modify-function signature="addButton(QAbstractButton*)">
<modify-argument index="1">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="removeButton(QAbstractButton*)">
<modify-argument index="1">
<parent index="this" action="remove"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QMaemo5InformationBox">
<modify-function signature="setWidget(QWidget*)">
<modify-argument index="1">
<reference-count action="set"/>
</modify-argument>
</modify-function>
<modify-function signature="paintEvent(QPaintEvent*)">
<modify-argument index="1" invalidate-after-use="yes"/>
</modify-function>
<modify-function signature="showEvent(QShowEvent*)">
<modify-argument index="1" invalidate-after-use="yes"/>
</modify-function>
</object-type>
<object-type name="QMaemo5ListPickSelector">
<modify-function signature="setModel(QAbstractItemModel*)">
<modify-argument index="1">
<reference-count action="set"/>
</modify-argument>
</modify-function>
<modify-function signature="widget(QWidget*)">
<modify-argument index="return">
<parent index="1" action="add"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QMaemo5TimePickSelector"/>
<object-type name="QMaemo5ValueButton">
<enum-type name="ValueLayout"/>
<modify-function signature="setPickSelector(QMaemo5AbstractPickSelector*)">
<modify-argument index="1">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="paintEvent(QPaintEvent*)">
<modify-argument index="1" invalidate-after-use="yes"/>
</modify-function>
</object-type>
</typesystem>

View file

@ -1,48 +0,0 @@
project(QtMultimedia)
set(QtMultimedia_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudio_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractvideobuffer_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudioenginefactoryinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideosurfaceformat_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractvideosurface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudiodeviceinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractaudiodeviceinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractaudiooutput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qabstractaudioinput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudioengineplugin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudioformat_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudioinput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qaudiooutput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qvideoframe_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/qtmultimedia_module_wrapper.cpp
)
set(QtMultimedia_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
set(QtMultimedia_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtMultimedia/
${QT_INCLUDE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTMULTIMEDIA_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtGui_BINARY_DIR}/PySide/QtGui/)
set(QtMultimedia_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
${QT_QTMULTIMEDIA_LIBRARY}
${QT_QTGUI_LIBRARY})
set(QtMultimedia_deps QtGui)
create_pyside_module(QtMultimedia
QtMultimedia_include_dirs
QtMultimedia_libraries
QtMultimedia_deps
QtMultimedia_typesystem_path
QtMultimedia_SRC
"")

View file

@ -1,151 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtMultimedia">
<load-typesystem name="typesystem_gui.xml" generate="no" />
<rejection class="" function-name="qobject_cast&lt;QAudioEngineFactoryInterface*&gt;"/>
<rejection class="" function-name="qobject_interface_iid&lt;QAudioEngineFactoryInterface*&gt;"/>
<namespace-type name="QAudio">
<enum-type name="Error"/>
<enum-type name="Mode"/>
<enum-type name="State"/>
</namespace-type>
<value-type name="QVideoSurfaceFormat">
<enum-type name="Direction"/>
<enum-type name="YCbCrColorSpace"/>
</value-type>
<object-type name="QAbstractVideoBuffer">
<enum-type name="HandleType"/>
<enum-type name="MapMode"/>
<modify-function signature="map(QAbstractVideoBuffer::MapMode, int*, int*)" remove="all"/>
<!-- TODO: discuss a way to have this working with the virtual method.
<modify-function signature="map(QAbstractVideoBuffer::MapMode, int*, int*)">
<modify-argument index="0">
<replace-type modified-type="PyObject"/>
</modify-argument>
<modify-argument index="2">
<remove-argument/>
</modify-argument>
<modify-argument index="3">
<remove-argument/>
</modify-argument>
<inject-code class="target" position="beginning">
<insert-template name="fix_arg,int*,int*"/>
</inject-code>
</modify-function>
-->
</object-type>
<object-type name="QAbstractVideoSurface">
<enum-type name="Error"/>
</object-type>
<object-type name="QVideoFrame">
<enum-type name="FieldType"/>
<enum-type name="PixelFormat"/>
</object-type>
<value-type name="QAudioFormat">
<enum-type name="Endian"/>
<enum-type name="SampleType"/>
</value-type>
<value-type name="QAudioDeviceInfo"/>
<object-type name="QAbstractAudioDeviceInfo"/>
<object-type name="QAbstractAudioOutput">
<modify-function signature="start(QIODevice *)">
<modify-argument index="return">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QAbstractAudioInput">
<modify-function signature="start(QIODevice *)">
<modify-argument index="return">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QAudioEnginePlugin">
<modify-function signature="createInput(const QByteArray&amp;, const QAudioFormat&amp;)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="createOutput(const QByteArray&amp;, const QAudioFormat&amp;)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="createDeviceInfo(const QByteArray&amp;, QAudio::Mode)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QAudioEngineFactoryInterface">
<modify-function signature="createInput(const QByteArray&amp;, const QAudioFormat&amp;)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="createOutput(const QByteArray&amp;, const QAudioFormat&amp;)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="createDeviceInfo(const QByteArray&amp;, QAudio::Mode)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QAudioInput">
<modify-function signature="start()">
<modify-argument index="return">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
<modify-function signature="start(QIODevice*)">
<modify-argument index="1">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="QAudioOutput">
<modify-function signature="start()">
<modify-argument index="return">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
<modify-function signature="start(QIODevice*)">
<modify-argument index="1">
<define-ownership class="target" owner="c++"/>
</modify-argument>
</modify-function>
</object-type>
</typesystem>

View file

@ -1,83 +1,119 @@
project(QtNetwork) project(QtNetwork)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} GREATER 6) # Check QtNetwork support
set (QtNetwork_47_SRC macro(CHECK_QT_NETWORK_MACRO macro_display_name qt_macro module_sources global_sources)
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkconfiguration_wrapper.cpp if (DEFINED PYSIDE_${qt_macro})
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkconfigurationmanager_wrapper.cpp if (PYSIDE_${qt_macro})
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworksession_wrapper.cpp list(APPEND ${global_sources} ${${module_sources}})
) endif()
else() else()
set(QtNetwork_47_SRC ) set(SRC_FILE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test${qt_macro}.cxx)
endif () file(WRITE ${SRC_FILE}
"#include <QtNetwork>\n"
"int main() { \n"
"#ifdef ${qt_macro}\n"
"#error not supported.\n"
"#endif\n"
"}\n")
set(QtNetwork_OPTIONAL_SRC ) try_compile(Q_WORKS ${CMAKE_BINARY_DIR}
set(QtNetwork_DROPPED_ENTRIES ) ${SRC_FILE}
check_qt_class(QtNetwork QSslCertificate QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES) CMAKE_FLAGS
check_qt_class(QtNetwork QSslCipher QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES) -DINCLUDE_DIRECTORIES:STRING=${QT_QTNETWORK_INCLUDE_DIR}\;${QT_INCLUDE_DIR}
check_qt_class(QtNetwork QSslConfiguration QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES) -DLINK_LIBRARIES:PATH=${QT_QTNETWORK_LIBRARY_RELEASE}
check_qt_class(QtNetwork QSslError QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES) OUTPUT_VARIABLE OUTPUT)
check_qt_class(QtNetwork QSslKey QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES)
check_qt_class(QtNetwork QSslSocket QtNetwork_OPTIONAL_SRC QtNetwork_DROPPED_ENTRIES) set("PYSIDE_${qt_macro}" ${Q_WORKS} CACHE STRING "Has this Qt module been found by pyside?")
if(Q_WORKS)
message(STATUS "Testing support to ${macro_display_name} -- enabled")
list(APPEND ${global_sources} ${${module_sources}})
else()
message(STATUS "Testing support to ${macro_display_name} -- disabled")
endif()
endif()
endmacro(CHECK_QT_NETWORK_MACRO)
if(Q_WS_X11)
set(MODULE_NAME network_x11)
set(SPECIFIC_OS_FILES
)
elseif(Q_WS_MAC)
set(MODULE_NAME network_mac)
set(SPECIFIC_OS_FILES
)
else()
message(FATAL_ERROR "OS not supported")
endif(Q_WS_X11)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set (QtNetwork_46_SRC )
else()
set(QtNetwork_46_SRC
)
endif (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set(QtNetwork_SRC set(QtNetwork_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qabstractnetworkcache_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qabstractsocket_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qabstractsocket_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qauthenticator_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qauthenticator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qftp_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qftp_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhostaddress_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhostaddress_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhostinfo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhostinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttp_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttpheader_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttpheader_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttprequestheader_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttprequestheader_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttpresponseheader_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttpresponseheader_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qhttp_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qipv6address_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qipv6address_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qlocalserver_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qlocalserver_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qlocalsocket_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qlocalsocket_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkaccessmanager_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkaccessmanager_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkaddressentry_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkaddressentry_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkcachemetadata_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkcookie_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkcookiejar_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkcookiejar_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkdiskcache_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkcookie_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkinterface_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkproxy_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkproxy_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkproxyfactory_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkproxyquery_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkreply_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkreply_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkrequest_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qnetworkrequest_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qsslcipher_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qsslconfiguration_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qsslerror_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qsslkey_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qsslsocket_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qssl_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qssl_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qtcpserver_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qtcpserver_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qtcpsocket_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qtcpsocket_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qtnetwork_module_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qtnetwork_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qudpsocket_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qudpsocket_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qurlinfo_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/qurlinfo_wrapper.cpp
${SPECIFIC_OS_FILES}
${QtNetwork_47_SRC} ${QtNetwork_46_SRC}
${QtNetwork_OPTIONAL_SRC}
) )
set(QtNetwork_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}") execute_generator(network QtNetwork_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}")
set(QtNetwork_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/
${QT_INCLUDE_DIR}
${QT_QTNETWORK_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/)
set(QtNetwork_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
${QT_QTNETWORK_LIBRARY})
set(QtNetwork_deps QtCore) include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/
${QT_INCLUDE_DIR}
${QT_QTNETWORK_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${PYTHON_INCLUDE_PATH}
${QtCore_BINARY_DIR}/PySide/QtCore/
)
create_pyside_module(QtNetwork add_library(QtNetwork MODULE ${QtNetwork_SRC})
QtNetwork_include_dirs set_property(TARGET QtNetwork PROPERTY PREFIX "")
QtNetwork_libraries target_link_libraries(QtNetwork
QtNetwork_deps pyside
QtNetwork_typesystem_path ${PYTHON_LIBRARIES}
QtNetwork_SRC ${SHIBOKEN_LIBRARY}
"" ${QT_QTNETWORK_LIBRARY}
"" )
QtNetwork_DROPPED_ENTRIES) add_dependencies(QtNetwork QtCore)
# install
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtNetwork.so
DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtNetwork/pyside_qtnetwork_python.h
DESTINATION include/PySide/QtNetwork/)

View file

@ -0,0 +1,6 @@
char data[%ARGUMENT_NAMES];
QHostAddress ha;
quint16 port;
%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(data, %ARGUMENT_NAMES, &ha, &port);
%PYARG_0 = Shiboken::makeTuple(QByteArray(data, retval), ha, port);

View file

@ -1,45 +1,49 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtNetwork"> <typesystem package="PySide.QtNetwork">
<load-typesystem name="typesystem_core.xml" generate="no"/> <load-typesystem name="typesystem_core.xml" generate="no" />
<namespace-type name="QSsl"> <namespace-type name="QSsl">
<enum-type name="AlternateNameEntryType"/>
<enum-type name="EncodingFormat"/>
<enum-type name="KeyAlgorithm"/>
<enum-type name="KeyType"/>
<enum-type name="SslProtocol"/>
<extra-includes> <extra-includes>
<include file-name="qssl.h" location="global"/> <include file-name="qssl.h" location="global"/>
</extra-includes> </extra-includes>
</namespace-type> </namespace-type>
<rejection class="QIPv6Address" field-name="c"/> <rejection class="QIPv6Address" field-name="c"/>
<rejection class="QSslCertificate"/>
<enum-type name="QAbstractSocket::NetworkLayerProtocol"/>
<enum-type name="QAbstractSocket::SocketError"/>
<enum-type name="QAbstractSocket::SocketState"/>
<enum-type name="QAbstractSocket::SocketType"/>
<enum-type name="QFtp::Command"/>
<enum-type name="QFtp::Error"/>
<enum-type name="QFtp::State"/>
<enum-type name="QFtp::TransferMode"/>
<enum-type name="QFtp::TransferType"/>
<enum-type name="QHostAddress::SpecialAddress"/>
<enum-type name="QHttp::Error"/>
<enum-type name="QHttp::State"/>
<enum-type name="QHttp::ConnectionMode"/>
<enum-type name="QNetworkInterface::InterfaceFlag" flags="QNetworkInterface::InterfaceFlags"/>
<enum-type name="QNetworkProxy::Capability"/>
<enum-type name="QNetworkProxy::ProxyType"/>
<enum-type name="QUdpSocket::BindFlag" flags="QUdpSocket::BindMode"/>
<enum-type name="QUrlInfo::PermissionSpec"/>
<enum-type name="QHostInfo::HostInfoError"/>
<enum-type name="QSsl::KeyType"/>
<enum-type name="QSsl::EncodingFormat"/>
<enum-type name="QSsl::KeyAlgorithm"/>
<enum-type name="QSsl::AlternateNameEntryType"/>
<enum-type name="QSsl::SslProtocol"/>
<enum-type name="QLocalSocket::LocalSocketError"/>
<enum-type name="QLocalSocket::LocalSocketState"/>
<enum-type name="QNetworkAccessManager::Operation"/>
<enum-type name="QNetworkCookie::RawForm"/>
<enum-type name="QNetworkReply::NetworkError"/>
<enum-type name="QNetworkRequest::Attribute" extensible="yes"/>
<enum-type name="QNetworkRequest::CacheLoadControl"/>
<enum-type name="QNetworkRequest::KnownHeaders"/>
<object-type name="QAbstractSocket"> <object-type name="QAbstractSocket">
<enum-type name="NetworkLayerProtocol"/>
<enum-type name="SocketError"/>
<enum-type name="SocketOption" since="4.6"/>
<enum-type name="SocketState"/>
<enum-type name="SocketType"/>
<modify-function signature="connectToHost(const QString&amp;, quint16, QFlags&lt;QIODevice::OpenModeFlag>)" allow-thread="yes" /> <modify-function signature="connectToHost(const QString&amp;, quint16, QFlags&lt;QIODevice::OpenModeFlag>)" allow-thread="yes" />
<modify-function signature="connectToHost(const QHostAddress&amp;, quint16, QFlags&lt;QIODevice::OpenModeFlag>)" allow-thread="yes" /> <modify-function signature="connectToHost(const QHostAddress&amp;, quint16, QFlags&lt;QIODevice::OpenModeFlag>)" allow-thread="yes" />
<modify-function signature="disconnectFromHost()" allow-thread="yes" /> <modify-function signature="disconnectFromHost()" allow-thread="yes" />
@ -48,11 +52,6 @@
</object-type> </object-type>
<object-type name="QFtp"> <object-type name="QFtp">
<enum-type name="Command"/>
<enum-type name="Error"/>
<enum-type name="State"/>
<enum-type name="TransferMode"/>
<enum-type name="TransferType"/>
<modify-function signature="connectToHost(const QString&amp;, quint16)" allow-thread="yes" /> <modify-function signature="connectToHost(const QString&amp;, quint16)" allow-thread="yes" />
<modify-function signature="login(const QString&amp;, const QString&amp;)" allow-thread="yes" /> <modify-function signature="login(const QString&amp;, const QString&amp;)" allow-thread="yes" />
<modify-function signature="close()" allow-thread="yes" /> <modify-function signature="close()" allow-thread="yes" />
@ -81,9 +80,7 @@
</object-type> </object-type>
<object-type name="QHttp"> <object-type name="QHttp">
<enum-type name="ConnectionMode"/> <modify-function signature="closeConnection()" remove="all"/>
<enum-type name="Error"/>
<enum-type name="State"/>
<modify-function signature="readAll()" allow-thread="yes"/> <modify-function signature="readAll()" allow-thread="yes"/>
<modify-function signature="read(char*, qint64)" allow-thread="yes"> <modify-function signature="read(char*, qint64)" allow-thread="yes">
<modify-argument index="return"> <modify-argument index="return">
@ -96,9 +93,6 @@
<insert-template name="read_wrapper"/> <insert-template name="read_wrapper"/>
</inject-code> </inject-code>
</modify-function> </modify-function>
<!-- ### Obsolete methods -->
<modify-function signature="closeConnection()" remove="all"/>
<!-- ### -->
</object-type> </object-type>
<object-type name="QTcpServer"> <object-type name="QTcpServer">
<modify-function signature="waitForNewConnection(int,bool*)" allow-thread="yes"> <modify-function signature="waitForNewConnection(int,bool*)" allow-thread="yes">
@ -111,7 +105,7 @@
<remove-argument/> <remove-argument/>
</modify-argument> </modify-argument>
<modify-argument index="return"> <modify-argument index="return">
<replace-type modified-type="(retval, timeOut)"/> <replace-type modified-type="PyTuple*"/>
</modify-argument> </modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="fix_args,bool*"/> <insert-template name="fix_args,bool*"/>
@ -120,7 +114,6 @@
</object-type> </object-type>
<object-type name="QTcpSocket"/> <object-type name="QTcpSocket"/>
<object-type name="QUdpSocket"> <object-type name="QUdpSocket">
<enum-type name="BindFlag" flags="BindMode"/>
<modify-function signature="readDatagram(char*, qint64, QHostAddress*, quint16*)" allow-thread="yes"> <modify-function signature="readDatagram(char*, qint64, QHostAddress*, quint16*)" allow-thread="yes">
<modify-argument index="1"> <modify-argument index="1">
<remove-argument/> <remove-argument/>
@ -134,29 +127,19 @@
<remove-argument/> <remove-argument/>
</modify-argument> </modify-argument>
<modify-argument index="return"> <modify-argument index="return">
<replace-type modified-type="(data, address, port)"/> <replace-type modified-type="PyTuple*"/>
</modify-argument> </modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning" file="glue/qudpsocket_read_datagram_glue.cpp"/>
Shiboken::AutoArrayPointer&lt;char&gt; data(%ARGUMENT_NAMES);
QHostAddress ha;
quint16 port;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval = %CPPSELF.%FUNCTION_NAME(data, %ARGUMENT_NAMES, &amp;ha, &amp;port);
%END_ALLOW_THREADS
QByteArray ba(data, retval);
%PYARG_0 = PyTuple_New(3);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QByteArray](ba));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QHostAddress](ha));
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[quint16](port));
</inject-code>
</modify-function> </modify-function>
<modify-function signature="writeDatagram(const char*,qint64,QHostAddress,quint16)" remove="all"/>
<modify-function signature="writeDatagram(const QByteArray&amp;, const QHostAddress&amp;, quint16)" allow-thread="yes"/> <modify-function signature="writeDatagram(const QByteArray&amp;, const QHostAddress&amp;, quint16)" allow-thread="yes"/>
<!-- ### writeDatagram(QByteArray, ...) does the trick -->
<modify-function signature="writeDatagram(const char*,qint64,const QHostAddress&amp;,quint16)" remove="all"/>
<!-- ### -->
</object-type> </object-type>
<object-type name="QHttpHeader" /> <object-type name="QHttpHeader">
<modify-function signature="operator=(QHttpHeader)" remove="all"/>
<modify-function signature="QHttpHeader(QHttpHeader)" remove="all"/>
</object-type>
<object-type name="QLocalServer"> <object-type name="QLocalServer">
<modify-function signature="waitForNewConnection(int,bool*)" allow-thread="yes"> <modify-function signature="waitForNewConnection(int,bool*)" allow-thread="yes">
<!-- FIXME --> <!-- FIXME -->
@ -171,30 +154,13 @@
<insert-template name="fix_args,bool*"/> <insert-template name="fix_args,bool*"/>
</inject-code> </inject-code>
<modify-argument index="return"> <modify-argument index="return">
<replace-type modified-type="(retval, timeOut)"/> <replace-type modified-type="PyTuple*"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>
</object-type> </object-type>
<object-type name="QLocalSocket"> <object-type name="QLocalSocket"/>
<enum-type name="LocalSocketError"/>
<enum-type name="LocalSocketState"/>
</object-type>
<object-type name="QNetworkAccessManager"> <object-type name="QNetworkAccessManager">
<enum-type name="NetworkAccessibility" since="4.7"/>
<enum-type name="Operation"/>
<modify-function signature="createRequest(QNetworkAccessManager::Operation, const QNetworkRequest&amp;, QIODevice *)">
<modify-argument index="3" invalidate-after-use="yes"/>
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="get(const QNetworkRequest&amp;)" allow-thread="yes"/>
<modify-function signature="post(const QNetworkRequest &amp;, QIODevice *)" allow-thread="yes"/>
<modify-function signature="post(const QNetworkRequest &amp;, const QByteArray &amp;)" allow-thread="yes"/>
<modify-function signature="put(const QNetworkRequest &amp;, QIODevice *)" allow-thread="yes"/>
<modify-function signature="put(const QNetworkRequest &amp;, const QByteArray &amp;)" allow-thread="yes"/>
<modify-function signature="sendCustomRequest(const QNetworkRequest &amp;, const QByteArray &amp;, QIODevice *)" allow-thread="yes" since="4.7" />
<modify-function signature="setCookieJar(QNetworkCookieJar*)"> <modify-function signature="setCookieJar(QNetworkCookieJar*)">
<modify-argument index="1"> <modify-argument index="1">
<define-ownership class="target" owner="c++"/> <define-ownership class="target" owner="c++"/>
@ -202,143 +168,104 @@
</modify-function> </modify-function>
</object-type> </object-type>
<object-type name="QNetworkCookieJar"/> <object-type name="QNetworkCookieJar"/>
<object-type name="QNetworkReply"> <object-type name="QNetworkReply"/>
<enum-type name="NetworkError"/>
</object-type>
<value-type name="QHostAddress" hash-function="qHash"> <value-type name="QHostAddress" hash-function="qHash">
<enum-type name="SpecialAddress"/>
<!-- ### QHostAddress(QIPv6Address) does this -->
<modify-function signature="QHostAddress(quint8*)" remove="all" /> <modify-function signature="QHostAddress(quint8*)" remove="all" />
<!-- ### --> <modify-function signature="operator=(QString)" remove="all"/>
<modify-function signature="setAddress(quint8*)" remove="all" /> <modify-function signature="operator=(QHostAddress)" remove="all"/>
<modify-function signature="writeDatagram(const char*,qint64,const QHostAddress&amp;,quint16)" remove="all" />
<!--
<inject-code class="target" position="end">
python::implicitly_convertible&lt;QHostAddress::SpecialAddress,QHostAddress&gt;();
</inject-code>
-->
</value-type> </value-type>
<value-type name="QHostInfo"> <value-type name="QHostInfo">
<enum-type name="HostInfoError"/> <modify-function signature="operator=(QHostInfo)" remove="all"/>
<modify-function signature="lookupHost(QString,QObject*,const char*)" access="private"/> <modify-function signature="lookupHost(QString,QObject*,const char*)" access="private"/>
</value-type> </value-type>
<value-type name="QHttpRequestHeader" /> <value-type name="QHttpRequestHeader">
<modify-function signature="operator=(QHttpRequestHeader)" remove="all"/>
</value-type>
<value-type name="QHttpResponseHeader" /> <value-type name="QHttpResponseHeader">
<modify-function signature="operator=(QHttpResponseHeader)" remove="all"/>
</value-type>
<value-type name="QNetworkAddressEntry" /> <value-type name="QNetworkAddressEntry">
<modify-function signature="operator=(QNetworkAddressEntry)" remove="all"/>
</value-type>
<value-type name="QNetworkInterface"> <value-type name="QNetworkInterface">
<enum-type name="InterfaceFlag" flags="InterfaceFlags"/> <modify-function signature="operator=(QNetworkInterface)" remove="all"/>
</value-type> </value-type>
<value-type name="QNetworkProxy"> <value-type name="QNetworkProxy">
<enum-type name="Capability" flags="Capabilities" /> <modify-function signature="operator=(QNetworkProxy)" remove="all"/>
<enum-type name="ProxyType"/>
</value-type>
<object-type name="QNetworkProxyFactory" />
<value-type name="QNetworkProxyQuery">
<enum-type name="QueryType" />
</value-type> </value-type>
<value-type name="QUrlInfo"> <value-type name="QUrlInfo">
<enum-type name="PermissionSpec"/> <modify-function signature="operator=(QUrlInfo)" remove="all"/>
</value-type> </value-type>
<value-type name="QIPv6Address"> <value-type name="QIPv6Address">
<add-function signature="__len__"> <modify-function signature="operator[](int)const">
<inject-code class="target" position="beginning"> <remove/>
return 16; </modify-function>
</inject-code> <modify-function signature="operator[](int)">
</add-function> <remove/>
<add-function signature="__getitem__"> </modify-function>
<inject-code class="target" position="beginning">
if (_i >= 16) {
PyErr_SetString(PyExc_IndexError, "index out of bounds");
return 0;
}
if (_i &lt; 0)
_i = 16 - qAbs(_i);
uint item = %CPPSELF.c[_i];
return %CONVERTTOPYTHON[uint](item);
</inject-code>
</add-function>
<add-function signature="__len__">
<inject-code class="target" position="beginning">
return 16;
</inject-code>
</add-function>
<add-function signature="__setitem__">
<inject-code class="target" position="beginning">
if (_i >= 16) {
PyErr_SetString(PyExc_IndexError, "index out of bounds");
return -1;
}
if (_i &lt; 0)
_i = 16 - qAbs(_i);
quint8 item = %CONVERTTOCPP[quint8](_value);
%CPPSELF.c[_i] = item;
return 0;
</inject-code>
</add-function>
</value-type> </value-type>
<value-type name="QAuthenticator" /> <value-type name="QAuthenticator">
<modify-function signature="operator=(QAuthenticator)" remove="all"/>
</value-type>
<value-type name="QNetworkCookie"> <value-type name="QNetworkCookie">
<enum-type name="RawForm"/> <modify-function signature="operator=(QNetworkCookie)" remove="all"/>
<extra-includes> <extra-includes>
<include file-name="QDateTime" location="global"/> <include file-name="QDateTime" location="global"/>
</extra-includes> </extra-includes>
</value-type> </value-type>
<value-type name="QNetworkRequest"> <value-type name="QNetworkRequest">
<enum-type name="Attribute" extensible="yes"/> <modify-function signature="operator=(QNetworkRequest)" remove="all"/>
<enum-type name="LoadControl" since="4.7"/>
<enum-type name="Priority" since="4.7"/>
<enum-type name="CacheLoadControl"/>
<enum-type name="KnownHeaders"/>
</value-type> </value-type>
<enum-type name="QSslError::SslError"/>
<enum-type name="QSslCertificate::SubjectInfo"/>
<enum-type name="QSslSocket::SslMode"/>
<enum-type name="QSslSocket::PeerVerifyMode"/>
<value-type name="QSslCipher"/>
<value-type name="QSslError"/>
<value-type name="QSslKey"/>
<!-- TODO QSslCertificate requires QMultiMap which isn't implemented yet <!-- TODO QSslCertificate requires QMultiMap which isn't implemented yet
<value-type name="QSslCertificate"/> <value-type name="QSslCertificate"/>
--> -->
<enum-type name="QSslCertificate::SubjectInfo"/>
<!-- Qt 4.7 -->
<value-type name="QNetworkConfiguration" since="4.7">
<enum-type name="BearerType" />
<enum-type name="Purpose" since="4.7"/>
<enum-type name="StateFlag" flags="StateFlags" since="4.7"/>
<enum-type name="Type" since="4.7"/>
</value-type>
<object-type name="QNetworkConfigurationManager" since="4.7">
<enum-type name="Capability" flags="Capabilities" since="4.7"/>
</object-type>
<object-type name="QNetworkSession" since="4.7">
<enum-type name="SessionError" since="4.7"/>
<enum-type name="State" since="4.7"/>
</object-type>
<object-type name="QAbstractNetworkCache"/>
<object-type name="QNetworkDiskCache"/>
<value-type name="QNetworkCacheMetaData"/>
<suppress-warning text="Shadowing: QAbstractSocket::*"/>
<!-- The following entries may be present in the system or not. Keep this section organized. -->
<value-type name="QSslCertificate"/>
<value-type name="QSslCipher"/>
<value-type name="QSslConfiguration"/> <value-type name="QSslConfiguration"/>
<value-type name="QSslError">
<enum-type name="SslError"/>
</value-type>
<value-type name="QSslKey"/>
<object-type name="QSslSocket"> <object-type name="QSslSocket">
<enum-type name="SslMode"/>
<enum-type name="PeerVerifyMode"/>
<modify-function signature="connectToHostEncrypted(const QString&amp;, quint16, QFlags&lt;QIODevice::OpenModeFlag>)" allow-thread="yes" /> <modify-function signature="connectToHostEncrypted(const QString&amp;, quint16, QFlags&lt;QIODevice::OpenModeFlag>)" allow-thread="yes" />
<modify-function signature="waitForEncrypted(int)" allow-thread="yes" /> <modify-function signature="waitForEncrypted(int)" allow-thread="yes" />
</object-type> </object-type>
<!-- The above entries may be present in the system or not. Keep this section organized. -->
</typesystem>
<suppress-warning text="Shadowing: QAbstractSocket::*"/>
<!-- For people building without SSL support -->
<!--
<suppress-warning text="WARNING(MetaJavaBuilder) :: namespace 'com.trolltech.qt.network.QSslSocket' for enum 'SslMode' is not declared"/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: type 'QSslError' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: type 'QSslCipher' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: type 'QSslKey' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: namespace 'com.trolltech.qt.network.QSslError' for enum 'SslError' is not declared"/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: type 'QSslCertificate' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: namespace 'com.trolltech.qt.network.QSslSocket' for enum 'PeerVerifyMode' is not declared"/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: namespace 'com.trolltech.qt.network.QSslCertificate' for enum 'SubjectInfo' is not declared"/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: type 'QSslConfiguration' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/>
<suppress-warning text="WARNING(MetaJavaBuilder) :: type 'QSslSocket' is specified in typesystem, but not defined. This could potentially lead to compilation errors."/>
-->
</typesystem>

View file

@ -10,15 +10,6 @@ else()
) )
endif() endif()
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 7)
set(QtOpenGL_47_SRC )
else()
set(QtOpenGL_47_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qglbuffer_wrapper.cpp
)
endif()
set(QtOpenGL_SRC set(QtOpenGL_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qgl_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qgl_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qglcolormap_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qglcolormap_wrapper.cpp
@ -29,30 +20,33 @@ set(QtOpenGL_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qglwidget_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qglwidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qtopengl_module_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/qtopengl_module_wrapper.cpp
${QtOpenGL_46_SRC} ${QtOpenGL_46_SRC}
${QtOpenGL_47_SRC}
) )
set(QtOpenGL_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtOpenGL_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}") execute_generator(opengl QtOpenGL_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtOpenGL_SOURCE_DIR}")
set(QtOpenGL_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR} include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTGUI_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}
${QT_QTOPENGL_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR} ${QT_QTOPENGL_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${PYTHON_INCLUDE_PATH}
${libpyside_SOURCE_DIR} ${SHIBOKEN_INCLUDE_DIR}
${QtGui_BINARY_DIR}/PySide/QtGui/ ${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/ ${QtGui_BINARY_DIR}/PySide/QtGui/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL) ${QtCore_BINARY_DIR}/PySide/QtCore/
set(QtOpenGL_libraries pyside ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL)
${SHIBOKEN_PYTHON_LIBRARIES} add_library(QtOpenGL MODULE ${QtOpenGL_SRC})
${QT_QTCORE_LIBRARY} set_target_properties(QtOpenGL PROPERTIES PREFIX "")
${QT_QTGUI_LIBRARY} target_link_libraries(QtOpenGL
${QT_QTOPENGL_LIBRARY}) pyside
set(QtOpenGL_deps QtGui) ${PYTHON_LIBRARIES}
create_pyside_module(QtOpenGL ${QT_QTCORE_LIBRARY}
QtOpenGL_include_dirs ${QT_QTGUI_LIBRARY}
QtOpenGL_libraries ${QT_QTOPENGL_LIBRARY})
QtOpenGL_deps add_dependencies(QtOpenGL QtGui)
QtOpenGL_typesystem_path
QtOpenGL_SRC # install
"") install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtOpenGL.so
DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtOpenGL/pyside_qtopengl_python.h
DESTINATION include/PySide/QtOpenGL/)

View file

@ -1,65 +1,33 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtOpenGL"> <typesystem package="PySide.QtOpenGL">
<load-typesystem name="typesystem_gui.xml" generate="no" /> <load-typesystem name="typesystem_gui.xml" generate="no" />
<primitive-type name="GLbitfield"/>
<primitive-type name="GLboolean"/>
<primitive-type name="GLbyte"/>
<primitive-type name="GLclampd"/>
<primitive-type name="GLclampf"/>
<primitive-type name="GLdouble"/>
<primitive-type name="GLenum"/>
<primitive-type name="GLfloat"/>
<primitive-type name="GLint"/>
<primitive-type name="GLshort"/>
<primitive-type name="GLsizei"/>
<primitive-type name="GLubyte"/>
<primitive-type name="GLuint"/>
<primitive-type name="GLushort"/>
<rejection class="QGLColormap::QGLColormapData"/> <rejection class="QGLColormap::QGLColormapData"/>
<rejection class="QGLContext" field-name="currentCtx"/> <rejection class="QGLWidget" function-name="setMouseTracking"/>
<enum-type name="QGL::FormatOption" flags="QGL::FormatOptions" force-integer="yes"/>
<enum-type name="QGLFormat::OpenGLVersionFlag" flags="QGLFormat::OpenGLVersionFlags"/>
<enum-type name="QGLFramebufferObject::Attachment"/>
<namespace-type name="QGL"> <namespace-type name="QGL">
<enum-type name="FormatOption" flags="FormatOptions" force-integer="yes"/>
<extra-includes> <extra-includes>
<include file-name="qgl.h" location="global"/> <include file-name="qgl.h" location="global"/>
</extra-includes> </extra-includes>
</namespace-type> </namespace-type>
<value-type name="QGLColormap"> <value-type name="QGLColormap">
<modify-function signature="operator=(QGLColormap)" remove="all"/>
<modify-function signature="setEntries(int,const unsigned int*,int)"> <modify-function signature="setEntries(int,const unsigned int*,int)">
<access modifier="private"/> <access modifier="private"/>
</modify-function> </modify-function>
</value-type> </value-type>
<value-type name="QGLFormat"> <value-type name="QGLFormat">
<enum-type name="OpenGLContextProfile" since="4.7"/> <modify-function signature="operator=(QGLFormat)" remove="all"/>
<enum-type name="OpenGLVersionFlag" flags="OpenGLVersionFlags"/>
</value-type> </value-type>
<rejection class="QGLContext" field-name="currentCtx" />
<object-type name="QGLContext"> <object-type name="QGLContext">
<enum-type name="BindOption" flags="BindOptions" since="4.6"/>
<modify-function signature="chooseContext(const QGLContext*)"> <modify-function signature="chooseContext(const QGLContext*)">
<modify-argument index="1" invalidate-after-use="yes"/> <modify-argument index="1" invalidate-after-use="yes"/>
</modify-function> </modify-function>
@ -67,14 +35,18 @@
<modify-argument index="1" invalidate-after-use="yes"/> <modify-argument index="1" invalidate-after-use="yes"/>
</modify-function> </modify-function>
<!-- ### Obsolete functions and ctors --> <modify-function signature="getProcAddress(QString)const">
<remove/>
</modify-function>
<modify-field name="currentCtx" read="false" write="false"/>
<modify-function signature="setDevice(QPaintDevice*)">
<remove/>
</modify-function>
<modify-function signature="generateFontDisplayLists(QFont, int)" remove="all"/> <modify-function signature="generateFontDisplayLists(QFont, int)" remove="all"/>
<modify-function signature="QGLContext(const QGLFormat&amp;, QPaintDevice*)" remove="all" /> <modify-function signature="tryVisual(const QGLFormat&amp;, int)" remove="all"/>
<!-- ### --> <modify-function signature="chooseVisual()" remove="all"/>
</object-type>
<object-type name="QGLFramebufferObject">
<enum-type name="Attachment"/>
</object-type> </object-type>
<object-type name="QGLFramebufferObject"/>
<object-type name="QGLPixelBuffer"> <object-type name="QGLPixelBuffer">
<extra-includes> <extra-includes>
<include file-name="QImage" location="global"/> <include file-name="QImage" location="global"/>
@ -93,647 +65,18 @@
<parent index="2" action="add"/> <parent index="2" action="add"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>
<!-- ### Not part of Qt public API --> <!--- Obsolete -->
<modify-function signature="setContext(QGLContext*,const QGLContext*,bool)" remove="all" /> <modify-function signature="setContext(QGLContext*,const QGLContext*,bool)" remove="all" />
<!-- ### -->
<!--- ### Obsolete functions -->
<modify-function signature="fontDisplayListBase(QFont, int)" remove="all"/> <modify-function signature="fontDisplayListBase(QFont, int)" remove="all"/>
<modify-function signature="setFormat(QGLFormat)" remove="all"/> <modify-function signature="setFormat(QGLFormat)" remove="all"/>
<!-- ### -->
</object-type> </object-type>
<value-type name="QGLFramebufferObjectFormat" since="4.6"/> <value-type name="QGLFramebufferObjectFormat"/>
<object-type name="QGLShader" since="4.6"> <object-type name="QGLShader"/>
<enum-type name="ShaderTypeBit" flags="ShaderType"/> <object-type name="QGLShaderProgram">
<modify-function signature="setUniformValue(int, Array)" remove="all" />
<modify-function signature="setUniformValue(const char*, Array)" remove="all" />
<modify-function signature="setAttributeValue(int,const float*,int,int)" remove="all" />
<modify-function signature="setAttributeValue(const char*,const float*,int,int)" remove="all" />
</object-type> </object-type>
<template name="callArrayFunction">
int _size = PySequence_Size(%PYARG_2);
if (_size) {
$ATTR_TYPE *_list = new $ATTR_TYPE[_size];
if (_size) {
Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_2, "Failed to parse sequence with type %VECTOR_TYPE."));
for(int i=0; i &lt; _size; i++) {
PyObject* pv = PySequence_Fast_GET_ITEM(fast.object(), i);
_list[i] = %CONVERTTOCPP[$ATTR_TYPE](pv);
}
}
%CPPSELF.%FUNCTION_NAME(%1, _list, $ARG0);
delete[] _list;
} else {
%CPPSELF.%FUNCTION_NAME(%1, ($ATTR_TYPE*)NULL, $ARG1);
}
</template>
<object-type name="QGLShaderProgram" since="4.6">
<!-- setAttributeArray -->
<modify-function signature="setAttributeArray(int, const QVector2D*, int)" rename="setAttributeArray2D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="%3" />
<replace from="$ARG1" to="%3" />
<replace from="$ATTR_TYPE" to="QVector2D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setAttributeArray(int, const QVector3D*, int)" rename="setAttributeArray3D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="%3" />
<replace from="$ARG1" to="%3" />
<replace from="$ATTR_TYPE" to="QVector3D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setAttributeArray(int, const QVector4D*, int)" rename="setAttributeArray4D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="%3" />
<replace from="$ARG1" to="%3" />
<replace from="$ATTR_TYPE" to="QVector4D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setAttributeArray(const char*, const QVector2D*, int)" rename="setAttributeArray2D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="%3" />
<replace from="$ARG1" to="%3" />
<replace from="$ATTR_TYPE" to="QVector2D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setAttributeArray(const char*, const QVector3D*, int)" rename="setAttributeArray3D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="%3" />
<replace from="$ARG1" to="%3" />
<replace from="$ATTR_TYPE" to="QVector3D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setAttributeArray(const char*, const QVector4D*, int)" rename="setAttributeArray4D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="%3" />
<replace from="$ARG1" to="%3" />
<replace from="$ATTR_TYPE" to="QVector4D"/>
</insert-template>
</inject-code>
</modify-function>
<!-- setUniformValueArray -->
<modify-function signature="setUniformValueArray(int, const GLint*, int)" rename="setUniformValueArrayInt">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="GLint"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const GLuint*, int)" rename="setUniformValueArrayUint">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="GLuint"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QVector2D*, int)" rename="setUniformValueArray2D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QVector2D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QVector3D*, int)" rename="setUniformValueArray3D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QVector3D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QVector4D*, int)" rename="setUniformValueArray4D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QVector4D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix2x2*, int)" rename="setUniformValueArray2x2">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix2x2"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix2x3*, int)" rename="setUniformValueArray2x3">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix2x3"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix2x4*, int)" rename="setUniformValueArray2x4">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix2x4"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix3x2*, int)" rename="setUniformValueArray3x2">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix3x2"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix3x3*, int)" rename="setUniformValueArray3x3">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix3x3"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix3x4*, int)" rename="setUniformValueArray3x4">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix3x4"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix4x2*, int)" rename="setUniformValueArray4x2">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix4x2"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix4x3*, int)" rename="setUniformValueArray4x3">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix4x3"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(int, const QMatrix4x4*, int)" rename="setUniformValueArray4x4">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix4x4"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const GLint*, int)" rename="setUniformValueArrayInt">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="GLint"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const GLuint*, int)" rename="setUniformValueArrayUint">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="GLuint"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QVector2D*, int)" rename="setUniformValueArray2D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QVector2D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QVector3D*, int)" rename="setUniformValueArray3D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QVector3D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QVector4D*, int)" rename="setUniformValueArray4D">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QVector4D"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix2x2*, int)" rename="setUniformValueArray2x2">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix2x2"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix2x3*, int)" rename="setUniformValueArray2x3">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix2x3"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix2x4*, int)" rename="setUniformValueArray2x4">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix2x4"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix3x2*, int)" rename="setUniformValueArray3x2">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix3x2"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix3x3*, int)" rename="setUniformValueArray3x3">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix3x3"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix3x4*, int)" rename="setUniformValueArray3x4">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix3x4"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix4x2*, int)" rename="setUniformValueArray4x2">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix4x2"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix4x3*, int)" rename="setUniformValueArray4x3">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix4x3"/>
</insert-template>
</inject-code>
</modify-function>
<modify-function signature="setUniformValueArray(const char*, const QMatrix4x4*, int)" rename="setUniformValueArray4x4">
<modify-argument index="2" >
<replace-type modified-type="PySequence" />
</modify-argument>
<modify-argument index="3">
<remove-argument />
</modify-argument>
<inject-code>
<insert-template name="callArrayFunction">
<replace from="$ARG0" to="_size" />
<replace from="$ARG1" to="0" />
<replace from="$ATTR_TYPE" to="QMatrix4x4"/>
</insert-template>
</inject-code>
</modify-function>
<!-- ### TODO: must evaluate if anything other than removal should be done. -->
<modify-function signature="setAttributeArray(int,const GLfloat*,int,int)" remove="all" />
<modify-function signature="setAttributeArray(const char*,const GLfloat*,int,int)" remove="all" />
<modify-function signature="setUniformValueArray(int,const GLfloat*,int,int)" remove="all" />
<modify-function signature="setUniformValueArray(const char*,const GLfloat*,int,int)" remove="all" />
<!-- ### -->
<!-- ### Use QMatrixZxY overloads -->
<modify-function signature="setUniformValue(int,Array)" remove="all" />
<modify-function signature="setUniformValue(const char*,Array)" remove="all" />
<modify-function signature="setAttributeValue(int,const GLfloat*,int,int)" remove="all" />
<modify-function signature="setAttributeValue(const char*,const GLfloat*,int,int)" remove="all" />
<modify-function signature="setAttributeArray(int, GLenum, const void*, int, int)" remove="all" since="4.7" />
<modify-function signature="setAttributeArray(const char*, GLenum, const void*, int, int)" remove="all" since="4.7" />
<!-- ### -->
</object-type>
<!-- Qt 4.7 -->
<object-type name="QGLBuffer" since="4.7">
<enum-type name="Access" since="4.7"/>
<enum-type name="Type" since="4.7"/>
<enum-type name="UsagePattern" since="4.7"/>
<modify-function signature="allocate(const void*, int)">
<modify-argument index="1">
<replace-type modified-type="QByteArray&amp;"/>
</modify-argument>
<modify-argument index="2">
<replace-default-expression with="-1"/>
</modify-argument>
<inject-code class="target" position="beginning">
int size = (%2 &lt; 0) ? %1.size() : %2;
%CPPSELF.allocate((const void*) %1.data(), size);
</inject-code>
</modify-function>
<modify-function signature="map(QGLBuffer::Access)">
<inject-code>
Py_ssize_t dataSize = %CPPSELF.size();
void* data = %CPPSELF.map(%1);
if (!data) {
Py_INCREF(Py_None);
%PYARG_0 = Py_None;
} else if (%1 == QGLBuffer::ReadOnly) {
%PYARG_0 = Shiboken::Buffer::newObject(data, dataSize, Shiboken::Buffer::ReadOnly);
} else {
%PYARG_0 = Shiboken::Buffer::newObject(data, dataSize, Shiboken::Buffer::ReadWrite);
}
</inject-code>
</modify-function>
<modify-function signature="read(int, void*, int)">
<modify-argument index="2">
<remove-argument/>
</modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, data)"/>
</modify-argument>
<inject-code class="target" position="beginning">
char *data = new char[%3];
bool result = %CPPSELF.read(%1, data, %3);
QByteArray ret;
if (result)
ret.append((const char*)data, %3);
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[bool](result));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QByteArray](ret));
delete[] data;
</inject-code>
</modify-function>
<modify-function signature="write(int, const void*, int)">
<modify-argument index="2">
<replace-type modified-type="QByteArray&amp;"/>
</modify-argument>
<modify-argument index="3">
<replace-default-expression with="-1"/>
</modify-argument>
<inject-code class="target" position="beginning">
int size = (%3 &lt; 0) ? %2.size() : %3;
%CPPSELF.write(%1, (const void*) %2.data(), size);
</inject-code>
</modify-function>
</object-type>
</typesystem> </typesystem>

View file

@ -1,49 +0,0 @@
project(QtScript)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 7)
set (QtScript_47_SRC )
else()
set(QtScript_47_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptprogram_wrapper.cpp
)
endif()
set(QtScript_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptable_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptclass_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptclasspropertyiterator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptcontext_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptcontextinfo_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptengineagent_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qtscript_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptengine_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptextensioninterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptextensionplugin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptstring_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalue_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript/qscriptvalueiterator_wrapper.cpp
${QtScript_47_SRC}
)
set(QtScript_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}")
set(QtScript_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScript
${QT_INCLUDE_DIR}
${QT_QTSCRIPT_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore )
set(QtScript_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
${QT_QTCORE_LIBRARY}
${QT_QTSCRIPT_LIBRARY})
set(QtScript_deps QtCore)
create_pyside_module(QtScript
QtScript_include_dirs
QtScript_libraries
QtScript_deps
QtScript_typesystem_path
QtScript_SRC
"")

View file

@ -1,115 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtScript">
<load-typesystem name="typesystem_core.xml" generate="no" />
<object-type name="QScriptable"/>
<object-type name="QScriptClass">
<enum-type name="Extension"/>
<enum-type name="QueryFlag"/>
</object-type>
<object-type name="QScriptClassPropertyIterator"/>
<object-type name="QScriptContext">
<enum-type name="Error"/>
<enum-type name="ExecutionState"/>
</object-type>
<value-type name="QScriptContextInfo">
<enum-type name="FunctionType"/>
</value-type>
<object-type name="QScriptEngineAgent">
<enum-type name="Extension"/>
</object-type>
<object-type name="QScriptEngine">
<enum-type name="QObjectWrapOption" flags="QObjectWrapOptions"/>
<enum-type name="ValueOwnership"/>
<!-- Not supported BUG #957-->
<modify-function signature="scriptValueFromQMetaObject()" remove="all" />
</object-type>
<object-type name="QScriptExtensionInterface"/>
<object-type name="QScriptExtensionPlugin"/>
<value-type name="QScriptProgram" since="4.7"/>
<value-type name="QScriptString">
<modify-function signature="toArrayIndex(bool*)const">
<modify-argument index="1">
<remove-argument/>
</modify-argument>
<inject-code class="target" position="beginning">
<insert-template name="fix_bool*"/>
</inject-code>
</modify-function>
</value-type>
<value-type name="QScriptValue">
<enum-type name="PropertyFlag" flags="PropertyFlags"/>
<enum-type name="ResolveFlag" flags="ResolveFlags"/>
<enum-type name="SpecialValue"/>
<add-function signature="__repr__" return-type="PyObject*">
<inject-code class="target" position="beginning">
if (%CPPSELF.isVariant() || %CPPSELF.isString()) {
QString format = QString().sprintf("%s(\"%s\")", ((PyObject*)%PYSELF)->ob_type->tp_name, qPrintable(%CPPSELF.toString()));
%PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
} else {
%PYARG_0 = Shiboken::String::fromCString(
((PyObject* )%PYSELF)->ob_type->tp_name);
}
</inject-code>
</add-function>
<add-function signature="__mgetitem__">
<inject-code>
Shiboken::AutoDecRef key(PyObject_Str(_key));
QVariant res = %CPPSELF.property(Shiboken::String::toCString(key.object())).toVariant();
if (res.isValid()) {
return %CONVERTTOPYTHON[QVariant](res);
} else {
PyObject* errorType = PyInt_Check(_key) ? PyExc_IndexError : PyExc_KeyError;
PyErr_SetString(errorType, "Key not found.");
return 0;
}
</inject-code>
</add-function>
<add-function signature="__iter__()" return-type="PyObject*">
<inject-code>
%PYARG_0 = Shiboken::createWrapper(new QScriptValueIterator(*%CPPSELF), true, true);
</inject-code>
</add-function>
</value-type>
<object-type name="QScriptValueIterator">
<add-function signature="__iter__()" return-type="PyObject*">
<inject-code>
<insert-template name="__iter__" />
</inject-code>
</add-function>
<add-function signature="__next__()" return-type="PyObject*">
<inject-code>
if (%CPPSELF.hasNext()) {
%CPPSELF.next();
QString name = %CPPSELF.name();
QVariant value = %CPPSELF.value().toVariant();
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[QString](name));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QVariant](value));
} else {
PyErr_SetNone(PyExc_StopIteration);
}
</inject-code>
</add-function>
</object-type>
</typesystem>

View file

@ -1,37 +0,0 @@
project(QtScriptTools)
set(QtScriptTools_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScriptTools/qtscripttools_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScriptTools/qscriptenginedebugger_wrapper.cpp
)
set(QtScriptTools_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtScript_SOURCE_DIR}${PATH_SEP}${QtScriptTools_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
set(QtScriptTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_GUI_INCLUDE_DIR}
${QT_QTSCRIPT_INCLUDE_DIR}
${QT_QTSCRIPTTOOLS_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtGui_BINARY_DIR}/PySide/QtGui/
${QtScript_BINARY_DIR}/PySide/QtScript/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtScriptTools)
set(QtScriptTools_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_GUI_LIBRARY}
${QT_QTSCRIPT_LIBRARY}
${QT_QTSCRIPTTOOLS_LIBRARY})
set(QtScriptTools_deps QtCore QtScript QtGui)
create_pyside_module(QtScriptTools
QtScriptTools_include_dirs
QtScriptTools_libraries
QtScriptTools_deps
QtScriptTools_typesystem_path
QtScriptTools_SRC
"")

View file

@ -1,33 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtScriptTools">
<load-typesystem name="typesystem_script.xml" generate="no" />
<load-typesystem name="typesystem_gui.xml" generate="no" />
<object-type name="QScriptEngineDebugger">
<enum-type name="DebuggerAction"/>
<enum-type name="DebuggerState" since="4.6"/>
<enum-type name="DebuggerWidget"/>
<extra-includes>
<include file-name="QScriptEngine" location="global"/>
</extra-includes>
</object-type>
</typesystem>

View file

@ -21,27 +21,32 @@ set(QtSql_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/qtsql_module_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/qtsql_module_wrapper.cpp
) )
set(QtSql_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtSql_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}") execute_generator(sql QtSql_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtSql_SOURCE_DIR}")
set(QtSql_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR} include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTGUI_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}
${QT_QTSQL_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR} ${QT_QTSQL_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${PYTHON_INCLUDE_PATH}
${libpyside_SOURCE_DIR} ${SHIBOKEN_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/ ${libpyside_SOURCE_DIR}
${QtGui_BINARY_DIR}/PySide/QtGui/ ${QtCore_BINARY_DIR}/PySide/QtCore/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/) ${QtGui_BINARY_DIR}/PySide/QtGui/
set(QtSql_libraries pyside ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/)
${SHIBOKEN_PYTHON_LIBRARIES} add_library(QtSql MODULE ${QtSql_SRC})
${QT_QTCORE_LIBRARY} set_target_properties(QtSql PROPERTIES PREFIX "")
${QT_QTGUI_LIBRARY} target_link_libraries(QtSql
${QT_QTSQL_LIBRARY}) pyside
set(QtSql_deps QtGui) ${PYTHON_LIBRARIES}
create_pyside_module(QtSql ${QT_QTCORE_LIBRARY}
QtSql_include_dirs ${QT_QTGUI_LIBRARY}
QtSql_libraries ${QT_QTSQL_LIBRARY})
QtSql_deps
QtSql_typesystem_path add_dependencies(QtSql QtGui)
QtSql_SRC
"") # install
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtSql.so
DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSql/pyside_qtsql_python.h
DESTINATION include/PySide/QtSql/)

View file

@ -1,23 +1,4 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtSql"> <typesystem package="PySide.QtSql">
<load-typesystem name="typesystem_gui.xml" generate="no"/> <load-typesystem name="typesystem_gui.xml" generate="no"/>
@ -26,10 +7,6 @@
<rejection class="QSqlDriverFactoryInterface"/> <rejection class="QSqlDriverFactoryInterface"/>
<namespace-type name="QSql"> <namespace-type name="QSql">
<enum-type name="Location"/>
<enum-type name="ParamTypeFlag" flags="ParamType"/>
<enum-type name="TableType"/>
<enum-type name="NumericalPrecisionPolicy"/>
<extra-includes> <extra-includes>
<include file-name="QtSql/qsql.h" location="global"/> <include file-name="QtSql/qsql.h" location="global"/>
</extra-includes> </extra-includes>
@ -44,6 +21,7 @@
<include file-name="QStringList" location="global"/> <include file-name="QStringList" location="global"/>
<include file-name="QSize" location="global"/> <include file-name="QSize" location="global"/>
</extra-includes> </extra-includes>
<modify-function signature="operator=(QSqlDatabase)" remove="all"/>
<modify-function signature="exec(QString)const" rename="exec_" allow-thread="yes" /> <modify-function signature="exec(QString)const" rename="exec_" allow-thread="yes" />
<modify-function signature="open()" allow-thread="yes" /> <modify-function signature="open()" allow-thread="yes" />
<modify-function signature="open(const QString&amp;, const QString&amp;)" allow-thread="yes" /> <modify-function signature="open(const QString&amp;, const QString&amp;)" allow-thread="yes" />
@ -58,7 +36,6 @@
</value-type> </value-type>
<value-type name="QSqlQuery"> <value-type name="QSqlQuery">
<enum-type name="BatchExecutionMode"/>
<extra-includes> <extra-includes>
<include file-name="QSqlError" location="global"/> <include file-name="QSqlError" location="global"/>
<include file-name="QSqlRecord" location="global"/> <include file-name="QSqlRecord" location="global"/>
@ -67,6 +44,7 @@
</extra-includes> </extra-includes>
<modify-function signature="exec()" rename="exec_" allow-thread="yes" /> <modify-function signature="exec()" rename="exec_" allow-thread="yes" />
<modify-function signature="exec(const QString &amp;)" rename="exec_" allow-thread="yes" /> <modify-function signature="exec(const QString &amp;)" rename="exec_" allow-thread="yes" />
<modify-function signature="operator=(QSqlQuery)" remove="all"/>
<modify-function signature="prepare(const QString&amp;)" allow-thread="yes" /> <modify-function signature="prepare(const QString&amp;)" allow-thread="yes" />
<modify-function signature="clear()" allow-thread="yes" /> <modify-function signature="clear()" allow-thread="yes" />
<modify-function signature="last()" allow-thread="yes" /> <modify-function signature="last()" allow-thread="yes" />
@ -81,26 +59,26 @@
<include file-name="QSqlField" location="global"/> <include file-name="QSqlField" location="global"/>
</extra-includes> </extra-includes>
<modify-function signature="append(QSqlField)" access="non-final"/> <modify-function signature="append(QSqlField)" access="non-final"/>
<modify-function signature="operator=(QSqlRecord)" remove="all"/>
</value-type> </value-type>
<value-type name="QSqlError"> <value-type name="QSqlError">
<enum-type name="ErrorType"/> <modify-function signature="operator=(QSqlError)" remove="all"/>
</value-type> </value-type>
<value-type name="QSqlIndex" /> <value-type name="QSqlIndex">
<modify-function signature="operator=(QSqlIndex)" remove="all"/>
</value-type>
<value-type name="QSqlRelation"/> <value-type name="QSqlRelation"/>
<object-type name="QSqlRelationalDelegate"/> <object-type name="QSqlRelationalDelegate"/>
<value-type name="QSqlField"> <value-type name="QSqlField">
<enum-type name="RequiredStatus"/> <modify-function signature="operator=(QSqlField)" remove="all"/>
</value-type> </value-type>
<object-type name="QSqlDriver"> <object-type name="QSqlDriver">
<enum-type name="DriverFeature"/>
<enum-type name="IdentifierType"/>
<enum-type name="StatementType"/>
<extra-includes> <extra-includes>
<include file-name="QSqlQuery" location="global"/> <include file-name="QSqlQuery" location="global"/>
<include file-name="QSqlError" location="global"/> <include file-name="QSqlError" location="global"/>
@ -113,9 +91,7 @@
<modify-function signature="commitTransaction()" allow-thread="yes" /> <modify-function signature="commitTransaction()" allow-thread="yes" />
<modify-function signature="rollbackTransaction()" allow-thread="yes" /> <modify-function signature="rollbackTransaction()" allow-thread="yes" />
<modify-function signature="open(const QString &amp;, const QString&amp;, const QString&amp;, const QString&amp;, int, const QString&amp;)" allow-thread="yes" /> <modify-function signature="open(const QString &amp;, const QString&amp;, const QString&amp;, const QString&amp;, int, const QString&amp;)" allow-thread="yes" />
<!-- ### This is too low level for Python, and pointer would be useless for the Python programmer -->
<modify-function signature="handle() const" remove="all"/> <modify-function signature="handle() const" remove="all"/>
<!-- ### -->
</object-type> </object-type>
<object-type name="QSqlQueryModel"> <object-type name="QSqlQueryModel">
@ -136,8 +112,6 @@
</extra-includes> </extra-includes>
</object-type> </object-type>
<object-type name="QSqlResult"> <object-type name="QSqlResult">
<enum-type name="BindingSyntax"/>
<enum-type name="VirtualHookOperation"/>
<extra-includes> <extra-includes>
<include file-name="QSqlError" location="global"/> <include file-name="QSqlError" location="global"/>
<include file-name="QSqlQuery" location="global"/> <include file-name="QSqlQuery" location="global"/>
@ -145,9 +119,7 @@
<include file-name="QStringList" location="global"/> <include file-name="QStringList" location="global"/>
<include file-name="QSize" location="global"/> <include file-name="QSize" location="global"/>
</extra-includes> </extra-includes>
<!-- ### This isn't part of Qt public API -->
<modify-function signature="virtual_hook(int,void*)" remove="all" /> <modify-function signature="virtual_hook(int,void*)" remove="all" />
<!-- ### -->
<modify-function signature="exec()" rename="exec_" allow-thread="yes" /> <modify-function signature="exec()" rename="exec_" allow-thread="yes" />
<modify-function signature="fetchLast()" allow-thread="yes" /> <modify-function signature="fetchLast()" allow-thread="yes" />
<modify-function signature="fetchFirst()" allow-thread="yes" /> <modify-function signature="fetchFirst()" allow-thread="yes" />
@ -157,7 +129,6 @@
<modify-function signature="prepare(QString)" allow-thread="yes" /> <modify-function signature="prepare(QString)" allow-thread="yes" />
</object-type> </object-type>
<object-type name="QSqlTableModel"> <object-type name="QSqlTableModel">
<enum-type name="EditStrategy"/>
<extra-includes> <extra-includes>
<include file-name="QSqlIndex" location="global"/> <include file-name="QSqlIndex" location="global"/>
<include file-name="QStringList" location="global"/> <include file-name="QStringList" location="global"/>
@ -170,4 +141,18 @@
</extra-includes> </extra-includes>
</object-type> </object-type>
<enum-type name="QSql::Location"/>
<enum-type name="QSql::ParamTypeFlag" flags="QSql::ParamType"/>
<enum-type name="QSql::TableType"/>
<enum-type name="QSql::NumericalPrecisionPolicy"/>
<enum-type name="QSqlDriver::DriverFeature"/>
<enum-type name="QSqlDriver::IdentifierType"/>
<enum-type name="QSqlDriver::StatementType"/>
<enum-type name="QSqlError::ErrorType"/>
<enum-type name="QSqlField::RequiredStatus"/>
<enum-type name="QSqlQuery::BatchExecutionMode"/>
<enum-type name="QSqlResult::BindingSyntax"/>
<enum-type name="QSqlResult::VirtualHookOperation"/>
<enum-type name="QSqlTableModel::EditStrategy"/>
</typesystem> </typesystem>

View file

@ -1,35 +1,62 @@
project(QtSvg) project(QtSvg)
if(Q_WS_X11)
set(MODULE_NAME svg_x11)
set(SPECIFIC_OS_FILES
)
elseif(Q_WS_MAC)
set(MODULE_NAME svg_mac)
set(SPECIFIC_OS_FILES
)
else()
message(FATAL_ERROR "OS not supported")
endif(Q_WS_X11)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set (QtSvg_46_SRC )
else ()
set(QtSvg_46_SRC
)
endif (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set(QtSvg_SRC set(QtSvg_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qgraphicssvgitem_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qgraphicssvgitem_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvggenerator_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvggenerator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvgrenderer_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvgrenderer_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvgwidget_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qsvgwidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qtsvg_module_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qtsvg_module_wrapper.cpp
${SPECIFIC_OS_FILES}
${QtSvg_46_SRC}
) )
set(QtSvg_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}") execute_generator(svg QtSvg_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
set(QtSvg_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${QT_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/
${QT_QTCORE_INCLUDE_DIR} ${QT_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}
${QT_QTSVG_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${QT_QTSVG_INCLUDE_DIR}
${libpyside_SOURCE_DIR} ${SHIBOKEN_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR} ${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/ ${PYTHON_INCLUDE_PATH}
${QtGui_BINARY_DIR}/PySide/QtGui/) ${QtCore_BINARY_DIR}/PySide/QtCore/
set(QtSvg_libraries pyside ${QtGui_BINARY_DIR}/PySide/QtGui/
${SHIBOKEN_PYTHON_LIBRARIES} )
${SHIBOKEN_LIBRARY}
${QT_QTSVG_LIBRARY} add_library(QtSvg MODULE ${QtSvg_SRC})
${QT_QTGUI_LIBRARY}) set_property(TARGET QtSvg PROPERTY PREFIX "")
set(QtSvg_deps QtGui) target_link_libraries(QtSvg
create_pyside_module(QtSvg pyside
QtSvg_include_dirs ${PYTHON_LIBRARIES}
QtSvg_libraries ${SHIBOKEN_LIBRARY}
QtSvg_deps ${QT_QTSVG_LIBRARY}
QtSvg_typesystem_path )
QtSvg_SRC add_dependencies(QtSvg QtGui)
"")
# install
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtSvg.so
DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/pyside_qtsvg_python.h
DESTINATION include/PySide/QtSvg/)

View file

@ -1,23 +1,4 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtSvg"> <typesystem package="PySide.QtSvg">
<load-typesystem name="typesystem_gui.xml" generate="no"/> <load-typesystem name="typesystem_gui.xml" generate="no"/>
@ -27,7 +8,7 @@
<object-type name="QSvgGenerator"> <object-type name="QSvgGenerator">
<modify-function signature="setOutputDevice(QIODevice*)"> <modify-function signature="setOutputDevice(QIODevice*)">
<modify-argument index="1"> <modify-argument index="1">
<reference-count action="set"/> <reference-count action="add"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>

View file

@ -1,42 +1,51 @@
project(QtTest) project(QtTest)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) if(Q_WS_X11)
set(QtTest_46_SRC "") set(MODULE_NAME test_x11)
set(SPECIFIC_OS_FILES
)
elseif(Q_WS_MAC)
set(MODULE_NAME test_mac)
set(SPECIFIC_OS_FILES
)
else() else()
set(QtTest_46_SRC message(FATAL_ERROR "OS not supported")
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/qtest_pysideqtoucheventsequence_wrapper.cpp endif(Q_WS_X11)
)
endif()
set(QtTest_SRC set(QtTest_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/qtest_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/qtest_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/qttest_module_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/qttest_module_wrapper.cpp
${QtTest_46_SRC} ${SPECIFIC_OS_FILES}
) )
set(QtTest_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}") execute_generator(test QtTest_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}")
set(QtTest_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/ include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${QT_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/
${QT_QTCORE_INCLUDE_DIR} ${QT_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}
${QT_QTTEST_INCLUDE_DIR} ${QT_QTGUI_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${QT_QTTEST_INCLUDE_DIR}
${libpyside_SOURCE_DIR} ${SHIBOKEN_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR} ${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/ ${PYTHON_INCLUDE_PATH}
${QtGui_BINARY_DIR}/PySide/QtGui/) ${QtCore_BINARY_DIR}/PySide/QtCore/
set(QtTest_libraries pyside ${QtGui_BINARY_DIR}/PySide/QtGui/
${SHIBOKEN_PYTHON_LIBRARIES} )
${SHIBOKEN_LIBRARY}
${QT_QTTEST_LIBRARY} add_library(QtTest MODULE ${QtTest_SRC})
${QT_QTGUI_LIBRARY} set_property(TARGET QtTest PROPERTY PREFIX "")
${QT_QTCORE_LIBRARY}) target_link_libraries(QtTest
set(QtTest_deps QtGui) pyside
create_pyside_module(QtTest ${PYTHON_LIBRARIES}
QtTest_include_dirs ${SHIBOKEN_LIBRARY}
QtTest_libraries ${QT_QTTEST_LIBRARY}
QtTest_deps ${QT_QTGUI_LIBRARY}
QtTest_typesystem_path )
QtTest_SRC add_dependencies(QtTest QtGui)
"")
# install
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtTest.so
DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtTest/pyside_qttest_python.h
DESTINATION include/PySide/QtTest/)

View file

@ -1,23 +1,4 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtTest"> <typesystem package="PySide.QtTest">
<load-typesystem name="typesystem_gui.xml" generate="no"/> <load-typesystem name="typesystem_gui.xml" generate="no"/>
@ -25,8 +6,6 @@
<rejection class="QTest" function-name="qCompare&lt;char*&gt;"/> <rejection class="QTest" function-name="qCompare&lt;char*&gt;"/>
<rejection class="QTest" function-name="qCompare&lt;double&gt;"/> <rejection class="QTest" function-name="qCompare&lt;double&gt;"/>
<rejection class="QTest" function-name="qCompare&lt;float&gt;"/> <rejection class="QTest" function-name="qCompare&lt;float&gt;"/>
<rejection class="QTest" function-name="qCompare&lt;double,qreal&gt;"/>
<rejection class="QTest" function-name="qCompare&lt;qreal,double&gt;"/>
<rejection class="QTest" function-name="qCompare"/> <rejection class="QTest" function-name="qCompare"/>
<rejection class="QTest" function-name="qVerify"/> <rejection class="QTest" function-name="qVerify"/>
<rejection class="QTest" function-name="qSleep"/> <rejection class="QTest" function-name="qSleep"/>
@ -37,65 +16,24 @@
<rejection class="QTest" function-name="qData"/> <rejection class="QTest" function-name="qData"/>
<rejection class="QTest" function-name="qWarn"/> <rejection class="QTest" function-name="qWarn"/>
<rejection class="QTest" function-name="toString"/> <rejection class="QTest" function-name="toString"/>
<rejection class="QTest" function-name="toString&lt;bool>"/>
<rejection class="QTest" function-name="toString&lt;char>"/>
<rejection class="QTest" function-name="toString&lt;double>"/>
<rejection class="QTest" function-name="toString&lt;float>"/>
<rejection class="QTest" function-name="toString&lt;int>"/>
<rejection class="QTest" function-name="toString&lt;long>"/>
<rejection class="QTest" function-name="toString&lt;qint64>"/>
<rejection class="QTest" function-name="toString&lt;quint64>"/>
<rejection class="QTest" function-name="toString&lt;short>"/>
<rejection class="QTest" function-name="toString&lt;uint>"/>
<rejection class="QTest" function-name="toString&lt;ulong>"/>
<rejection class="QTest" function-name="toString&lt;ushort>"/>
<rejection class="QTest" function-name="qt_snprintf"/>
<rejection class="QTest" function-name="compare_helper"/> <rejection class="QTest" function-name="compare_helper"/>
<rejection class="QTest" function-name="touchEvent"/>
<namespace-type name="QTest"> <namespace-type name="QTest">
<enum-type name="AttributeIndex" since="4.6"/>
<enum-type name="KeyAction"/>
<enum-type name="LogElementType" since="4.6"/>
<enum-type name="MouseAction"/>
<enum-type name="QBenchmarkMetric" since="4.7"/>
<enum-type name="SkipMode"/>
<enum-type name="TestFailMode"/>
<extra-includes> <extra-includes>
<include file-name="QtTest" location="global"/> <include file-name="QtTest" location="global"/>
</extra-includes> </extra-includes>
<!--<modify-function signature="qCompare<char>(char">--> <!--<modify-function signature="qCompare<char>(char">-->
<rejection class="QTouchEventSequence"/>
<object-type name="PySideQTouchEventSequence" target-lang-name="QTouchEventSequence" since="4.6" >
<modify-function signature="press(int, const QPoint&amp;, QWidget*)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="move(int, const QPoint&amp;, QWidget*)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="release(int, const QPoint&amp;, QWidget*)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="stationary(int)">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
</object-type>
<modify-function signature="generateTouchEvent(QWidget*, QTouchEvent::DeviceType)" rename="touchEvent" since="4.6">
<modify-argument index="return">
<define-ownership class="target" owner="target"/>
</modify-argument>
</modify-function>
</namespace-type> </namespace-type>
<rejection class="QTouchEventSequence"/>
<!--<enum-type name="QTest::AttributeIndex"/>
<enum-type name="QTest::KeyAction"/>
<enum-type name="QTest::LogElementType"/>
<enum-type name="QTest::MouseAction"/>
<enum-type name="QTest::SkipMode"/>
<enum-type name="QTest::TestFailMode"/>-->
<rejection class="QSignalSpy"/> <rejection class="QSignalSpy"/>
<rejection class="QTestEventList"/> <rejection class="QTestEventList"/>
</typesystem> </typesystem>

View file

@ -1,38 +0,0 @@
project(QtUiTools)
set(QtUiTools_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/qtuitools_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/quiloader_wrapper.cpp
)
set(QtUiTools_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtXml_SOURCE_DIR}${PATH_SEP}${QtUiTools_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
set(QtUiTools_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTXML_INCLUDE_DIR}
${QT_QTDESIGNER_INCLUDE_DIR}
${QT_QTUITOOLS_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${plugins_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtXml_BINARY_DIR}/PySide/QtXml/
${QtGui_BINARY_DIR}/PySide/QtGui/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools)
set(QtUiTools_libraries pyside
uiplugin
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTUITOOLS_LIBRARY}
${QT_QTDESIGNER_LIBRARY}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY})
set(QtUiTools_deps QtGui QtXml)
create_pyside_module(QtUiTools
QtUiTools_include_dirs
QtUiTools_libraries
QtUiTools_deps
QtUiTools_typesystem_path
QtUiTools_SRC
"")

View file

@ -1,47 +0,0 @@
/*
* This file is part of the PySide project.
*
* Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
*
* Contact: PySide team <contact@pyside.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef _PLUGIN_H_
#define _PLUGIN_H_
#include <QPluginLoader>
#include "customwidgets.h"
inline void registerCustomWidget(PyObject* obj)
{
static PyCustomWidgets* plugin = 0;
if (plugin == 0) {
foreach(QObject* o, QPluginLoader::staticInstances()) {
plugin = qobject_cast<PyCustomWidgets*>(o);
if (plugin)
break;
}
}
if (!plugin)
qDebug() << "Failed to load uiloader plugin.";
else
plugin->registerWidgetType(obj);
}
#endif

View file

@ -1,52 +0,0 @@
/*
* Based on code provided by:
* Antonio Valentino <antonio.valentino at tiscali.it>
* Frédéric <frederic.mantegazza at gbiloba.org>
*/
#include <shiboken.h>
#include <QUiLoader>
#include <QFile>
#include <QWidget>
static void createChildrenNameAttributes(PyObject* root, QObject* object)
{
foreach (QObject* child, object->children()) {
const QByteArray name = child->objectName().toLocal8Bit();
if (!name.isEmpty() && !name.startsWith("_") && !name.startsWith("qt_")) {
bool hasAttr = PyObject_HasAttrString(root, name.constData());
if (!hasAttr) {
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[QObject*](child));
PyObject_SetAttrString(root, name.constData(), pyChild);
}
createChildrenNameAttributes(root, child);
}
createChildrenNameAttributes(root, child);
}
}
static PyObject* QUiLoadedLoadUiFromDevice(QUiLoader* self, QIODevice* dev, QWidget* parent)
{
QWidget* wdg = self->load(dev, parent);
if (wdg) {
PyObject* pyWdg = %CONVERTTOPYTHON[QWidget*](wdg);
createChildrenNameAttributes(pyWdg, wdg);
if (parent) {
Shiboken::AutoDecRef pyParent(%CONVERTTOPYTHON[QWidget*](parent));
Shiboken::Object::setParent(pyParent, pyWdg);
}
return pyWdg;
}
if (!PyErr_Occurred())
PyErr_SetString(PyExc_RuntimeError, "Unable to open/read ui device");
return 0;
}
static PyObject* QUiLoaderLoadUiFromFileName(QUiLoader* self, const QString& uiFile, QWidget* parent)
{
QFile fd(uiFile);
return QUiLoadedLoadUiFromDevice(self, &fd, parent);
}

View file

@ -1,128 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtUiTools">
<load-typesystem name="typesystem_gui.xml" generate="no" />
<load-typesystem name="typesystem_xml.xml" generate="no" />
<object-type name="QUiLoader">
<extra-includes>
<include file-name="glue/plugins.h" location="local"/>
</extra-includes>
<inject-code class="native" position="beginning" file="glue/uitools_loadui.cpp"/>
<inject-code>
Q_IMPORT_PLUGIN(uiplugin);
</inject-code>
<add-function signature="registerCustomWidget(PyObject*)" return-type="void">
<modify-argument index="1">
<rename to="customWidgetType" />
</modify-argument>
<inject-documentation format="target" mode="append">
Registers a Python created custom widget to QUiLoader, so it can be recognized when
loading a `.ui` file. The custom widget type is passed via the ``customWidgetType`` argument.
This is needed when you want to override a virtual method of some widget in the interface,
since duck punching will not work with widgets created by QUiLoader based on the contents
of the `.ui` file.
(Remember that `duck punching virtual methods is an invitation for your own demise!
&lt;http://www.pyside.org/docs/shiboken/wordsofadvice.html#duck-punching-and-virtual-methods>`_)
Let's see an obvious example. If you want to create a new widget it's probable you'll end up
overriding :class:`~PySide.QtGui.QWidget`'s :meth:`~PySide.QtGui.QWidget.paintEvent` method.
.. code-block:: python
class Circle(QWidget):
def paintEvent(self, event):
painter = QPainter(self)
painter.setPen(self.pen)
painter.setBrush(QBrush(self.color))
painter.drawEllipse(event.rect().center(), 20, 20)
# ...
loader = QUiLoader()
loader.registerCustomWidget(Circle)
circle = loader.load('circle.ui')
circle.show()
# ...
</inject-documentation>
<inject-code class="target" position="beginning">
registerCustomWidget(%PYARG_1);
%CPPSELF.addPluginPath(""); // force reload widgets
</inject-code>
</add-function>
<modify-function signature="createAction(QObject*, const QString&amp;)">
<modify-argument index="return">
<parent index="1" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="createActionGroup(QObject*, const QString&amp;)">
<modify-argument index="return">
<parent index="1" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="createLayout(const QString&amp;, QObject*, const QString&amp;)">
<modify-argument index="return">
<parent index="2" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="createWidget(const QString&amp;, QWidget*, const QString&amp;)">
<modify-argument index="return">
<parent index="2" action="add"/>
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="load(QIODevice*, QWidget*)">
<modify-argument index="2">
<replace-default-expression with="0" />
<rename to="parentWidget" />
</modify-argument>
<modify-argument index="return">
<define-ownership class="target" owner="target"/>
</modify-argument>
<inject-code>
// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
%PYARG_0 = QUiLoadedLoadUiFromDevice(%CPPSELF, %1, %2);
</inject-code>
</modify-function>
<!-- Syntax sugar -->
<add-function signature="load(QString, QWidget*)" return-type="QWidget*">
<modify-argument index="2">
<replace-default-expression with="0" />
<rename to="parentWidget" />
</modify-argument>
<modify-argument index="return">
<define-ownership class="target" owner="target"/>
</modify-argument>
<inject-code>
// Avoid calling the original function: %CPPSELF.%FUNCTION_NAME()
%PYARG_0 = QUiLoaderLoadUiFromFileName(%CPPSELF, %1, %2);
</inject-code>
</add-function>
</object-type>
</typesystem>

View file

@ -1,5 +1,17 @@
project(QtWebKit) project(QtWebKit)
if(Q_WS_X11)
set(MODULE_NAME webkit_x11)
set(SPECIFIC_OS_FILES
)
elseif(Q_WS_MAC)
set(MODULE_NAME webkit_mac)
set(SPECIFIC_OS_FILES
)
else()
message(FATAL_ERROR "OS not supported")
endif(Q_WS_X11)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6) if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set (QtWebKit_46_SRC ) set (QtWebKit_46_SRC )
else () else ()
@ -7,11 +19,9 @@ else ()
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelement_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelement_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelementcollection_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebelementcollection_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebinspector_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebinspector_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_errorpageextensionoption_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_errorpageextensionreturn_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qgraphicswebview_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qgraphicswebview_wrapper.cpp
) )
endif () endif (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set(QtWebKit_SRC set(QtWebKit_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qtwebkit_module_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qtwebkit_module_wrapper.cpp
@ -22,10 +32,6 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistoryitem_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistory_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhistory_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhittestresult_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebhittestresult_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_choosemultiplefilesextensionoption_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_choosemultiplefilesextensionreturn_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_extensionoption_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpage_extensionreturn_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_mimetype_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_mimetype_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_plugin_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_plugin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebpluginfactory_wrapper.cpp
@ -34,35 +40,40 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebsettings_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebview_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/qwebview_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/webcore_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/webcore_wrapper.cpp
${SPECIFIC_OS_FILES}
${QtWebKit_46_SRC} ${QtWebKit_46_SRC}
) )
set(QtWebKit_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}") execute_generator(webkit QtWebKit_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtNetwork_SOURCE_DIR}")
set(QtWebkit_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebkit/
${QT_INCLUDE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTNETWORK_INCLUDE_DIR}
${QT_QTWEBKIT_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtGui_BINARY_DIR}/PySide/QtGui/
${QtNetwork_BINARY_DIR}/PySide/QtNetwork/ )
set(QtWebKit_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
${QT_QTWEBKIT_LIBRARY}
${QT_QTNETWORK_LIBRARY}
${QT_QTGUI_LIBRARY})
set(QtWebKit_deps QtGui QtNetwork)
create_pyside_module(QtWebKit
QtWebkit_include_dirs
QtWebKit_libraries
QtWebKit_deps
QtWebKit_typesystem_path
QtWebKit_SRC
"")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebkit/
${QT_INCLUDE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_QTNETWORK_INCLUDE_DIR}
${QT_QTWEBKIT_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${PYTHON_INCLUDE_PATH}
${QtCore_BINARY_DIR}/PySide/QtCore/
${QtGui_BINARY_DIR}/PySide/QtGui/
${QtNetwork_BINARY_DIR}/PySide/QtNetwork/
)
add_library(QtWebKit MODULE ${QtWebKit_SRC})
set_property(TARGET QtWebKit PROPERTY PREFIX "")
target_link_libraries(QtWebKit
pyside
${PYTHON_LIBRARIES}
${SHIBOKEN_LIBRARY}
${QT_QTWEBKIT_LIBRARY}
)
add_dependencies(QtWebKit QtGui)
add_dependencies(QtWebKit QtNetwork)
# install
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtWebKit.so
DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtWebKit/pyside_qtwebkit_python.h
DESTINATION include/PySide/QtWebKit/)

View file

@ -1,23 +1,4 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtWebKit"> <typesystem package="PySide.QtWebKit">
<load-typesystem name="typesystem_core.xml" generate="no"/> <load-typesystem name="typesystem_core.xml" generate="no"/>
<load-typesystem name="typesystem_gui.xml" generate="no"/> <load-typesystem name="typesystem_gui.xml" generate="no"/>
@ -25,208 +6,61 @@
<namespace-type name="WebCore"/> <namespace-type name="WebCore"/>
<enum-type name="QWebSettings::FontFamily"/>
<enum-type name="QWebSettings::FontSize"/>
<enum-type name="QWebSettings::WebGraphic"/>
<enum-type name="QWebSettings::WebAttribute"/>
<enum-type name="QWebPage::NavigationType"/>
<enum-type name="QWebPage::WebAction"/>
<enum-type name="QWebPage::WebWindowType"/>
<enum-type name="QWebPage::FindFlag" flags="QWebPage::FindFlags"/>
<enum-type name="QWebPage::LinkDelegationPolicy"/>
<enum-type name="QWebPluginFactory::Extension"/>
<!-- Qt 4.6 -->
<enum-type name="QWebElement::StyleResolveStrategy"/>
<enum-type name="QWebFrame::RenderLayer"/>
<enum-type name="QWebPage:ErrorDomain"/>
<enum-type name="QWebPage::Extension"/>
<!-- unsuported property with type QList<MimeType> -->
<rejection class="QWebPluginFactory::Plugin" field-name="mimeTypes"/>
<object-type name="QWebView"> <object-type name="QWebView">
<modify-function signature="setPage(QWebPage*)"> <modify-function signature="setPage(QWebPage*)">
<modify-argument index="1"> <modify-argument index="1">
<reference-count action="set"/> <define-ownership class="target" owner="c++"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>
<modify-function signature="page() const">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
<inject-code position="end">
SbkObject* _pyReturn = reinterpret_cast&lt;SbkObject*&gt;(%PYARG_0);
if (!Shiboken::Object::hasParentInfo(_pyReturn))
Shiboken::Object::setParent(%PYSELF, %PYARG_0);
</inject-code>
</modify-function>
<modify-function signature="print(QPrinter*)const" rename="print_" /> <modify-function signature="print(QPrinter*)const" rename="print_" />
</object-type> </object-type>
<object-type name="QWebFrame"> <object-type name="QWebFrame">
<enum-type name="RenderLayer" since="4.6"/>
<modify-function signature="addToJavaScriptWindowObject(QString,QObject*)"> <modify-function signature="addToJavaScriptWindowObject(QString,QObject*)">
<modify-argument index="2"> <modify-argument index="2">
<parent index="this" action="add"/> <parent index="this" action="add"/>
</modify-argument> </modify-argument>
</modify-function> </modify-function>
<modify-function signature="print(QPrinter*)const" rename="print_" /> <!-- TODO QtScript isn't implemented yet -->
<modify-function signature="metaData()const"> <modify-function signature="addToJavaScriptWindowObject(QString,QObject*,QScriptEngine::ValueOwnership)" remove="all" />
<modify-argument index="return"> <!-- TODO QMultiMap isn't implemented yet -->
<replace-type modified-type="PyObject" /> <modify-function signature="metaData()const" remove="all" />
</modify-argument>
<inject-code position="end">
<insert-template name="convertFromMultiMap">
<replace from="%MAP_NAME" to="%0"/>
<replace from="%RETURN_NAME" to="%PYARG_0"/>
<replace from="%KEY_TYPE" to="QString"/>
<replace from="%VALUE_TYPE" to="QString"/>
</insert-template>
</inject-code>
</modify-function>
</object-type> </object-type>
<object-type name="QWebSettings"> <object-type name="QWebSettings"/>
<enum-type name="FontFamily"/> <object-type name="QWebPage"/>
<enum-type name="FontSize"/>
<enum-type name="WebAttribute"/>
<enum-type name="WebGraphic"/>
</object-type>
<object-type name="QWebPage">
<enum-type name="FindFlag" flags="FindFlags"/>
<enum-type name="LinkDelegationPolicy"/>
<enum-type name="NavigationType"/>
<enum-type name="WebAction"/>
<enum-type name="WebWindowType"/>
<!-- Qt 4.6 -->
<enum-type name="ErrorDomain" since="4.6"/>
<enum-type name="Extension"/>
<!-- Qt 4.8 -->
<enum-type name="Feature" since="4.8" revision="4800" />
<enum-type name="PermissionPolicy" since="4.8" revision="4800" />
<value-type name="ChooseMultipleFilesExtensionOption" />
<value-type name="ChooseMultipleFilesExtensionReturn" />
<value-type name="ErrorPageExtensionOption" since="4.6" />
<value-type name="ErrorPageExtensionReturn" since="4.6" />
<value-type name="ExtensionOption" />
<value-type name="ExtensionReturn" />
<modify-function signature="extension(QWebPage::Extension, const QWebPage::ExtensionOption*, QWebPage::ExtensionReturn*)">
<template name="qwebpage_extension_argument_conversion">
PyObject* %out = 0;
// Cast the parameters according to the extension type
if (extension == QWebPage::ChooseMultipleFilesExtension) {
const ChooseMultipleFilesExtension$TYPE_SUFFIX* _in = reinterpret_cast&lt;const ChooseMultipleFilesExtension$TYPE_SUFFIX*>(%in);
%out = %CONVERTTOPYTHON[const QWebPage::ChooseMultipleFilesExtension$TYPE_SUFFIX*](_in);
#if QT_VERSION >= 0x040600
} else if (extension == QWebPage::ErrorPageExtension) {
const ErrorPageExtension$TYPE_SUFFIX* _in = reinterpret_cast&lt;const ErrorPageExtension$TYPE_SUFFIX*>(%in);
%out = %CONVERTTOPYTHON[const QWebPage::ErrorPageExtension$TYPE_SUFFIX*](_in);
#endif
}
</template>
<modify-argument index="2" invalidate-after-use="yes">
<conversion-rule class="target">
<insert-template name="qwebpage_extension_argument_conversion">
<replace from="$TYPE_SUFFIX" to="Option"/>
</insert-template>
</conversion-rule>
</modify-argument>
<modify-argument index="3" invalidate-after-use="yes">
<conversion-rule class="target">
<insert-template name="qwebpage_extension_argument_conversion">
<replace from="$TYPE_SUFFIX" to="Return"/>
</insert-template>
</conversion-rule>
</modify-argument>
</modify-function>
<modify-function signature="setNetworkAccessManager(QNetworkAccessManager*)">
<modify-argument index="1">
<reference-count action="set"/>
</modify-argument>
</modify-function>
<modify-function signature="networkAccessManager()const">
<modify-argument index="return">
<reference-count action="set" variable-name="setNetworkAccessManager(QNetworkAccessManager*)1" />
</modify-argument>
</modify-function>
<modify-function signature="view()const">
<modify-argument index="return">
<define-ownership owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="pluginFactory()const">
<modify-argument index="return">
<define-ownership owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="javaScriptPrompt(QWebFrame*,const QString &amp;,const QString &amp;,QString*)">
<modify-argument index="4">
<remove-argument />
<conversion-rule class="native">
QString _local;
QString* %4 = &amp;_local;
</conversion-rule>
</modify-argument>
<modify-argument index="return">
<replace-type modified-type="PySequence"/>
<conversion-rule class="native">
Shiboken::AutoDecRef pyRes(PySequence_GetItem(%PYARG_0, 0));
Shiboken::AutoDecRef pyStr(PySequence_GetItem(%PYARG_0, 1));
%RETURN_TYPE %out = %CONVERTTOCPP[%RETURN_TYPE](pyRes);
*%4 = %CONVERTTOCPP[QString](pyStr);
</conversion-rule>
<conversion-rule class="target">
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](*%4));
</conversion-rule>
</modify-argument>
</modify-function>
<add-function signature="qt_metacall()">
<inject-code class="native">
static int _signalIndex = -1;
static QMetaMethod _m;
if (_signalIndex == -1) {
_signalIndex = QWebPage::staticMetaObject.indexOfSlot("shouldInterruptJavaScript()");
_m = QWebPage::staticMetaObject.method(_signalIndex);
}
if (_signalIndex == id) {
Shiboken::GilState gil;
PyObject* self = (PyObject*)Shiboken::BindingManager::instance().retrieveWrapper(this);
if (self) {
Shiboken::AutoDecRef _pyMethod(PyObject_GetAttrString(self, "shouldInterruptJavaScript"));
return PySide::SignalManager::callPythonMetaMethod(_m, args, _pyMethod, false);
}
}
</inject-code>
</add-function>
</object-type>
<object-type name="QWebHistory"/> <object-type name="QWebHistory"/>
<object-type name="QWebHistoryInterface"/> <object-type name="QWebHistoryInterface"/>
<object-type name="QWebPluginFactory"> <object-type name="QWebPluginFactory"/>
<enum-type name="Extension"/> <value-type name="QWebPluginFactory::Plugin"/>
<value-type name="Plugin"/> <value-type name="QWebPluginFactory::MimeType"/>
<value-type name="MimeType"/>
<modify-function signature="create(const QString &amp;, const QUrl &amp;, const QStringList &amp;, const QStringList &amp;) const">
<modify-argument index="return">
<define-ownership class="native" owner="c++"/>
<define-ownership class="target" owner="target"/>
</modify-argument>
</modify-function>
</object-type>
<value-type name="QWebDatabase"/> <value-type name="QWebDatabase"/>
<value-type name="QWebHistoryItem"/> <value-type name="QWebHistoryItem"/>
<value-type name="QWebHitTestResult"/> <value-type name="QWebHitTestResult"/>
<value-type name="QWebSecurityOrigin"/> <value-type name="QWebSecurityOrigin"/>
<!-- Qt 4.6 --> <!-- Qt 4.6 -->
<object-type name="QGraphicsWebView" since="4.6"/> <object-type name="QGraphicsWebView"/>
<object-type name="QWebInspector" since="4.6"/> <object-type name="QWebInspector"/>
<value-type name="QWebElement" since="4.6"> <value-type name="QWebElement"/>
<enum-type name="StyleResolveStrategy"/> <value-type name="QWebElementCollection"/>
</value-type>
<value-type name="QWebElementCollection" since="4.6">
<add-function signature="__len__">
<inject-code>
return %CPPSELF.count();
</inject-code>
</add-function>
<add-function signature="__getitem__">
<inject-code>
if (_i &lt; 0 || _i >= %CPPSELF.count()) {
PyErr_SetString(PyExc_IndexError, "index out of bounds");
return 0;
}
QWebElement element = %CPPSELF.at(_i);
return %CONVERTTOPYTHON[QWebElement](element);
</inject-code>
</add-function>
</value-type>
</typesystem> </typesystem>

View file

@ -1,30 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtWebKit">
<object-type name="QWebFrame">
<modify-function signature="print(QPrinter*)const" remove="all"/>
</object-type>
<object-type name="QWebView">
<modify-function signature="print(QPrinter*)const" remove="all"/>
</object-type>
<load-typesystem name="typesystem_webkit.xml" generate="yes"/>
</typesystem>

View file

@ -35,26 +35,31 @@ ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/qxmlreader_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/qxmlsimplereader_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/qxmlsimplereader_wrapper.cpp
) )
set(QtXml_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}") execute_generator(xml QtXml_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}")
set(QtXml_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml include_directories(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml
${QT_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR} ${QT_INCLUDE_DIR}
${QT_QTXML_INCLUDE_DIR} ${QT_QTCORE_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR} ${QT_QTXML_INCLUDE_DIR}
${libpyside_SOURCE_DIR} ${SHIBOKEN_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR} ${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore) ${PYTHON_INCLUDE_PATH}
set(QtXml_libraries pyside ${QtCore_BINARY_DIR}/PySide/QtCore
${SHIBOKEN_PYTHON_LIBRARIES} )
${SHIBOKEN_LIBRARY} add_library(QtXml MODULE ${QtXml_SRC})
${QT_QTXML_LIBRARY}) set_property(TARGET QtXml PROPERTY PREFIX "")
set(QtXml_deps QtCore) target_link_libraries(QtXml
create_pyside_module(QtXml pyside
QtXml_include_dirs ${PYTHON_LIBRARIES}
QtXml_libraries ${SHIBOKEN_LIBRARY}
QtXml_deps ${QT_QTXML_LIBRARY}
QtXml_typesystem_path )
QtXml_SRC add_dependencies(QtXml QtCore)
"")
# install
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtXml.so DESTINATION ${SITE_PACKAGE}/PySide)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXml/pyside_qtxml_python.h
DESTINATION include/PySide/QtXml/)

View file

@ -1,23 +1,4 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtXml"> <typesystem package="PySide.QtXml">
<load-typesystem name="typesystem_templates.xml" generate="no" /> <load-typesystem name="typesystem_templates.xml" generate="no" />
<load-typesystem name="typesystem_core.xml" generate="no" /> <load-typesystem name="typesystem_core.xml" generate="no" />
@ -27,26 +8,46 @@
<rejection class="QXmlInputSource" field-name="EndOfData"/> <rejection class="QXmlInputSource" field-name="EndOfData"/>
<rejection class="QXmlInputSource" field-name="EndOfDocument"/> <rejection class="QXmlInputSource" field-name="EndOfDocument"/>
<value-type name="QDomAttr" /> <enum-type name="QDomNode::NodeType"/>
<value-type name="QDomCDATASection" /> <enum-type name="QDomNode::EncodingPolicy"/>
<value-type name="QDomCharacterData" /> <enum-type name="QDomImplementation::InvalidDataPolicy"/>
<value-type name="QDomComment" /> <!--
<enum-type name="QXmlStreamReader::Error" />
<enum-type name="QXmlStreamReader::TokenType" />
-->
<value-type name="QDomAttr">
<modify-function signature="operator=(QDomAttr)" remove="all"/>
<modify-function signature="nodeType()const" remove="all"/>
</value-type>
<value-type name="QDomCDATASection">
<modify-function signature="operator=(QDomCDATASection)" remove="all"/>
<modify-function signature="nodeType()const" remove="all"/>
</value-type>
<value-type name="QDomCharacterData">
<modify-function signature="operator=(QDomCharacterData)" remove="all"/>
<modify-function signature="nodeType()const" remove="all"/>
</value-type>
<value-type name="QDomComment">
<modify-function signature="operator=(QDomComment)" remove="all"/>
<modify-function signature="nodeType()const" remove="all"/>
</value-type>
<template name="qdomdocument_setcontent"> <template name="qdomdocument_setcontent">
QString _errorMsg_; QString _errorMsg_;
int _errorLine_ = 0; int _errorLine_ = 0;
int _errorColumn_ = 0; int _errorColumn_ = 0;
%BEGIN_ALLOW_THREADS bool _ret_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;_errorMsg_, &amp;_errorLine_, &amp;_errorColumn_);
bool _ret_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;_errorMsg_, &amp;_errorLine_, &amp;_errorColumn_); %PYARG_0 = Shiboken::makeTuple(_ret_, _errorMsg_, _errorLine_, _errorColumn_);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(4);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[bool](_ret_));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QString](_errorMsg_));
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](_errorLine_));
PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[int](_errorColumn_));
</template> </template>
<value-type name="QDomDocument"> <value-type name="QDomDocument">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(QDomDocument)" remove="all"/>
<!-- will be replaced in inject code --> <!-- will be replaced in inject code -->
<modify-function signature="setContent(const QByteArray&amp;, bool, QString*, int*, int*)"> <modify-function signature="setContent(const QByteArray&amp;, bool, QString*, int*, int*)">
<modify-argument index="3"> <modify-argument index="3">
@ -61,9 +62,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -81,9 +79,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -101,9 +96,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -121,9 +113,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -141,9 +130,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -161,9 +147,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -181,9 +164,6 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
@ -201,42 +181,80 @@
<remove-argument/> <remove-argument/>
<remove-default-expression/> <remove-default-expression/>
</modify-argument> </modify-argument>
<modify-argument index="return">
<replace-type modified-type="(retval, errorMsg, errorLine, errorColumn)"/>
</modify-argument>
<inject-code class="target" position="beginning"> <inject-code class="target" position="beginning">
<insert-template name="qdomdocument_setcontent" /> <insert-template name="qdomdocument_setcontent" />
</inject-code> </inject-code>
</modify-function> </modify-function>
</value-type> </value-type>
<value-type name="QDomDocumentFragment" /> <value-type name="QDomDocumentFragment">
<value-type name="QDomDocumentType" /> <modify-function signature="nodeType()const" remove="all"/>
<value-type name="QDomEntity" /> <modify-function signature="operator=(QDomDocumentFragment)" remove="all"/>
<value-type name="QDomEntityReference" />
<value-type name="QDomImplementation">
<enum-type name="InvalidDataPolicy"/>
</value-type> </value-type>
<value-type name="QDomNamedNodeMap" /> <value-type name="QDomDocumentType">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(QDomDocumentType)" remove="all"/>
</value-type>
<value-type name="QDomEntity">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(QDomEntity)" remove="all"/>
</value-type>
<value-type name="QDomEntityReference">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(QDomEntityReference)" remove="all"/>
</value-type>
<value-type name="QDomImplementation">
<modify-function signature="operator=(QDomImplementation)" remove="all"/>
</value-type>
<value-type name="QDomNamedNodeMap">
<modify-function signature="operator=(QDomNamedNodeMap)" remove="all"/>
</value-type>
<value-type name="QDomNode"> <value-type name="QDomNode">
<enum-type name="EncodingPolicy"/> <modify-function signature="operator=(QDomNode)" remove="all"/>
<enum-type name="NodeType"/>
<modify-function signature="save(QTextStream&amp;, int)const" allow-thread="yes"/> <modify-function signature="save(QTextStream&amp;, int)const" allow-thread="yes"/>
<modify-function signature="save(QTextStream&amp;, int, QDomNode::EncodingPolicy)const" allow-thread="yes"/> <modify-function signature="save(QTextStream&amp;, int, QDomNode::EncodingPolicy)const" allow-thread="yes"/>
</value-type> </value-type>
<value-type name="QDomNodeList" /> <value-type name="QDomNodeList">
<value-type name="QDomNotation" /> <modify-function signature="operator=(const QDomNodeList &amp;)" remove="all"/>
<value-type name="QDomProcessingInstruction" /> </value-type>
<value-type name="QDomText" /> <value-type name="QDomNotation">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(QDomNotation)" remove="all"/>
</value-type>
<object-type name="QXmlParseException"/> <value-type name="QDomProcessingInstruction">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(QDomProcessingInstruction)" remove="all"/>
</value-type>
<value-type name="QDomText">
<modify-function signature="nodeType()const" remove="all"/>
<modify-function signature="operator=(const QDomText &amp;)" remove="all"/>
</value-type>
<value-type name="QXmlParseException"/>
<!-- These are defined in QtCore
<value-type name="QXmlStreamAttribute"/>
<value-type name="QXmlStreamAttributes"/>
<value-type name="QXmlStreamNamespaceDeclaration"/>
<value-type name="QXmlStreamNotationDeclaration"/>
<value-type name="QXmlStreamEntityDeclaration"/>
-->
<value-type name="QXmlAttributes"/> <value-type name="QXmlAttributes"/>
<!-- FIXME: This needs to be changed to value-type if
QXmlNamespaceSupport is ever passed by value -->
<object-type name="QXmlNamespaceSupport"/> <object-type name="QXmlNamespaceSupport"/>
<value-type name="QDomElement"/> <value-type name="QDomElement"/>
@ -254,8 +272,8 @@
<object-type name="QXmlLexicalHandler"/> <object-type name="QXmlLexicalHandler"/>
<template name="QXmlEntityResolver_resolveEntity_return_conversion_native"> <template name="QXmlEntityResolver_resolveEntity_return_conversion_native">
Shiboken::AutoDecRef _py_ok_(PySequence_GetItem(%PYARG_0, 0)); AutoDecRef _py_ok_(PySequence_GetItem(%PYARG_0, 0));
Shiboken::AutoDecRef _py_ret_(PySequence_GetItem(%PYARG_0, 1)); AutoDecRef _py_ret_(PySequence_GetItem(%PYARG_0, 1));
%RETURN_TYPE %out = %CONVERTTOCPP[%RETURN_TYPE](_py_ok_); %RETURN_TYPE %out = %CONVERTTOCPP[%RETURN_TYPE](_py_ok_);
%3 = %CONVERTTOCPP[QXmlInputSource*](_py_ret_); %3 = %CONVERTTOCPP[QXmlInputSource*](_py_ret_);
</template> </template>
@ -272,13 +290,9 @@
</conversion-rule> </conversion-rule>
</modify-argument> </modify-argument>
<inject-code class="target" position="end"> <inject-code class="target" position="end">
QXmlInputSource* _qxmlinputsource_arg_ = 0; QXmlInputSource* _qxmlinputsource_arg_ = 0;
%BEGIN_ALLOW_THREADS %RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_);
%RETURN_TYPE %0 = %CPPSELF.%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_); %PYARG_0 = Shiboken::makeTuple(%0, _qxmlinputsource_arg_);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QXmlInputSource*](_qxmlinputsource_arg_));
</inject-code> </inject-code>
</modify-function> </modify-function>
</object-type> </object-type>
@ -299,19 +313,23 @@
</conversion-rule> </conversion-rule>
</modify-argument> </modify-argument>
<inject-code class="target" position="end"> <inject-code class="target" position="end">
QXmlInputSource* _qxmlinputsource_arg_ = 0; QXmlInputSource* _qxmlinputsource_arg_ = 0;
%BEGIN_ALLOW_THREADS %RETURN_TYPE %0 = %CPPSELF.%TYPE::%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_);
%RETURN_TYPE %0 = %CPPSELF.%TYPE::%FUNCTION_NAME(%1, %2, _qxmlinputsource_arg_); %PYARG_0 = Shiboken::makeTuple(%0, _qxmlinputsource_arg_);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](%0));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[QXmlInputSource*](_qxmlinputsource_arg_));
</inject-code> </inject-code>
</modify-function> </modify-function>
</object-type> </object-type>
<object-type name="QXmlInputSource"/> <object-type name="QXmlInputSource"/>
<object-type name="QXmlLocator"/> <object-type name="QXmlLocator"/>
<!-- These are defined already in QtCore
<object-type name="QXmlStreamReader">
</object-type>
<object-type name="QXmlStreamWriter">
</object-type>
-->
<object-type name="QXmlReader"> <object-type name="QXmlReader">
<modify-function signature="parse(const QXmlInputSource*)"> <modify-function signature="parse(const QXmlInputSource*)">
<modify-argument index="1" invalidate-after-use="yes"/> <modify-argument index="1" invalidate-after-use="yes"/>
@ -414,5 +432,7 @@
</inject-code> </inject-code>
</modify-function> </modify-function>
</object-type> </object-type>
</typesystem> </typesystem>

View file

@ -1,50 +0,0 @@
project(QtXmlPatterns)
if (${QT_VERSION_MAJOR} EQUAL 4 AND ${QT_VERSION_MINOR} LESS 6)
set(QtXmlPatterns_46_SRC )
else()
set(QtXmlPatterns_46_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlschemavalidator_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlschema_wrapper.cpp
)
endif()
set(QtXmlPatterns_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstractmessagehandler_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstracturiresolver_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstractxmlnodemodel_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qabstractxmlreceiver_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qsourcelocation_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qtxmlpatterns_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlformatter_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlitem_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlnamepool_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlname_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlnodemodelindex_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlquery_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlresultitems_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns/qxmlserializer_wrapper.cpp
${QtXmlPatterns_46_SRC}
)
set(QtXmlPatterns_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}")
set(QtXmlPatterns_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTXMLPATTERNS_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${QtCore_BINARY_DIR}/PySide/QtCore/
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtXmlPatterns)
set(QtXmlPatterns_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_QTXMLPATTERNS_LIBRARY})
set(QtXmlPatterns_deps QtCore)
create_pyside_module(QtXmlPatterns
QtXmlPatterns_include_dirs
QtXmlPatterns_libraries
QtXmlPatterns_deps
QtXmlPatterns_typesystem_path
QtXmlPatterns_SRC
"")

View file

@ -1,101 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.QtXmlPatterns">
<load-typesystem name="typesystem_core.xml" generate="no"/>
<object-type name="QXmlSchema" since="4.6" /> <!-- Qt scoped pointer does not allow declare this as value type -->
<object-type name="QXmlSchemaValidator" since="4.6">
<modify-function signature="schema() const">
<modify-argument index="return">
<replace-type modified-type="QXmlSchema*"/>
<define-ownership owner="target"/>
</modify-argument>
<inject-code>
QXmlSchema* %0 = new QXmlSchema(%CPPSELF.schema());
%PYARG_0 = %CONVERTTOPYTHON[QXmlSchema*](%0);
</inject-code>
</modify-function>
</object-type>
<object-type name="QAbstractMessageHandler" />
<object-type name="QAbstractUriResolver" />
<object-type name="QAbstractXmlNodeModel">
<enum-type name="NodeCopySetting" />
<enum-type name="SimpleAxis" />
</object-type>
<object-type name="QAbstractXmlReceiver" />
<value-type name="QSourceLocation" />
<object-type name="QXmlFormatter" />
<value-type name="QXmlItem" />
<value-type name="QXmlName">
<!-- ### These methods aren't part of Qt public API -->
<modify-function signature="QXmlName(short, short, short)" remove="all" />
<modify-function signature="setNamespaceURI(short)" remove="all" />
<modify-function signature="localName()const" remove="all" />
<modify-function signature="prefix()const" remove="all" />
<modify-function signature="hasPrefix()const" remove="all" />
<modify-function signature="hasNamespace()const" remove="all" />
<modify-function signature="namespaceURI()const" remove="all" />
<modify-function signature="isLexicallyEqual(const QXmlName&amp;)const" remove="all" />
<modify-function signature="setPrefix(short)" remove="all" />
<modify-function signature="setLocalName(short)" remove="all" />
<modify-function signature="code()const" remove="all" />
<!-- ### -->
</value-type>
<value-type name="QXmlNamePool" />
<rejection class="QXmlNodeModelIndex" function-name="type" />
<rejection class="QXmlNodeModelIndex" function-name="sequencedTypedValue" />
<rejection class="QXmlNodeModelIndex" function-name="iterate" />
<!-- ### This enum isn't part of Qt public API -->
<suppress-warning text="enum 'QXmlNodeModelIndex::Axis' does not have a type entry or is not an enum"/>
<value-type name="QXmlNodeModelIndex">
<enum-type name="DocumentOrder" />
<enum-type name="NodeKind" />
<!-- ### Qt internal methods -->
<modify-function signature="name()const" remove="all" />
<modify-function signature="root()const" remove="all" />
<modify-function signature="documentUri()const" remove="all" />
<modify-function signature="baseUri()const" remove="all" />
<modify-function signature="kind()const" remove="all" />
<modify-function signature="isDeepEqual(const QXmlNodeModelIndex&amp;)const" remove="all" />
<modify-function signature="compareOrder(const QXmlNodeModelIndex &amp;)const" remove="all" />
<modify-function signature="sendNamespaces(QAbstractXmlReceiver *)const" remove="all" />
<modify-function signature="namespaceBindings()const" remove="all" />
<modify-function signature="namespaceForPrefix(short)const" remove="all" />
<modify-function signature="stringValue()const" remove="all" />
<modify-function signature="is(const QXmlNodeModelIndex &amp;)const" remove="all" />
<modify-function signature="reset()" remove="all" />
<!-- ### -->
</value-type>
<value-type name="QXmlQuery">
<!-- ### TODO: must evaluate if anything other than removal is needed. -->
<enum-type name="QueryLanguage" />
<modify-function signature="evaluateTo(QStringList*)const" remove="all" />
<modify-function signature="evaluateTo(QString*)const" remove="all" />
<!-- ### -->
</value-type>
<object-type name="QXmlResultItems" />
<object-type name="QXmlSerializer" />
<suppress-warning text="class 'QAbstractXmlNodeModel' inherits from unknown base class 'QSharedData'"/>
<suppress-warning text="class not found for setup inheritance 'QSharedData'"/>
</typesystem>

1
PySide/__init__.py Normal file
View file

@ -0,0 +1 @@
__all__ = ['QtCore', 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKit']

View file

@ -1,3 +0,0 @@
__all__ = ['QtCore', 'QtGui', 'QtNetwork', 'QtOpenGL', 'QtSql', 'QtSvg', 'QtTest', 'QtWebKit', 'QtScript']
__version__ = "@BINDING_API_VERSION_FULL@"
__version_info__ = (@BINDING_API_MAJOR_VERSION@, @BINDING_API_MINOR_VERSION@, @BINDING_API_MICRO_VERSION@, "@BINDING_API_RELEASE_LEVEL@", @BINDING_API_SERIAL@)

1168
PySide/global.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
/* /*
* This file is part of PySide: Python for Qt * This file is part of PySide: Python for Qt
* *
* Copyright (C) 2009-2011 Nokia Corporation and/or its subsidiary(-ies). * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
* *
* Contact: PySide team <contact@pyside.org> * Contact: PySide team <contact@pyside.org>
* *

View file

@ -1,78 +0,0 @@
project(phonon)
# workaround for a cmake bug under MacOSX, it finds phonon but not the include path
if (NOT QT_PHONON_INCLUDE_DIR AND CMAKE_HOST_APPLE)
set(QT_PHONON_INCLUDE_DIR "${QT_LIBRARY_DIR}/phonon.framework/Headers")
endif ()
set(phonon_OPTIONAL_SRC )
set(phonon_DROPPED_ENTRIES )
check_qt_class(phonon VideoCaptureDevice phonon_OPTIONAL_SRC phonon_DROPPED_ENTRIES Phonon ObjectDescription)
set(phonon_SRC
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_abstractaudiooutput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_abstractmediastream_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_abstractvideooutput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_addoninterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_audiocapturedevice_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_audiochanneldescription_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_audiooutputdevicemodel_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_audiooutputdevice_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_audiooutput_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_backendcapabilities_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_backendinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_effectdescriptionmodel_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_effectdescription_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_effectinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_effectparameter_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_effectwidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_effect_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_mediacontroller_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_medianode_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_mediaobjectinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_mediaobject_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_mediasource_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_module_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_path_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_platformplugin_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_seekslider_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_streaminterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_subtitledescription_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_videoplayer_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_videowidgetinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_videowidget_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_volumefadereffect_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_volumefaderinterface_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_volumeslider_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon/phonon_backendcapabilities_notifierwrapper_wrapper.cpp
${phonon_OPTIONAL_SRC}
)
set(phonon_typesystem_path "${QtCore_SOURCE_DIR}${PATH_SEP}${QtCore_BINARY_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${phonon_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}")
set(phonon_include_dirs ${CMAKE_CURRENT_SOURCE_DIR}
${QT_QTCORE_INCLUDE_DIR}
${QT_QTGUI_INCLUDE_DIR}
${QT_PHONON_INCLUDE_DIR}
${SHIBOKEN_PYTHON_INCLUDE_DIR}
${SHIBOKEN_INCLUDE_DIR}
${libpyside_SOURCE_DIR}
${QtGui_BINARY_DIR}/PySide/QtGui/
${QtCore_BINARY_DIR}/PySide/QtCore/
${CMAKE_CURRENT_BINARY_DIR}/PySide/phonon)
set(phonon_libraries pyside
${SHIBOKEN_PYTHON_LIBRARIES}
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
${QT_PHONON_LIBRARY})
set(phonon_deps QtGui)
create_pyside_module(phonon
phonon_include_dirs
phonon_libraries
phonon_deps
phonon_typesystem_path
phonon_SRC
""
""
phonon_DROPPED_ENTRIES)

View file

@ -1,39 +0,0 @@
#ifndef PYSIDE_PHONON
#define PYSIDE_PHONON
#include <QObject>
#include <phonon/backendcapabilities.h>
namespace Phonon
{
namespace BackendCapabilities
{
class NotifierWrapper : public QObject
{
public:
inline static NotifierWrapper* notifier() {
Notifier* notifier = BackendCapabilities::notifier();
if (notifier != m_notifier) {
delete m_instance;
m_instance = new NotifierWrapper(notifier);
}
return m_instance;
}
inline const QMetaObject* metaObject() const { return m_notifier->metaObject(); }
private:
static NotifierWrapper* m_instance;
static Notifier* m_notifier;
NotifierWrapper(Notifier* notifier) { m_notifier = notifier; }
NotifierWrapper() {}
};
}
}
#endif

View file

@ -1,315 +0,0 @@
<?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem package="PySide.phonon">
<load-typesystem name="typesystem_gui.xml" generate="no" />
<rejection class="Phonon::ObjectDescriptionData"/>
<rejection class="Phonon::ObjectDescriptionModelData"/>
<rejection class="Phonon::MediaNodeDestructionHandler"/>
<rejection class="Phonon::GlobalConfig"/>
<rejection class="Phonon::IODeviceStream"/>
<rejection class="Phonon::Factory"/>
<rejection class="Phonon::Experimental"/>
<rejection class="AudioOutputAdaptor"/>
<rejection class="Phonon::BackendCapabilities::Notifier"/>
<rejection class="*" field-name="k_ptr"/>
<rejection class="*" field-name="k_func"/>
<namespace-type name="Phonon">
<extra-includes>
<include file-name="phononnamespace.h" location="global"/>
</extra-includes>
<namespace-type name="BackendCapabilities" >
<inject-code class="native">
Phonon::BackendCapabilities::NotifierWrapper* Phonon::BackendCapabilities::NotifierWrapper::m_instance = 0;
Phonon::BackendCapabilities::Notifier* Phonon::BackendCapabilities::NotifierWrapper::m_notifier = 0;
</inject-code>
<add-function signature="notifier()" return-type="Phonon::BackendCapabilities::NotifierWrapper">
<inject-code class="target">
Phonon::BackendCapabilities::NotifierWrapper *_notifierWrapper = Phonon::BackendCapabilities::NotifierWrapper::notifier();
%PYARG_0 = %CONVERTTOPYTHON[Phonon::BackendCapabilities::NotifierWrapper*](_notifierWrapper);
</inject-code>
</add-function>
<!-- ### causes moc-related linker error -->
<!-- <object-type name="Notifier"/> -->
<object-type name="NotifierWrapper" target-lang-name="Notifier">
<inject-documentation format="target" mode="append">
.. class: Notifier
Notifications about backend capabilities
.. method:: capabilitiesChanged()
This signal is emitted if the capabilities have changed. This can happen if the user has requested a backend change.
.. method:: availableAudioOutputDevicesChanged()
This signal is emitted when audio capture devices were plugged or unplugged.
Check :meth:`PySide.phonon.BackendCapabilities.availableAudioOutputDevices` to get the current list of available devices.
.. method:: availableAudioCaptureDevicesChanged()
This signal is emitted when audio capture devices were plugged or unplugged.
Check :meth:`PySide.phonon.BackendCapabilities.availableAudioCaptureDevices` to get the current list of available devices.
</inject-documentation>
<include file-name="backendcapabilities.h" location="global"/>
<include file-name="pyside_phonon.h" location="local"/>
<!-- ### This isn't part of Qt public API -->
<modify-function signature="notifier()" remove="all"/>
<modify-function signature="Phonon::BackendCapabilities::NotifierWrapper(Phonon::BackendCapabilities::Notifier*)">
<access modifier="private"/>
</modify-function>
<!-- ### -->
<inject-code class="target" position="end">
PySideSignal* signal_item;
signal_item = PySide::Signal::newObject("capabilitiesChanged", "void", NULL);
PyDict_SetItemString(Sbk_Phonon_BackendCapabilities_NotifierWrapper_Type.super.ht_type.tp_dict, "capabilitiesChanged", (PyObject*)signal_item);
Py_DECREF((PyObject*)signal_item);
signal_item = PySide::Signal::newObject("availableAudioOutputDevicesChanged", "void", NULL);
PyDict_SetItemString( Sbk_Phonon_BackendCapabilities_NotifierWrapper_Type.super.ht_type.tp_dict, "availableAudioOutputDevicesChanged", (PyObject*)signal_item);
Py_DECREF((PyObject*)signal_item);
</inject-code>
</object-type>
</namespace-type>
<enum-type name="Category" />
<enum-type name="DiscType"/>
<enum-type name="ErrorType"/>
<enum-type name="MetaData"/>
<enum-type name="ObjectDescriptionType"/>
<enum-type name="State"/>
<enum-type name="CaptureCategory"/>
<object-type name="AbstractVideoOutput"/>
<object-type name="AddonInterface">
<enum-type name="AngleCommand"/>
<enum-type name="AudioChannelCommand"/>
<enum-type name="ChapterCommand"/>
<enum-type name="Interface"/>
<enum-type name="NavigationCommand"/>
<enum-type name="SubtitleCommand"/>
<enum-type name="TitleCommand"/>
</object-type>
<object-type name="BackendInterface">
<enum-type name="Class"/>
</object-type>
<object-type name="EffectInterface"/>
<object-type name="MediaNode"/>
<object-type name="MediaObjectInterface"/>
<object-type name="PlatformPlugin"/>
<object-type name="StreamInterface"/>
<object-type name="VideoWidgetInterface"/>
<object-type name="VolumeFaderInterface"/>
<value-type name="EffectParameter">
<enum-type name="Hint" flags="Hints"/>
<!-- ### Internal methods and ctors -->
<modify-function signature="EffectParameter()" remove="all"/>
<modify-function signature="operator&lt;(const Phonon::EffectParameter &amp;)const" remove="all"/>
<modify-function signature="operator&gt;(const Phonon::EffectParameter &amp;)const" remove="all"/>
<modify-function signature="id()const" remove="all"/>
<modify-function signature="operator==(Phonon::EffectParameter)const" remove="all"/>
<!-- ### -->
</value-type>
<value-type name="MediaSource">
<enum-type name="Type"/>
</value-type>
<value-type name="Path">
<modify-function signature="disconnect()" rename="disconnectPath"/>
<modify-function signature="insertEffect(Phonon::EffectDescription,Phonon::Effect*)">
<modify-argument index="1">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="insertEffect(Phonon::Effect*,Phonon::Effect*)">
<modify-argument index="1">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
<modify-function signature="removeEffect(Phonon::Effect*)">
<modify-argument index="1">
<parent index="this" action="remove"/>
</modify-argument>
</modify-function>
<modify-function signature="sink() const">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
<modify-function signature="source() const">
<modify-argument index="return">
<define-ownership class="target" owner="default"/>
</modify-argument>
</modify-function>
</value-type>
<value-type name="ObjectDescription" generate="no"/>
<value-type name="EffectDescription">
<modify-function signature="operator==(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::EffectDescription"/>
</modify-argument>
</modify-function>
<modify-function signature="operator!=(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::EffectDescription"/>
</modify-argument>
</modify-function>
<modify-function signature="fromIndex(int)">
<modify-argument index="return">
<replace-type modified-type="EffectDescription"/>
</modify-argument>
</modify-function>
</value-type>
<value-type name="AudioOutputDevice">
<modify-function signature="operator==(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::AudioOutputDevice"/>
</modify-argument>
</modify-function>
<modify-function signature="operator!=(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::AudioOutputDevice"/>
</modify-argument>
</modify-function>
<modify-function signature="fromIndex(int)">
<modify-argument index="return">
<replace-type modified-type="AudioOutputDevice"/>
</modify-argument>
</modify-function>
</value-type>
<value-type name="AudioCaptureDevice">
<modify-function signature="operator==(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::AudioCaptureDevice"/>
</modify-argument>
</modify-function>
<modify-function signature="operator!=(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::AudioCaptureDevice"/>
</modify-argument>
</modify-function>
<modify-function signature="fromIndex(int)">
<modify-argument index="return">
<replace-type modified-type="AudioCaptureDevice"/>
</modify-argument>
</modify-function>
</value-type>
<value-type name="AudioChannelDescription">
<modify-function signature="operator==(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::AudioChannelDescription"/>
</modify-argument>
</modify-function>
<modify-function signature="operator!=(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::AudioChannelDescription"/>
</modify-argument>
</modify-function>
<modify-function signature="fromIndex(int)">
<modify-argument index="return">
<replace-type modified-type="AudioChannelDescription"/>
</modify-argument>
</modify-function>
</value-type>
<value-type name="SubtitleDescription">
<modify-function signature="operator==(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::SubtitleDescription"/>
</modify-argument>
</modify-function>
<modify-function signature="operator!=(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::SubtitleDescription"/>
</modify-argument>
</modify-function>
<modify-function signature="fromIndex(int)">
<modify-argument index="return">
<replace-type modified-type="SubtitleDescription"/>
</modify-argument>
</modify-function>
</value-type>
<object-type name="ObjectDescriptionModel" generate="no"/>
<object-type name="EffectDescriptionModel" />
<object-type name="AudioOutputDeviceModel" />
<object-type name="AbstractAudioOutput"/>
<object-type name="AbstractMediaStream"/>
<object-type name="AudioOutput"/>
<object-type name="Effect"/>
<object-type name="EffectWidget"/>
<object-type name="MediaController">
<enum-type name="Feature" flags="Features"/>
<enum-type name="NavigationMenu"/>
</object-type>
<object-type name="MediaObject" />
<object-type name="SeekSlider">
<modify-function signature="setMediaObject(Phonon::MediaObject*)">
<modify-argument index="1">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
</object-type>
<object-type name="VideoPlayer"/>
<object-type name="VideoWidget">
<enum-type name="AspectRatio"/>
<enum-type name="ScaleMode"/>
</object-type>
<object-type name="VolumeFaderEffect">
<enum-type name="FadeCurve"/>
</object-type>
<object-type name="VolumeSlider">
<modify-function signature="setAudioOutput(Phonon::AudioOutput*)">
<modify-argument index="1">
<parent index="this" action="add"/>
</modify-argument>
</modify-function>
</object-type>
<!-- ### The following entries may be present in the system or not. Keep this section organized. -->
<value-type name="VideoCaptureDevice">
<modify-function signature="operator==(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::VideoCaptureDevice" />
</modify-argument>
</modify-function>
<modify-function signature="operator!=(Phonon::ObjectDescription)const">
<modify-argument index="1">
<replace-type modified-type="Phonon::VideoCaptureDevice"/>
</modify-argument>
</modify-function>
<modify-function signature="fromIndex(int)">
<modify-argument index="return">
<replace-type modified-type="VideoCaptureDevice"/>
</modify-argument>
</modify-function>
</value-type>
<!-- ### -->
</namespace-type>
</typesystem>

View file

@ -1,147 +0,0 @@
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** This file is part of the QtTest module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial Usage
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Nokia gives you certain additional
** rights. These rights are described in the Nokia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
** If you have questions regarding the use of this file, please contact
** Nokia at qt-info@nokia.com.
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef PYSIDEQTESTTOUCH_H
#define PYSIDEQTESTTOUCH_H
#include <QtTest/qtest_global.h>
#include <QtTest/qtestassert.h>
#include <QtTest/qtestsystem.h>
#include <QtTest/qtestspontaneevent.h>
#include <QtTest/qtesttouch.h>
#include <QtCore/qmap.h>
#include <QtGui/qevent.h>
#include <QtGui/qwidget.h>
QT_BEGIN_NAMESPACE
namespace QTest
{
class PySideQTouchEventSequence
{
public:
~PySideQTouchEventSequence()
{
commit();
}
PySideQTouchEventSequence* press(int touchId, const QPoint &pt, QWidget *widget = 0)
{
QTouchEvent::TouchPoint &p = point(touchId);
p.setScreenPos(mapToScreen(widget, pt));
p.setState(Qt::TouchPointPressed);
return this;
}
PySideQTouchEventSequence* move(int touchId, const QPoint &pt, QWidget *widget = 0)
{
QTouchEvent::TouchPoint &p = point(touchId);
p.setScreenPos(mapToScreen(widget, pt));
p.setState(Qt::TouchPointMoved);
return this;
}
PySideQTouchEventSequence* release(int touchId, const QPoint &pt, QWidget *widget = 0)
{
QTouchEvent::TouchPoint &p = point(touchId);
p.setScreenPos(mapToScreen(widget, pt));
p.setState(Qt::TouchPointReleased);
return this;
}
PySideQTouchEventSequence* stationary(int touchId)
{
QTouchEvent::TouchPoint &p = point(touchId);
p.setState(Qt::TouchPointStationary);
return this;
}
void commit()
{
qt_translateRawTouchEvent(targetWidget, deviceType, points.values());
targetWidget = 0;
points.clear();
}
private:
PySideQTouchEventSequence(QWidget *widget, QTouchEvent::DeviceType aDeviceType)
: targetWidget(widget), deviceType(aDeviceType)
{
}
PySideQTouchEventSequence(const PySideQTouchEventSequence &v);
void operator=(const PySideQTouchEventSequence&);
QTouchEvent::TouchPoint &point(int touchId)
{
if (!points.contains(touchId))
points[touchId] = QTouchEvent::TouchPoint(touchId);
return points[touchId];
}
QPoint mapToScreen(QWidget *widget, const QPoint &pt)
{
if (widget)
return widget->mapToGlobal(pt);
return targetWidget ? targetWidget->mapToGlobal(pt) : pt;
}
QMap<int, QTouchEvent::TouchPoint> points;
QWidget *targetWidget;
QTouchEvent::DeviceType deviceType;
friend PySideQTouchEventSequence* generateTouchEvent(QWidget *, QTouchEvent::DeviceType);
};
inline
PySideQTouchEventSequence* generateTouchEvent(QWidget *widget = 0,
QTouchEvent::DeviceType deviceType = QTouchEvent::TouchScreen)
{
return new PySideQTouchEventSequence(widget, deviceType);
}
}
QT_END_NAMESPACE
#endif // PYSIDEQTESTTOUCH_H

View file

@ -1,27 +0,0 @@
#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

View file

@ -1,9 +1,16 @@
/**************************************************************************** /****************************************************************************
** **
** Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
** Contact: Qt Software Information (qt-info@nokia.com)
** **
** This file is part of the QtCore module of the Qt Toolkit, plus some ** This file is part of the QtCore module of the Qt Toolkit.
** modifications by PySide team. **
** $QT_BEGIN_LICENSE:LGPL$
** Commercial Usage
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
** **
** GNU Lesser General Public License Usage ** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser ** Alternatively, this file may be used under the terms of the GNU Lesser
@ -13,16 +20,29 @@
** ensure the GNU Lesser General Public License version 2.1 requirements ** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
** **
** In addition, as a special exception, Nokia gives you certain
** additional rights. These rights are described in the Nokia Qt LGPL
** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
** package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
** If you are unsure which license is appropriate for your use, please ** If you are unsure which license is appropriate for your use, please
** contact the sales department at qt-sales@nokia.com. ** contact the sales department at qt-sales@nokia.com.
** $QT_END_LICENSE$
** **
****************************************************************************/ ****************************************************************************/
#undef QT_NO_STL #ifndef QOBJECTDEFS_PYSIDE_H
#undef QT_NO_STL_WCHAR #define QOBJECTDEFS_PYSIDE_H
#define Q_BYTE_ORDER // used to enable QSysInfo.Endian detection on MacOSX
#include "@QT_QTCORE_INCLUDE_DIR@/qnamespace.h" #include <QtCore/qnamespace.h>
QT_BEGIN_HEADER QT_BEGIN_HEADER
@ -312,108 +332,4 @@ QT_END_NAMESPACE
QT_END_HEADER QT_END_HEADER
#define qdoc #endif // QOBJECTDEFS_H
#if @ENABLE_X11@
#define Q_WS_X11
#elif @ENABLE_MAC@
#define Q_WS_MAC
#elif @ENABLE_WIN@
#include "pysidewtypes.h"
#define Q_WS_WIN
#elif @ENABLE_SIMULATOR@
#define Q_WS_SIMULATOR
#endif
// There are symbols in Qt that exist in Debug but
// not in release
#define QT_NO_DEBUG
#include "@QT_QTCORE_INCLUDE_DIR@/QtCore"
#if @ENABLE_MAC@ || @ENABLE_WIN@
// Workaround to parse the QApplication header
#define Q_INTERNAL_QAPP_SRC
#undef qdoc
#endif
#include "@QT_QTGUI_INCLUDE_DIR@/QtGui"
#include "qpytextobject.h" // PySide class
#if @ENABLE_X11@
#include "@QT_QTGUI_INCLUDE_DIR@/QX11Info"
#include "@QT_QTGUI_INCLUDE_DIR@/QX11EmbedContainer"
#include "@QT_QTGUI_INCLUDE_DIR@/QX11EmbedWidget"
#elif @ENABLE_MAC@
#include "@QT_QTGUI_INCLUDE_DIR@/qmacstyle_mac.h"
#endif
#include "@QT_QTXML_INCLUDE_DIR@/QtXml"
#include "@QT_QTUITOOLS_INCLUDE_DIR@/QtUiTools"
#include "@QT_QTNETWORK_INCLUDE_DIR@/QtNetwork"
#include "@QT_QTSCRIPT_INCLUDE_DIR@/QtScript"
#include "@QT_QTSCRIPTTOOLS_INCLUDE_DIR@/QtScriptTools"
#include "@QT_QTMULTIMEDIA_INCLUDE_DIR@/QtMultimedia"
#include <QtMaemo5/QtMaemo5>
#include "@QT_QTDECLARATIVE_INCLUDE_DIR@/QtDeclarative"
// QT_GUI_LIB must be defined to QSqlRelationalDelegate become visible
#define QT_GUI_LIB
#undef Q_DECLARE_INTERFACE
#include "@QT_QTSQL_INCLUDE_DIR@/QtSql"
#include "@QT_QTSVG_INCLUDE_DIR@/QtSvg"
#if @QT_QTXMLPATTERNS_FOUND@
# include "@QT_QTXMLPATTERNS_INCLUDE_DIR@/QtXmlPatterns"
#endif
#if @QT_QTWEBKIT_FOUND@
# include "@QT_QTWEBKIT_INCLUDE_DIR@/QtWebKit"
#endif
#if @QT_QTTEST_FOUND@
# include "@QT_QTTEST_INCLUDE_DIR@/QtTest"
#if @QT_VERSION_MINOR@ > 5
# include "pysideqtesttouch.h"
#endif
#endif
// Phonon
#include "phonon/pyside_phonon.h"
#include "@QT_PHONON_INCLUDE_DIR@/abstractaudiooutput.h"
#include "@QT_PHONON_INCLUDE_DIR@/abstractmediastream.h"
#include "@QT_PHONON_INCLUDE_DIR@/abstractvideooutput.h"
#include "@QT_PHONON_INCLUDE_DIR@/addoninterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/audiooutput.h"
#include "@QT_PHONON_INCLUDE_DIR@/audiooutputinterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/backendcapabilities.h"
#include "@QT_PHONON_INCLUDE_DIR@/backendinterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/effect.h"
#include "@QT_PHONON_INCLUDE_DIR@/effectinterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/effectparameter.h"
#include "@QT_PHONON_INCLUDE_DIR@/effectwidget.h"
#include "@QT_PHONON_INCLUDE_DIR@/mediacontroller.h"
#include "@QT_PHONON_INCLUDE_DIR@/medianode.h"
#include "@QT_PHONON_INCLUDE_DIR@/mediaobject.h"
#include "@QT_PHONON_INCLUDE_DIR@/mediaobjectinterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/mediasource.h"
#include "@QT_PHONON_INCLUDE_DIR@/objectdescription.h"
#include "@QT_PHONON_INCLUDE_DIR@/objectdescriptionmodel.h"
#include "@QT_PHONON_INCLUDE_DIR@/path.h"
#include "@QT_PHONON_INCLUDE_DIR@/phonon_export.h"
#include "@QT_PHONON_INCLUDE_DIR@/phonondefs.h"
#include "@QT_PHONON_INCLUDE_DIR@/phononnamespace.h"
#include "@QT_PHONON_INCLUDE_DIR@/platformplugin.h"
#include "@QT_PHONON_INCLUDE_DIR@/seekslider.h"
#include "@QT_PHONON_INCLUDE_DIR@/streaminterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/videoplayer.h"
#include "@QT_PHONON_INCLUDE_DIR@/videowidget.h"
#include "@QT_PHONON_INCLUDE_DIR@/videowidgetinterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/volumefadereffect.h"
#include "@QT_PHONON_INCLUDE_DIR@/volumefaderinterface.h"
#include "@QT_PHONON_INCLUDE_DIR@/volumeslider.h"
//QtHelp need be included after QtSql
#include "@QT_QTHELP_INCLUDE_DIR@/QtHelp"
#ifndef QT_NO_OPENGL
#include <@GL_H@>
#include <@QT_QTOPENGL_INCLUDE_DIR@/QtOpenGL>
#endif // QT_NO_OPENGL

View file

@ -1,33 +0,0 @@
/*
* This file is part of the PySide project.
*
* Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
*
* Contact: PySide team <contact@pyside.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "qpytextobject.h"
/*!
\class QPyTextObject
\brief Workaround to make possible use QTextObjectInterface on PySide.
\ingroup richtext-processing
Due to the technical details of how to bind C++ classes to Python, you need to use this class when you need to implement
your own QTextObjectInterface rather than create a class inheriting from QObject and QTextObjectInterface.
\sa QTextObjectInterface
*/

View file

@ -1,40 +0,0 @@
/*
* This file is part of the PySide project.
*
* Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
*
* Contact: PySide team <contact@pyside.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef QPYTEXTOBJECT
#define QPYTEXTOBJECT
#include <QObject>
#include <QTextObjectInterface>
class QPyTextObject : public QObject, public QTextObjectInterface
{
Q_OBJECT
Q_INTERFACES(QTextObjectInterface)
public:
QPyTextObject(QObject* parent = 0) : QObject(parent) {}
void drawObject(QPainter* painter, const QRectF& rect, QTextDocument* doc, int posInDocument, const QTextFormat& format ) = 0;
QSizeF intrinsicSize(QTextDocument* doc, int posInDocument, const QTextFormat& format ) = 0;
};
#endif

View file

@ -1,109 +1,50 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<!--
This file is part of PySide project.
Copyright (C) 2009-2010 Nokia Corporation and/or its subsidiary(-ies).
Contact: PySide team <contact@pyside.org>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-->
<typesystem> <typesystem>
<template name="replace_child">
$CHILD_TYPE* oldChild = %CPPSELF.$FUNCTION_GET_OLD();
if (oldChild &amp;&amp; (oldChild != $CPPARG)) {
Shiboken::AutoDecRef pyChild(%CONVERTTOPYTHON[$CHILD_TYPE*](oldChild));
Shiboken::Object::setParent(0, pyChild);
Shiboken::Object::releaseOwnership(pyChild);
}
Shiboken::Object::setParent(%PYSELF, $PYARG);
</template>
<!-- Templates to fix bool* parameters --> <!-- Templates to fix bool* parameters -->
<template name="tuple_retval_ok">
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[bool](ok_));
</template>
<template name="fix_bool*"> <template name="fix_bool*">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_args,bool*"> <template name="fix_args,bool*">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;ok_); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;ok_);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_arg,bool*,arg"> <template name="fix_arg,bool*,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_, %3); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, &amp;ok_, %3);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_bool*,arg"> <template name="fix_bool*,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_bool*,arg,arg"> <template name="fix_bool*,arg,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_bool*,arg,arg,arg"> <template name="fix_bool*,arg,arg,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3, %4); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3, %4);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template>
<template name="fix_bool*,arg,arg,arg,arg">
bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;ok_, %2, %3, %4, %5);
%END_ALLOW_THREADS
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg"> <template name="fix_arg,arg,arg,arg,arg,arg,arg,bool*,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &amp;ok_, %9); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, %7, &amp;ok_, %9);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg"> <template name="fix_arg,arg,arg,arg,arg,arg,bool*,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, &amp;ok_, %8); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, %6, &amp;ok_, %8);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="fix_arg,arg,arg,arg,arg,bool*,arg"> <template name="fix_arg,arg,arg,arg,arg,bool*,arg">
bool ok_; bool ok_;
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &amp;ok_, %7); %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, %5, &amp;ok_, %7);
%END_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(retval_, ok_);
<insert-template name="tuple_retval_ok"/>
</template> </template>
<template name="get_slice"> <template name="get_slice">
%TYPE* sequence; %TYPE* sequence;
@ -133,296 +74,64 @@
<template name="fix_args,QRectF*"> <template name="fix_args,QRectF*">
QRectF rect_; QRectF rect_;
%BEGIN_ALLOW_THREADS
%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_); %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_);
%END_ALLOW_THREADS
%PYARG_0 = %CONVERTTOPYTHON[QRectF](rect_); %PYARG_0 = %CONVERTTOPYTHON[QRectF](rect_);
</template> </template>
<template name="fix_args,QRect*"> <template name="fix_args,QRect*">
QRect rect_; QRect rect_;
%BEGIN_ALLOW_THREADS
%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_); %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;rect_);
%END_ALLOW_THREADS
%PYARG_0 = %CONVERTTOPYTHON[QRect](rect_); %PYARG_0 = %CONVERTTOPYTHON[QRect](rect_);
</template> </template>
<template name="fix_char*"> <template name="fix_char*">
char val_; char val_;
%BEGIN_ALLOW_THREADS %RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;val_);
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(&amp;val_); %PYARG_0 = Shiboken::makeTuple(retval_, val_);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[char](val_));
</template> </template>
<template name="tuple_abcd_same_type"> <template name="fix_int*,int*,int*,int*">
%PYARG_0 = PyTuple_New(4); int a, b, c, d;
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a)); %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d);
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b)); %PYARG_0 = Shiboken::makeTuple(a, b, c, d);
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[$TYPE](c));
PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[$TYPE](d));
</template> </template>
<template name="fix_number*,number*,number*,number*"> <template name="fix_qreal*,qreal*,qreal*,qreal*">
$TYPE a, b, c, d; qreal a, b, c, d;
%BEGIN_ALLOW_THREADS %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d);
%CPPSELF->::%TYPE::%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d); %PYARG_0 = Shiboken::makeTuple(a, b, c, d);
%END_ALLOW_THREADS
<insert-template name="tuple_abcd_same_type"/>
</template>
<template name="fix_number*,number*,number*,number*,args">
$TYPE a, b, c, d;
%BEGIN_ALLOW_THREADS
%CPPSELF->::%TYPE::%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, %ARGUMENT_NAMES);
%END_ALLOW_THREADS
<insert-template name="tuple_abcd_same_type"/>
</template> </template>
<template name="fix_native_return_number*,number*,number*,number*"> <template name="fix_int*,int*,int*,int*,int*">
PyObject* _obj = %PYARG_0.object(); int a, b, c, d, e;
if (!PySequence_Check(_obj) %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, &amp;e);
|| PySequence_Fast_GET_SIZE(_obj) != 4 %PYARG_0 = Shiboken::makeTuple(a, b, c, d, e);
|| !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 0))
|| !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 1))
|| !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 2))
|| !SbkNumber_Check(PySequence_Fast_GET_ITEM(_obj, 3))) {
PyErr_SetString(PyExc_TypeError, "Sequence of 4 numbers expected");
} else {
*%1 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 0));
*%2 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 1));
*%3 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 2));
*%4 = %CONVERTTOCPP[$TYPE](PySequence_Fast_GET_ITEM(_obj, 3));
}
</template> </template>
<template name="fix_qreal*,qreal*,qreal*,qreal*,qreal*">
<template name="fix_number*,number*,number*,number*,number*"> qreal a, b, c, d, e;
$TYPE a, b, c, d, e; %CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, &amp;e);
%BEGIN_ALLOW_THREADS %PYARG_0 = Shiboken::makeTuple(a, b, c, d, e);
%CPPSELF.%FUNCTION_NAME(&amp;a, &amp;b, &amp;c, &amp;d, &amp;e);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(5);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[$TYPE](c));
PyTuple_SET_ITEM(%PYARG_0, 3, %CONVERTTOPYTHON[$TYPE](d));
PyTuple_SET_ITEM(%PYARG_0, 4, %CONVERTTOPYTHON[$TYPE](e));
</template> </template>
<template name="read_wrapper"> <template name="read_wrapper">
Shiboken::AutoArrayPointer&lt;char&gt; _data(%2); char _data[%2];
qint64 _size = %CPPSELF.%FUNCTION_NAME(_data, %2); qint64 _size = %CPPSELF.%FUNCTION_NAME(_data, %2);
QByteArray ba;
if (_size > 0) if (_size > 0)
ba = QByteArray(_data, _size); %PYARG_0 = %CONVERTTOPYTHON[QByteArray](QByteArray(_data, _size));
%PYARG_0 = %CONVERTTOPYTHON[QByteArray](ba); else
%PYARG_0 = %CONVERTTOPYTHON[QByteArray](QByteArray());
</template> </template>
<template name="fix_return_args,int*">
<template name="fix_args,number*,number*"> RETURNTYPE _ret;
$TYPE a, b; int _arg;
%BEGIN_ALLOW_THREADS _ret = %CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;_arg);
%CPPSELF.%FUNCTION_NAME(%ARGUMENT_NAMES, &amp;a, &amp;b); %PYARG_0 = Shiboken::makeTuple(_ret, _arg);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[$TYPE](a));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[$TYPE](b));
</template> </template>
<template name="fix_virtual_method_return_value_and_bool*"> <template name="fix_virtual_method_return_value_and_bool*">
Shiboken::AutoDecRef _py_ret_(PySequence_GetItem(%PYARG_0, 0)); AutoDecRef _py_ret_(PySequence_GetItem(%PYARG_0, 0));
Shiboken::AutoDecRef _py_ok_(PySequence_GetItem(%PYARG_0, 1)); AutoDecRef _py_ok_(PySequence_GetItem(%PYARG_0, 1));
%RETURN_TYPE %out = %CONVERTTOCPP[%RETURN_TYPE](_py_ret_); %RETURN_TYPE %out = %CONVERTTOCPP[%RETURN_TYPE](_py_ret_);
*%2 = %CONVERTTOCPP[bool](_py_ok_); *%2 = %CONVERTTOCPP[bool](_py_ok_);
</template> </template>
<template name="fix_arg,int*,int*">
%RETURN_TYPE _ret;
int a, b;
%BEGIN_ALLOW_THREADS
_ret = %CPPSELF.%FUNCTION_NAME(%1, &amp;a, &amp;b);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(3);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](_ret));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[int](a));
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[int](b));
</template>
<template name="return_QString">
%PYARG_0 = %CONVERTTOPYTHON[QString](%1);
</template>
<template name="return_tuple_QValidator_QString_int">
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %RETURN_TYPE(%CPPSELF.%FUNCTION_NAME(%1, %2));
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(3);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG1_TYPE](%1));
PyTuple_SET_ITEM(%PYARG_0, 2, %CONVERTTOPYTHON[%ARG2_TYPE](%2));
</template>
<template name="return_for_QFileDialog">
%BEGIN_ALLOW_THREADS
%RETURN_TYPE retval_ = %CPPSELF.%FUNCTION_NAME(%1, %2, %3, %4, &amp;%5, %6);
%END_ALLOW_THREADS
%PYARG_0 = PyTuple_New(2);
PyTuple_SET_ITEM(%PYARG_0, 0, %CONVERTTOPYTHON[%RETURN_TYPE](retval_));
PyTuple_SET_ITEM(%PYARG_0, 1, %CONVERTTOPYTHON[%ARG5_TYPE](%5));
</template>
<template name="set_qapp_parent_for_orphan">
if (%PYARG_0 &amp;&amp; (%PYARG_0 != Py_None)) {
SbkObject* _pySelf = reinterpret_cast&lt;SbkObject*&gt;(%PYARG_0);
if (!Shiboken::Object::hasParentInfo(_pySelf))
Shiboken::Object::setParent(%CONVERTTOPYTHON[QApplication*](qApp), %PYARG_0);
}
</template>
<!-- templates for __repr__ -->
<template name="repr_code">
QString format = QString().sprintf("%s(%REPR_FORMAT)", ((PyObject*)%PYSELF)->ob_type->tp_name, %REPR_ARGS);
%PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
</template>
<template name="repr_code_matrix">
QString format= QString("%1((").arg(((PyObject*)%PYSELF)->ob_type->tp_name);
QList&lt; %MATRIX_TYPE &gt; cppArgs;
%MATRIX_TYPE data[%MATRIX_SIZE];
%CPPSELF.copyDataTo(data);
int matrixSize = %MATRIX_SIZE;
for(int size=0; size &lt; matrixSize; size++) {
if (size > 0)
format += ", ";
format += QString::number(data[size]);
}
format += "))";
%PYARG_0 = Shiboken::String::fromCString(qPrintable(format));
</template>
<template name="return_internal_pointer">
%PYARG_0 = reinterpret_cast&lt;PyObject*>(%CPPSELF.%FUNCTION_NAME());
if (!%PYARG_0)
%PYARG_0 = Py_None;
Py_INCREF(%PYARG_0);
</template>
<!-- templates for __reduce__ -->
<template name="reduce_code">
%PYARG_0 = Py_BuildValue("(N(%REDUCE_FORMAT))", PyObject_Type(%PYSELF), %REDUCE_ARGS);
</template>
<template name="reduce_code_matrix">
QList&lt; %MATRIX_TYPE &gt; cppArgs;
%MATRIX_TYPE data[%MATRIX_SIZE];
%CPPSELF.copyDataTo(data);
int matrixSize = %MATRIX_SIZE;
for(int size=0; size &lt; matrixSize; size++)
cppArgs.append(data[size]);
PyObject *type = PyObject_Type(%PYSELF);
PyObject *args = Py_BuildValue("(N)", %CONVERTTOPYTHON[QList&lt;%MATRIX_TYPE&gt; ](cppArgs));
%PYARG_0 = Py_BuildValue("(NN)", type, args);
</template>
<!-- Matrix Aux functions -->
<template name="matrix_constructor">
if (PySequence_Size(%PYARG_1) == %SIZE) {
Shiboken::AutoDecRef fast(PySequence_Fast(%PYARG_1, "Failed to parse sequence on %TYPE constructor."));
qreal values[%SIZE];
for(int i=0; i &lt; %SIZE; i++) {
PyObject *pv = PySequence_Fast_GET_ITEM(fast.object(), i);
values[i] = %CONVERTTOCPP[qreal](pv);
}
%0 = new %TYPE(values);
}
</template>
<template name="matrix_data_function">
const qreal* data = %CPPSELF.constData();
PyObject *pyData = PyTuple_New(%MATRIX_SIZE);
if (data) {
for(int i=0; i &lt; %MATRIX_SIZE; i++)
PyTuple_SET_ITEM(pyData, i, %CONVERTTOPYTHON[qreal](data[i]));
}
return pyData;
</template>
<template name="matrix_fill_function">
qreal value = %CONVERTTOCPP[qreal](%PYARG_1);
%CPPSELF.fill(value);
</template>
<template name="matrix_transposed_function">
%TRANSPOSED_TYPE transp = %CPPSELF.transposed();
return %CONVERTTOPYTHON[%TRANSPOSED_TYPE](transp);
</template>
<!-- Replace '#' for the argument number you want. -->
<template name="return_argument">
Py_INCREF(%PYARG_#);
%PYARG_0 = %PYARG_#;
</template>
<!-- Iterator -->
<template name="__iter__">
Py_INCREF(%PYSELF);
%PYARG_0 = %PYSELF;
</template>
<template name="__iter_parent__">
%CPPSELF_TYPE _tmp = %CPPSELF.begin();
%PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](_tmp);
</template>
<template name="__next__">
if (!%CPPSELF.atEnd()) {
%PYARG_0 = %CONVERTTOPYTHON[%CPPSELF_TYPE](*%CPPSELF);
++(*%CPPSELF);
}
</template>
<template name="convertFromMultiMap">
%RETURN_NAME = PyDict_New();
foreach(%KEY_TYPE _key, %MAP_NAME.keys()) {
Shiboken::AutoDecRef _pyValueList(PyList_New(0));
foreach(%VALUE_TYPE _value, %MAP_NAME.values(_key)) {
Shiboken::AutoDecRef _pyValue(%CONVERTTOPYTHON[%VALUE_TYPE](_value));
PyList_Append(_pyValueList, _pyValue);
}
Shiboken::AutoDecRef _pyKey(%CONVERTTOPYTHON[%KEY_TYPE](_key));
PyDict_SetItem(%RETURN_NAME, _pyKey, _pyValueList);
}
</template>
<template name="to_tuple">
%PYARG_0 = Py_BuildValue("%TT_FORMAT", %TT_ARGS);
</template>
<template name="cpplist_to_pylist_convertion">
PyObject* %out = PyList_New((int) %in.size());
%INTYPE::const_iterator it = %in.begin();
for (int idx = 0; it != %in.end(); ++it, ++idx) {
%INTYPE_0 cppItem(*it);
PyList_SET_ITEM(%out, idx, %CONVERTTOPYTHON[%INTYPE_0](cppItem));
}
return %out;
</template>
<template name="pyseq_to_cpplist_convertion">
for (int i = 0; i &lt; PySequence_Size(%in); i++) {
Shiboken::AutoDecRef pyItem(PySequence_GetItem(%in, i));
%OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
%out &lt;&lt; cppItem;
}
</template>
<template name="checkPyCapsuleOrPyCObject_func">
static bool checkPyCapsuleOrPyCObject(PyObject* pyObj)
{
#ifdef IS_PY3K
return PyCapsule_CheckExact(pyObj);
#else
return PyCObject_Check(pyObj);
#endif
}
</template>
</typesystem> </typesystem>

View file

@ -1,54 +0,0 @@
#
# Try to find QtMultimedia
# TODO: Remove this hack when cmake support QtMultimedia module
if (NOT QT_QTMULTIMEDIA_FOUND AND ${QTVERSION} VERSION_GREATER 4.5.9)
find_path(QT_QTMULTIMEDIA_INCLUDE_DIR QtMultimedia
PATHS ${QT_HEADERS_DIR}/QtMultimedia
${QT_LIBRARY_DIR}/QtMultimedia.framework/Headers
NO_DEFAULT_PATH)
find_library(QT_QTMULTIMEDIA_LIBRARY QtMultimedia PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
if (QT_QTMULTIMEDIA_INCLUDE_DIR AND QT_QTMULTIMEDIA_LIBRARY)
set(QT_QTMULTIMEDIA_FOUND ON)
else()
#Replace this on documentation
set(if_QtMultimedia "<!--")
set(end_QtMultimedia "-->")
endif()
endif ()
# Try to find QtMaemo5 - it has to be done before QtGui to enable some QtMaemo5 flags
# TODO: Remove this hack when cmake support QtMaemo5 module
if (NOT QT_QTMAEMO5_FOUND AND ${QTVERSION} VERSION_GREATER 4.5.9)
find_path(QT_QTMAEMO5_INCLUDE_DIR QtMaemo5
PATHS ${QT_HEADERS_DIR}/QtMaemo5
${QT_LIBRARY_DIR}/QtMaemo5.framework/Headers
NO_DEFAULT_PATH)
find_library(QT_QTMAEMO5_LIBRARY QtMaemo5 PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
if (QT_QTMAEMO5_INCLUDE_DIR AND QT_QTMAEMO5_LIBRARY)
set(QT_QTMAEMO5_FOUND ON)
set(Q_WS_MAEMO_5 ON)
else()
#Replace this on documentation
set(if_Maemo5 "<!--")
set(end_Maemo5 "-->")
endif()
endif ()
# Try to find QtDeclarative
# TODO: Remove this hack when cmake support QtDeclarative module
if (NOT QT_QTDECLARATIVE_FOUND AND ${QTVERSION} VERSION_GREATER 4.6.0)
find_path(QT_QTDECLARATIVE_INCLUDE_DIR QtDeclarative
PATHS ${QT_HEADERS_DIR}/QtDeclarative
${QT_LIBRARY_DIR}/QtDeclarative.framework/Headers
NO_DEFAULT_PATH)
find_library(QT_QTDECLARATIVE_LIBRARY QtDeclarative PATHS ${QT_LIBRARY_DIR} NO_DEFAULT_PATH)
if (QT_QTDECLARATIVE_INCLUDE_DIR AND QT_QTDECLARATIVE_LIBRARY)
set(QT_QTDECLARATIVE_FOUND ON)
else()
#Replace this on documentation
set(if_QtDeclarative "<!--")
set(end_QtDeclarative "-->")
endif()
endif ()

View file

@ -1,127 +0,0 @@
macro(create_pyside_module module_name module_include_dir module_libraries module_deps module_typesystem_path module_sources module_static_sources)
string(TOLOWER ${module_name} _module)
string(REGEX REPLACE ^qt "" _module ${_module})
if(${ARGC} GREATER 7)
set (typesystem_name ${ARGV7})
else()
set (typesystem_name "")
endif()
if(${ARGC} GREATER 8)
string(REPLACE ";" "\\;" dropped_entries "${${ARGV8}}")
else()
set (dropped_entries "")
endif()
if (NOT EXISTS ${typesystem_name})
set(typesystem_path ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_${_module}.xml)
else()
set(typesystem_path ${typesystem_name})
endif()
add_custom_command(OUTPUT ${${module_sources}}
COMMAND ${SHIBOKEN_BINARY} ${GENERATOR_EXTRA_FLAGS}
${pyside_BINARY_DIR}/pyside_global.h
--include-paths=${pyside_SOURCE_DIR}${PATH_SEP}${QT_INCLUDE_DIR}
--typesystem-paths=${pyside_SOURCE_DIR}${PATH_SEP}${${module_typesystem_path}}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}
--license-file=${CMAKE_CURRENT_SOURCE_DIR}/../licensecomment.txt
${typesystem_path}
--api-version=${SUPPORTED_QT_VERSION}
--drop-type-entries="${dropped_entries}"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMENT "Running generator for ${module_name}...")
include_directories(${module_name} ${${module_include_dir}} ${pyside_SOURCE_DIR})
add_library(${module_name} MODULE ${${module_sources}} ${${module_static_sources}})
set_target_properties(${module_name} PROPERTIES PREFIX "" LIBRARY_OUTPUT_DIRECTORY ${pyside_BINARY_DIR})
if(WIN32)
set_target_properties(${module_name} PROPERTIES SUFFIX ".pyd")
set(${module_name}_suffix ".pyd")
else()
set(${module_name}_suffix ${CMAKE_SHARED_MODULE_SUFFIX})
endif()
target_link_libraries(${module_name} ${${module_libraries}})
if(${module_deps})
add_dependencies(${module_name} ${${module_deps}})
endif()
# install
install(TARGETS ${module_name} LIBRARY DESTINATION ${SITE_PACKAGE}/PySide)
string(TOLOWER ${module_name} lower_module_name)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module_name}/pyside_${lower_module_name}_python.h
DESTINATION include/PySide${pyside_SUFFIX}/${module_name}/)
file(GLOB typesystem_files ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_*.xml ${typesystem_path})
install(FILES ${typesystem_files} DESTINATION share/PySide${pyside_SUFFIX}/typesystems)
endmacro()
#macro(check_qt_class_with_namespace module namespace class optional_source_files dropped_entries [namespace] [module])
macro(check_qt_class module class optional_source_files dropped_entries)
if (${ARGC} GREATER 4)
set (namespace ${ARGV4})
string(TOLOWER ${namespace} _namespace)
else ()
set (namespace "")
endif ()
if (${ARGC} GREATER 5)
set (include_file ${ARGV5})
else ()
set (include_file ${class})
endif ()
string(TOLOWER ${class} _class)
string(TOUPPER ${module} _module)
if (_namespace)
set(_cppfile ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module}/${_namespace}_${_class}_wrapper.cpp)
else ()
set(_cppfile ${CMAKE_CURRENT_BINARY_DIR}/PySide/${module}/${_class}_wrapper.cpp)
endif ()
if (DEFINED PYSIDE_${class})
if (PYSIDE_${class})
list(APPEND ${optional_source_files} ${_cppfile})
else()
list(APPEND ${dropped_entries} PySide.${module}.${class})
endif()
else()
if (NOT ${namespace} STREQUAL "" )
set (NAMESPACE_USE "using namespace ${namespace};")
else ()
set (NAMESPACE_USE "")
endif ()
set(SRC_FILE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test${class}.cxx)
file(WRITE ${SRC_FILE}
"#include <${include_file}>\n"
"${NAMESPACE_USE}\n"
"int main() { sizeof(${class}); }\n"
)
try_compile(Q_WORKS ${CMAKE_BINARY_DIR}
${SRC_FILE}
CMAKE_FLAGS
"-DLINK_LIBRARIES=${QT_${_module}_LIBRARY}"
"-DLINK_DIRECTORIES=${QT_LIBRARY_DIR}"
"-DINCLUDE_DIRECTORIES=${QT_INCLUDE_DIR};${QT_${_module}_INCLUDE_DIR}"
OUTPUT_VARIABLE OUTPUT)
file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeCheckQtClassTest.log ${OUTPUT})
set("PYSIDE_${class}" ${Q_WORKS} CACHE STRING "Has ${class} class been found?")
if(Q_WORKS)
message(STATUS "Checking for ${class} in ${module} -- found")
list(APPEND ${optional_source_files} ${_cppfile})
else()
message(STATUS "Checking for ${class} in ${module} -- not found")
list(APPEND ${dropped_entries} PySide.${module}.${class})
endif()
endif()
endmacro()
# Only add subdirectory if the associated Qt module is found.
macro(HAS_QT_MODULE var name)
if (NOT DISABLE_${name} AND ${var})
add_subdirectory(${name})
else()
# Used on documentation to skip modules
set("if_${name}" "<!--" PARENT_SCOPE)
set("end_${name}" "-->" PARENT_SCOPE)
endif()
endmacro()

View file

@ -1,60 +0,0 @@
project(doc)
set(DOC_DATA_DIR "${CMAKE_CURRENT_BINARY_DIR}/qdoc3-output")
configure_file("pyside.qdocconf.in" "pyside.qdocconf" @ONLY)
add_custom_target(qdoc3
COMMAND qdoc3 pyside.qdocconf
COMMENT "Running qdoc3 against Qt source code..."
SOURCE "pyside.qdocconf")
find_program(SPHINX_BUILD NAMES sphinx-build)
if (${SPHINX_BUILD} MATCHES "SPHINX_BUILD-NOTFOUND")
message(FATAL_ERROR "sphinx-build command not found.")
endif()
add_custom_target(apidoc
COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/rst
COMMAND ${SHIBOKEN_PYTHON_INTERPRETER} ${SPHINX_BUILD} -b html ${CMAKE_CURRENT_BINARY_DIR}/rst html
)
# create conf.py based on conf.py.in
configure_file("conf.py.in" "rst/conf.py" @ONLY)
configure_file(typesystem_doc.xml.in typesystem_doc.xml @ONLY)
add_custom_target("docrsts"
COMMAND ${SHIBOKEN_BINARY} --generator-set=qtdoc
${pyside_BINARY_DIR}/pyside_global.h
--include-paths="${QT_INCLUDE_DIR}${PATH_SEP}${pyside_SOURCE_DIR}"
--api-version=${SUPPORTED_QT_VERSION}
--typesystem-paths="${pyside_SOURCE_DIR}${PATH_SEP}${QtCore_SOURCE_DIR}${PATH_SEP}${QtDeclarative_SOURCE_DIR}${PATH_SEP}${QtGui_SOURCE_DIR}${PATH_SEP}${QtGui_BINARY_DIR}${PATH_SEP}${QtHelp_SOURCE_DIR}${PATH_SEP}${QtMaemo5_SOURCE_DIR}${PATH_SEP}${QtMultimedia_SOURCE_DIR}${PATH_SEP}${QtNetwork_SOURCE_DIR}${PATH_SEP}${QtOpenGL_SOURCE_DIR}${PATH_SEP}${QtScript_SOURCE_DIR}${PATH_SEP}${QtScriptTools_SOURCE_DIR}${PATH_SEP}${QtSql_SOURCE_DIR}${PATH_SEP}${QtSvg_SOURCE_DIR}${PATH_SEP}${QtTest_SOURCE_DIR}${PATH_SEP}${QtUiTools_SOURCE_DIR}${PATH_SEP}${QtWebKit_SOURCE_DIR}${PATH_SEP}${QtXml_SOURCE_DIR}${PATH_SEP}${QtXmlPatterns_SOURCE_DIR}${PATH_SEP}${phonon_SOURCE_DIR}"
--library-source-dir=${QT_SRC_DIR}
--documentation-only
--documentation-data-dir=${DOC_DATA_DIR}
--output-directory=${CMAKE_CURRENT_BINARY_DIR}/rst
--documentation-code-snippets-dir=${CMAKE_CURRENT_SOURCE_DIR}/codesnippets${PATH_SEP}${CMAKE_CURRENT_SOURCE_DIR}/codesnippets/examples
--documentation-extra-sections-dir=${CMAKE_CURRENT_SOURCE_DIR}/extras
${CMAKE_CURRENT_BINARY_DIR}/typesystem_doc.xml
WORKING_DIRECTORY ${${module}_SOURCE_DIR}
COMMENT "Running generator to generate documentation..."
)
add_dependencies(apidoc docrsts)
add_dependencies(docrsts qdoc3)
# #create devhelp file
# add_custom_target(apidevhelp
# COMMAND python;${CMAKE_CURRENT_SOURCE_DIR}/pyhtml2devhelp.py;${CMAKE_BINARY_DIR}/apidoc/html;index.html >
# ${CMAKE_BINARY_DIR}/apidoc/html/PySide.devhelp;${BINDING_API_VERSION}&&;
# gzip;-9v;-f;${CMAKE_BINARY_DIR}/apidoc/html/PySide.devhelp
# COMMAND ${CMAKE_COMMAND} -E make_directory "${CMAKE_INSTALL_PREFIX}/share/devhelp/books"
# COMMAND ${CMAKE_COMMAND} -E create_symlink "${CMAKE_INSTALL_PREFIX}/share/doc/${BINDING_NAME}/html" "${CMAKE_INSTALL_PREFIX}/share/devhelp/books/${BINDING_NAME}"
# )
#install files
add_custom_target(apidocinstall
COMMAND mkdir -p ${CMAKE_INSTALL_PREFIX}/share/doc/PySide-${BINDING_API_VERSION} && cp -rv ${CMAKE_CURRENT_BINARY_DIR}/html/* ${CMAKE_INSTALL_PREFIX}/share/doc/PySide-${BINDING_API_VERSION}
)
add_dependencies(apidocinstall apidoc)
# add_dependencies(apidocinstall apidevhelp)

View file

@ -1,75 +0,0 @@
{% extends "layout.html" %}
{% set title = 'Overview' %}
{% block body %}
<div class="section">
<h1>PySide {{ version }} Reference</h1>
<p><a href="http://www.qtsoftware.com/">Qt</a> is a cross-platform application framework from Qt Software (owned by Nokia).
It features a large number of libraries providing services like network abstraction and XML handling, along with a very rich
GUI package, allowing C++ developers to write their applications once and run them unmodified in different systems.
PySide aims to provide Python developers access to the Qt libraries in the most natural way.</p>
<p>PySide is built using the <a href="http://www.pyside.org/docs/shiboken">Shiboken</a> binding generator.</p>
<h2>Notes</h2>
<h3>About 0 vs None</h3>
<p>The PySide class reference documentation is automatically generated from the original Qt documentation for C++, some parts were tuned to fit the Python world. However, it's not possible to rewrite all Qt docs as it would require a really huge effort, so if the documentation says you can use 0 on an QObject argument, interpret it as None.</p>
<h3>About keyword arguments</h3>
<p>Only optional arguments can be used as keyword arguments.</p>
<h2>Modules</h2>
<table class="contentstable" align="center" ><tr>
<td width="50%">
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtCore/index") }}">QtCore</a><br/>
<span class="linkdescr">core non-GUI functionality</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtGui/index") }}">QtGui</a><br/>
<span class="linkdescr">extends QtCore with GUI functionality.</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtDeclarative/index") }}">QtDeclarative</a><br/>
<span class="linkdescr">a declarative framework for building highly dynamic, custom user interfaces.</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtHelp/index") }}">QtHelp</a><br/>
<span class="linkdescr">provides classes for integrating online documentation in applications</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtMultimedia/index") }}">QtMultimedia</a><br/>
<span class="linkdescr">provides low-level multimedia functionality</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtNetwork/index") }}">QtNetwork</a><br/>
<span class="linkdescr">offers classes that allow you to write TCP/IP clients and servers</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtOpenGL/index") }}">QtOpenGL</a><br/>
<span class="linkdescr">offers classes that make it easy to use OpenGL in Qt applications</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtScript/index") }}">QtScript</a><br/>
<span class="linkdescr">provides classes for making Qt applications scriptable</span></p>
</td>
<td width="50%">
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtScriptTools/index") }}">QtScriptTools</a><br/>
<span class="linkdescr">provides additional components for applications that use Qt Script</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtSql/index") }}">QtSql</a><br/>
<span class="linkdescr">helps you provide seamless database integration to your Qt applications</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtSvg/index") }}">QtSvg</a><br/>
<span class="linkdescr">provides classes for displaying the contents of SVG files</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtUiTools/index") }}">QtUiTools</a><br/>
<span class="linkdescr">provides classes to handle forms created with Qt Designer</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtXml/index") }}">QtXml</a><br/>
<span class="linkdescr">provides a stream reader and writer for XML documents</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/QtWebKit/index") }}">QtWebkit</a><br/>
<span class="linkdescr">provides a Web browser engine</span></p>
<p class="biglink"><a class="biglink" href="{{ pathto("PySide/phonon/index") }}">Phonon</a><br/>
<span class="linkdescr">cross-platform multimedia framework that enables the use of audio and video
content in Qt applications</span></p>
</td></tr>
</table>
<h2>Tutorials and examples</h2>
<p>A collection of <a href="{{ pathto("tutorials/index") }}">tutorials</a> and "walkthrough" guides are provided with PySide to help new users get started with PySide development. These documents were ported from C++ to Python and cover a range of topics, from basic use of widgets to step-by-step <a href="{{ pathto("tutorials/index") }}">tutorials</a> that show how an application is put together.</p>
<h2>Other stuff</h2>
<ul>
<li class="toctree-l1"><a class="reference internal" href="pysideapi2.html">PySide API 2</a></li>
<li class="toctree-l1"><a class="reference internal" href="pysideversion.html">Getting PySide and Qt version</a></li>
</ul>
</div>
{% endblock %}

View file

@ -1,41 +0,0 @@
{% extends "!layout.html" %}
# Invert sidebars
{%- block sidebar1 %}{{ sidebar() }}{%- endblock %}
{%- block sidebar2 %}{%- endblock %}
{%- block header %}
<div id="container">
<div class="header">
<div class="header_container">
<div class="logo"><a href="http://www.pyside.org"><img alt="PySide" src="{{ pathto('_static/pysidelogo.png', 1) }}" width="199" height="102" /></a></div>
<div class="related">
<ul>
{%- block rootrellink %}
<li><a href="{{ pathto( 'index' ) }}">{{ shorttitle|e }}</a></li>
{%- endblock %}
{%- for parent in parents %}
<li>{{ reldelim1 }} <a href="{{ parent.link|e }}" {% if loop.last %}{{ accesskey("U") }}{% endif %}>{{ parent.title }}</a></li>
{%- endfor %}
{%- block relbaritems %} {% endblock %}
</ul>
</div>
</div>
</div>
{%- endblock -%}
{%- block footer %}
<div class="footer">
<a href="http://www.indt.org.br"><img src="{{ pathto('_static/logo_indt.jpg', 1) }}" alt="Indt" border="0" /></a>
<a href="http://www.openbossa.org"><img src="{{ pathto('_static/logo_openbossa.png', 1) }}" alt="Openbossa" border="0" /></a>
<a href="http://qt.nokia.com/"><img src="{{ pathto('_static/logo_qt.png', 1) }}" alt="Qt" border="0" /></a>
<a href="http://www.python.org"><img src="{{ pathto('_static/logo_python.jpg', 1) }}" alt="Python" border="0" /></a>
</div>
</div>
{%- endblock %}
# No top relbar.
{%- block relbar1 %}{%- endblock %}
# No bottom relbar.
{%- block relbar2 %}{%- endblock %}

Some files were not shown because too many files have changed in this diff Show more