|
23 | 23 | QgsStyle, |
24 | 24 | QgsStyleProxyModel) |
25 | 25 | from qgis.testing import start_app, unittest |
26 | | -from qgis.PyQt.QtCore import Qt |
| 26 | +from qgis.PyQt.QtCore import Qt, QSize |
27 | 27 | from qgis.PyQt.QtGui import QColor |
28 | 28 |
|
29 | 29 | start_app() |
@@ -715,6 +715,49 @@ def test_filter_proxy(self): |
715 | 715 | model.setSmartGroupId(-1) |
716 | 716 | self.assertEqual(model.rowCount(), 8) |
717 | 717 |
|
| 718 | + def testIconSize(self): |
| 719 | + """ |
| 720 | + Test that model has responsive icon sizes for decorations |
| 721 | + """ |
| 722 | + style = QgsStyle() |
| 723 | + style.createMemoryDatabase() |
| 724 | + |
| 725 | + symbol_a = createMarkerSymbol() |
| 726 | + symbol_a.setColor(QColor(255, 10, 10)) |
| 727 | + self.assertTrue(style.addSymbol('a', symbol_a, True)) |
| 728 | + ramp_a = QgsLimitedRandomColorRamp(5) |
| 729 | + self.assertTrue(style.addColorRamp('ramp a', ramp_a, True)) |
| 730 | + |
| 731 | + model = QgsStyleModel(style) |
| 732 | + self.assertEqual(model.rowCount(), 2) |
| 733 | + for i in range(2): |
| 734 | + icon = model.data(model.index(i, 0), Qt.DecorationRole) |
| 735 | + # by default, only 24x24 icon |
| 736 | + self.assertEqual(icon.availableSizes(), [QSize(24, 24)]) |
| 737 | + self.assertEqual(icon.actualSize(QSize(10, 10)), QSize(10, 10)) |
| 738 | + self.assertEqual(icon.actualSize(QSize(24, 24)), QSize(24, 24)) |
| 739 | + self.assertEqual(icon.actualSize(QSize(90, 90)), QSize(24, 24)) |
| 740 | + |
| 741 | + model.setProperty('icon_sizes', [QSize(24, 24), QSize(100, 90)]) |
| 742 | + icon = model.data(model.index(i, 0), Qt.DecorationRole) |
| 743 | + self.assertEqual(icon.availableSizes(), [QSize(24, 24), QSize(100, 90)]) |
| 744 | + self.assertEqual(icon.actualSize(QSize(10, 10)), QSize(10, 10)) |
| 745 | + self.assertEqual(icon.actualSize(QSize(24, 24)), QSize(24, 24)) |
| 746 | + self.assertEqual(icon.actualSize(QSize(25, 25)), QSize(25, 22)) |
| 747 | + self.assertEqual(icon.actualSize(QSize(90, 90)), QSize(90, 81)) |
| 748 | + self.assertEqual(icon.actualSize(QSize(125, 125)), QSize(100, 90)) |
| 749 | + |
| 750 | + model.setProperty('icon_sizes', [QSize(100, 90), QSize(200, 180)]) |
| 751 | + icon = model.data(model.index(i, 0), Qt.DecorationRole) |
| 752 | + self.assertEqual(icon.availableSizes(), [QSize(24, 24), QSize(100, 90), QSize(200, 180)]) |
| 753 | + self.assertEqual(icon.actualSize(QSize(10, 10)), QSize(10, 10)) |
| 754 | + self.assertEqual(icon.actualSize(QSize(24, 24)), QSize(24, 24)) |
| 755 | + self.assertEqual(icon.actualSize(QSize(25, 25)), QSize(25, 22)) |
| 756 | + self.assertEqual(icon.actualSize(QSize(90, 90)), QSize(90, 81)) |
| 757 | + self.assertEqual(icon.actualSize(QSize(125, 125)), QSize(125, 112)) |
| 758 | + self.assertEqual(icon.actualSize(QSize(225, 225)), QSize(200, 180)) |
| 759 | + model.setProperty('icon_sizes', None) |
| 760 | + |
718 | 761 |
|
719 | 762 | if __name__ == '__main__': |
720 | 763 | unittest.main() |
0 commit comments