|
19 | 19 | QGraphicsLayoutItem |
20 | 20 | ) |
21 | 21 |
|
22 | | -import pyqtgraph as pg |
23 | | - |
24 | 22 | from Orange.clustering import hierarchical |
25 | 23 | from Orange.clustering.hierarchical import Tree |
26 | 24 | from Orange.widgets.utils import apply_all |
|
32 | 30 |
|
33 | 31 | from Orange.widgets.utils.graphicstextlist import TextListWidget |
34 | 32 | from Orange.widgets.utils.dendrogram import DendrogramWidget |
| 33 | +from Orange.widgets.visualize.utils.plotutils import AxisItem |
35 | 34 |
|
36 | 35 |
|
37 | 36 | def leaf_indices(tree: Tree) -> Sequence[int]: |
@@ -936,6 +935,11 @@ def setShowAverages(self, visible): |
936 | 935 | item.setVisible(visible) |
937 | 936 | item.setPreferredWidth(0 if not visible else 10) |
938 | 937 |
|
| 938 | + def changeEvent(self, event): |
| 939 | + if event.type() == QEvent.PaletteChange: |
| 940 | + self.__update_palette() |
| 941 | + super().changeEvent(event) |
| 942 | + |
939 | 943 | def event(self, event): |
940 | 944 | # type: (QEvent) -> bool |
941 | 945 | rval = super().event(event) |
@@ -992,6 +996,12 @@ def __select_by_cluster(self, item, dendrogramindex): |
992 | 996 | node.value.first, node.value.last - 1, hm, |
993 | 997 | clear=clear, remove=remove, append=append) |
994 | 998 |
|
| 999 | + def __update_palette(self): |
| 1000 | + for item in layout_items_recursive(self.layout()): |
| 1001 | + if isinstance(item, SimpleLayoutItem) \ |
| 1002 | + and isinstance(item.item, QGraphicsSimpleTextItem): |
| 1003 | + item.item.setBrush(self.palette().text()) |
| 1004 | + |
995 | 1005 | def heatmapAtPos(self, pos: QPointF) -> Optional['GraphicsHeatmapWidget']: |
996 | 1006 | for hw in chain.from_iterable(self.heatmap_widget_grid): |
997 | 1007 | if hw.contains(hw.mapFromItem(self, pos)): |
@@ -1234,7 +1244,7 @@ def remove_item(item: QGraphicsItem) -> None: |
1234 | 1244 | item.setParentItem(None) |
1235 | 1245 |
|
1236 | 1246 |
|
1237 | | -class _GradientLegendAxisItem(pg.AxisItem): |
| 1247 | +class _GradientLegendAxisItem(AxisItem): |
1238 | 1248 | def boundingRect(self): |
1239 | 1249 | br = super().boundingRect() |
1240 | 1250 | if self.orientation in ["top", "bottom"]: |
@@ -1335,12 +1345,6 @@ def __update(self): |
1335 | 1345 |
|
1336 | 1346 | self.updateGeometry() |
1337 | 1347 |
|
1338 | | - def changeEvent(self, event: QEvent) -> None: |
1339 | | - if event.type() == QEvent.PaletteChange: |
1340 | | - pen = QPen(self.palette().color(QPalette.Text)) |
1341 | | - self.__axis.setPen(pen) |
1342 | | - super().changeEvent(event) |
1343 | | - |
1344 | 1348 |
|
1345 | 1349 | class CategoricalColorLegend(QGraphicsWidget): |
1346 | 1350 | def __init__( |
@@ -1431,20 +1435,31 @@ def legend_item_pair(color: QColor, size: float, text: str): |
1431 | 1435 | def changeEvent(self, event: QEvent) -> None: |
1432 | 1436 | if event.type() == QEvent.FontChange: |
1433 | 1437 | self._updateFont(self.font()) |
| 1438 | + elif event.type() == QEvent.PaletteChange: |
| 1439 | + self._updatePalette() |
1434 | 1440 | super().changeEvent(event) |
1435 | 1441 |
|
1436 | 1442 | def _updateFont(self, font): |
1437 | 1443 | w = QFontMetrics(font).horizontalAdvance("X") |
1438 | | - for item in filter( |
1439 | | - lambda item: isinstance(item, SimpleLayoutItem), |
1440 | | - layout_items_recursive(self.__layout) |
1441 | | - ): |
| 1444 | + for item in self.__layoutItems(): |
1442 | 1445 | if isinstance(item.item, QGraphicsSimpleTextItem): |
1443 | 1446 | item.item.setFont(font) |
1444 | 1447 | elif isinstance(item.item, QGraphicsRectItem): |
1445 | 1448 | item.item.setRect(QRectF(0, 0, w, w)) |
1446 | 1449 | item.updateGeometry() |
1447 | 1450 |
|
| 1451 | + def _updatePalette(self): |
| 1452 | + palette = self.palette() |
| 1453 | + for item in self.__layoutItems(): |
| 1454 | + if isinstance(item.item, QGraphicsSimpleTextItem): |
| 1455 | + item.item.setBrush(palette.brush(QPalette.Text)) |
| 1456 | + |
| 1457 | + def __layoutItems(self): |
| 1458 | + return filter( |
| 1459 | + lambda item: isinstance(item, SimpleLayoutItem), |
| 1460 | + layout_items_recursive(self.__layout) |
| 1461 | + ) |
| 1462 | + |
1448 | 1463 |
|
1449 | 1464 | def layout_items(layout: QGraphicsLayout) -> Iterable[QGraphicsLayoutItem]: |
1450 | 1465 | for item in map(layout.itemAt, range(layout.count())): |
|
0 commit comments