diff --git a/fsl/__init__.py b/fsl/__init__.py index dcd21e0618658f6923d39db018b18e84b3fe3e48..be8f9f4fde758044678f292af9085a02c559f073 100644 --- a/fsl/__init__.py +++ b/fsl/__init__.py @@ -59,9 +59,11 @@ import argparse import subprocess -# make matplotlib quiet +# make numpy/matplotlib quiet warnings.filterwarnings('ignore', module='matplotlib') warnings.filterwarnings('ignore', module='mpl_toolkits') +warnings.filterwarnings('ignore', module='numpy') + # My own custom logging level for tracing memory related events logging.MEMORY = 15 diff --git a/fsl/fslview/controls/atlaspanel.py b/fsl/fslview/controls/atlaspanel.py index 9868a3c278d1b30876d8b2855f09125aa8f61e10..45e283801ee1b713f8a590ce8b4cd6bb3654256d 100644 --- a/fsl/fslview/controls/atlaspanel.py +++ b/fsl/fslview/controls/atlaspanel.py @@ -209,11 +209,11 @@ class AtlasPanel(fslpanel.FSLViewPanel): # of having to look up the LUT object by its # display name if atlasID == 'HarvardOxford-Cortical': - opts.lut = fslcm.getLookupTable('MGH Cortical') + opts.lut = fslcm.getLookupTable('harvard-oxford-cortical') elif atlasID == 'HarvardOxford-Subcortical': - opts.lut = fslcm.getLookupTable('MGH Sub-cortical') + opts.lut = fslcm.getLookupTable('harvard-oxford-subcortical') else: - opts.lut = fslcm.getLookupTable('Random') + opts.lut = fslcm.getLookupTable('random') def locateRegion(self, atlasID, labelIdx): diff --git a/fsl/fslview/controls/orthotoolbar.py b/fsl/fslview/controls/orthotoolbar.py index 87709981e483e79da0c65f99a18843b3c7137b1d..414086975f44c6bc41df504100b90bab6714004d 100644 --- a/fsl/fslview/controls/orthotoolbar.py +++ b/fsl/fslview/controls/orthotoolbar.py @@ -11,6 +11,7 @@ import props import fsl.fslview.toolbar as fsltoolbar import fsl.fslview.icons as icons import fsl.fslview.actions as actions +import fsl.data.strings as strings class OrthoToolBar(fsltoolbar.FSLViewToolBar): @@ -61,7 +62,19 @@ class OrthoToolBar(fsltoolbar.FSLViewToolBar): 'showZCanvas' : orthoOpts, 'more' : self} - self.GenerateTools(toolSpecs, targets) + tools = [] + + for spec in toolSpecs: + widget = props.buildGUI(self, targets[spec.key], spec) + + if spec.key == 'zoom': + widget = self.MakeLabelledTool( + widget, + strings.properties[targets[spec.key], 'zoom']) + + tools.append(widget) + + self.SetTools(tools) def showMoreSettings(self, *a): diff --git a/fsl/fslview/controls/overlaydisplaytoolbar.py b/fsl/fslview/controls/overlaydisplaytoolbar.py index 7223ea2f5a09455eac29b311ced8995f84e8ea2b..457524eeb7cd7c835988153c2d57fc1ea206b92d 100644 --- a/fsl/fslview/controls/overlaydisplaytoolbar.py +++ b/fsl/fslview/controls/overlaydisplaytoolbar.py @@ -19,6 +19,7 @@ import fsl.fslview.toolbar as fsltoolbar import fsl.fslview.icons as icons import fsl.fslview.actions as actions import fsl.utils.typedict as td +import fsl.data.strings as strings import overlaydisplaypanel as overlaydisplay @@ -27,43 +28,65 @@ log = logging.getLogger(__name__) _TOOLBAR_PROPS = td.TypeDict({ - 'Display' : [ - props.Widget('name'), - props.Widget('overlayType'), - props.Widget('alpha', spin=False, showLimits=False), - props.Widget('brightness', spin=False, showLimits=False), - props.Widget('contrast', spin=False, showLimits=False)], - - 'VolumeOpts' : [ - props.Widget('cmap'), - props.Widget('displayRange', showLimits=False), - actions.ActionButton('VolumeOpts', - 'resetDisplayRange', - icon=icons.findImageFile('resetRange'))], + + 'Display' : { + 'name' : props.Widget('name'), + 'overlayType' : props.Widget('overlayType'), + 'alpha' : props.Widget('alpha', + spin=False, + showLimits=False), + 'brightness' : props.Widget('brightness', + spin=False, + showLimits=False), + 'contrast' : props.Widget('contrast', + spin=False, + showLimits=False)}, + + 'VolumeOpts' : { + 'displayRange' : props.Widget('displayRange', + slider=False, + showLimits=False), + 'resetDisplayRange' : actions.ActionButton( + 'VolumeOpts', + 'resetDisplayRange', + icon=icons.findImageFile('verticalReset')), + 'cmap' : props.Widget('cmap')}, + + 'MaskOpts' : { + 'threshold' : props.Widget('threshold', showLimits=False, spin=False), + 'colour' : props.Widget('colour')}, - 'MaskOpts' : [ - props.Widget('colour')], - - 'VectorOpts' : [ - props.Widget('modulate'), - props.Widget('modThreshold', showLimits=False, spin=False)], - - 'LabelOpts' : [ - props.Widget('lut'), - props.Widget('outline', - enabledWhen=lambda i, sw: not sw, - dependencies=[(lambda o: o.display, 'softwareMode')]), - props.Widget('outlineWidth', - enabledWhen=lambda i, sw: not sw, - dependencies=[(lambda o: o.display, 'softwareMode')], - showLimits=False, - spin=False)], - - 'ModelOpts' : [ - props.Widget('colour'), - props.Widget('outline'), - props.Widget('outlineWidth', showLimits=False, spin=False)] + + 'VectorOpts' : { + 'modulate' : props.Widget('modulate'), + 'modThreshold' : props.Widget('modThreshold', + showLimits=False, + spin=False)}, + + 'LabelOpts' : { + 'lut' : props.Widget('lut'), + 'outline' : props.Widget( + 'outline', + icon=[icons.findImageFile('outline'), + icons.findImageFile('filled')], + style=wx.VERTICAL, + enabledWhen=lambda i, sw: not sw, + dependencies=[(lambda o: o.display, 'softwareMode')]), + + 'outlineWidth' : props.Widget( + 'outlineWidth', + enabledWhen=lambda i, sw: not sw, + dependencies=[(lambda o: o.display, 'softwareMode')], + showLimits=False, + spin=False)}, + + 'ModelOpts' : { + 'colour' : props.Widget('colour'), + 'outline' : props.Widget('outline'), + 'outlineWidth' : props.Widget('outlineWidth', + showLimits=False, + spin=False)} }) @@ -152,6 +175,129 @@ class OverlayDisplayToolBar(fsltoolbar.FSLViewToolBar): self.Enable(display.enabled) + def __makeDisplayTools(self, display): + """ + """ + + dispSpecs = _TOOLBAR_PROPS[display] + + # Display settings + nameSpec = dispSpecs['name'] + typeSpec = dispSpecs['overlayType'] + alphaSpec = dispSpecs['alpha'] + briSpec = dispSpecs['brightness'] + conSpec = dispSpecs['contrast'] + + # Name/overlay type and brightness/contrast + # are respectively placed together + nameTypePanel = wx.Panel(self) + briconPanel = wx.Panel(self) + nameTypeSizer = wx.BoxSizer(wx.VERTICAL) + briconSizer = wx.FlexGridSizer(2, 2) + + briconSizer.AddGrowableCol(1) + + nameTypePanel.SetSizer(nameTypeSizer) + briconPanel .SetSizer(briconSizer) + + nameWidget = props.buildGUI(nameTypePanel, display, nameSpec) + typeWidget = props.buildGUI(nameTypePanel, display, typeSpec) + briWidget = props.buildGUI(briconPanel, display, briSpec) + conWidget = props.buildGUI(briconPanel, display, conSpec) + alphaWidget = props.buildGUI(self, display, alphaSpec) + + briLabel = wx.StaticText(briconPanel) + conLabel = wx.StaticText(briconPanel) + + briLabel.SetLabel(strings.properties[display, 'brightness']) + conLabel.SetLabel(strings.properties[display, 'contrast']) + + # name/type panel + nameTypeSizer.Add(nameWidget, flag=wx.EXPAND) + nameTypeSizer.Add(typeWidget, flag=wx.EXPAND) + + # opacity is given a label + alphaPanel = self.MakeLabelledTool( + alphaWidget, strings.properties[display, 'alpha']) + + # bricon panel + briconSizer.Add(briLabel) + briconSizer.Add(briWidget) + briconSizer.Add(conLabel) + briconSizer.Add(conWidget) + + return [nameTypePanel, alphaPanel, briconPanel] + + + def __makeVolumeOptsTools(self, opts): + """ + """ + rangeSpec = _TOOLBAR_PROPS[opts]['displayRange'] + resetSpec = _TOOLBAR_PROPS[opts]['resetDisplayRange'] + cmapSpec = _TOOLBAR_PROPS[opts]['cmap'] + + rangeWidget = props.buildGUI(self, opts, rangeSpec) + resetWidget = props.buildGUI(self, opts, resetSpec) + cmapWidget = props.buildGUI(self, opts, cmapSpec) + + cmapWidget = self.MakeLabelledTool( + cmapWidget, + strings.properties[opts, 'cmap']) + + return [rangeWidget, resetWidget, cmapWidget] + + + def __makeMaskOptsTools(self, opts): + """ + """ + thresSpec = _TOOLBAR_PROPS[opts]['threshold'] + colourSpec = _TOOLBAR_PROPS[opts]['colour'] + + thresWidget = props.buildGUI(self, opts, thresSpec) + colourWidget = props.buildGUI(self, opts, colourSpec) + + colourWidget = self.MakeLabelledTool( + colourWidget, + strings.properties[opts, 'colour']) + + return [thresWidget, colourWidget] + + + def __makeLabelOptsTools(self, opts): + """ + """ + + lutSpec = _TOOLBAR_PROPS[opts]['lut'] + outlineSpec = _TOOLBAR_PROPS[opts]['outline'] + widthSpec = _TOOLBAR_PROPS[opts]['outlineWidth'] + + # lut/outline width widgets + # are on a single panel + lutWidthPanel = wx.Panel(self) + lutWidthSizer = wx.FlexGridSizer(2, 2) + lutWidthPanel.SetSizer(lutWidthSizer) + + lutWidget = props.buildGUI(lutWidthPanel, opts, lutSpec) + widthWidget = props.buildGUI(lutWidthPanel, opts, widthSpec) + outlineWidget = props.buildGUI(self, opts, outlineSpec) + + # lutWidget = self.MakeLabelledTool( + # lutWidget, strings.properties[opts, 'lut']) + + lutLabel = wx.StaticText(lutWidthPanel) + widthLabel = wx.StaticText(lutWidthPanel) + + lutLabel .SetLabel(strings.properties[opts, 'lut']) + widthLabel.SetLabel(strings.properties[opts, 'outlineWidth']) + + lutWidthSizer.Add(lutLabel) + lutWidthSizer.Add(lutWidget, flag=wx.EXPAND) + lutWidthSizer.Add(widthLabel) + lutWidthSizer.Add(widthWidget, flag=wx.EXPAND) + + return [lutWidthPanel, outlineWidget] + + def __showTools(self, overlay): oldTools = self.GetTools() @@ -170,30 +316,27 @@ class OverlayDisplayToolBar(fsltoolbar.FSLViewToolBar): display = self._displayCtx.getDisplay(overlay) opts = display.getDisplayOpts() - - dispSpecs = _TOOLBAR_PROPS[display] - optsSpecs = _TOOLBAR_PROPS[opts] - dispTools, dispLabels = zip(*self.GenerateTools( - dispSpecs, display, add=False)) - optsTools, optsLabels = zip(*self.GenerateTools( - optsSpecs, opts, add=False)) + # Display tools + tools = self.__makeDisplayTools(display) + + # DisplayOpts tools + makeFunc = getattr(self, '_{}__make{}Tools'.format( + type(self).__name__, type(opts).__name__), None) - tools = list(dispTools) + list(optsTools) - labels = list(dispLabels) + list(optsLabels) + if makeFunc is not None: + tools.extend(makeFunc(opts)) # Button which opens the OverlayDisplayPanel more = props.buildGUI( self, self, - view=actions.ActionButton(self, - 'more', - icon=icons.findImageFile('gear32'))) + view=actions.ActionButton( + self, 'more', icon=icons.findImageFile('gear32'))) - tools .append(more) - labels.append(None) + tools.insert(0, more) - self.SetTools(tools, labels) + self.SetTools(tools) # This method may have been called via an # event handler an existing tool in the diff --git a/fsl/fslview/icons/filled.png b/fsl/fslview/icons/filled.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b4c4265504403cfbfbe82121a6fdfb96dd141c Binary files /dev/null and b/fsl/fslview/icons/filled.png differ diff --git a/fsl/fslview/icons/filled@2x.png b/fsl/fslview/icons/filled@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f57f4885b69546f4993360af0f01162fd02a5a Binary files /dev/null and b/fsl/fslview/icons/filled@2x.png differ diff --git a/fsl/fslview/icons/outline.png b/fsl/fslview/icons/outline.png new file mode 100644 index 0000000000000000000000000000000000000000..4b2eb9af1a2396cc825dae40c8c9a8b51cd4354e Binary files /dev/null and b/fsl/fslview/icons/outline.png differ diff --git a/fsl/fslview/icons/outline@2x.png b/fsl/fslview/icons/outline@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..b3ee8a63c0e3f0ae2cdc1ecef3d8c9a65af79f86 Binary files /dev/null and b/fsl/fslview/icons/outline@2x.png differ diff --git a/fsl/fslview/icons/resetRange.png b/fsl/fslview/icons/resetRange.png deleted file mode 100644 index f3f9bdf4f616bb5fc83caecea5540a0850a1da5c..0000000000000000000000000000000000000000 Binary files a/fsl/fslview/icons/resetRange.png and /dev/null differ diff --git a/fsl/fslview/icons/resetRange@2x.png b/fsl/fslview/icons/resetRange@2x.png deleted file mode 100644 index 041d1f2429cc998a11e6a70f45542ae63a0c0983..0000000000000000000000000000000000000000 Binary files a/fsl/fslview/icons/resetRange@2x.png and /dev/null differ diff --git a/fsl/fslview/icons/sources/filled.xcf b/fsl/fslview/icons/sources/filled.xcf new file mode 100644 index 0000000000000000000000000000000000000000..844f799c39ec2c6439a68976ea065f6fe023c1a1 Binary files /dev/null and b/fsl/fslview/icons/sources/filled.xcf differ diff --git a/fsl/fslview/icons/sources/outline.xcf b/fsl/fslview/icons/sources/outline.xcf new file mode 100644 index 0000000000000000000000000000000000000000..63e730334379ac2eabfbe4a2bcdd006da4e82950 Binary files /dev/null and b/fsl/fslview/icons/sources/outline.xcf differ diff --git a/fsl/fslview/icons/sources/thinLeftArrow.xcf b/fsl/fslview/icons/sources/thinLeftArrow.xcf index d63bc2dcd44ac685a6ffabaf4dab310e856b1aaf..4e2a23e65a57dede15f3a0557e25fbc7d4935efb 100644 Binary files a/fsl/fslview/icons/sources/thinLeftArrow.xcf and b/fsl/fslview/icons/sources/thinLeftArrow.xcf differ diff --git a/fsl/fslview/icons/sources/thinRightArrow.xcf b/fsl/fslview/icons/sources/thinRightArrow.xcf index 09776f3b092416049316841864f75121924b041d..764c2917002f44c4c08ef81cf95e362720bf895e 100644 Binary files a/fsl/fslview/icons/sources/thinRightArrow.xcf and b/fsl/fslview/icons/sources/thinRightArrow.xcf differ diff --git a/fsl/fslview/icons/sources/verticalReset.xcf b/fsl/fslview/icons/sources/verticalReset.xcf new file mode 100644 index 0000000000000000000000000000000000000000..effa62ef5d007ca8b4ef8e6846a2daead18bd0b8 Binary files /dev/null and b/fsl/fslview/icons/sources/verticalReset.xcf differ diff --git a/fsl/fslview/icons/thinLeftArrow.png b/fsl/fslview/icons/thinLeftArrow.png index c855f9ad7e6d0fd1f2a84add8d58b38e438a99dd..7c9ed20ab587178a35122c5ea5bb3aa4c5bbe6dd 100644 Binary files a/fsl/fslview/icons/thinLeftArrow.png and b/fsl/fslview/icons/thinLeftArrow.png differ diff --git a/fsl/fslview/icons/thinLeftArrow@2x.png b/fsl/fslview/icons/thinLeftArrow@2x.png index e891c14139834bc0735d72c9e21c0d32e3f60cff..fbf853803c465b7b274881bd12904f7bd2d79a01 100644 Binary files a/fsl/fslview/icons/thinLeftArrow@2x.png and b/fsl/fslview/icons/thinLeftArrow@2x.png differ diff --git a/fsl/fslview/icons/thinRightArrow.png b/fsl/fslview/icons/thinRightArrow.png index b8dbac6e2a63943b8bdb2c9e3cf4f38460271393..1508b1ba35514a7c81e1347f563dfef2c0687dee 100644 Binary files a/fsl/fslview/icons/thinRightArrow.png and b/fsl/fslview/icons/thinRightArrow.png differ diff --git a/fsl/fslview/icons/thinRightArrow@2x.png b/fsl/fslview/icons/thinRightArrow@2x.png index 6b33cae24bb3bbc5f1bdee51205a6967e30c8556..db09610f2e5509ba9d172f313745892966573e98 100644 Binary files a/fsl/fslview/icons/thinRightArrow@2x.png and b/fsl/fslview/icons/thinRightArrow@2x.png differ diff --git a/fsl/fslview/icons/verticalReset.png b/fsl/fslview/icons/verticalReset.png new file mode 100644 index 0000000000000000000000000000000000000000..1e437d51f3eb56b86c6a1872b5ee35d6fece1e6f Binary files /dev/null and b/fsl/fslview/icons/verticalReset.png differ diff --git a/fsl/fslview/icons/verticalReset@2x.png b/fsl/fslview/icons/verticalReset@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5f836f9c2fc89a24a9386a8135ccb5a042313f Binary files /dev/null and b/fsl/fslview/icons/verticalReset@2x.png differ diff --git a/fsl/fslview/toolbar.py b/fsl/fslview/toolbar.py index 7d59f7922753ebd7943004fc6c51a6c70376712f..5b1082cb576ccfd335cce899e9b3d56e3b8409f8 100644 --- a/fsl/fslview/toolbar.py +++ b/fsl/fslview/toolbar.py @@ -12,12 +12,9 @@ import wx.lib.newevent as wxevent import numpy as np -import props - import fsl.fslview.panel as fslpanel -import fsl.fslview.actions as actions import fsl.fslview.icons as icons -import fsl.data.strings as strings + log = logging.getLogger(__name__) @@ -40,45 +37,6 @@ class FSLViewToolBar(fslpanel._FSLViewPanel, wx.PyPanel): """ - class Tool(wx.Panel): - - - def __init__(self, parent, tool, label, labelText): - wx.Panel.__init__(self, parent) - - self.tool = tool - self.label = label - self.labelText = labelText - - tool.Reparent(self) - - self.sizer = wx.BoxSizer(wx.VERTICAL) - self.SetSizer(self.sizer) - - if label is not None: - label.Reparent(self) - self.sizer.Add(label, flag=wx.ALIGN_CENTRE, proportion=1) - - self.sizer.Add(self.tool, flag=wx.EXPAND, proportion=1) - self.Layout() - self.SetMinSize(self.sizer.GetMinSize()) - - - def __str__(self): - return '{}: {} ({}, {})'.format( - type(self) .__name__, - type(self.tool) .__name__, - type(self.label).__name__, - self.labelText) - - def Enable(self, *args, **kwargs): - wx.Panel.Enable(self, *args, **kwargs) - self.tool.Enable(*args, **kwargs) - - if self.label is not None: - self.label.Enable(*args, **kwargs) - - def __init__(self, parent, overlayList, displayCtx, actionz=None): wx.PyPanel.__init__(self, parent) fslpanel._FSLViewPanel.__init__(self, overlayList, displayCtx, actionz) @@ -204,46 +162,35 @@ class FSLViewToolBar(fslpanel._FSLViewPanel, wx.PyPanel): self.Layout() - def Enable(self, *args, **kwargs): - wx.PyPanel.Enable(self, *args, **kwargs) - for t in self.__tools: - t.Enable(*args, **kwargs) + def MakeLabelledTool(self, tool, labelText, labelSide=wx.TOP): - def GenerateTools(self, toolSpecs, targets, add=True): - """ - Targets may be a single object, or a dict of [toolSpec : target] - mappings. - """ + if labelSide in (wx.TOP, wx.BOTTOM): orient = wx.VERTICAL + elif labelSide in (wx.LEFT, wx.RIGHT): orient = wx.HORIZONTAL - tools = [] - labels = [] + panel = wx.Panel(self) + sizer = wx.BoxSizer(orient) - if not isinstance(targets, dict): - targets = {s.key : targets for s in toolSpecs} + panel.SetSizer(sizer) + tool.Reparent(panel) - for toolSpec in toolSpecs: - tool = props.buildGUI( - self, targets[toolSpec.key], toolSpec, showUnlink=False) - - # Assume that buttons are self-describing - if isinstance(tool, wx.AnyButton): - label = None - else: - label = None - # label = strings.properties.get( - # (targets[toolSpec.key], toolSpec.key), toolSpec.key) + label = wx.StaticText(panel) + label.SetLabel(labelText) - tools .append(tool) - labels.append(label) + if labelSide in (wx.TOP, wx.LEFT): + sizer.Add(label, flag=wx.ALIGN_CENTRE) + sizer.Add(tool, flag=wx.EXPAND) + else: + sizer.Add(tool, flag=wx.EXPAND) + sizer.Add(label, flag=wx.ALIGN_CENTRE) - if add: - self.InsertTool(tool, label, postevent=False) + return panel - if add: - wx.PostEvent(self, ToolBarEvent()) - return zip(tools, labels) + def Enable(self, *args, **kwargs): + wx.PyPanel.Enable(self, *args, **kwargs) + for t in self.__tools: + t.Enable(*args, **kwargs) def GetTools(self): @@ -252,63 +199,39 @@ class FSLViewToolBar(fslpanel._FSLViewPanel, wx.PyPanel): return self.__tools[:] - def AddTool(self, tool, labelText=None): - self.InsertTool(tool, labelText) + def AddTool(self, tool): + self.InsertTool(tool) - def InsertTools(self, tools, labels=None, index=None): + def InsertTools(self, tools, index=None): - if labels is None: - labels = [None] * len(tools) - - for i, (tool, label) in enumerate(zip(tools, labels), index): - self.InsertTool(tool, label, i, postevent=False) + for i, tool in enumerate(tools, index): + self.InsertTool(tool, i, postevent=False) wx.PostEvent(self, ToolBarEvent()) - def SetTools(self, tools, labels=None, destroy=False): - - if labels is None: - labels = [None] * len(tools) + def SetTools(self, tools, destroy=False): self.ClearTools(destroy, postevent=False) - for tool, label in zip(tools, labels): - self.InsertTool(tool, label, postevent=False) + for tool in tools: + self.InsertTool(tool, postevent=False) wx.PostEvent(self, ToolBarEvent()) - def InsertTool(self, tool, labelText=None, index=None, postevent=True): + def InsertTool(self, tool, index=None, postevent=True): if index is None: index = len(self.__tools) - if labelText is None: - label = None - - else: - label = wx.StaticText(self, - label=labelText, - style=wx.ALIGN_CENTRE) - label.SetFont(label.GetFont().Smaller().Smaller()) - - # Mouse wheel on the label will scroll - # through the toolbar items. We don't - # bind on the tool widget, because it - # might already be intercepting mouse - # wheel events - label.Bind(wx.EVT_MOUSEWHEEL, self.__onMouseWheel) - log.debug('{}: adding tool at index {}: {}'.format( - type(self).__name__, index, labelText)) + type(self).__name__, index, type(tool).__name__)) - toolPanel = FSLViewToolBar.Tool(self, tool, label, labelText) - - toolPanel.Bind(wx.EVT_MOUSEWHEEL, self.__onMouseWheel) + tool.Bind(wx.EVT_MOUSEWHEEL, self.__onMouseWheel) - self.__tools.insert(index, toolPanel) + self.__tools.insert(index, tool) self.InvalidateBestSize() self.__drawToolBar() diff --git a/fsl/fslview/views/colourbarpanel.py b/fsl/fslview/views/colourbarpanel.py index 3c9b684f763f3f606fa4f9960d3e544179571428..86bba09983b1ec714eba1cf2d69454b312bd4f3b 100644 --- a/fsl/fslview/views/colourbarpanel.py +++ b/fsl/fslview/views/colourbarpanel.py @@ -184,7 +184,8 @@ class ColourBarPanel(fslpanel.FSLViewPanel): """ if self._selectedOverlay is not None: - label = self._selectedOverlay.name + display = self._displayCtx.getDisplay(self._selectedOverlay) + label = display.name else: label = ''