From b309db9c85ae8e57b3b5ad21c606d15af1831dd0 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Mon, 20 Jul 2015 13:38:31 +0100 Subject: [PATCH] Vector overlay types were not being restricted --- fsl/fslview/controls/overlaylistpanel.py | 3 +++ fsl/fslview/displaycontext/display.py | 15 +++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/fsl/fslview/controls/overlaylistpanel.py b/fsl/fslview/controls/overlaylistpanel.py index 46800e001..76f44f211 100644 --- a/fsl/fslview/controls/overlaylistpanel.py +++ b/fsl/fslview/controls/overlaylistpanel.py @@ -100,7 +100,10 @@ class ListItemWidget(wx.Panel): if ev.GetEventObject() is not self: return + group = self.displayCtx.overlayGroups[0] + self.display.removeListener('enabled', self.name) + group .removeListener('overlays', self.name) if isinstance(self.overlay, fslimage.Image): self.overlay.removeListener('saved', self.name) diff --git a/fsl/fslview/displaycontext/display.py b/fsl/fslview/displaycontext/display.py index bb38e7af0..fae54eeae 100644 --- a/fsl/fslview/displaycontext/display.py +++ b/fsl/fslview/displaycontext/display.py @@ -165,8 +165,19 @@ class Display(props.SyncableHasProperties): # Populate the possible choices # for the overlayType property overlayTypeProp = self.getProp('overlayType') - possibleTypes = OVERLAY_TYPES[overlay] - + possibleTypes = list(OVERLAY_TYPES[overlay]) + + # Special cases: + # + # If the overlay is an image which + # does not have a fourth dimension + # of length three, it can't be + # a vector + if isinstance(overlay, fslimage.Image) and \ + (len(overlay.shape) != 4 or overlay.shape[-1] != 3): + possibleTypes.remove('rgbvector') + possibleTypes.remove('linevector') + for pt in possibleTypes: log.debug('Enabling overlay type {} for {}'.format(pt, overlay)) label = strings.choices[self, 'overlayType', pt] -- GitLab