Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 38 additions & 9 deletions src/silx/gui/data/DataViewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
from silx.gui.data import DataViews
from silx.gui.data.DataViews import (
NXDATA_STACK_MODE,
PLOT2D_MODE,
STACK_MODE,
IMAGE_MODE,
_normalizeData,
Expand Down Expand Up @@ -166,7 +167,8 @@ def createDefaultViews(self, parent=None):
DataViews._Hdf5View,
DataViews._NXdataView,
DataViews._Plot1dView,
DataViews._ImageView,
DataViews._Plot2dView,
DataViews._ComplexImageView,
DataViews._Plot3dView,
DataViews._RawView,
DataViews._Plot2dRecordView,
Expand Down Expand Up @@ -358,7 +360,16 @@ def getViewFromModeId(self, modeId):
deprecated_warning(
"Argument",
"DataViews.STACK_MODE",
replacement="DataViews.IMAGE_MODE",
replacement="DataViews.PLOT2D_MODE for real images, DataViews.COMPLEX_PLOT2D_MODE for complex images",
since_version="3.0.0",
)
return None

if modeId == IMAGE_MODE:
deprecated_warning(
"Argument",
"DataViews.IMAGE_MODE",
replacement="DataViews.PLOT2D_MODE for real images, DataViews.COMPLEX_PLOT2D_MODE for complex images",
since_version="3.0.0",
)
return None
Expand All @@ -377,21 +388,31 @@ def setDisplayMode(self, modeId: int):

- `DataViews.EMPTY_MODE`: display nothing
- `DataViews.PLOT1D_MODE`: display the data as a curve
- `DataViews.IMAGE_MODE`: display the data as an image
- `DataViews.PLOT2D_MODE`: display real data as an image
- `DataViews.COMPLEX_PLOT2D_MODE`: display complex data as an image
- `DataViews.PLOT3D_MODE`: display the data as an isosurface
- `DataViews.RAW_MODE`: display the data as a table
- `DataViews.STACK_MODE`: deprecated. Use `DataViews.IMAGE_MODE` instead.
- `DataViews.STACK_MODE`: deprecated. Use `DataViews.PLOT2D_MODE` or `DataViews.COMPLEX_PLOT2D_MODE` instead.
- `DataViews.HDF5_MODE`: display the data as a table of HDF5 info
- `DataViews.NXDATA_MODE`: display the data as NXdata
"""
if modeId == STACK_MODE:
deprecated_warning(
"Argument",
"DataViews.STACK_MODE",
replacement="DataViews.IMAGE_MODE",
replacement="DataViews.PLOT2D_MODE for real images, DataViews.COMPLEX_PLOT2D_MODE for complex images",
since_version="3.0.0",
)
modeId = IMAGE_MODE
modeId = PLOT2D_MODE

if modeId == IMAGE_MODE:
deprecated_warning(
"Argument",
"DataViews.IMAGE_MODE",
replacement="DataViews.PLOT2D_MODE for real images, DataViews.COMPLEX_PLOT2D_MODE for complex images",
since_version="3.0.0",
)
modeId = PLOT2D_MODE

try:
view = self.getViewFromModeId(modeId)
Expand Down Expand Up @@ -612,9 +633,8 @@ def replaceView(self, modeId: int, newView: DataViews.DataView) -> bool:

- `DataViews.EMPTY_MODE`
- `DataViews.PLOT1D_MODE`
- `DataViews.IMAGE_MODE`
- `DataViews.PLOT2D_MODE`
- `DataViews.COMPLEX_IMAGE_MODE`
- `DataViews.COMPLEX_PLOT2D_MODE`
- `DataViews.PLOT3D_MODE`
- `DataViews.RAW_MODE`
- `DataViews.HDF5_MODE`
Expand All @@ -632,7 +652,16 @@ def replaceView(self, modeId: int, newView: DataViews.DataView) -> bool:
deprecated_warning(
"Argument",
"DataViews.STACK_MODE",
replacement="DataViews.IMAGE_MODE",
replacement="DataViews.PLOT2D_MODE for real images, DataViews.COMPLEX_PLOT2D_MODE for complex images",
since_version="3.0.0",
)
return False

if modeId == IMAGE_MODE:
deprecated_warning(
"Argument",
"DataViews.IMAGE_MODE",
replacement="DataViews.PLOT2D_MODE for real images, DataViews.COMPLEX_PLOT2D_MODE for complex images",
since_version="3.0.0",
)
return False
Expand Down
25 changes: 5 additions & 20 deletions src/silx/gui/data/DataViews.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
RECORD_PLOT_MODE = 15
IMAGE_MODE = 20
PLOT2D_MODE = 21
COMPLEX_IMAGE_MODE = 22
COMPLEX_PLOT2D_MODE = 22
PLOT3D_MODE = 30
RAW_MODE = 40
RAW_ARRAY_MODE = 41
Expand Down Expand Up @@ -1125,6 +1125,8 @@ def getDataPriority(self, data, info):
return DataView.UNSUPPORTED
if data is None or not info.isArray or not (info.isNumeric or info.isBoolean):
return DataView.UNSUPPORTED
if info.isComplex:
return DataView.UNSUPPORTED
if info.dim < 2:
return DataView.UNSUPPORTED
if info.interpretation == "image":
Expand Down Expand Up @@ -1193,8 +1195,8 @@ class _ComplexImageView(DataView):
def __init__(self, parent):
super().__init__(
parent=parent,
modeId=COMPLEX_IMAGE_MODE,
label="Complex Image",
modeId=COMPLEX_PLOT2D_MODE,
label="Image",
icon=icons.getQIcon("view-2d"),
)

Expand Down Expand Up @@ -1464,23 +1466,6 @@ def __init__(self, parent):
self.addView(_RecordView(parent))


class _ImageView(CompositeDataView):
"""View displaying data as 2D image

It choose between Plot2D and ComplexImageView widgets
"""

def __init__(self, parent):
super().__init__(
parent=parent,
modeId=IMAGE_MODE,
label="Image",
icon=icons.getQIcon("view-2d"),
)
self.addView(_ComplexImageView(parent))
self.addView(_Plot2dView(parent))


class _InvalidNXdataView(DataView):
"""DataView showing a simple label with an error message
to inform that a group with @NX_class=NXdata cannot be
Expand Down
12 changes: 6 additions & 6 deletions src/silx/gui/data/test/test_dataviewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ def test_image_data(self):
widget.setData(data)
availableModes = {v.modeId() for v in widget.currentAvailableViews()}
self.assertEqual(DataViews.RAW_MODE, widget.displayMode())
self.assertIn(DataViews.IMAGE_MODE, availableModes)
self.assertIn(DataViews.PLOT2D_MODE, availableModes)

def test_image_bool(self):
data = numpy.zeros((10, 10), dtype=bool)
Expand All @@ -114,7 +114,7 @@ def test_image_bool(self):
widget.setData(data)
availableModes = {v.modeId() for v in widget.currentAvailableViews()}
self.assertEqual(DataViews.RAW_MODE, widget.displayMode())
self.assertIn(DataViews.IMAGE_MODE, availableModes)
self.assertIn(DataViews.PLOT2D_MODE, availableModes)

def test_image_complex_data(self):
data = numpy.arange(3**2, dtype=numpy.complex64)
Expand All @@ -123,7 +123,7 @@ def test_image_complex_data(self):
widget.setData(data)
availableModes = {v.modeId() for v in widget.currentAvailableViews()}
self.assertEqual(DataViews.RAW_MODE, widget.displayMode())
self.assertIn(DataViews.IMAGE_MODE, availableModes)
self.assertIn(DataViews.COMPLEX_PLOT2D_MODE, availableModes)

def test_plot_3d_data(self):
data = numpy.arange(3**3)
Expand All @@ -136,7 +136,7 @@ def test_plot_3d_data(self):

self.assertIn(DataViews.PLOT3D_MODE, availableModes)
except ImportError:
self.assertIn(DataViews.IMAGE_MODE, availableModes)
self.assertIn(DataViews.PLOT2D_MODE, availableModes)
self.assertEqual(DataViews.RAW_MODE, widget.displayMode())

def test_array_1d_data(self):
Expand Down Expand Up @@ -205,8 +205,8 @@ def test_change_display_mode(self):
assert listener.arguments() == [((0, 0, 0, slice(None)), None)]
listener.clear()

widget.setDisplayMode(DataViews.IMAGE_MODE)
self.assertEqual(widget.displayedView().modeId(), DataViews.IMAGE_MODE)
widget.setDisplayMode(DataViews.PLOT2D_MODE)
self.assertEqual(widget.displayedView().modeId(), DataViews.PLOT2D_MODE)
self.qWait(200)
assert listener.arguments() == [((0, 0, slice(None), slice(None)), None)]
listener.clear()
Expand Down
Loading