Skip to content
Snippets Groups Projects
Commit aadb8197 authored by Paul McCarthy's avatar Paul McCarthy
Browse files

Generic plot-related options moved into a separate (reusable)

PlotControlPanel, which is now embedded in the TimeSeriesControlPanel.
parent 0ee9e94b
No related branches found
No related tags found
No related merge requests found
......@@ -198,11 +198,11 @@ labels = TypeDict({
'NewLutDialog.cancel' : 'Cancel',
'NewLutDialog.newLut' : 'New LUT',
'TimeSeriesControlPanel.xlim' : 'X limits',
'TimeSeriesControlPanel.ylim' : 'Y limits',
'TimeSeriesControlPanel.labels' : 'Labels',
'TimeSeriesControlPanel.xlabel' : 'X',
'TimeSeriesControlPanel.ylabel' : 'Y',
'PlotControlPanel.xlim' : 'X limits',
'PlotControlPanel.ylim' : 'Y limits',
'PlotControlPanel.labels' : 'Labels',
'PlotControlPanel.xlabel' : 'X',
'PlotControlPanel.ylabel' : 'Y',
})
......@@ -236,22 +236,22 @@ properties = TypeDict({
'OrthoOpts.yzoom' : 'Y zoom',
'OrthoOpts.zzoom' : 'Z zoom',
'HistogramPanel.dataRange' : 'Data range',
'HistogramPanel.autoHist' : 'Automatic histogram binning',
'HistogramPanel.nbins' : 'Number of bins',
'PlotPanel.legend' : 'Show legend',
'PlotPanel.ticks' : 'Show ticks',
'PlotPanel.grid' : 'Show grid',
'PlotPanel.smooth' : 'Smooth',
'PlotPanel.autoScale' : 'Auto-scale',
'PlotPanel.xLogScale' : 'Log scale (x axis)',
'PlotPanel.yLogScale' : 'Log scale (y axis)',
'PlotPanel.xlabel' : 'X label',
'PlotPanel.ylabel' : 'Y label',
'TimeSeriesPanel.demean' : 'Demean',
'TimeSeriesPanel.usePixdim' : 'Use pixdims',
'TimeSeriesPanel.legend' : 'Show legend',
'TimeSeriesPanel.ticks' : 'Show ticks',
'TimeSeriesPanel.grid' : 'Show grid',
'TimeSeriesPanel.smooth' : 'Smooth',
'TimeSeriesPanel.autoScale' : 'Auto-scale',
'TimeSeriesPanel.xLogScale' : 'Log scale (x axis)',
'TimeSeriesPanel.yLogScale' : 'Log scale (y axis)',
'TimeSeriesPanel.xlabel' : 'X label',
'TimeSeriesPanel.ylabel' : 'Y label',
'HistogramPanel.dataRange' : 'Data range',
'HistogramPanel.autoHist' : 'Automatic histogram binning',
'HistogramPanel.nbins' : 'Number of bins',
'OrthoEditProfile.selectionSize' : 'Selection size',
'OrthoEditProfile.selectionIs3D' : '3D selection',
......@@ -354,7 +354,7 @@ choices = TypeDict({
'ColourBarCanvas.orientation.horizontal' : 'Horizontal',
'ColourBarCanvas.orientation.vertical' : 'Vertical',
'ColourBarCanvas.labelSide.top-left' : 'Top / Left',
'ColourBarCanvas.labelSide.top-left' : 'Top / Left',
'ColourBarCanvas.labelSide.bottom-right' : 'Bottom / Right',
'VolumeOpts.displayRange.min' : 'Min.',
......
......@@ -13,6 +13,7 @@ from lightboxsettingspanel import LightBoxSettingsPanel
from locationpanel import LocationPanel
from orthosettingspanel import OrthoSettingsPanel
from lookuptablepanel import LookupTablePanel
from plotcontrolpanel import PlotControlPanel
from timeserieslistpanel import TimeSeriesListPanel
from timeseriescontrolpanel import TimeSeriesControlPanel
from histogramlistpanel import HistogramListPanel
......
#!/usr/bin/env python
#
# plotcontrolpanel.py -
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
import wx
import props
import fsl.fslview.panel as fslpanel
import fsl.data.strings as strings
class PlotControlPanel(fslpanel.FSLViewPanel):
def __init__(self, parent, overlayList, displayCtx, plotPanel):
fslpanel.FSLViewPanel.__init__(self, parent, overlayList, displayCtx)
self.__plotPanel = plotPanel
self.__logx = props.makeWidget(self, plotPanel, 'xLogScale')
self.__logy = props.makeWidget(self, plotPanel, 'yLogScale')
self.__smooth = props.makeWidget(self, plotPanel, 'smooth')
self.__legend = props.makeWidget(self, plotPanel, 'legend')
self.__ticks = props.makeWidget(self, plotPanel, 'ticks')
self.__grid = props.makeWidget(self, plotPanel, 'grid')
self.__autoScale = props.makeWidget(self, plotPanel, 'autoScale')
self.__xlabel = props.makeWidget(self, plotPanel, 'xlabel')
self.__ylabel = props.makeWidget(self, plotPanel, 'ylabel')
limits = props.makeListWidgets(self, plotPanel, 'limits')
self.__xmin = limits[0]
self.__xmax = limits[1]
self.__ymin = limits[2]
self.__ymax = limits[3]
self.__lblLabel = wx.StaticText(self)
self.__xlblLabel = wx.StaticText(self)
self.__ylblLabel = wx.StaticText(self)
self.__xlimLabel = wx.StaticText(self)
self.__ylimLabel = wx.StaticText(self)
self.__logx .SetLabel(strings.properties[plotPanel, 'xLogScale'])
self.__logy .SetLabel(strings.properties[plotPanel, 'yLogScale'])
self.__smooth .SetLabel(strings.properties[plotPanel, 'smooth'])
self.__legend .SetLabel(strings.properties[plotPanel, 'legend'])
self.__ticks .SetLabel(strings.properties[plotPanel, 'ticks'])
self.__grid .SetLabel(strings.properties[plotPanel, 'grid'])
self.__autoScale.SetLabel(strings.properties[plotPanel, 'autoScale'])
self.__xlimLabel.SetLabel(strings.labels[ self, 'xlim'])
self.__ylimLabel.SetLabel(strings.labels[ self, 'ylim'])
self.__lblLabel .SetLabel(strings.labels[ self, 'labels'])
self.__xlblLabel.SetLabel(strings.labels[ self, 'xlabel'])
self.__ylblLabel.SetLabel(strings.labels[ self, 'ylabel'])
self.__sizer = wx.GridSizer(6, 3)
self.SetSizer(self.__sizer)
self.__xlblSizer = wx.BoxSizer(wx.HORIZONTAL)
self.__xlblSizer.Add(self.__xlblLabel)
self.__xlblSizer.Add(self.__xlabel, flag=wx.EXPAND, proportion=1)
self.__ylblSizer = wx.BoxSizer(wx.HORIZONTAL)
self.__ylblSizer.Add(self.__ylblLabel)
self.__ylblSizer.Add(self.__ylabel, flag=wx.EXPAND, proportion=1)
self.__sizer.Add(self.__legend, flag=wx.EXPAND)
self.__sizer.Add(self.__ticks, flag=wx.EXPAND)
self.__sizer.Add(self.__grid, flag=wx.EXPAND)
self.__sizer.Add(self.__smooth, flag=wx.EXPAND)
self.__sizer.Add(self.__logx, flag=wx.EXPAND)
self.__sizer.Add(self.__logy, flag=wx.EXPAND)
self.__sizer.Add(self.__autoScale, flag=wx.EXPAND)
self.__sizer.Add((-1, -1), flag=wx.EXPAND)
self.__sizer.Add((-1, -1), flag=wx.EXPAND)
self.__sizer.Add(self.__lblLabel, flag=wx.EXPAND)
self.__sizer.Add(self.__xlblSizer, flag=wx.EXPAND)
self.__sizer.Add(self.__ylblSizer, flag=wx.EXPAND)
self.__sizer.Add(self.__xlimLabel, flag=wx.EXPAND)
self.__sizer.Add(self.__xmin, flag=wx.EXPAND)
self.__sizer.Add(self.__xmax, flag=wx.EXPAND)
self.__sizer.Add(self.__ylimLabel, flag=wx.EXPAND)
self.__sizer.Add(self.__ymin, flag=wx.EXPAND)
self.__sizer.Add(self.__ymax, flag=wx.EXPAND)
self.Layout()
self.SetMinSize(self.__sizer.GetMinSize())
self.SetMaxSize(self.__sizer.GetMinSize())
plotPanel.addListener('autoScale', self._name, self.__autoScaleChanged)
self.__autoScaleChanged()
def __autoScaleChanged(self, *a):
enableLim = not self.__plotPanel.autoScale
self.__xlimLabel.Enable(enableLim)
self.__ylimLabel.Enable(enableLim)
self.__xmin .Enable(enableLim)
self.__xmax .Enable(enableLim)
self.__ymin .Enable(enableLim)
self.__ymax .Enable(enableLim)
......@@ -11,6 +11,7 @@ import props
import fsl.fslview.panel as fslpanel
import fsl.data.strings as strings
import plotcontrolpanel
class TimeSeriesControlPanel(fslpanel.FSLViewPanel):
......@@ -21,98 +22,32 @@ class TimeSeriesControlPanel(fslpanel.FSLViewPanel):
self.__tsPanel = tsPanel
self.__tsControl = plotcontrolpanel.PlotControlPanel(
self, overlayList, displayCtx, tsPanel)
self.__tsControl.SetWindowStyleFlag(wx.SUNKEN_BORDER)
self.__demean = props.makeWidget(self, tsPanel, 'demean')
self.__usePixdim = props.makeWidget(self, tsPanel, 'usePixdim')
self.__logx = props.makeWidget(self, tsPanel, 'xLogScale')
self.__logy = props.makeWidget(self, tsPanel, 'yLogScale')
self.__smooth = props.makeWidget(self, tsPanel, 'smooth')
self.__legend = props.makeWidget(self, tsPanel, 'legend')
self.__ticks = props.makeWidget(self, tsPanel, 'ticks')
self.__grid = props.makeWidget(self, tsPanel, 'grid')
self.__autoScale = props.makeWidget(self, tsPanel, 'autoScale')
self.__xlabel = props.makeWidget(self, tsPanel, 'xlabel')
self.__ylabel = props.makeWidget(self, tsPanel, 'ylabel')
limits = props.makeListWidgets(self, tsPanel, 'limits')
self.__xmin = limits[0]
self.__xmax = limits[1]
self.__ymin = limits[2]
self.__ymax = limits[3]
self.__lblLabel = wx.StaticText(self)
self.__xlblLabel = wx.StaticText(self)
self.__ylblLabel = wx.StaticText(self)
self.__xlimLabel = wx.StaticText(self)
self.__ylimLabel = wx.StaticText(self)
self.__demean .SetLabel(strings.properties[tsPanel, 'demean'])
self.__usePixdim.SetLabel(strings.properties[tsPanel, 'usePixdim'])
self.__logx .SetLabel(strings.properties[tsPanel, 'xLogScale'])
self.__logy .SetLabel(strings.properties[tsPanel, 'yLogScale'])
self.__smooth .SetLabel(strings.properties[tsPanel, 'smooth'])
self.__legend .SetLabel(strings.properties[tsPanel, 'legend'])
self.__ticks .SetLabel(strings.properties[tsPanel, 'ticks'])
self.__grid .SetLabel(strings.properties[tsPanel, 'grid'])
self.__autoScale.SetLabel(strings.properties[tsPanel, 'autoScale'])
self.__xlimLabel.SetLabel(strings.labels[ self, 'xlim'])
self.__ylimLabel.SetLabel(strings.labels[ self, 'ylim'])
self.__lblLabel .SetLabel(strings.labels[ self, 'labels'])
self.__xlblLabel.SetLabel(strings.labels[ self, 'xlabel'])
self.__ylblLabel.SetLabel(strings.labels[ self, 'ylabel'])
self.__optSizer = wx.BoxSizer(wx.HORIZONTAL)
self.__optSizer.Add(self.__demean, flag=wx.EXPAND)
self.__optSizer.Add(self.__usePixdim, flag=wx.EXPAND)
self.__sizer = wx.GridSizer(6, 3)
self.__sizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(self.__sizer)
self.__xlblSizer = wx.BoxSizer(wx.HORIZONTAL)
self.__xlblSizer.Add(self.__xlblLabel)
self.__xlblSizer.Add(self.__xlabel, flag=wx.EXPAND, proportion=1)
self.__ylblSizer = wx.BoxSizer(wx.HORIZONTAL)
self.__ylblSizer.Add(self.__ylblLabel)
self.__ylblSizer.Add(self.__ylabel, flag=wx.EXPAND, proportion=1)
self.__sizer.Add(self.__demean, flag=wx.EXPAND)
self.__sizer.Add(self.__usePixdim, flag=wx.EXPAND)
self.__sizer.Add(self.__smooth, flag=wx.EXPAND)
self.__sizer.Add(self.__logx, flag=wx.EXPAND)
self.__sizer.Add(self.__logy, flag=wx.EXPAND)
self.__sizer.Add(self.__legend, flag=wx.EXPAND)
self.__sizer.Add(self.__ticks, flag=wx.EXPAND)
self.__sizer.Add(self.__grid, flag=wx.EXPAND)
self.__sizer.Add(self.__autoScale, flag=wx.EXPAND)
self.__sizer.Add(self.__lblLabel, flag=wx.EXPAND)
self.__sizer.Add(self.__xlblSizer, flag=wx.EXPAND)
self.__sizer.Add(self.__ylblSizer, flag=wx.EXPAND)
self.__sizer.Add(self.__xlimLabel, flag=wx.EXPAND)
self.__sizer.Add(self.__xmin, flag=wx.EXPAND)
self.__sizer.Add(self.__xmax, flag=wx.EXPAND)
self.__sizer.Add(self.__ylimLabel, flag=wx.EXPAND)
self.__sizer.Add(self.__ymin, flag=wx.EXPAND)
self.__sizer.Add(self.__ymax, flag=wx.EXPAND)
self.__sizer.Add(self.__optSizer,
flag=wx.EXPAND)
self.__sizer.Add(self.__tsControl,
flag=wx.EXPAND | wx.ALL,
border=5,
proportion=1)
self.Layout()
self.SetMinSize(self.__sizer.GetMinSize())
self.SetMaxSize(self.__sizer.GetMinSize())
tsPanel.addListener('autoScale', self._name, self.__autoScaleChanged)
self.__autoScaleChanged()
def __autoScaleChanged(self, *a):
enableLim = not self.__tsPanel.autoScale
self.__xlimLabel.Enable(enableLim)
self.__ylimLabel.Enable(enableLim)
self.__xmin .Enable(enableLim)
self.__xmax .Enable(enableLim)
self.__ymin .Enable(enableLim)
self.__ymax .Enable(enableLim)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment