|
13 | 13 | __revision__ = '$Format:%H$' |
14 | 14 |
|
15 | 15 | import qgis # NOQA |
| 16 | +import sip |
16 | 17 |
|
17 | | -from qgis.core import QgsUnitTypes, QgsLayout, QgsProject, QgsLayoutPageCollection, QgsSimpleFillSymbolLayer, QgsFillSymbol |
18 | | -from qgis.PyQt.QtCore import Qt |
| 18 | +from qgis.core import QgsUnitTypes, QgsLayout, QgsLayoutItemPage, QgsProject, QgsLayoutPageCollection, QgsSimpleFillSymbolLayer, QgsFillSymbol |
| 19 | +from qgis.PyQt.QtCore import Qt, QCoreApplication, QEvent |
19 | 20 | from qgis.testing import start_app, unittest |
20 | 21 |
|
21 | 22 | start_app() |
@@ -49,6 +50,76 @@ def testSymbol(self): |
49 | 50 | self.assertEqual(collection.pageStyleSymbol().symbolLayer(0).color().name(), '#00ff00') |
50 | 51 | self.assertEqual(collection.pageStyleSymbol().symbolLayer(0).strokeColor().name(), '#ff0000') |
51 | 52 |
|
| 53 | + def testPages(self): |
| 54 | + """ |
| 55 | + Test adding/retrieving/deleting pages from the collection |
| 56 | + """ |
| 57 | + p = QgsProject() |
| 58 | + l = QgsLayout(p) |
| 59 | + collection = l.pageCollection() |
| 60 | + |
| 61 | + self.assertEqual(collection.pageCount(), 0) |
| 62 | + self.assertFalse(collection.pages()) |
| 63 | + self.assertFalse(collection.page(-1)) |
| 64 | + self.assertFalse(collection.page(0)) |
| 65 | + self.assertFalse(collection.page(1)) |
| 66 | + |
| 67 | + # add a page |
| 68 | + page = QgsLayoutItemPage(l) |
| 69 | + page.setPageSize('A4') |
| 70 | + collection.addPage(page) |
| 71 | + |
| 72 | + self.assertTrue(page in l.items()) |
| 73 | + |
| 74 | + self.assertEqual(collection.pageCount(), 1) |
| 75 | + self.assertEqual(collection.pages(), [page]) |
| 76 | + self.assertFalse(collection.page(-1)) |
| 77 | + self.assertEqual(collection.page(0), page) |
| 78 | + self.assertFalse(collection.page(1)) |
| 79 | + |
| 80 | + # add a second page |
| 81 | + page2 = QgsLayoutItemPage(l) |
| 82 | + page2.setPageSize('A5') |
| 83 | + collection.addPage(page2) |
| 84 | + |
| 85 | + self.assertEqual(collection.pageCount(), 2) |
| 86 | + self.assertEqual(collection.pages(), [page, page2]) |
| 87 | + self.assertFalse(collection.page(-1)) |
| 88 | + self.assertEqual(collection.page(0), page) |
| 89 | + self.assertEqual(collection.page(1), page2) |
| 90 | + |
| 91 | + # insert a page |
| 92 | + page3 = QgsLayoutItemPage(l) |
| 93 | + page3.setPageSize('A3') |
| 94 | + collection.insertPage(page3, 1) |
| 95 | + self.assertTrue(page3 in l.items()) |
| 96 | + |
| 97 | + self.assertEqual(collection.pageCount(), 3) |
| 98 | + self.assertEqual(collection.pages(), [page, page3, page2]) |
| 99 | + self.assertEqual(collection.page(0), page) |
| 100 | + self.assertEqual(collection.page(1), page3) |
| 101 | + self.assertEqual(collection.page(2), page2) |
| 102 | + |
| 103 | + # delete page |
| 104 | + collection.deletePage(-1) |
| 105 | + self.assertEqual(collection.pageCount(), 3) |
| 106 | + self.assertEqual(collection.pages(), [page, page3, page2]) |
| 107 | + collection.deletePage(100) |
| 108 | + self.assertEqual(collection.pageCount(), 3) |
| 109 | + self.assertEqual(collection.pages(), [page, page3, page2]) |
| 110 | + collection.deletePage(1) |
| 111 | + self.assertEqual(collection.pageCount(), 2) |
| 112 | + self.assertEqual(collection.pages(), [page, page2]) |
| 113 | + |
| 114 | + # make sure page was deleted |
| 115 | + QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete) |
| 116 | + self.assertTrue(sip.isdeleted(page3)) |
| 117 | + |
| 118 | + del l |
| 119 | + QCoreApplication.sendPostedEvents(None, QEvent.DeferredDelete) |
| 120 | + self.assertTrue(sip.isdeleted(page)) |
| 121 | + self.assertTrue(sip.isdeleted(page2)) |
| 122 | + |
52 | 123 |
|
53 | 124 | if __name__ == '__main__': |
54 | 125 | unittest.main() |
0 commit comments