diff --git a/src/silx/gui/data/DataViews.py b/src/silx/gui/data/DataViews.py index 474f2aeff1..22138510c7 100644 --- a/src/silx/gui/data/DataViews.py +++ b/src/silx/gui/data/DataViews.py @@ -1825,7 +1825,26 @@ def createWidget(self, parent): widget.getPlot().getColormapAction().setColormapDialog( self.defaultColorDialog() ) + self.__aggregationModeAction = AggregationModeAction(parent=widget) + widget.getPlot().toolBar().addAction(self.__aggregationModeAction) + self.__aggregationModeAction.sigAggregationModeChanged.connect(self._aggregationModeChanged) return widget + + def getAggregationModeAction(self) -> AggregationModeAction: + """Action toggling the aggregation mode action + """ + return self.__aggregationModeAction + + def _aggregationModeChanged(self): + plot = self.getWidget().getPlot() + item = plot._getItem("image") + + if item is None: + return + + if isinstance(item, ImageDataAggregated): + aggregationMode = self.getAggregationModeAction().getAggregationMode() + item.setAggregationMode(aggregationMode) def axesNames(self, data, info): # disabled (used by default axis selector widget in Hdf5Viewer) @@ -1862,6 +1881,14 @@ def setData(self, data): yscale=y_scale, keep_ratio=(x_units == y_units), ) + + item = self.getWidget().getPlot()._getItem("image") + + if item is None: + return + + if isinstance(item, ImageDataAggregated): + item.setAggregationMode(self.getAggregationModeAction().getAggregationMode()) def getDataPriority(self, data, info): data = self.normalizeData(data) diff --git a/src/silx/gui/data/NXdataWidgets.py b/src/silx/gui/data/NXdataWidgets.py index a2bab7a3d8..8fabd801d4 100644 --- a/src/silx/gui/data/NXdataWidgets.py +++ b/src/silx/gui/data/NXdataWidgets.py @@ -34,6 +34,7 @@ from silx.gui.data.NumpyAxesSelector import NumpyAxesSelector from silx.gui.plot import Plot1D, Plot2D, StackView, ScatterView, items from silx.gui.plot.ComplexImageView import ComplexImageView +from silx.gui.plot.items.image_aggregated import ImageDataAggregated from silx.gui.colors import Colormap from silx.gui.widgets.FrameBrowser import HorizontalSliderWithBrowser @@ -555,6 +556,10 @@ def _updateImage(self): "image", ) ) + imageItem = ImageDataAggregated() + imageItem.setName(legend) + self._plot.addItem(imageItem) + if xcalib.is_affine() and ycalib.is_affine(): # regular image xorigin, xscale = xcalib(0), xcalib.get_slope() @@ -564,14 +569,12 @@ def _updateImage(self): self._plot.getXAxis().setScale("linear") self._plot.getYAxis().setScale("linear") - self._plot.addImage( - image, - legend=legend, - origin=origin, - scale=scale, - replace=True, - resetzoom=False, - ) + + imageItem.setData(image) + imageItem.setOrigin(origin) + imageItem.setScale(scale) + imageItem.setColormap(self._plot.getDefaultColormap()) + else: xaxisscale, yaxisscale = self._axis_scales