diff --git a/fsl/fslview/views/canvaspanel.py b/fsl/fslview/views/canvaspanel.py index db5c1bb86512af65c9e29e1cf12e794093c09232..ffb550de6a5d13c9484b9d909564df5af6777d64 100644 --- a/fsl/fslview/views/canvaspanel.py +++ b/fsl/fslview/views/canvaspanel.py @@ -119,8 +119,8 @@ class CanvasPanel(viewpanel.ViewPanel): self.__colourBar.orientation = 'vertical' if self.colourBarLocation in ('top', 'left'): - self.__sizer.Add(self.__colourBar, flag=flag) - self.__sizer.Add(self.__canvasPanel, flag=wx.EXPAND, proportion=1) + self.__sizer.Add(self.__colourBar, flag=wx.EXPAND) + self.__sizer.Add(self.__canvasPanel, flag=flag, proportion=1) else: self.__sizer.Add(self.__canvasPanel, flag=flag, proportion=1) self.__sizer.Add(self.__colourBar, flag=wx.EXPAND) diff --git a/fsl/fslview/views/orthopanel.py b/fsl/fslview/views/orthopanel.py index d753f3fa076cecc0aa1f58e64beebfad25687560..0239094db180bd1468694f8c21e7fc59452a8174 100644 --- a/fsl/fslview/views/orthopanel.py +++ b/fsl/fslview/views/orthopanel.py @@ -264,19 +264,9 @@ class OrthoPanel(canvaspanel.CanvasPanel): self._displayCtx.addListener('location', self._name, move) # Callbacks for toggling x/y/z canvas display - def toggle(canvas, toggle): - self._canvasSizer.Show(canvas, toggle) - self._layoutChanged() - - self.addListener('showXCanvas', self._name, - lambda *a: toggle(self._xCanvasPanel, - self.showXCanvas)) - self.addListener('showYCanvas', self._name, - lambda *a: toggle(self._yCanvasPanel, - self.showYCanvas)) - self.addListener('showZCanvas', self._name, - lambda *a: toggle(self._zCanvasPanel, - self.showZCanvas)) + self.addListener('showXCanvas', self._name, self._layoutChanged) + self.addListener('showYCanvas', self._name, self._layoutChanged) + self.addListener('showZCanvas', self._name, self._layoutChanged) # Do some cleaning up if/when this panel is destroyed self.Bind(wx.EVT_WINDOW_DESTROY, self._onDestroy) @@ -292,6 +282,9 @@ class OrthoPanel(canvaspanel.CanvasPanel): Adds a listener to the currently selected image, to listen for changes on its affine transformation matrix. """ + + self._refreshLabels() + if len(self._imageList) == 0: return for i, img in enumerate(self._imageList): @@ -303,8 +296,6 @@ class OrthoPanel(canvaspanel.CanvasPanel): if i == self._displayCtx.selectedImage: img.addListener('transform', self._name, self._refreshLabels) - self._refreshLabels() - def _onDestroy(self, ev): """Called when this panel is destroyed. @@ -543,11 +534,15 @@ class OrthoPanel(canvaspanel.CanvasPanel): # TODO This assumes RAS orientation - we could # automaticaly generate the canvas order from # anatomical orientation labels - self._xcanvas.invertX = layout == 'grid' + self._zcanvas.invertY = layout == 'grid' if layout == 'grid': canvases = [self._yCanvasPanel, self._xCanvasPanel, self._zCanvasPanel] + show = [self.showYCanvas, + self.showXCanvas, + self.showZCanvas] + # For vertical/horizontal # layouts, we just go with XYZ @@ -555,10 +550,12 @@ class OrthoPanel(canvaspanel.CanvasPanel): canvases = [self._xCanvasPanel, self._yCanvasPanel, self._zCanvasPanel] + show = [self.showXCanvas, + self.showYCanvas, + self.showZCanvas] - # Generate a list of canvases for which + # Pick out the canvases for which # the 'show*Canvas' property is true - show = [self.showXCanvas, self.showYCanvas, self.showZCanvas] if any(show): canvases = list( @@ -566,6 +563,10 @@ class OrthoPanel(canvaspanel.CanvasPanel): else: canvases = [] + self._xCanvasPanel.Show(self.showXCanvas) + self._yCanvasPanel.Show(self.showYCanvas) + self._zCanvasPanel.Show(self.showZCanvas) + if len(canvases) == 0: return @@ -619,9 +620,9 @@ class OrthoPanel(canvaspanel.CanvasPanel): widgets += [space] * (ncols + 2) # Add all those widgets to the grid sizer - for w in widgets: - self._canvasSizer.Add( w, flag=wx.ALIGN_CENTRE_HORIZONTAL | - wx.ALIGN_CENTRE_VERTICAL) + for i, w in enumerate(widgets): + self._canvasSizer.Add(w, flag=wx.ALIGN_CENTRE_HORIZONTAL | + wx.ALIGN_CENTRE_VERTICAL) self.getCanvasPanel().SetSizer(self._canvasSizer) diff --git a/fsl/fslview/views/spacepanel.py b/fsl/fslview/views/spacepanel.py index 7ace114910152fde17d897cee39232345ce17ad9..d85d751b364026afca295ac2454406d27d967716 100644 --- a/fsl/fslview/views/spacepanel.py +++ b/fsl/fslview/views/spacepanel.py @@ -53,9 +53,19 @@ class SpacePanel(viewpanel.ViewPanel): self.SetSizer(self._sizer) self._sizer.Add(self._canvas, flag=wx.EXPAND, proportion=1) + self.Bind(wx.EVT_WINDOW_DESTROY, self._onDestroy) + self._selectedImageChanged() + def _onDestroy(self, ev): + ev.Skip() + self._iamgeList.removeListener('images', self._name) + self._iamgeList.removeListener('selectedImage', self._name) + + + + def _selectedImageChanged(self, *a): self._axis.clear()