summaryrefslogtreecommitdiff
path: root/src/silx/gui/plot/ComplexImageView.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/silx/gui/plot/ComplexImageView.py')
-rw-r--r--src/silx/gui/plot/ComplexImageView.py117
1 files changed, 55 insertions, 62 deletions
diff --git a/src/silx/gui/plot/ComplexImageView.py b/src/silx/gui/plot/ComplexImageView.py
index 7febd19..654a1c1 100644
--- a/src/silx/gui/plot/ComplexImageView.py
+++ b/src/silx/gui/plot/ComplexImageView.py
@@ -1,6 +1,6 @@
# /*##########################################################################
#
-# Copyright (c) 2017-2021 European Synchrotron Radiation Facility
+# Copyright (c) 2017-2023 European Synchrotron Radiation Facility
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@@ -33,10 +33,8 @@ __date__ = "24/04/2018"
import logging
-import collections
import numpy
-from ...utils.deprecation import deprecated
from .. import qt, icons
from .PlotWindow import Plot2D
from . import items
@@ -48,6 +46,7 @@ _logger = logging.getLogger(__name__)
# Widgets
+
class _AmplitudeRangeDialog(qt.QDialog):
"""QDialog asking for the amplitude range to display."""
@@ -57,12 +56,9 @@ class _AmplitudeRangeDialog(qt.QDialog):
It provides the new range as a 2-tuple: (max, delta)
"""
- def __init__(self,
- parent=None,
- amplitudeRange=None,
- displayedRange=(None, 2)):
+ def __init__(self, parent=None, amplitudeRange=None, displayedRange=(None, 2)):
super(_AmplitudeRangeDialog, self).__init__(parent)
- self.setWindowTitle('Set Displayed Amplitude Range')
+ self.setWindowTitle("Set Displayed Amplitude Range")
if amplitudeRange is not None:
amplitudeRange = min(amplitudeRange), max(amplitudeRange)
@@ -74,25 +70,24 @@ class _AmplitudeRangeDialog(qt.QDialog):
if self._amplitudeRange is not None:
min_, max_ = self._amplitudeRange
- layout.addRow(
- qt.QLabel('Data Amplitude Range: [%g, %g]' % (min_, max_)))
+ layout.addRow(qt.QLabel("Data Amplitude Range: [%g, %g]" % (min_, max_)))
self._maxLineEdit = FloatEdit(parent=self)
- self._maxLineEdit.validator().setBottom(0.)
+ self._maxLineEdit.validator().setBottom(0.0)
self._maxLineEdit.setAlignment(qt.Qt.AlignRight)
self._maxLineEdit.editingFinished.connect(self._rangeUpdated)
- layout.addRow('Displayed Max.:', self._maxLineEdit)
+ layout.addRow("Displayed Max.:", self._maxLineEdit)
- self._autoscale = qt.QCheckBox('autoscale')
+ self._autoscale = qt.QCheckBox("autoscale")
self._autoscale.toggled.connect(self._autoscaleCheckBoxToggled)
- layout.addRow('', self._autoscale)
+ layout.addRow("", self._autoscale)
self._deltaLineEdit = FloatEdit(parent=self)
- self._deltaLineEdit.validator().setBottom(1.)
+ self._deltaLineEdit.validator().setBottom(1.0)
self._deltaLineEdit.setAlignment(qt.Qt.AlignRight)
self._deltaLineEdit.editingFinished.connect(self._rangeUpdated)
- layout.addRow('Displayed delta (log10 unit):', self._deltaLineEdit)
+ layout.addRow("Displayed delta (log10 unit):", self._deltaLineEdit)
buttons = qt.QDialogButtonBox(self)
buttons.addButton(qt.QDialogButtonBox.Ok)
@@ -107,8 +102,7 @@ class _AmplitudeRangeDialog(qt.QDialog):
self.rejected.connect(self._handleRejected)
def _resetDialogToDefault(self):
- """Set Widgets of the dialog from range information
- """
+ """Set Widgets of the dialog from range information"""
max_, delta = self._defaultDisplayedRange
if max_ is not None: # Not in autoscale
@@ -116,7 +110,7 @@ class _AmplitudeRangeDialog(qt.QDialog):
elif self._amplitudeRange is not None: # Autoscale with data
displayedMax = self._amplitudeRange[1]
else: # Autoscale without data
- displayedMax = ''
+ displayedMax = ""
if displayedMax == "":
self._maxLineEdit.setText("")
else:
@@ -149,7 +143,7 @@ class _AmplitudeRangeDialog(qt.QDialog):
"""Handle autoscale checkbox state changes"""
if checked: # Use default values
if self._amplitudeRange is None:
- max_ = ''
+ max_ = ""
else:
max_ = self._amplitudeRange[1]
if max_ == "":
@@ -167,21 +161,31 @@ class _ComplexDataToolButton(qt.QToolButton):
:param plot: The :class:`ComplexImageView` to control
"""
- _MODES = collections.OrderedDict([
- (ImageComplexData.ComplexMode.ABSOLUTE, ('math-amplitude', 'Amplitude')),
- (ImageComplexData.ComplexMode.SQUARE_AMPLITUDE,
- ('math-square-amplitude', 'Square amplitude')),
- (ImageComplexData.ComplexMode.PHASE, ('math-phase', 'Phase')),
- (ImageComplexData.ComplexMode.REAL, ('math-real', 'Real part')),
- (ImageComplexData.ComplexMode.IMAGINARY,
- ('math-imaginary', 'Imaginary part')),
- (ImageComplexData.ComplexMode.AMPLITUDE_PHASE,
- ('math-phase-color', 'Amplitude and Phase')),
- (ImageComplexData.ComplexMode.LOG10_AMPLITUDE_PHASE,
- ('math-phase-color-log', 'Log10(Amp.) and Phase'))
- ])
-
- _RANGE_DIALOG_TEXT = 'Set Amplitude Range...'
+ _MODES = dict(
+ [
+ (ImageComplexData.ComplexMode.ABSOLUTE, ("math-amplitude", "Amplitude")),
+ (
+ ImageComplexData.ComplexMode.SQUARE_AMPLITUDE,
+ ("math-square-amplitude", "Square amplitude"),
+ ),
+ (ImageComplexData.ComplexMode.PHASE, ("math-phase", "Phase")),
+ (ImageComplexData.ComplexMode.REAL, ("math-real", "Real part")),
+ (
+ ImageComplexData.ComplexMode.IMAGINARY,
+ ("math-imaginary", "Imaginary part"),
+ ),
+ (
+ ImageComplexData.ComplexMode.AMPLITUDE_PHASE,
+ ("math-phase-color", "Amplitude and Phase"),
+ ),
+ (
+ ImageComplexData.ComplexMode.LOG10_AMPLITUDE_PHASE,
+ ("math-phase-color-log", "Log10(Amp.) and Phase"),
+ ),
+ ]
+ )
+
+ _RANGE_DIALOG_TEXT = "Set Amplitude Range..."
def __init__(self, parent=None, plot=None):
super(_ComplexDataToolButton, self).__init__(parent=parent)
@@ -207,16 +211,16 @@ class _ComplexDataToolButton(qt.QToolButton):
self.setPopupMode(qt.QToolButton.InstantPopup)
self._modeChanged(self._plot2DComplex.getComplexMode())
- self._plot2DComplex.sigVisualizationModeChanged.connect(
- self._modeChanged)
+ self._plot2DComplex.sigVisualizationModeChanged.connect(self._modeChanged)
def _modeChanged(self, mode):
"""Handle change of visualization modes"""
icon, text = self._MODES[mode]
self.setIcon(icons.getQIcon(icon))
- self.setToolTip('Display the ' + text.lower())
+ self.setToolTip("Display the " + text.lower())
self._rangeDialogAction.setEnabled(
- mode == ImageComplexData.ComplexMode.LOG10_AMPLITUDE_PHASE)
+ mode == ImageComplexData.ComplexMode.LOG10_AMPLITUDE_PHASE
+ )
def _triggered(self, action):
"""Handle triggering of menu actions"""
@@ -236,7 +240,8 @@ class _ComplexDataToolButton(qt.QToolButton):
dialog = _AmplitudeRangeDialog(
parent=self,
amplitudeRange=dataRange,
- displayedRange=self._plot2DComplex._getAmplitudeRangeInfo())
+ displayedRange=self._plot2DComplex._getAmplitudeRangeInfo(),
+ )
dialog.sigRangeChanged.connect(self._rangeChanged)
dialog.exec()
dialog.sigRangeChanged.disconnect(self._rangeChanged)
@@ -272,7 +277,7 @@ class ComplexImageView(qt.QWidget):
def __init__(self, parent=None):
super(ComplexImageView, self).__init__(parent)
if parent is None:
- self.setWindowTitle('ComplexImageView')
+ self.setWindowTitle("ComplexImageView")
self._plot2D = Plot2D(self)
@@ -284,14 +289,13 @@ class ComplexImageView(qt.QWidget):
# Create and add image to the plot
self._plotImage = ImageComplexData()
- self._plotImage.setName('__ComplexImageView__complex_image__')
+ self._plotImage.setName("__ComplexImageView__complex_image__")
self._plotImage.sigItemChanged.connect(self._itemChanged)
self._plot2D.addItem(self._plotImage)
- self._plot2D.setActiveImage(self._plotImage.getName())
+ self._plot2D.setActiveImage(self._plotImage)
- toolBar = qt.QToolBar('Complex', self)
- toolBar.addWidget(
- _ComplexDataToolButton(parent=self, plot=self))
+ toolBar = qt.QToolBar("Complex", self)
+ toolBar.addWidget(_ComplexDataToolButton(parent=self, plot=self))
self._plot2D.insertToolBar(self._plot2D.getProfileToolbar(), toolBar)
@@ -344,8 +348,10 @@ class ComplexImageView(qt.QWidget):
:rtype: numpy.ndarray of float with 2 dims or RGBA image (uint8).
"""
mode = self.getComplexMode()
- if mode in (self.ComplexMode.AMPLITUDE_PHASE,
- self.ComplexMode.LOG10_AMPLITUDE_PHASE):
+ if mode in (
+ self.ComplexMode.AMPLITUDE_PHASE,
+ self.ComplexMode.LOG10_AMPLITUDE_PHASE,
+ ):
return self._plotImage.getRgbaImageData(copy=copy)
else:
return self._plotImage.getData(copy=copy)
@@ -354,19 +360,6 @@ class ComplexImageView(qt.QWidget):
Mode = ComplexMode
- @classmethod
- @deprecated(replacement='supportedComplexModes', since_version='0.11.0')
- def getSupportedVisualizationModes(cls):
- return cls.supportedComplexModes()
-
- @deprecated(replacement='setComplexMode', since_version='0.11.0')
- def setVisualizationMode(self, mode):
- return self.setComplexMode(mode)
-
- @deprecated(replacement='getComplexMode', since_version='0.11.0')
- def getVisualizationMode(self):
- return self.getComplexMode()
-
# Image item proxy
@staticmethod
@@ -490,7 +483,7 @@ class ComplexImageView(qt.QWidget):
:rtype: :class:`.items.Axis`
"""
- return self.getPlot().getYAxis(axis='left')
+ return self.getPlot().getYAxis(axis="left")
def getGraphTitle(self):
"""Return the plot main title as a str."""