Source code for fsleyes.controls.histogramcontrolpanel

#
# histogramcontrolpanel.py - The HistogramControlPanel class.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""This module provides the :class:`HistogramControlPanel` class, a *FSLeyes
control* panel which allows a :class:`.HistogramPanel` to be configured.
"""

import wx

import fsleyes_props                     as props
import fsleyes.tooltips                  as fsltooltips
import fsleyes.strings                   as strings
import fsleyes.plotting.histogramseries  as hseries
import fsleyes.views.histogrampanel      as histogrampanel
from . import                               plotcontrolpanel


[docs]class HistogramControlPanel(plotcontrolpanel.PlotControlPanel): """The ``HistogramControlPanel`` is a *FSLeyes control* panel which allows the user to configure a :class:`.HistogramPanel`. A ``HistogramControlPanel`` looks something like the following: .. image:: images/histogramcontrolpanel.png :scale: 50% :align: center """
[docs] @staticmethod def defaultLayout(): """Returns a dictionary containing layout settings to be passed to :class:`.ViewPanel.togglePanel`. """ return {'location' : wx.RIGHT}
[docs] @staticmethod def supportedViews(): """Overrides :meth:`.ControlMixin.supportedViews`. The ``HistogramControlPanel`` is only intended to be added to :class:`.HistogramPanel` views. """ return [histogrampanel.HistogramPanel]
[docs] def __init__(self, *args, **kwargs): """Create a ``HistogramControlPanel``. All arguments are passed through to the :meth:`.PlotControlPanel.__init__` method. """ plotcontrolpanel.PlotControlPanel.__init__(self, *args, **kwargs)
[docs] def generateCustomPlotPanelWidgets(self, groupName): """Overrides :meth:`.PlotControlPanel.generateCustomPlotPanelWidgets`. Adds some widgets to control properties of the :class:`.HistogramPanel`. """ hsPanel = self.plotPanel widgetList = self.getWidgetList() allWidgets = [] histProps = ['histType', 'plotType'] for prop in histProps: kwargs = {} kwargs['labels'] = strings.choices[hsPanel, prop] widget = props.makeWidget(widgetList, hsPanel, prop, **kwargs) allWidgets.append(widget) widgetList.AddWidget( widget, displayName=strings.properties[hsPanel, prop], tooltip=fsltooltips.properties[hsPanel, prop], groupName=groupName) return allWidgets
[docs] def generateCustomDataSeriesWidgets(self, hs, groupName): """Overrides :meth:`.PlotControlPanel.generateCustomDataSeriesWidgets`. Adds some widgets to control properties of the :class:`.HistogramSeries`. """ isimage = isinstance(hs, hseries.ImageHistogramSeries) widgetList = self.getWidgetList() allWidgets = [] autoBin = props.Widget('autoBin') nbins = props.Widget('nbins', enabledWhen=lambda i: not i.autoBin, showLimits=False) autoBin = props.buildGUI(widgetList, hs, autoBin) nbins = props.buildGUI(widgetList, hs, nbins) dataRange = props.makeWidget( widgetList, hs, 'dataRange', labels=[strings.choices['HistogramPanel.dataRange.min'], strings.choices['HistogramPanel.dataRange.max']], showLimits=False) ignoreZeros = props.makeWidget(widgetList, hs, 'ignoreZeros') includeOutliers = props.makeWidget(widgetList, hs, 'includeOutliers') widgetList.AddWidget(ignoreZeros, groupName=groupName, displayName=strings.properties[hs, 'ignoreZeros'], tooltip=fsltooltips.properties[hs, 'ignoreZeros']) allWidgets.append(ignoreZeros) if isimage: showOverlay = props.makeWidget(widgetList, hs, 'showOverlay') widgetList.AddWidget( showOverlay, groupName=groupName, displayName=strings.properties[hs, 'showOverlay'], tooltip=fsltooltips.properties[hs, 'showOverlay']) allWidgets.append(showOverlay) widgetList.AddWidget(includeOutliers, groupName=groupName, displayName=strings.properties[hs, 'includeOutliers'], tooltip=fsltooltips.properties[hs, 'includeOutliers']) widgetList.AddWidget(autoBin, groupName=groupName, displayName=strings.properties[hs, 'autoBin'], tooltip=fsltooltips.properties[hs, 'autoBin']) widgetList.AddWidget(nbins, groupName=groupName, displayName=strings.properties[hs, 'nbins'], tooltip=fsltooltips.properties[hs, 'nbins']) widgetList.AddWidget(dataRange, groupName=groupName, displayName=strings.properties[hs, 'dataRange'], tooltip=fsltooltips.properties[hs, 'dataRange']) allWidgets.append(includeOutliers) allWidgets.append(autoBin) allWidgets.append(nbins) allWidgets.append(dataRange) if isinstance(hs, hseries.ComplexHistogramSeries): for propName in ['plotReal', 'plotImaginary', 'plotMagnitude', 'plotPhase']: widget = props.makeWidget(widgetList, hs, propName) widgetList.AddWidget( widget, groupName=groupName, displayName=strings.properties[hs, propName], tooltip=fsltooltips.properties[hs, propName]) allWidgets.append(widget) return allWidgets