From 1afbd81dd744f5c98c24a0d24ca4e3158cfbe1b7 Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Tue, 8 Mar 2016 11:23:44 +0000 Subject: [PATCH] Little bugfix in SliceCanvas (listener being called after destroy). OverlayList.find made a bit smarter - ignores NIFTI file extensions. --- fsl/fsleyes/gl/slicecanvas.py | 17 +++++++++-------- fsl/fsleyes/overlay.py | 21 ++++++++++++++++++++- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/fsl/fsleyes/gl/slicecanvas.py b/fsl/fsleyes/gl/slicecanvas.py index f38983d67..ef31b1c1e 100644 --- a/fsl/fsleyes/gl/slicecanvas.py +++ b/fsl/fsleyes/gl/slicecanvas.py @@ -245,14 +245,15 @@ class SliceCanvas(props.HasProperties): :class:`.DisplayContext`, and :class:`.Display` instances, and destroys OpenGL representations of all overlays. """ - self.removeListener('zax', self.name) - self.removeListener('pos', self.name) - self.removeListener('displayBounds', self.name) - self.removeListener('showCursor', self.name) - self.removeListener('invertX', self.name) - self.removeListener('invertY', self.name) - self.removeListener('zoom', self.name) - self.removeListener('renderMode', self.name) + self.removeListener('zax', self.name) + self.removeListener('pos', self.name) + self.removeListener('displayBounds', self.name) + self.removeListener('showCursor', self.name) + self.removeListener('invertX', self.name) + self.removeListener('invertY', self.name) + self.removeListener('zoom', self.name) + self.removeListener('renderMode', self.name) + self.removeListener('resolutionLimit', self.name) self.overlayList.removeListener('overlays', self.name) self.displayCtx .removeListener('bounds', self.name) diff --git a/fsl/fsleyes/overlay.py b/fsl/fsleyes/overlay.py index a90abfc50..daad912f8 100644 --- a/fsl/fsleyes/overlay.py +++ b/fsl/fsleyes/overlay.py @@ -65,6 +65,7 @@ import os.path as op import props import fsl.data.strings as strings +import fsl.data.image as fslimage import fsl.utils.settings as fslsettings import fsl.utils.status as status import fsl.utils.async as async @@ -157,9 +158,27 @@ class OverlayList(props.HasProperties): """Returns the first overlay with the given ``name`` or ``dataSource``, or ``None`` if there is no overlay with said ``name``/``dataSource``. """ + + if name is None: + return None + for overlay in self.overlays: - if overlay.name == name or overlay.dataSource == name: + + if overlay.name == name: return overlay + + if overlay.dataSource is None: + return None + + # Ignore file extensions for NIFTI1 images. + if isinstance(overlay, fslimage.Image): + if fslimage.removeExt(overlay.dataSource) == \ + fslimage.removeExt(name): + return overlay + else: + if overlay.dataSource == name: + return overlay + return None -- GitLab