diff options
-rw-r--r-- | PySide/CMakeLists.txt | 1 | ||||
-rw-r--r-- | PySide/QtSvg/CMakeLists.txt | 60 | ||||
-rw-r--r-- | PySide/QtSvg/typesystem_svg.xml | 34 | ||||
-rw-r--r-- | tests/qtsvg/qsvggenerator_test.py | 34 |
4 files changed, 129 insertions, 0 deletions
diff --git a/PySide/CMakeLists.txt b/PySide/CMakeLists.txt index c6caddc60..416a107e7 100644 --- a/PySide/CMakeLists.txt +++ b/PySide/CMakeLists.txt @@ -34,3 +34,4 @@ HAS_QT_MODULE(QT_QTCORE_FOUND QtCore) HAS_QT_MODULE(QT_QTGUI_FOUND QtGui) HAS_QT_MODULE(QT_QTNETWORK_FOUND QtNetwork) HAS_QT_MODULE(QT_QTWEBKIT_FOUND QtWebKit) +HAS_QT_MODULE(QT_QTSVG_FOUND QtSvg) diff --git a/PySide/QtSvg/CMakeLists.txt b/PySide/QtSvg/CMakeLists.txt new file mode 100644 index 000000000..0d0a3152a --- /dev/null +++ b/PySide/QtSvg/CMakeLists.txt @@ -0,0 +1,60 @@ +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 +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qgraphicssvgitem_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/qsvgwidget_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/qtsvg_module_wrapper.cpp + +${SPECIFIC_OS_FILES} +${QtSvg_46_SRC} +) + +execute_generator(svg QtSvg_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_SOURCE_DIR}") + +include_directories(${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtSvg/ + ${QT_INCLUDE_DIR} + ${QT_QTCORE_INCLUDE_DIR} + ${QT_QTGUI_INCLUDE_DIR} + ${QT_QTSVG_INCLUDE_DIR} + ${SHIBOKEN_INCLUDE_DIR} + ${libpyside_SOURCE_DIR} + ${PYTHON_INCLUDE_PATH} + ${QtCore_BINARY_DIR}/PySide/QtCore/ + ${QtGui_BINARY_DIR}/PySide/QtGui/ + ) + +add_library(QtSvg MODULE ${QtSvg_SRC}) +set_property(TARGET QtSvg PROPERTY PREFIX "") +target_link_libraries(QtSvg + pyside + ${PYTHON_LIBRARIES} + ${SHIBOKEN_LIBRARY} + ${QT_QTSVG_LIBRARY} + ) +add_dependencies(QtSvg QtGui) + +# install +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtSvg.so + DESTINATION ${SITE_PACKAGE}/PySide) diff --git a/PySide/QtSvg/typesystem_svg.xml b/PySide/QtSvg/typesystem_svg.xml new file mode 100644 index 000000000..f7932ba6d --- /dev/null +++ b/PySide/QtSvg/typesystem_svg.xml @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<typesystem package="PySide.QtSvg"> + <load-typesystem name="typesystem_gui.xml.in" generate="no"/> + + <object-type name="QSvgRenderer" /> + <object-type name="QSvgWidget" /> + + <object-type name="QSvgGenerator"> + <modify-function signature="setOutputDevice(QIODevice*)"> + <modify-argument index="1"> + <reference-count action="add"/> + </modify-argument> + </modify-function> + + <modify-function signature="outputDevice() const"> + <modify-argument index="return"> + <define-ownership class="target" owner="default"/> + </modify-argument> + </modify-function> + </object-type> + + <object-type name="QGraphicsSvgItem"> + <modify-function signature="QGraphicsSvgItem(QGraphicsItem*)"> + <modify-argument index="this"> + <parent index="1" action="add"/> + </modify-argument> + </modify-function> + <modify-function signature="QGraphicsSvgItem(const QString&, QGraphicsItem*)"> + <modify-argument index="this"> + <parent index="2" action="add"/> + </modify-argument> + </modify-function> + </object-type> +</typesystem> diff --git a/tests/qtsvg/qsvggenerator_test.py b/tests/qtsvg/qsvggenerator_test.py new file mode 100644 index 000000000..cec7fdaff --- /dev/null +++ b/tests/qtsvg/qsvggenerator_test.py @@ -0,0 +1,34 @@ +#!/usr/bin/python +import unittest +from sys import getrefcount +from PySide.QtCore import QBuffer +from PySide.QtSvg import QSvgGenerator + +class QSvgGeneratorTest(unittest.TestCase): + + def testRefCountOfTOutputDevice(self): + generator = QSvgGenerator() + iodevice1 = QBuffer() + refcount1 = getrefcount(iodevice1) + + generator.setOutputDevice(iodevice1) + + self.assertEqual(generator.outputDevice(), iodevice1) + self.assertEqual(getrefcount(generator.outputDevice()), refcount1 + 1) + + iodevice2 = QBuffer() + refcount2 = getrefcount(iodevice2) + + generator.setOutputDevice(iodevice2) + + self.assertEqual(generator.outputDevice(), iodevice2) + self.assertEqual(getrefcount(generator.outputDevice()), refcount2 + 1) + self.assertEqual(getrefcount(iodevice1), refcount1) + + del generator + + self.assertEqual(getrefcount(iodevice2), refcount2) + +if __name__ == '__main__': + unittest.main() + |