Add tests for qmlregisterType function and qml list properties.
Reviewer: Marcelo Lira <marcelo.lira@openbossa.org>
Luciano Wolf <luciano.wolf@openbossa.org>
This commit is contained in:
parent
a6955f9fed
commit
94d8426d1c
3 changed files with 122 additions and 0 deletions
|
|
@ -3,3 +3,4 @@ PYSIDE_TEST(bug_456.py)
|
||||||
PYSIDE_TEST(qdeclarativenetwork_test.py)
|
PYSIDE_TEST(qdeclarativenetwork_test.py)
|
||||||
PYSIDE_TEST(qdeclarativeview_test.py)
|
PYSIDE_TEST(qdeclarativeview_test.py)
|
||||||
PYSIDE_TEST(connect_python_qml.py)
|
PYSIDE_TEST(connect_python_qml.py)
|
||||||
|
PYSIDE_TEST(registertype.py)
|
||||||
|
|
|
||||||
92
tests/QtDeclarative/registertype.py
Normal file
92
tests/QtDeclarative/registertype.py
Normal file
|
|
@ -0,0 +1,92 @@
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import unittest
|
||||||
|
import helper
|
||||||
|
from PySide.QtCore import *
|
||||||
|
from PySide.QtGui import *
|
||||||
|
from PySide.QtDeclarative import *
|
||||||
|
|
||||||
|
class PieSlice (QDeclarativeItem):
|
||||||
|
|
||||||
|
def __init__(self, parent = None):
|
||||||
|
QDeclarativeItem.__init__(self, parent)
|
||||||
|
# need to disable this flag to draw inside a QDeclarativeItem
|
||||||
|
self.setFlag(QGraphicsItem.ItemHasNoContents, False)
|
||||||
|
self._color = QColor()
|
||||||
|
self._fromAngle = 0
|
||||||
|
self._angleSpan = 0
|
||||||
|
|
||||||
|
def getColor(self):
|
||||||
|
return self._color
|
||||||
|
|
||||||
|
def setColor(self, value):
|
||||||
|
self._color = value
|
||||||
|
|
||||||
|
def getFromAngle(self):
|
||||||
|
return self._angle
|
||||||
|
|
||||||
|
def setFromAngle(self, value):
|
||||||
|
self._fromAngle = value
|
||||||
|
|
||||||
|
def getAngleSpan(self):
|
||||||
|
return self._angleSpan
|
||||||
|
|
||||||
|
def setAngleSpan(self, value):
|
||||||
|
self._angleSpan = value
|
||||||
|
|
||||||
|
color = Property(QColor, getColor, setColor)
|
||||||
|
fromAngle = Property(int, getFromAngle, setFromAngle)
|
||||||
|
angleSpan = Property(int, getAngleSpan, setAngleSpan)
|
||||||
|
|
||||||
|
def paint(self, painter, options, widget):
|
||||||
|
global paintCalled
|
||||||
|
pen = QPen(self._color, 2)
|
||||||
|
painter.setPen(pen);
|
||||||
|
painter.setRenderHints(QPainter.Antialiasing, True);
|
||||||
|
painter.drawPie(self.boundingRect(), self._fromAngle * 16, self._angleSpan * 16);
|
||||||
|
paintCalled = True
|
||||||
|
|
||||||
|
class PieChart (QDeclarativeItem):
|
||||||
|
|
||||||
|
def __init__(self, parent = None):
|
||||||
|
QDeclarativeItem.__init__(self, parent)
|
||||||
|
self._name = u''
|
||||||
|
self._slices = []
|
||||||
|
|
||||||
|
def getName(self):
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
def setName(self, value):
|
||||||
|
self._name = value
|
||||||
|
|
||||||
|
name = Property(unicode, getName, setName)
|
||||||
|
|
||||||
|
def appendSlice(self, _slice):
|
||||||
|
global appendCalled
|
||||||
|
_slice.setParentItem(self)
|
||||||
|
self._slices.append(_slice)
|
||||||
|
appendCalled = True
|
||||||
|
|
||||||
|
slices = ListProperty(PieSlice, append=appendSlice)
|
||||||
|
|
||||||
|
appendCalled = False
|
||||||
|
paintCalled = False
|
||||||
|
|
||||||
|
class TestQmlSupport(unittest.TestCase):
|
||||||
|
|
||||||
|
def testIt(self):
|
||||||
|
app = QApplication([])
|
||||||
|
|
||||||
|
qmlRegisterType(PieChart, 'Charts', 1, 0, 'PieChart');
|
||||||
|
qmlRegisterType(PieSlice, "Charts", 1, 0, "PieSlice");
|
||||||
|
|
||||||
|
view = QDeclarativeView()
|
||||||
|
view.setSource(QUrl.fromLocalFile(helper.adjust_filename('registertype.qml', __file__)))
|
||||||
|
view.show()
|
||||||
|
QTimer.singleShot(250, view.close)
|
||||||
|
app.exec_()
|
||||||
|
self.assertTrue(appendCalled)
|
||||||
|
self.assertTrue(paintCalled)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
unittest.main()
|
||||||
29
tests/QtDeclarative/registertype.qml
Normal file
29
tests/QtDeclarative/registertype.qml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
import Charts 1.0
|
||||||
|
import QtQuick 1.0
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: 300; height: 200
|
||||||
|
|
||||||
|
PieChart {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
width: 100; height: 100
|
||||||
|
|
||||||
|
slices: [
|
||||||
|
PieSlice {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "red"
|
||||||
|
fromAngle: 0; angleSpan: 110
|
||||||
|
},
|
||||||
|
PieSlice {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "black"
|
||||||
|
fromAngle: 110; angleSpan: 50
|
||||||
|
},
|
||||||
|
PieSlice {
|
||||||
|
anchors.fill: parent
|
||||||
|
color: "blue"
|
||||||
|
fromAngle: 160; angleSpan: 100
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue