diff options
Diffstat (limited to 'silx/gui/plot3d/tools/GroupPropertiesWidget.py')
-rw-r--r-- | silx/gui/plot3d/tools/GroupPropertiesWidget.py | 202 |
1 files changed, 0 insertions, 202 deletions
diff --git a/silx/gui/plot3d/tools/GroupPropertiesWidget.py b/silx/gui/plot3d/tools/GroupPropertiesWidget.py deleted file mode 100644 index ec995a3..0000000 --- a/silx/gui/plot3d/tools/GroupPropertiesWidget.py +++ /dev/null @@ -1,202 +0,0 @@ -# coding: utf-8 -# /*########################################################################## -# -# Copyright (c) 2018-2020 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 -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -# THE SOFTWARE. -# -# ###########################################################################*/ -""":class:`GroupPropertiesWidget` allows to reset properties in a GroupItem.""" - -from __future__ import absolute_import - -__authors__ = ["T. Vincent"] -__license__ = "MIT" -__date__ = "24/04/2018" - -from ....gui import qt -from ....gui.colors import Colormap -from ....gui.dialog.ColormapDialog import ColormapDialog - -from ..items import SymbolMixIn, ColormapMixIn - - -class GroupPropertiesWidget(qt.QWidget): - """Set properties of all items in a :class:`GroupItem` - - :param QWidget parent: - """ - - MAX_MARKER_SIZE = 20 - """Maximum value for marker size""" - - MAX_LINE_WIDTH = 10 - """Maximum value for line width""" - - def __init__(self, parent=None): - super(GroupPropertiesWidget, self).__init__(parent) - self._group = None - self.setEnabled(False) - - # Set widgets - layout = qt.QFormLayout(self) - self.setLayout(layout) - - # Colormap - colormapButton = qt.QPushButton('Set...') - colormapButton.setToolTip("Set colormap for all items") - colormapButton.clicked.connect(self._colormapButtonClicked) - layout.addRow('Colormap', colormapButton) - - self._markerComboBox = qt.QComboBox(self) - self._markerComboBox.addItems(SymbolMixIn.getSupportedSymbolNames()) - - # Marker - markerButton = qt.QPushButton('Set') - markerButton.setToolTip("Set marker for all items") - markerButton.clicked.connect(self._markerButtonClicked) - - markerLayout = qt.QHBoxLayout() - markerLayout.setContentsMargins(0, 0, 0, 0) - markerLayout.addWidget(self._markerComboBox, 1) - markerLayout.addWidget(markerButton, 0) - - layout.addRow('Marker', markerLayout) - - # Marker size - self._markerSizeSlider = qt.QSlider() - self._markerSizeSlider.setOrientation(qt.Qt.Horizontal) - self._markerSizeSlider.setSingleStep(1) - self._markerSizeSlider.setRange(1, self.MAX_MARKER_SIZE) - self._markerSizeSlider.setValue(1) - - markerSizeButton = qt.QPushButton('Set') - markerSizeButton.setToolTip("Set marker size for all items") - markerSizeButton.clicked.connect(self._markerSizeButtonClicked) - - markerSizeLayout = qt.QHBoxLayout() - markerSizeLayout.setContentsMargins(0, 0, 0, 0) - markerSizeLayout.addWidget(qt.QLabel('1')) - markerSizeLayout.addWidget(self._markerSizeSlider, 1) - markerSizeLayout.addWidget(qt.QLabel(str(self.MAX_MARKER_SIZE))) - markerSizeLayout.addWidget(markerSizeButton, 0) - - layout.addRow('Marker Size', markerSizeLayout) - - # Line width - self._lineWidthSlider = qt.QSlider() - self._lineWidthSlider.setOrientation(qt.Qt.Horizontal) - self._lineWidthSlider.setSingleStep(1) - self._lineWidthSlider.setRange(1, self.MAX_LINE_WIDTH) - self._lineWidthSlider.setValue(1) - - lineWidthButton = qt.QPushButton('Set') - lineWidthButton.setToolTip("Set line width for all items") - lineWidthButton.clicked.connect(self._lineWidthButtonClicked) - - lineWidthLayout = qt.QHBoxLayout() - lineWidthLayout.setContentsMargins(0, 0, 0, 0) - lineWidthLayout.addWidget(qt.QLabel('1')) - lineWidthLayout.addWidget(self._lineWidthSlider, 1) - lineWidthLayout.addWidget(qt.QLabel(str(self.MAX_LINE_WIDTH))) - lineWidthLayout.addWidget(lineWidthButton, 0) - - layout.addRow('Line Width', lineWidthLayout) - - self._colormapDialog = None # To store dialog - self._colormap = Colormap() - - def getGroup(self): - """Returns the :class:`GroupItem` this widget is attached to. - - :rtype: Union[GroupItem, None] - """ - return self._group - - def setGroup(self, group): - """Set the :class:`GroupItem` this widget is attached to. - - :param GroupItem group: GroupItem to control (or None) - """ - self._group = group - if group is not None: - self.setEnabled(True) - - def _colormapButtonClicked(self, checked=False): - """Handle colormap button clicked""" - group = self.getGroup() - if group is None: - return - - if self._colormapDialog is None: - self._colormapDialog = ColormapDialog(self) - self._colormapDialog.setColormap(self._colormap) - - previousColormap = self._colormapDialog.getColormap() - if self._colormapDialog.exec_(): - colormap = self._colormapDialog.getColormap() - - for item in group.visit(): - if isinstance(item, ColormapMixIn): - itemCmap = item.getColormap() - cmapName = colormap.getName() - if cmapName is not None: - itemCmap.setName(colormap.getName()) - else: - itemCmap.setColormapLUT(colormap.getColormapLUT()) - itemCmap.setNormalization(colormap.getNormalization()) - itemCmap.setGammaNormalizationParameter( - colormap.getGammaNormalizationParameter()) - itemCmap.setVRange(colormap.getVMin(), colormap.getVMax()) - else: - # Reset colormap - self._colormapDialog.setColormap(previousColormap) - - def _markerButtonClicked(self, checked=False): - """Handle marker set button clicked""" - group = self.getGroup() - if group is None: - return - - marker = self._markerComboBox.currentText() - for item in group.visit(): - if isinstance(item, SymbolMixIn): - item.setSymbol(marker) - - def _markerSizeButtonClicked(self, checked=False): - """Handle marker size set button clicked""" - group = self.getGroup() - if group is None: - return - - markerSize = self._markerSizeSlider.value() - for item in group.visit(): - if isinstance(item, SymbolMixIn): - item.setSymbolSize(markerSize) - - def _lineWidthButtonClicked(self, checked=False): - """Handle line width set button clicked""" - group = self.getGroup() - if group is None: - return - - lineWidth = self._lineWidthSlider.value() - for item in group.visit(): - if hasattr(item, 'setLineWidth'): - item.setLineWidth(lineWidth) |