Initial bindings for QtUiTools.
This commit is contained in:
parent
7107c2fef5
commit
771c2be893
4 changed files with 104 additions and 15 deletions
|
|
@ -39,3 +39,4 @@ 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)
|
||||||
|
HAS_QT_MODULE(QT_QTUITOOLS_FOUND QtUiTools)
|
||||||
|
|
|
||||||
40
PySide/QtUiTools/CMakeLists.txt
Normal file
40
PySide/QtUiTools/CMakeLists.txt
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
project(QtUiTools)
|
||||||
|
|
||||||
|
set(QtUiTools_SRC
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/qtuitools_module_wrapper.cpp
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/quiloader_wrapper.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
execute_generator(uitools QtUiTools_SRC "${CMAKE_CURRENT_BINARY_DIR}:${QtCore_SOURCE_DIR}:${QtGui_BINARY_DIR}:${QtGui_SOURCE_DIR}:${QtXml_SOURCE_DIR}:${QtUiTools_SOURCE_DIR}")
|
||||||
|
|
||||||
|
include_directories(${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${QT_QTCORE_INCLUDE_DIR}
|
||||||
|
${QT_QTGUI_INCLUDE_DIR}
|
||||||
|
${QT_QTXML_INCLUDE_DIR}
|
||||||
|
${QT_QTUITOOLS_INCLUDE_DIR}
|
||||||
|
${PYTHON_INCLUDE_PATH}
|
||||||
|
${SHIBOKEN_INCLUDE_DIR}
|
||||||
|
${libpyside_SOURCE_DIR}
|
||||||
|
${QtCore_BINARY_DIR}/PySide/QtCore/
|
||||||
|
${QtXml_BINARY_DIR}/PySide/QtXml/
|
||||||
|
${QtGui_BINARY_DIR}/PySide/QtGui/
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools)
|
||||||
|
|
||||||
|
add_library(QtUiTools MODULE ${QtUiTools_SRC})
|
||||||
|
set_target_properties(QtUiTools PROPERTIES PREFIX "")
|
||||||
|
target_link_libraries(QtUiTools
|
||||||
|
pyside
|
||||||
|
${PYTHON_LIBRARIES}
|
||||||
|
${QT_QTCORE_LIBRARY}
|
||||||
|
${QT_QTGUI_LIBRARY}
|
||||||
|
${QT_QTXML_LIBRARY}
|
||||||
|
${QT_QTUITOOLS_LIBRARY})
|
||||||
|
|
||||||
|
add_dependencies(QtUiTools QtGui QtXml)
|
||||||
|
|
||||||
|
# install
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/QtUiTools.so
|
||||||
|
DESTINATION ${SITE_PACKAGE}/PySide)
|
||||||
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/PySide/QtUiTools/pyside_qtuitools_python.h
|
||||||
|
DESTINATION include/PySide/QtUiTools/)
|
||||||
|
|
||||||
52
PySide/QtUiTools/typesystem_uitools.xml
Normal file
52
PySide/QtUiTools/typesystem_uitools.xml
Normal file
|
|
@ -0,0 +1,52 @@
|
||||||
|
<typesystem package="PySide.QtUiTools">
|
||||||
|
|
||||||
|
<load-typesystem name="typesystem_gui.xml" generate="no" />
|
||||||
|
<load-typesystem name="typesystem_xml.xml" generate="no" />
|
||||||
|
|
||||||
|
<object-type name="QUiLoader">
|
||||||
|
<modify-function signature="createAction(QObject *, const QString&)">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<parent index="1" action="add"/>
|
||||||
|
</modify-argument>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="createActionGroup(QObject *, const QString&)">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<parent index="1" action="add"/>
|
||||||
|
</modify-argument>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="createLayout(const QString&,QObject *, const QString&)">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<parent index="2" action="add"/>
|
||||||
|
</modify-argument>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="createWidget(const QString&,QWidget*, const QString&)">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<parent index="2" action="add"/>
|
||||||
|
</modify-argument>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<modify-function signature="load(QIODevice*, QWidget*)">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<parent index="2" action="add"/>
|
||||||
|
</modify-argument>
|
||||||
|
</modify-function>
|
||||||
|
|
||||||
|
<!-- Syntax sugar -->
|
||||||
|
<add-function signature="load(const char*, QWidget*)" return-type="QWidget*">
|
||||||
|
<modify-argument index="return">
|
||||||
|
<parent index="2" action="add"/>
|
||||||
|
</modify-argument>
|
||||||
|
<inject-code>
|
||||||
|
QFile f(%1);
|
||||||
|
if (f.open(QIODevice::ReadOnly | QIODevice::Text))
|
||||||
|
%PYARG_0 = %CONVERTTOPYTHON[QWidget*](%CPPSELF.load(&f, %2));
|
||||||
|
else
|
||||||
|
PyErr_SetString(PyExc_RuntimeError, "Unable to open ui file");
|
||||||
|
</inject-code>
|
||||||
|
</add-function>
|
||||||
|
</object-type>
|
||||||
|
|
||||||
|
</typesystem>
|
||||||
|
|
@ -2,11 +2,8 @@ import unittest
|
||||||
import os
|
import os
|
||||||
from helper import UsesQApplication
|
from helper import UsesQApplication
|
||||||
|
|
||||||
from PySide.QtGui import QWidget, QFrame, QPushButton
|
from PySide.QtGui import *
|
||||||
from PySide.QtUiTools import QUiLoader
|
from PySide.QtUiTools import *
|
||||||
|
|
||||||
#ugly workaround for work with ctest
|
|
||||||
file_path = [ "./test.ui", "./qtuitools/test.ui", "../tests/qtuitools/test.ui", "../../tests/qtuitools/test.ui" ]
|
|
||||||
|
|
||||||
def get_file_path():
|
def get_file_path():
|
||||||
for path in file_path:
|
for path in file_path:
|
||||||
|
|
@ -16,18 +13,17 @@ def get_file_path():
|
||||||
|
|
||||||
class QUioaderTeste(UsesQApplication):
|
class QUioaderTeste(UsesQApplication):
|
||||||
def testLoadFile(self):
|
def testLoadFile(self):
|
||||||
widget = QWidget()
|
filePath = os.path.join(os.path.dirname(__file__), 'test.ui')
|
||||||
|
loader = QUiLoader()
|
||||||
|
parent = QWidget()
|
||||||
|
w = loader.load(filePath, parent)
|
||||||
|
self.assertNotEqual(w, None)
|
||||||
|
|
||||||
file_path = get_file_path()
|
self.assertEqual(len(parent.children()), 1)
|
||||||
self.assertTrue(file_path != "")
|
|
||||||
|
|
||||||
QUiLoader.loadUi(file_path, widget)
|
child = w.findChild(QWidget, "child_object")
|
||||||
|
self.assertNotEqual(child, None)
|
||||||
self.assertTrue("child_object" in dir(widget))
|
self.assertEqual(w.findChild(QWidget, "grandson_object"), child.findChild(QWidget, "grandson_object"))
|
||||||
self.assertTrue("grandson_object" in dir(widget.child_object))
|
|
||||||
|
|
||||||
self.assertEqual(type(widget.child_object), QFrame)
|
|
||||||
self.assertEqual(type(widget.child_object.grandson_object), QPushButton)
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue