diff options
Diffstat (limited to 'sources/pyside2/tests/QtUiTools')
26 files changed, 1091 insertions, 0 deletions
diff --git a/sources/pyside2/tests/QtUiTools/CMakeLists.txt b/sources/pyside2/tests/QtUiTools/CMakeLists.txt new file mode 100644 index 000000000..68ed7f134 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/CMakeLists.txt @@ -0,0 +1,13 @@ +PYSIDE_TEST(bug_360.py) +PYSIDE_TEST(bug_376.py) +PYSIDE_TEST(bug_392.py) +PYSIDE_TEST(bug_426.py) +PYSIDE_TEST(bug_552.py) +PYSIDE_TEST(bug_797.py) +PYSIDE_TEST(bug_909.py) +PYSIDE_TEST(bug_913.py) +PYSIDE_TEST(bug_958.py) +PYSIDE_TEST(bug_965.py) +PYSIDE_TEST(bug_1060.py) +PYSIDE_TEST(uiloader_test.py) +PYSIDE_TEST(ui_test.py) diff --git a/sources/pyside2/tests/QtUiTools/action.ui b/sources/pyside2/tests/QtUiTools/action.ui new file mode 100644 index 000000000..9eda559de --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/action.ui @@ -0,0 +1,16 @@ +<ui version="4.0"> + <class>main_window</class> + <widget class="QMainWindow" name="main_window"> + <widget class="QWidget" name="centralwidget"/> + <widget class="QMenuBar" name="menubar"/> + <widget class="QStatusBar" name="statusbar"> + <action name="actionFoo"> + <property name="text"> + <string>foo</string> + </property> + </action> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_1060.py b/sources/pyside2/tests/QtUiTools/bug_1060.py new file mode 100644 index 000000000..21d79810a --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_1060.py @@ -0,0 +1,46 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +''' unit test for BUG #1060 ''' + +from PySide2.QtWidgets import QApplication +from PySide2.QtUiTools import QUiLoader +from helper import adjust_filename + +class MyQUiLoader(QUiLoader): + def __init__(self): + super(MyQUiLoader, self).__init__() + + def createWidget(self, *args): + return super(MyQUiLoader, self).createWidget(*args) + +if __name__ == "__main__": + app = QApplication([]) + + ui = MyQUiLoader().load(adjust_filename("bug_1060.ui", __file__)) + ui.show() diff --git a/sources/pyside2/tests/QtUiTools/bug_1060.ui b/sources/pyside2/tests/QtUiTools/bug_1060.ui new file mode 100644 index 000000000..f4044a8c2 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_1060.ui @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Dialog</class> + <widget class="QDialog" name="Dialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>100</width> + <height>100</height> + </rect> + </property> + <property name="windowTitle"> + <string>Dialog</string> + </property> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_360.py b/sources/pyside2/tests/QtUiTools/bug_360.py new file mode 100644 index 000000000..6d2c2a4e3 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_360.py @@ -0,0 +1,64 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import unittest +import os +from helper import UsesQApplication + +from PySide2 import QtCore, QtWidgets +from PySide2.QtUiTools import QUiLoader + +class MyQUiLoader(QUiLoader): + def __init__(self, baseinstance): + QUiLoader.__init__(self) + self.baseinstance = baseinstance + self._widgets = [] + + def createWidget(self, className, parent=None, name=""): + widget = QUiLoader.createWidget(self, className, parent, name) + self._widgets.append(widget) + if parent is None: + return self.baseinstance + else: + setattr(self.baseinstance, name, widget) + return widget + +class ButTest(UsesQApplication): + def testCase(self): + w = QtWidgets.QWidget() + loader = MyQUiLoader(w) + + filePath = os.path.join(os.path.dirname(__file__), 'minimal.ui') + ui = loader.load(filePath) + + self.assertEqual(len(loader._widgets), 1) + self.assertEqual(type(loader._widgets[0]), QtWidgets.QFrame) + +if __name__ == '__main__': + unittest.main() + diff --git a/sources/pyside2/tests/QtUiTools/bug_376.py b/sources/pyside2/tests/QtUiTools/bug_376.py new file mode 100644 index 000000000..64b5acbd1 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_376.py @@ -0,0 +1,47 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import unittest +import os +from helper import UsesQApplication + +from PySide2 import QtCore, QtWidgets +from PySide2.QtUiTools import QUiLoader + +class BugTest(UsesQApplication): + def testCase(self): + w = QtWidgets.QWidget() + loader = QUiLoader() + + filePath = os.path.join(os.path.dirname(__file__), 'test.ui') + result = loader.load(filePath, w) + self.assertTrue(isinstance(result.child_object, QtWidgets.QFrame)) + +if __name__ == '__main__': + unittest.main() + diff --git a/sources/pyside2/tests/QtUiTools/bug_392.py b/sources/pyside2/tests/QtUiTools/bug_392.py new file mode 100644 index 000000000..d788b29d6 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_392.py @@ -0,0 +1,75 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import unittest +import os +from helper import UsesQApplication + +from PySide2 import QtWidgets +from PySide2.QtUiTools import QUiLoader + +class MyWidget(QtWidgets.QComboBox): + def __init__(self, parent=None): + QtWidgets.QComboBox.__init__(self, parent) + + def isPython(self): + return True + +class BugTest(UsesQApplication): + def testCase(self): + w = QtWidgets.QWidget() + loader = QUiLoader() + + filePath = os.path.join(os.path.dirname(__file__), 'action.ui') + result = loader.load(filePath, w) + self.assertTrue(isinstance(result.actionFoo, QtWidgets.QAction)) + + def testPythonCustomWidgets(self): + w = QtWidgets.QWidget() + loader = QUiLoader() + loader.registerCustomWidget(MyWidget) + + filePath = os.path.join(os.path.dirname(__file__), 'pycustomwidget.ui') + result = loader.load(filePath, w) + self.assertTrue(isinstance(result.custom, MyWidget)) + self.assertTrue(result.custom.isPython()) + + def testPythonCustomWidgetsTwice(self): + w = QtWidgets.QWidget() + loader = QUiLoader() + loader.registerCustomWidget(MyWidget) + + filePath = os.path.join(os.path.dirname(__file__), 'pycustomwidget2.ui') + result = loader.load(filePath, w) + self.assertTrue(isinstance(result.custom, MyWidget)) + self.assertTrue(isinstance(result.custom2, MyWidget)) + self.assertTrue(result.custom.isPython()) + +if __name__ == '__main__': + unittest.main() + diff --git a/sources/pyside2/tests/QtUiTools/bug_426.py b/sources/pyside2/tests/QtUiTools/bug_426.py new file mode 100644 index 000000000..eac350a42 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_426.py @@ -0,0 +1,46 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +import os +from PySide2 import QtCore, QtWidgets +from PySide2.QtUiTools import QUiLoader + +class Window(object): + def __init__(self): + loader = QUiLoader() + filePath = os.path.join(os.path.dirname(__file__), 'bug_426.ui') + self.widget = loader.load(filePath) + self.group = QtWidgets.QActionGroup(self.widget) + self.widget.show() + QtCore.QTimer.singleShot(0, self.widget.close) + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + win = Window() + sys.exit(app.exec_()) diff --git a/sources/pyside2/tests/QtUiTools/bug_426.ui b/sources/pyside2/tests/QtUiTools/bug_426.ui new file mode 100644 index 000000000..99353cd2b --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_426.ui @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_552.py b/sources/pyside2/tests/QtUiTools/bug_552.py new file mode 100644 index 000000000..34165aa00 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_552.py @@ -0,0 +1,49 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +from helper import adjust_filename +from PySide2 import QtWidgets, QtCore +from PySide2.QtUiTools import QUiLoader + +class View_1(QtWidgets.QWidget): + + def __init__(self): + QtWidgets.QWidget.__init__(self) + loader = QUiLoader() + widget = loader.load(adjust_filename('bug_552.ui', __file__), self) + self.children = [] + for child in widget.findChildren(QtCore.QObject, None): + self.children.append(child) + self.t = widget.tabWidget + self.t.removeTab(0) + +app = QtWidgets.QApplication([]) +window = View_1() +window.show() + +# If it doesn't crash it works :-) diff --git a/sources/pyside2/tests/QtUiTools/bug_552.ui b/sources/pyside2/tests/QtUiTools/bug_552.ui new file mode 100644 index 000000000..f98da4421 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_552.ui @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <widget class="QTabWidget" name="tabWidget"> + <property name="geometry"> + <rect> + <x>130</x> + <y>80</y> + <width>139</width> + <height>80</height> + </rect> + </property> + <property name="currentIndex"> + <number>0</number> + </property> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_797.py b/sources/pyside2/tests/QtUiTools/bug_797.py new file mode 100644 index 000000000..476368d2f --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_797.py @@ -0,0 +1,39 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2 import QtUiTools +from PySide2 import QtCore +from PySide2 import QtWidgets +from helper import adjust_filename + +app = QtWidgets.QApplication([]) +loader = QtUiTools.QUiLoader() +file = QtCore.QFile(adjust_filename('bug_552.ui', __file__)) +w = QtWidgets.QWidget() +# An exception can't be thrown +mainWindow = loader.load(file, w) diff --git a/sources/pyside2/tests/QtUiTools/bug_909.py b/sources/pyside2/tests/QtUiTools/bug_909.py new file mode 100644 index 000000000..2b6bfbd4e --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_909.py @@ -0,0 +1,52 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +import unittest + +from PySide2.QtCore import QFile +from PySide2.QtWidgets import QTabWidget +from PySide2.QtUiTools import QUiLoader + +from helper import UsesQApplication +from helper import adjust_filename + +class TestDestruction(UsesQApplication): + def testBug909(self): + fileName = QFile(adjust_filename('bug_909.ui', __file__)) + loader = QUiLoader() + main_win = loader.load(fileName) + self.assertEqual(sys.getrefcount(main_win), 2) + fileName.close() + + tw = QTabWidget(main_win) + main_win.setCentralWidget(tw) + main_win.show() + +if __name__ == '__main__': + unittest.main() diff --git a/sources/pyside2/tests/QtUiTools/bug_909.ui b/sources/pyside2/tests/QtUiTools/bug_909.ui new file mode 100644 index 000000000..b07f62d05 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_909.ui @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle"> + <string>MainWindow</string> + </property> + <widget class="QWidget" name="centralwidget"/> + <widget class="QMenuBar" name="menubar"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>25</height> + </rect> + </property> + </widget> + <widget class="QStatusBar" name="statusbar"/> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_913.py b/sources/pyside2/tests/QtUiTools/bug_913.py new file mode 100644 index 000000000..d249ce958 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_913.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import sys +import unittest +from helper import adjust_filename + +from PySide2.QtCore import * +from PySide2.QtWidgets import * +from PySide2.QtUiTools import * + +class TestBug913 (unittest.TestCase): + + def testIt(self): + app = QApplication([]) + + loader = QUiLoader() + widget = loader.load(adjust_filename('bug_913.ui', __file__)) + widget.tabWidget.currentIndex() # direct child is available as member + widget.le_first.setText('foo') # child of QTabWidget must also be available! + +if __name__ == '__main__': + unittest.main() diff --git a/sources/pyside2/tests/QtUiTools/bug_913.ui b/sources/pyside2/tests/QtUiTools/bug_913.ui new file mode 100644 index 000000000..0fc95fd53 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_913.ui @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTabWidget" name="tabWidget"> + <widget class="QWidget" name="tab"> + <attribute name="title"> + <string>Tab 1</string> + </attribute> + <layout class="QFormLayout" name="formLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>First name:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="le_first"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Last name:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="le_last"/> + </item> + </layout> + </widget> + <widget class="QWidget" name="tab_2"> + <attribute name="title"> + <string>Tab 2</string> + </attribute> + </widget> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_958.py b/sources/pyside2/tests/QtUiTools/bug_958.py new file mode 100644 index 000000000..9cae430ea --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_958.py @@ -0,0 +1,52 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import unittest +from PySide2 import QtWidgets, QtUiTools +from helper import adjust_filename +from helper import TimedQApplication + +class Gui_Qt(QtWidgets.QMainWindow): + def __init__(self, parent=None): + super(Gui_Qt, self).__init__(parent) + + lLoader = QtUiTools.QUiLoader() + + # this used to cause a segfault because the old inject code used to destroy the parent layout + self._cw = lLoader.load(adjust_filename('bug_958.ui', __file__), self) + + self.setCentralWidget(self._cw) + +class BugTest(TimedQApplication): + def testCase(self): + lMain = Gui_Qt() + lMain.show() + self.app.exec_() + +if __name__ == "__main__": + unittest.main() diff --git a/sources/pyside2/tests/QtUiTools/bug_958.ui b/sources/pyside2/tests/QtUiTools/bug_958.ui new file mode 100644 index 000000000..57cdbddba --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_958.ui @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>customWidget</class> + <widget class="QWidget" name="customWidget"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>626</width> + <height>578</height> + </rect> + </property> + <property name="minimumSize"> + <size> + <width>500</width> + <height>0</height> + </size> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTableWidget" name="resultTable"/> + </item> + <item> + <widget class="QProgressBar" name="progressBar"> + <property name="value"> + <number>0</number> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="actionLayout"> + <item> + <widget class="QPushButton" name="processButton"> + <property name="text"> + <string>&Berechnen</string> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/bug_965.py b/sources/pyside2/tests/QtUiTools/bug_965.py new file mode 100644 index 000000000..96235cd4d --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_965.py @@ -0,0 +1,48 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +from PySide2.QtUiTools import QUiLoader +import unittest + +from helper import UsesQApplication +from helper import adjust_filename + +class MyQUiLoader(QUiLoader): + def __init__(self): + super(MyQUiLoader, self).__init__() + + def createWidget(self, className, parent=None, name=""): + return None + +class BugTest(UsesQApplication): + def testCase(self): + loader = MyQUiLoader() + self.assertRaises(RuntimeError, loader.load, adjust_filename('bug_965.ui', __file__)) + +if __name__ == '__main__': + unittest.main() diff --git a/sources/pyside2/tests/QtUiTools/bug_965.ui b/sources/pyside2/tests/QtUiTools/bug_965.ui new file mode 100644 index 000000000..e324db829 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/bug_965.ui @@ -0,0 +1,27 @@ +<ui version="4.0" > + <author></author> + <comment></comment> + <exportmacro></exportmacro> + <class>MainWindow</class> + <widget class="QMainWindow" name="MainWindow" > + <property name="objectName" > + <string notr="true" >MainWindow</string> + </property> + <property name="geometry" > + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle" > + <string>MainWindow</string> + </property> + <widget class="QMenuBar" name="menubar" /> + <widget class="QWidget" name="centralwidget" /> + <widget class="QStatusBar" name="statusbar" /> + </widget> + <pixmapfunction></pixmapfunction> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/minimal.ui b/sources/pyside2/tests/QtUiTools/minimal.ui new file mode 100644 index 000000000..c6bb70cda --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/minimal.ui @@ -0,0 +1,6 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QFrame" name="Form"> + </widget> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/pycustomwidget.ui b/sources/pyside2/tests/QtUiTools/pycustomwidget.ui new file mode 100644 index 000000000..c066153a0 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/pycustomwidget.ui @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>qwidget</class> + <widget class="QWidget" name="qwidget"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string/> + </property> + <widget class="MyWidget" name="custom"> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>79</width> + <height>23</height> + </rect> + </property> + </widget> + </widget> + <customwidgets> + <customwidget> + <class>MyWidget</class> + <extends>QComboBox</extends> + <header>customwidget</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/pycustomwidget2.ui b/sources/pyside2/tests/QtUiTools/pycustomwidget2.ui new file mode 100644 index 000000000..8826ac1fb --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/pycustomwidget2.ui @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>qwidget</class> + <widget class="QWidget" name="qwidget"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string/> + </property> + + <widget class="MyWidget" name="custom"> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>79</width> + <height>23</height> + </rect> + </property> + </widget> + + <widget class="MyWidget" name="custom2"> + <property name="geometry"> + <rect> + <x>10</x> + <y>10</y> + <width>79</width> + <height>23</height> + </rect> + </property> + </widget> + </widget> + <customwidgets> + <customwidget> + <class>MyWidget</class> + <extends>QComboBox</extends> + <header>customwidget</header> + </customwidget> + </customwidgets> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/test.ui b/sources/pyside2/tests/QtUiTools/test.ui new file mode 100644 index 000000000..60afe22b3 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/test.ui @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>Form</class> + <widget class="QWidget" name="Form"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>185</width> + <height>133</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <widget class="QFrame" name="child_object"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>181</width> + <height>131</height> + </rect> + </property> + <property name="frameShape"> + <enum>QFrame::StyledPanel</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Raised</enum> + </property> + <widget class="QPushButton" name="grandson_object"> + <property name="geometry"> + <rect> + <x>50</x> + <y>60</y> + <width>80</width> + <height>25</height> + </rect> + </property> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </widget> + </widget> + <resources/> + <connections/> +</ui> diff --git a/sources/pyside2/tests/QtUiTools/ui_test.py b/sources/pyside2/tests/QtUiTools/ui_test.py new file mode 100644 index 000000000..e52d28278 --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/ui_test.py @@ -0,0 +1,41 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import unittest + +from PySide2.QtUiTools import QUiLoader + +from helper import UsesQApplication + +class QUiLoaderCreation(UsesQApplication): + + def testConstructor(self): + loader = QUiLoader() + +if __name__ == '__main__': + unittest.main() diff --git a/sources/pyside2/tests/QtUiTools/uiloader_test.py b/sources/pyside2/tests/QtUiTools/uiloader_test.py new file mode 100644 index 000000000..e429f5adc --- /dev/null +++ b/sources/pyside2/tests/QtUiTools/uiloader_test.py @@ -0,0 +1,71 @@ +############################################################################# +## +## Copyright (C) 2016 The Qt Company Ltd. +## Contact: https://www.qt.io/licensing/ +## +## This file is part of the test suite of PySide2. +## +## $QT_BEGIN_LICENSE:GPL-EXCEPT$ +## Commercial License Usage +## Licensees holding valid commercial Qt licenses may use this file in +## accordance with the commercial license agreement provided with the +## Software or, alternatively, in accordance with the terms contained in +## a written agreement between you and The Qt Company. For licensing terms +## and conditions see https://www.qt.io/terms-conditions. For further +## information use the contact form at https://www.qt.io/contact-us. +## +## GNU General Public License Usage +## Alternatively, this file may be used under the terms of the GNU +## General Public License version 3 as published by the Free Software +## Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +## included in the packaging of this file. Please review the following +## information to ensure the GNU General Public License requirements will +## be met: https://www.gnu.org/licenses/gpl-3.0.html. +## +## $QT_END_LICENSE$ +## +############################################################################# + +import unittest +import os +from helper import UsesQApplication + +from PySide2.QtWidgets import QWidget +from PySide2.QtUiTools import QUiLoader + +def get_file_path(): + for path in file_path: + if os.path.exists(path): + return path + return "" + +class QUioaderTeste(UsesQApplication): + def testLoadFile(self): + filePath = os.path.join(os.path.dirname(__file__), 'test.ui') + loader = QUiLoader() + parent = QWidget() + w = loader.load(filePath, parent) + self.assertNotEqual(w, None) + + self.assertEqual(len(parent.children()), 1) + + child = w.findChild(QWidget, "child_object") + self.assertNotEqual(child, None) + self.assertEqual(w.findChild(QWidget, "grandson_object"), child.findChild(QWidget, "grandson_object")) + + def testLoadFileUnicodeFilePath(self): + filePath = str(os.path.join(os.path.dirname(__file__), 'test.ui')) + loader = QUiLoader() + parent = QWidget() + w = loader.load(filePath, parent) + self.assertNotEqual(w, None) + + self.assertEqual(len(parent.children()), 1) + + child = w.findChild(QWidget, "child_object") + self.assertNotEqual(child, None) + self.assertEqual(w.findChild(QWidget, "grandson_object"), child.findChild(QWidget, "grandson_object")) + +if __name__ == '__main__': + unittest.main() + |