Skip to content

Commit e57dd6d

Browse files
committed
heatmap: Adapt to palette change
1 parent df1a729 commit e57dd6d

File tree

1 file changed

+28
-13
lines changed

1 file changed

+28
-13
lines changed

Orange/widgets/visualize/utils/heatmap.py

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@
1919
QGraphicsLayoutItem
2020
)
2121

22-
import pyqtgraph as pg
23-
2422
from Orange.clustering import hierarchical
2523
from Orange.clustering.hierarchical import Tree
2624
from Orange.widgets.utils import apply_all
@@ -32,6 +30,7 @@
3230

3331
from Orange.widgets.utils.graphicstextlist import TextListWidget
3432
from Orange.widgets.utils.dendrogram import DendrogramWidget
33+
from Orange.widgets.visualize.utils.plotutils import AxisItem
3534

3635

3736
def leaf_indices(tree: Tree) -> Sequence[int]:
@@ -936,6 +935,11 @@ def setShowAverages(self, visible):
936935
item.setVisible(visible)
937936
item.setPreferredWidth(0 if not visible else 10)
938937

938+
def changeEvent(self, event):
939+
if event.type() == QEvent.PaletteChange:
940+
self.__update_palette()
941+
super().changeEvent(event)
942+
939943
def event(self, event):
940944
# type: (QEvent) -> bool
941945
rval = super().event(event)
@@ -992,6 +996,12 @@ def __select_by_cluster(self, item, dendrogramindex):
992996
node.value.first, node.value.last - 1, hm,
993997
clear=clear, remove=remove, append=append)
994998

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+
9951005
def heatmapAtPos(self, pos: QPointF) -> Optional['GraphicsHeatmapWidget']:
9961006
for hw in chain.from_iterable(self.heatmap_widget_grid):
9971007
if hw.contains(hw.mapFromItem(self, pos)):
@@ -1234,7 +1244,7 @@ def remove_item(item: QGraphicsItem) -> None:
12341244
item.setParentItem(None)
12351245

12361246

1237-
class _GradientLegendAxisItem(pg.AxisItem):
1247+
class _GradientLegendAxisItem(AxisItem):
12381248
def boundingRect(self):
12391249
br = super().boundingRect()
12401250
if self.orientation in ["top", "bottom"]:
@@ -1335,12 +1345,6 @@ def __update(self):
13351345

13361346
self.updateGeometry()
13371347

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-
13441348

13451349
class CategoricalColorLegend(QGraphicsWidget):
13461350
def __init__(
@@ -1431,20 +1435,31 @@ def legend_item_pair(color: QColor, size: float, text: str):
14311435
def changeEvent(self, event: QEvent) -> None:
14321436
if event.type() == QEvent.FontChange:
14331437
self._updateFont(self.font())
1438+
elif event.type() == QEvent.PaletteChange:
1439+
self._updatePalette()
14341440
super().changeEvent(event)
14351441

14361442
def _updateFont(self, font):
14371443
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():
14421445
if isinstance(item.item, QGraphicsSimpleTextItem):
14431446
item.item.setFont(font)
14441447
elif isinstance(item.item, QGraphicsRectItem):
14451448
item.item.setRect(QRectF(0, 0, w, w))
14461449
item.updateGeometry()
14471450

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+
14481463

14491464
def layout_items(layout: QGraphicsLayout) -> Iterable[QGraphicsLayoutItem]:
14501465
for item in map(layout.itemAt, range(layout.count())):

0 commit comments

Comments
 (0)