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

1. Replaced OrthoSettingsPanel and LightBoxSettingsPanel with a

CanvasSettingsPanel, which uses WidgetList to display/organise
its controls.

2. DisplayContext (and CanvasPanel) has a new property,
'syncOverlayDisplay`, which syncs/unsyncs Display/DisplayOpts properties
to/from the parent instances.
parent a40539e7
No related branches found
No related tags found
No related merge requests found
...@@ -118,12 +118,11 @@ titles = TypeDict({ ...@@ -118,12 +118,11 @@ titles = TypeDict({
'AtlasPanel' : 'Atlases', 'AtlasPanel' : 'Atlases',
'LocationPanel' : 'Location', 'LocationPanel' : 'Location',
'OverlayDisplayToolBar' : 'Display toolbar', 'OverlayDisplayToolBar' : 'Display toolbar',
'CanvasSettingsPanel' : 'View settings',
'OverlayDisplayPanel' : 'Display settings', 'OverlayDisplayPanel' : 'Display settings',
'OrthoToolBar' : 'Ortho view toolbar', 'OrthoToolBar' : 'Ortho view toolbar',
'OrthoProfileToolBar' : 'Ortho view mode toolbar', 'OrthoProfileToolBar' : 'Ortho view mode toolbar',
'OrthoSettingsPanel' : 'Ortho view settings',
'LightBoxToolBar' : 'Lightbox view toolbar', 'LightBoxToolBar' : 'Lightbox view toolbar',
'LightBoxSettingsPanel' : 'Lightbox view settings',
'LookupTablePanel' : 'Lookup tables', 'LookupTablePanel' : 'Lookup tables',
'LutLabelDialog' : 'New LUT label', 'LutLabelDialog' : 'New LUT label',
'NewLutDialog' : 'New LUT', 'NewLutDialog' : 'New LUT',
...@@ -268,6 +267,10 @@ labels = TypeDict({ ...@@ -268,6 +267,10 @@ labels = TypeDict({
'OverlayDisplayPanel.ModelOpts' : 'Model settings', 'OverlayDisplayPanel.ModelOpts' : 'Model settings',
'OverlayDisplayPanel.loadCmap' : 'Load colour map', 'OverlayDisplayPanel.loadCmap' : 'Load colour map',
'CanvasSettingsPanel.scene' : 'Scene settings',
'CanvasSettingsPanel.ortho' : 'Ortho view settings',
'CanvasSettingsPanel.lightbox' : 'Lightbox settings',
}) })
...@@ -276,9 +279,10 @@ properties = TypeDict({ ...@@ -276,9 +279,10 @@ properties = TypeDict({
'Profile.mode' : 'Profile', 'Profile.mode' : 'Profile',
'CanvasPanel.syncLocation' : 'Sync location', 'CanvasPanel.syncLocation' : 'Sync location',
'CanvasPanel.syncOverlayOrder' : 'Sync overlay order', 'CanvasPanel.syncOverlayOrder' : 'Sync overlay order',
'CanvasPanel.profile' : 'Mode', 'CanvasPanel.syncOverlayDisplay' : 'Sync overlay display settings',
'CanvasPanel.profile' : 'Mode',
'SceneOpts.showCursor' : 'Show location cursor', 'SceneOpts.showCursor' : 'Show location cursor',
'SceneOpts.showColourBar' : 'Show colour bar', 'SceneOpts.showColourBar' : 'Show colour bar',
......
...@@ -9,17 +9,16 @@ from atlaspanel import AtlasPanel ...@@ -9,17 +9,16 @@ from atlaspanel import AtlasPanel
from overlaydisplaypanel import OverlayDisplayPanel from overlaydisplaypanel import OverlayDisplayPanel
from overlaylistpanel import OverlayListPanel from overlaylistpanel import OverlayListPanel
from overlayselectpanel import OverlaySelectPanel from overlayselectpanel import OverlaySelectPanel
from lightboxsettingspanel import LightBoxSettingsPanel
from locationpanel import LocationPanel from locationpanel import LocationPanel
from orthosettingspanel import OrthoSettingsPanel
from lookuptablepanel import LookupTablePanel from lookuptablepanel import LookupTablePanel
from timeserieslistpanel import TimeSeriesListPanel from timeserieslistpanel import TimeSeriesListPanel
from timeseriescontrolpanel import TimeSeriesControlPanel from timeseriescontrolpanel import TimeSeriesControlPanel
from histogramlistpanel import HistogramListPanel from histogramlistpanel import HistogramListPanel
from histogramcontrolpanel import HistogramControlPanel from histogramcontrolpanel import HistogramControlPanel
from clusterpanel import ClusterPanel from clusterpanel import ClusterPanel
from canvassettingspanel import CanvasSettingsPanel
from orthotoolbar import OrthoToolBar from orthotoolbar import OrthoToolBar
from orthoprofiletoolbar import OrthoProfileToolBar from orthoprofiletoolbar import OrthoProfileToolBar
from lightboxtoolbar import LightBoxToolBar from lightboxtoolbar import LightBoxToolBar
from overlaydisplaytoolbar import OverlayDisplayToolBar from overlaydisplaytoolbar import OverlayDisplayToolBar
#!/usr/bin/env python
#
# canvassettingspanel.py -
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
import wx
import props
import pwidgets.widgetlist as widgetlist
import fsl.data.strings as strings
import fsl.fslview.panel as fslpanel
_CANVASPANEL_PROPS = [
props.Widget(
'profile',
visibleWhen=lambda i: len(i.getProp('profile').getChoices(i)) > 1),
props.Widget('syncOverlayOrder'),
props.Widget('syncLocation'),
props.Widget('syncOverlayDisplay')
]
_SCENEOPTS_PROPS = [
props.Widget('showCursor'),
props.Widget('performance', spin=False, showLimits=False),
props.Widget('showColourBar'),
props.Widget('colourBarLabelSide', enabledWhen=lambda o: o.showColourBar),
props.Widget('colourBarLocation', enabledWhen=lambda o: o.showColourBar)
]
_ORTHOOPTS_PROPS = [
props.Widget('layout'),
props.Widget('zoom', spin=False, showLimits=False),
props.Widget('showLabels'),
props.Widget('showXCanvas'),
props.Widget('showYCanvas'),
props.Widget('showZCanvas')
]
_LIGHTBOXOPTS_PROPS = [
props.Widget('zax'),
props.Widget('zoom', showLimits=False, spin=False),
props.Widget('sliceSpacing', showLimits=False),
props.Widget('zrange', showLimits=False),
props.Widget('highlightSlice'),
props.Widget('showGridLines')
]
class CanvasSettingsPanel(fslpanel.FSLViewPanel):
def __init__(self, parent, overlayList, displayCtx, canvasPanel):
fslpanel.FSLViewPanel.__init__(self, parent, overlayList, displayCtx)
self.__widgets = widgetlist.WidgetList(self)
self.__sizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(self.__sizer)
self.__sizer.Add(self.__widgets, flag=wx.EXPAND, proportion=1)
import fsl.fslview.views.orthopanel as orthopanel
import fsl.fslview.views.lightboxpanel as lightboxpanel
if isinstance(canvasPanel, orthopanel.OrthoPanel):
panelGroup = 'ortho'
panelProps = _ORTHOOPTS_PROPS
elif isinstance(canvasPanel, lightboxpanel.LightBoxPanel):
panelGroup = 'lightbox'
panelProps = _LIGHTBOXOPTS_PROPS
self.__widgets.AddGroup('scene' , strings.labels[self, 'scene'])
self.__widgets.AddGroup( panelGroup, strings.labels[self, panelGroup])
for dispProp in _CANVASPANEL_PROPS:
widget = props.buildGUI(self.__widgets,
canvasPanel,
dispProp,
showUnlink=False)
self.__widgets.AddWidget(
widget,
strings.properties[canvasPanel, dispProp.key],
groupName='scene')
opts = canvasPanel.getSceneOptions()
for dispProp in _SCENEOPTS_PROPS:
widget = props.buildGUI(self.__widgets,
opts,
dispProp,
showUnlink=False)
self.__widgets.AddWidget(
widget,
strings.properties[opts, dispProp.key],
groupName='scene')
for dispProp in panelProps:
widget = props.buildGUI(self.__widgets,
opts,
dispProp,
showUnlink=False)
self.__widgets.AddWidget(
widget,
strings.properties[opts, dispProp.key],
groupName=panelGroup)
self.__widgets.Expand('scene')
self.__widgets.Expand(panelGroup)
self.SetMinSize((21, 21))
#!/usr/bin/env python
#
# lightboxsettingspanel.py -
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
import logging
import wx
import props
import fsl.fslview.panel as fslpanel
log = logging.getLogger(__name__)
class LightBoxSettingsPanel(fslpanel.FSLViewPanel):
def __init__(self, parent, overlayList, displayCtx, lb):
fslpanel.FSLViewPanel.__init__(self, parent, overlayList, displayCtx)
import fsl.fslview.layouts as layouts
self.panel = wx.ScrolledWindow(self)
self.panel.SetScrollRate(0, 5)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(self.sizer)
self.sizer.Add(self.panel, flag=wx.EXPAND, proportion=1)
self.canvasSettings = props.buildGUI(
self.panel, lb, layouts.layouts['CanvasPanel'])
self.divider1 = wx.StaticLine(
self.panel, size=(-1, -1), style=wx.LI_HORIZONTAL)
self.sceneSettings = props.buildGUI(
self.panel,
lb.getSceneOptions(),
layouts.layouts['SceneOpts'])
self.divider2 = wx.StaticLine(
self.panel, size=(-1, -1), style=wx.LI_HORIZONTAL)
self.lightBoxSettings = props.buildGUI(
self.panel,
lb.getSceneOptions(),
layouts.layouts['LightBoxPanel'])
self.panelSizer = wx.BoxSizer(wx.VERTICAL)
self.panel.SetSizer(self.panelSizer)
flags = wx.wx.EXPAND | wx.ALIGN_CENTRE | wx.ALL
self.panelSizer.Add(self.canvasSettings, border=20, flag=flags)
self.panelSizer.Add(self.divider1, flag=flags)
self.panelSizer.Add(self.sceneSettings, border=20, flag=flags)
self.panelSizer.Add(self.divider2, flag=flags)
self.panelSizer.Add(self.lightBoxSettings, border=20, flag=flags)
self.sizer .Layout()
self.panelSizer.Layout()
size = self.panelSizer.GetMinSize()
self.SetMinSize((size[0], size[1] / 3.0))
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
import fsl.fslview.toolbar as fsltoolbar import fsl.fslview.toolbar as fsltoolbar
import lightboxsettingspanel
class LightBoxToolBar(fsltoolbar.FSLViewToolBar): class LightBoxToolBar(fsltoolbar.FSLViewToolBar):
...@@ -50,7 +49,8 @@ class LightBoxToolBar(fsltoolbar.FSLViewToolBar): ...@@ -50,7 +49,8 @@ class LightBoxToolBar(fsltoolbar.FSLViewToolBar):
def showMoreSettings(self, *a): def showMoreSettings(self, *a):
import canvassettingspanel
self.lightBoxPanel.togglePanel( self.lightBoxPanel.togglePanel(
lightboxsettingspanel.LightBoxSettingsPanel, canvassettingspanel.CanvasSettingsPanel,
True, True,
self.lightBoxPanel) self.lightBoxPanel)
#!/usr/bin/env python
#
# orthosettingspanel.py -
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
import logging
import wx
import props
import fsl.fslview.panel as fslpanel
log = logging.getLogger(__name__)
class OrthoSettingsPanel(fslpanel.FSLViewPanel):
def __init__(self, parent, overlayList, displayCtx, ortho):
fslpanel.FSLViewPanel.__init__(self, parent, overlayList, displayCtx)
import fsl.fslview.layouts as layouts
self.panel = wx.ScrolledWindow(self)
self.panel.SetScrollRate(0, 5)
self.sizer = wx.BoxSizer(wx.VERTICAL)
self.SetSizer(self.sizer)
self.sizer.Add(self.panel, flag=wx.EXPAND, proportion=1)
self.canvasSettings = props.buildGUI(
self.panel, ortho, layouts.layouts['CanvasPanel'])
self.divider1 = wx.StaticLine(
self.panel, size=(-1, -1), style=wx.LI_HORIZONTAL)
self.sceneSettings = props.buildGUI(
self.panel, ortho.getSceneOptions(), layouts.layouts['SceneOpts'])
self.divider2 = wx.StaticLine(
self.panel, size=(-1, -1), style=wx.LI_HORIZONTAL)
self.orthoSettings = props.buildGUI(
self.panel, ortho.getSceneOptions(), layouts.layouts['OrthoPanel'])
self.panelSizer = wx.BoxSizer(wx.VERTICAL)
self.panel.SetSizer(self.panelSizer)
flags = wx.wx.EXPAND | wx.ALIGN_CENTRE | wx.ALL
self.panelSizer.Add(self.canvasSettings, border=20, flag=flags)
self.panelSizer.Add(self.divider1, flag=flags)
self.panelSizer.Add(self.sceneSettings, border=20, flag=flags)
self.panelSizer.Add(self.divider2, flag=flags)
self.panelSizer.Add(self.orthoSettings, border=20, flag=flags)
self.sizer .Layout()
self.panelSizer.Layout()
size = self.panelSizer.GetMinSize()
self.SetMinSize((size[0], size[1] / 3.0))
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
import fsl.fslview.toolbar as fsltoolbar import fsl.fslview.toolbar as fsltoolbar
import orthosettingspanel
class OrthoToolBar(fsltoolbar.FSLViewToolBar): class OrthoToolBar(fsltoolbar.FSLViewToolBar):
...@@ -38,5 +37,6 @@ class OrthoToolBar(fsltoolbar.FSLViewToolBar): ...@@ -38,5 +37,6 @@ class OrthoToolBar(fsltoolbar.FSLViewToolBar):
def showMoreSettings(self, *a): def showMoreSettings(self, *a):
import canvassettingspanel
self.orthoPanel.togglePanel( self.orthoPanel.togglePanel(
orthosettingspanel.OrthoSettingsPanel, True, self.orthoPanel) canvassettingspanel.CanvasSettingsPanel, True, self.orthoPanel)
...@@ -72,6 +72,16 @@ class DisplayContext(props.SyncableHasProperties): ...@@ -72,6 +72,16 @@ class DisplayContext(props.SyncableHasProperties):
""" """
syncOverlayDisplay = props.Boolean(default=True)
"""If this ``DisplayContext`` instance has a parent (see
:mod:`props.syncable`), and this is ``True``, the properties of the
:class:`.Display` and :class:`.DisplayOpts` for every overlay managed
by this ``DisplayContext`` instance will be synchronised to those of
the parent instance. Otherwise, the display properties for every overlay
will be unsynchronised from the parent.
"""
def __init__(self, overlayList, parent=None): def __init__(self, overlayList, parent=None):
"""Create a :class:`DisplayContext` object. """Create a :class:`DisplayContext` object.
...@@ -81,9 +91,11 @@ class DisplayContext(props.SyncableHasProperties): ...@@ -81,9 +91,11 @@ class DisplayContext(props.SyncableHasProperties):
as the parent of this instance. as the parent of this instance.
""" """
props.SyncableHasProperties.__init__(self, props.SyncableHasProperties.__init__(
parent, self,
nounbind=['overlayGroups']) parent,
nounbind=['overlayGroups'],
nobind=[ 'syncOverlayDisplay'])
self.__overlayList = overlayList self.__overlayList = overlayList
self.__name = '{}_{}'.format(self.__class__.__name__, id(self)) self.__name = '{}_{}'.format(self.__class__.__name__, id(self))
...@@ -103,6 +115,10 @@ class DisplayContext(props.SyncableHasProperties): ...@@ -103,6 +115,10 @@ class DisplayContext(props.SyncableHasProperties):
self.__name, self.__name,
self.__overlayListChanged) self.__overlayListChanged)
self.addListener('syncOverlayDisplay',
self.__name,
self.__syncOverlayDisplayChanged)
log.memory('{}.init ({})'.format(type(self).__name__, id(self))) log.memory('{}.init ({})'.format(type(self).__name__, id(self)))
...@@ -164,6 +180,11 @@ class DisplayContext(props.SyncableHasProperties): ...@@ -164,6 +180,11 @@ class DisplayContext(props.SyncableHasProperties):
parent=dParent, parent=dParent,
overlayType=overlayType) overlayType=overlayType)
self.__displays[overlay] = display self.__displays[overlay] = display
if (self.getParent() is not None) and \
(not self.syncOverlayDisplay):
display .unsyncAllFromParent()
display.getDisplayOpts().unsyncAllFromParent()
return display return display
...@@ -453,6 +474,30 @@ class DisplayContext(props.SyncableHasProperties): ...@@ -453,6 +474,30 @@ class DisplayContext(props.SyncableHasProperties):
self.location.xyz = newDispLoc self.location.xyz = newDispLoc
def __syncOverlayDisplayChanged(self, *a):
"""Called when the :attr:`syncOverlayDisplay` property
changes.
Synchronises or unsychronises the :class:`.Display` and
:class:`.DisplayOpts` instances for every overlay to/from their
parent instances.
"""
if self.getParent() is None:
return
for display in self.__displays.values():
opts = display.getDisplayOpts()
if self.syncOverlayDisplay:
display.syncAllToParent()
opts .syncAllToParent()
else:
display.unsyncAllFromParent()
opts .unsyncAllFromParent()
def __updateBounds(self, *a): def __updateBounds(self, *a):
"""Called when the overlay list changes, or when any overlay display """Called when the overlay list changes, or when any overlay display
transform is changed. Updates the :attr:`bounds` property. transform is changed. Updates the :attr:`bounds` property.
......
...@@ -17,7 +17,6 @@ import fsl.fslview.actions as actions ...@@ -17,7 +17,6 @@ import fsl.fslview.actions as actions
from fsl.fslview.profiles.orthoviewprofile import OrthoViewProfile from fsl.fslview.profiles.orthoviewprofile import OrthoViewProfile
from fsl.fslview.profiles.orthoeditprofile import OrthoEditProfile from fsl.fslview.profiles.orthoeditprofile import OrthoEditProfile
from fsl.fslview.views import CanvasPanel
from fsl.fslview.views import OrthoPanel from fsl.fslview.views import OrthoPanel
from fsl.fslview.views import LightBoxPanel from fsl.fslview.views import LightBoxPanel
...@@ -29,12 +28,9 @@ from fsl.fslview.displaycontext import Display ...@@ -29,12 +28,9 @@ from fsl.fslview.displaycontext import Display
from fsl.fslview.displaycontext import VolumeOpts from fsl.fslview.displaycontext import VolumeOpts
from fsl.fslview.displaycontext import MaskOpts from fsl.fslview.displaycontext import MaskOpts
from fsl.fslview.displaycontext import VectorOpts from fsl.fslview.displaycontext import VectorOpts
from fsl.fslview.displaycontext import RGBVectorOpts
from fsl.fslview.displaycontext import LineVectorOpts
from fsl.fslview.displaycontext import ModelOpts from fsl.fslview.displaycontext import ModelOpts
from fsl.fslview.displaycontext import LabelOpts from fsl.fslview.displaycontext import LabelOpts
from fsl.fslview.displaycontext import SceneOpts
from fsl.fslview.displaycontext import OrthoOpts from fsl.fslview.displaycontext import OrthoOpts
from fsl.fslview.displaycontext import LightBoxOpts from fsl.fslview.displaycontext import LightBoxOpts
...@@ -92,30 +88,6 @@ OrthoProfileToolBarEditLayout = [ ...@@ -92,30 +88,6 @@ OrthoProfileToolBarEditLayout = [
enabledWhen=lambda p: p.mode == 'selint')] enabledWhen=lambda p: p.mode == 'selint')]
CanvasPanelLayout = props.VGroup((
widget(CanvasPanel,
'profile',
visibleWhen=lambda i: len(i.getProp('profile').getChoices(i)) > 1),
widget(CanvasPanel, 'syncOverlayOrder'),
widget(CanvasPanel, 'syncLocation')))
SceneOptsLayout = props.VGroup((
widget(SceneOpts, 'showCursor'),
widget(SceneOpts, 'performance', spin=False, showLimits=False),
widget(SceneOpts, 'showColourBar'),
widget(SceneOpts, 'colourBarLabelSide'),
widget(SceneOpts, 'colourBarLocation')))
OrthoPanelLayout = props.VGroup((
widget(OrthoOpts, 'layout'),
widget(OrthoOpts, 'zoom', spin=False, showLimits=False),
widget(OrthoOpts, 'showLabels'),
props.HGroup((widget(OrthoOpts, 'showXCanvas'),
widget(OrthoOpts, 'showYCanvas'),
widget(OrthoOpts, 'showZCanvas')))))
####################################### #######################################
# LightBoxPanel control panels/toolbars # LightBoxPanel control panels/toolbars
####################################### #######################################
...@@ -130,15 +102,6 @@ LightBoxToolBarLayout = [ ...@@ -130,15 +102,6 @@ LightBoxToolBarLayout = [
actions.ActionButton(LightBoxToolBar, 'more')] actions.ActionButton(LightBoxToolBar, 'more')]
LightBoxPanelLayout = props.VGroup((
widget(LightBoxOpts, 'zax'),
widget(LightBoxOpts, 'zoom'),
widget(LightBoxOpts, 'sliceSpacing'),
widget(LightBoxOpts, 'zrange'),
widget(LightBoxOpts, 'highlightSlice'),
widget(LightBoxOpts, 'showGridLines')))
########################################## ##########################################
# Overlay display property panels/toolbars # Overlay display property panels/toolbars
...@@ -181,93 +144,8 @@ LabelOptsToolBarLayout = [ ...@@ -181,93 +144,8 @@ LabelOptsToolBarLayout = [
actions.ActionButton(OverlayDisplayToolBar, 'more')] actions.ActionButton(OverlayDisplayToolBar, 'more')]
DisplayLayout = [
widget(Display, 'name'),
widget(Display, 'overlayType'),
widget(Display, 'enabled'),
widget(Display, 'alpha', showLimits=False, editLimits=False),
widget(Display, 'brightness', showLimits=False, editLimits=False),
widget(Display, 'contrast', showLimits=False, editLimits=False)]
VolumeOptsLayout = [
widget(VolumeOpts, 'resolution', showLimits=False),
widget(VolumeOpts, 'transform'),
widget(VolumeOpts, 'volume', showLimits=False),
widget(VolumeOpts, 'interpolation'),
widget(VolumeOpts, 'cmap'),
widget(VolumeOpts, 'invert'),
widget(VolumeOpts, 'invertClipping'),
widget(VolumeOpts, 'displayRange', showLimits=False, slider=True),
widget(VolumeOpts, 'clippingRange', showLimits=False, slider=True)]
MaskOptsLayout = [
widget(MaskOpts, 'resolution', showLimits=False),
widget(MaskOpts, 'transform'),
widget(MaskOpts, 'volume', showLimits=False),
widget(MaskOpts, 'colour'),
widget(MaskOpts, 'invert'),
widget(MaskOpts, 'threshold', showLimits=False)]
RGBVectorOptsLayout = [
widget(RGBVectorOpts, 'resolution', showLimits=False),
widget(RGBVectorOpts, 'transform'),
widget(RGBVectorOpts, 'interpolation'),
widget(RGBVectorOpts, 'xColour'),
widget(RGBVectorOpts, 'yColour'),
widget(RGBVectorOpts, 'zColour'),
widget(RGBVectorOpts, 'suppressX'),
widget(RGBVectorOpts, 'suppressY'),
widget(RGBVectorOpts, 'suppressZ'),
widget(RGBVectorOpts, 'modulate'),
widget(RGBVectorOpts, 'modThreshold', showLimits=False, spin=False)]
LineVectorOptsLayout = [
widget(LineVectorOpts, 'resolution', showLimits=False),
widget(LineVectorOpts, 'transform'),
widget(LineVectorOpts, 'xColour'),
widget(LineVectorOpts, 'yColour'),
widget(LineVectorOpts, 'zColour'),
widget(LineVectorOpts, 'suppressX'),
widget(LineVectorOpts, 'suppressY'),
widget(LineVectorOpts, 'suppressZ'),
widget(LineVectorOpts, 'directed'),
widget(LineVectorOpts, 'lineWidth', showLimits=False),
widget(LineVectorOpts, 'modulate'),
widget(LineVectorOpts, 'modThreshold', showLimits=False, spin=False)]
ModelOptsLayout = [
widget(ModelOpts, 'colour'),
widget(ModelOpts, 'outline'),
widget(ModelOpts, 'outlineWidth', showLimits=False),
widget(ModelOpts, 'refImage'),
# widget(ModelOpts, 'showName'),
widget(ModelOpts, 'coordSpace',
visibleWhen=lambda o: o.refImage != 'none')]
LabelOptsLayout = [
widget(LabelOpts, 'lut'),
widget(LabelOpts, 'outline'),
widget(LabelOpts, 'outlineWidth', showLimits=False),
# widget(LabelOpts, 'showNames'),
widget(LabelOpts, 'resolution', showLimits=False),
widget(LabelOpts, 'transform'),
widget(LabelOpts, 'volume', showLimits=False)]
layouts = td.TypeDict({ layouts = td.TypeDict({
'CanvasPanel' : CanvasPanelLayout,
'OrthoPanel' : OrthoPanelLayout,
'LightBoxPanel' : LightBoxPanelLayout,
'SceneOpts' : SceneOptsLayout,
('OverlayDisplayToolBar', 'Display') : DisplayToolBarLayout, ('OverlayDisplayToolBar', 'Display') : DisplayToolBarLayout,
('OverlayDisplayToolBar', 'VolumeOpts') : VolumeOptsToolBarLayout, ('OverlayDisplayToolBar', 'VolumeOpts') : VolumeOptsToolBarLayout,
('OverlayDisplayToolBar', 'MaskOpts') : MaskOptsToolBarLayout, ('OverlayDisplayToolBar', 'MaskOpts') : MaskOptsToolBarLayout,
...@@ -275,14 +153,6 @@ layouts = td.TypeDict({ ...@@ -275,14 +153,6 @@ layouts = td.TypeDict({
('OverlayDisplayToolBar', 'ModelOpts') : ModelOptsToolBarLayout, ('OverlayDisplayToolBar', 'ModelOpts') : ModelOptsToolBarLayout,
('OverlayDisplayToolBar', 'LabelOpts') : LabelOptsToolBarLayout, ('OverlayDisplayToolBar', 'LabelOpts') : LabelOptsToolBarLayout,
('OverlayDisplayPanel', 'Display') : DisplayLayout,
('OverlayDisplayPanel', 'VolumeOpts') : VolumeOptsLayout,
('OverlayDisplayPanel', 'MaskOpts') : MaskOptsLayout,
('OverlayDisplayPanel', 'RGBVectorOpts') : RGBVectorOptsLayout,
('OverlayDisplayPanel', 'LineVectorOpts') : LineVectorOptsLayout,
('OverlayDisplayPanel', 'ModelOpts') : ModelOptsLayout,
('OverlayDisplayPanel', 'LabelOpts') : LabelOptsLayout,
'OrthoToolBar' : OrthoToolBarLayout, 'OrthoToolBar' : OrthoToolBarLayout,
'LightBoxToolBar' : LightBoxToolBarLayout, 'LightBoxToolBar' : LightBoxToolBarLayout,
...@@ -296,5 +166,4 @@ locations = td.TypeDict({ ...@@ -296,5 +166,4 @@ locations = td.TypeDict({
'OverlayListPanel' : aui.AUI_DOCK_BOTTOM, 'OverlayListPanel' : aui.AUI_DOCK_BOTTOM,
'AtlasPanel' : aui.AUI_DOCK_BOTTOM, 'AtlasPanel' : aui.AUI_DOCK_BOTTOM,
'ImageDisplayToolBar' : aui.AUI_DOCK_TOP, 'ImageDisplayToolBar' : aui.AUI_DOCK_TOP,
}) })
...@@ -164,8 +164,9 @@ class CanvasPanel(viewpanel.ViewPanel): ...@@ -164,8 +164,9 @@ class CanvasPanel(viewpanel.ViewPanel):
""" """
""" """
syncLocation = props.Boolean(default=True) syncLocation = props.Boolean(default=True)
syncOverlayOrder = props.Boolean(default=True) syncOverlayOrder = props.Boolean(default=True)
syncOverlayDisplay = props.Boolean(default=True)
def __init__(self, def __init__(self,
parent, parent,
...@@ -209,6 +210,7 @@ class CanvasPanel(viewpanel.ViewPanel): ...@@ -209,6 +210,7 @@ class CanvasPanel(viewpanel.ViewPanel):
self.bindProps('syncOverlayOrder', self.bindProps('syncOverlayOrder',
displayCtx, displayCtx,
displayCtx.getSyncPropertyName('overlayOrder')) displayCtx.getSyncPropertyName('overlayOrder'))
self.bindProps('syncOverlayDisplay', displayCtx)
# If the displayCtx instance does not # If the displayCtx instance does not
# have a parent, this means that it is # have a parent, this means that it is
......
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