From dd47ed0a91a43fecc09d5dc32d3b1a9ec5614d0e Mon Sep 17 00:00:00 2001 From: Paul McCarthy <pauld.mccarthy@gmail.com> Date: Sun, 20 Sep 2015 07:43:03 +1000 Subject: [PATCH] Documentation for OrthoEditToolBar and OverlayDisplayToolBar. --- doc/images/orthoedittoolbar.png | Bin 0 -> 42664 bytes doc/images/overlaydisplaytoolbar.png | Bin 0 -> 37863 bytes fsl/fsleyes/controls/__init__.py | 1 + fsl/fsleyes/controls/orthoedittoolbar.py | 274 +++++---- fsl/fsleyes/controls/overlaydisplaytoolbar.py | 524 ++++++++++-------- 5 files changed, 486 insertions(+), 313 deletions(-) create mode 100644 doc/images/orthoedittoolbar.png create mode 100644 doc/images/overlaydisplaytoolbar.png diff --git a/doc/images/orthoedittoolbar.png b/doc/images/orthoedittoolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..86d54ece8fa45fcb5ed4274de2460966fa4b78b8 GIT binary patch literal 42664 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�W|nHkn(^6;gGP8f;;` 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 F?qB*_bUOe5 literal 0 HcmV?d00001 diff --git a/doc/images/overlaydisplaytoolbar.png b/doc/images/overlaydisplaytoolbar.png new file mode 100644 index 0000000000000000000000000000000000000000..5c40d9003b76537eb1a009e5e9c24c9a0623ce79 GIT binary patch literal 37863 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 P5D?$f)z4*}Q$iB}XBsS^ literal 0 HcmV?d00001 diff --git a/fsl/fsleyes/controls/__init__.py b/fsl/fsleyes/controls/__init__.py index dda85bec4..0251c3acc 100644 --- a/fsl/fsleyes/controls/__init__.py +++ b/fsl/fsleyes/controls/__init__.py @@ -30,6 +30,7 @@ The following control panels currently exist: ~fsl.fsleyes.controls.orthoedittoolbar.OrthoEditToolBar ~fsl.fsleyes.controls.orthotoolbar.OrthoToolBar ~fsl.fsleyes.controls.overlaydisplaypanel.OverlayDisplayPanel + ~fsl.fsleyes.controls.overlaydisplaytoolbar.OverlayDisplayToolBar ~fsl.fsleyes.controls.overlayinfopanel.OverlayInfoPanel ~fsl.fsleyes.controls.overlaylistpanel.OverlayListPanel ~fsl.fsleyes.controls.shellpanel.ShellPanel diff --git a/fsl/fsleyes/controls/orthoedittoolbar.py b/fsl/fsleyes/controls/orthoedittoolbar.py index 7f9ff6e5a..dfbddb7a3 100644 --- a/fsl/fsleyes/controls/orthoedittoolbar.py +++ b/fsl/fsleyes/controls/orthoedittoolbar.py @@ -1,9 +1,14 @@ #!/usr/bin/env python # -# orthoedittoolbar.py - +# orthoedittoolbar.py - The OrthoEditToolBar # # Author: Paul McCarthy <pauldmccarthy@gmail.com> # +"""This module provides the :class:`OrthoEditToolBar`, a +:class:`.FSLEyesToolBar` which displays controls for editing :class:`.Image` +instances in an :class:`.OrthoPanel`. +""" + import logging @@ -20,7 +25,144 @@ from fsl.fsleyes.profiles.orthoeditprofile import OrthoEditProfile log = logging.getLogger(__name__) -# Some of the toolbar widgets are labelled + +class OrthoEditToolBar(fsltoolbar.FSLEyesToolBar): + """The ``OrthoEditToolBar`` is a :class:`.FSLEyesToolBar` which displays + controls for editing :class:`.Image` instances in an :class:`.OrthoPanel`. + + An ``OrthoEditToolBar`` looks something like this: + + + .. image:: images/orthoedittoolbar.png + :scale: 50% + :align: center + + + The ``OrthoEditToolBar`` exposes properties and actions which are defined + on the :class:`.OrthoEditProfile` class, and allows the user to: + + - Change the :class:`.OrthoPanel` profile between ``view`` and ``edit`` + mode (see the :attr:`.ViewPanel.profile` property). When in ``view`` + mode, all of the other controls are hidden. + + - Undo/redo changes to the selection and to :class:`.Image` instances. + + - Clear and fill the current selection. + + - Switch between a 2D and 3D selection cursor. + + - Change the selection cursor size. + + - Create a new mask/ROI :class:`.Image` from the current selection. + + - Switch between regular *select* mode, and *select by intensity* mode, + and adjust the select by intensity mode settings. + + + All of the controls shown on an ``OrthoEditToolBar`` instance are defined + in the :attr:`_TOOLBAR_SPECS` dictionary. + """ + + + selint = props.Boolean(default=False) + """This property allows the user to change the :class:`.OrthoEditProfile` + between ``sel`` mode, and ``selint`` mode. + """ + + + def __init__(self, parent, overlayList, displayCtx, ortho): + """Create an ``OrthoEditToolBar``. + + :arg parent: The :mod:`wx` parent object. + :arg overlayList: The :class:`.OverlayList` instance. + :arg displayCtx: The :class:`.DisplayContext` instance. + :arg ortho: The :class:`.OrthoPanel` instance. + """ + fsltoolbar.FSLEyesToolBar.__init__(self, + parent, + overlayList, + displayCtx, + 24) + + self.__orthoPanel = ortho + + self .addListener('selint', self._name, self.__selintChanged) + ortho.addListener('profile', self._name, self.__profileChanged) + + self.__profileTool = props.buildGUI( + self, + ortho, + _TOOLBAR_SPECS['profile']) + + self.AddTool(self.__profileTool) + + self.__profileChanged() + + + def destroy(self): + """Must be called when this ``OrthoEditToolBar`` is no longer + needed. Removes property listeners, and calls the + :meth:`.FSLEyesToolBar.destroy` method. + """ + self.__orthoPanel.removeListener('profile', self._name) + fsltoolbar.FSLEyesToolBar.destroy(self) + + + def __selintChanged(self, *a): + """Called when the :attr:`selint` property changes. If the + :class:`OrthoPanel` is currently in ``edit`` mode, toggles the + associated :class:`.OrthoEditProfile` instance between ``sel`` + and ``selint`` modes. + """ + + ortho = self.__orthoPanel + + if ortho.profile != 'edit': + return + + profile = ortho.getCurrentProfile() + + if self.selint: profile.mode = 'selint' + else: profile.mode = 'sel' + + + def __profileChanged(self, *a): + """Called when the :attr:`.ViewPanel.profile` property of the + :class:`.OrthoPanel` changes. Shows/hides edit controls accordingly. + """ + + # We don't want to remove the profile tool + # created in __init__, so we skip the first + # tool + self.ClearTools(startIdx=1, destroy=True, postevent=False) + + ortho = self.__orthoPanel + profile = ortho.profile + profileObj = ortho.getCurrentProfile() + + if profile == 'edit': + self.disableNotification('selint') + self.selint = profileObj.mode == 'selint' + self.enableNotification('selint') + + specs = _TOOLBAR_SPECS[profile] + + tools = [] + + for spec in specs: + + if spec.key == 'selint': target = self + else: target = profileObj + + widget = props.buildGUI(self, target, spec) + if spec.label is not None: + widget = self.MakeLabelledTool(widget, spec.label) + + tools.append(widget) + + self.InsertTools(tools, 1) + + _LABELS = { 'selectionCursorColour' : strings.properties[OrthoEditProfile, @@ -36,22 +178,30 @@ _LABELS = { 'fillValue' : strings.properties[OrthoEditProfile, 'fillValue'], } +"""This dictionary contains labels for some :class:`OrthoEditToolBar` +controls. It is referenced in the :attr:`_TOOLBAR_SPECS` dictionary. +""" + _ICONS = { - 'view' : fslicons.findImageFile('eye24'), - 'edit' : fslicons.findImageFile('pencil24'), + 'view' : fslicons.findImageFile('eye24'), + 'edit' : fslicons.findImageFile('pencil24'), 'selectionIs3D' : [fslicons.findImageFile('selection3D24'), fslicons.findImageFile('selection2D24')], - 'clearSelection' : fslicons.findImageFile('clear24'), - 'undo' : fslicons.findImageFile('undo24'), - 'redo' : fslicons.findImageFile('redo24'), - 'fillSelection' : fslicons.findImageFile('fill24'), - 'createMaskFromSelection' : fslicons.findImageFile('createMask24'), - 'createROIFromSelection' : fslicons.findImageFile('createROI24'), - 'limitToRadius' : fslicons.findImageFile('radius24'), - 'localFill' : fslicons.findImageFile('localsearch24'), - 'selint' : fslicons.findImageFile('selectByIntensity24'), + 'clearSelection' : fslicons.findImageFile('clear24'), + 'undo' : fslicons.findImageFile('undo24'), + 'redo' : fslicons.findImageFile('redo24'), + 'fillSelection' : fslicons.findImageFile('fill24'), + 'createMaskFromSelection' : fslicons.findImageFile('createMask24'), + 'createROIFromSelection' : fslicons.findImageFile('createROI24'), + 'limitToRadius' : fslicons.findImageFile('radius24'), + 'localFill' : fslicons.findImageFile('localsearch24'), + 'selint' : fslicons.findImageFile('selectByIntensity24'), } +"""This dictionary contains icons for some :class:`OrthoEditToolBar` +controls. It is referenced in the :attr:`_TOOLBAR_SPECS` dictionary. +""" + _TOOLTIPS = { 'profile' : fsltooltips.properties['OrthoPanel.profile'], @@ -90,6 +240,10 @@ _TOOLTIPS = { 'intensityThres' : fsltooltips.properties['OrthoEditProfile.' 'intensityThres'], } +"""This dictionary contains tooltips for some :class:`OrthoEditToolBar` +controls. It is referenced in the :attr:`_TOOLBAR_SPECS` dictionary. +""" + _TOOLBAR_SPECS = { @@ -177,84 +331,16 @@ _TOOLBAR_SPECS = { enabledWhen=lambda p: p.mode == 'selint' and p.limitToRadius) ] } - - - -class OrthoEditToolBar(fsltoolbar.FSLEyesToolBar): - - - selint = props.Boolean(default=False) - - - def __init__(self, parent, overlayList, displayCtx, ortho): - fsltoolbar.FSLEyesToolBar.__init__(self, - parent, - overlayList, - displayCtx, - 24) - - self.orthoPanel = ortho - - self .addListener('selint', self._name, self.__selintChanged) - ortho.addListener('profile', self._name, self.__profileChanged) - - self.__profileTool = props.buildGUI( - self, - ortho, - _TOOLBAR_SPECS['profile']) - - self.AddTool(self.__profileTool) - - self.__profileChanged() - - - def destroy(self): - self.orthoPanel.removeListener('profile', self._name) - fsltoolbar.FSLEyesToolBar.destroy(self) - - - def __selintChanged(self, *a): - - ortho = self.orthoPanel - - if ortho.profile != 'edit': - return - - profile = ortho.getCurrentProfile() - - if self.selint: profile.mode = 'selint' - else: profile.mode = 'sel' - - - def __profileChanged(self, *a): - - # We don't want to remove the profile tool - # created in __init__, so we skip the first - # tool - self.ClearTools(startIdx=1, destroy=True, postevent=False) - - ortho = self.orthoPanel - profile = ortho.profile - profileObj = ortho.getCurrentProfile() - - if profile == 'edit': - self.disableNotification('selint') - self.selint = profileObj.mode == 'selint' - self.enableNotification('selint') - - specs = _TOOLBAR_SPECS[profile] - - tools = [] - - for spec in specs: - - if spec.key == 'selint': target = self - else: target = profileObj - - widget = props.buildGUI(self, target, spec) - if spec.label is not None: - widget = self.MakeLabelledTool(widget, spec.label) - - tools.append(widget) - - self.InsertTools(tools, 1) +"""This dictionary contains specifications for all of the tools shown in an +:class:`OrthoEditToolBar`. The following keys are defined: + + =========== =========================================================== + ``profile`` Contains a single specification defining the control for + switching the :class:`.OrthoPanel` between ``view`` and + ``edit`` profiles. + ``view`` A list of specifications defining controls to be shown when + the ``view`` profile is active. + ``edit`` A list of specifications defining controls to be shown when + the ``view`` profile is active. + =========== =========================================================== +""" diff --git a/fsl/fsleyes/controls/overlaydisplaytoolbar.py b/fsl/fsleyes/controls/overlaydisplaytoolbar.py index 3ffbfec17..28e678899 100644 --- a/fsl/fsleyes/controls/overlaydisplaytoolbar.py +++ b/fsl/fsleyes/controls/overlaydisplaytoolbar.py @@ -1,14 +1,15 @@ #!/usr/bin/env python # -# overlaydisplaytoolbar.py - A toolbar which shows display control options for -# the currently selected overlay. +# overlaydisplaytoolbar.py - The OverlayDisplayToolBar. # # Author: Paul McCarthy <pauldmccarthy@gmail.com> -"""A :class:`wx.Panel` which shows display control options for the currently -selected overlay. +"""This module provides the :class:`OverlyDisplyaToolBar`, a +:class:`.FSLEyesToolBar` containing controls for changing the display settings +of the currently selected overlay. """ + import logging import wx @@ -27,178 +28,56 @@ import overlaydisplaypanel as overlaydisplay log = logging.getLogger(__name__) -def _modImageLabel(img): - if img is None: return strings.choices['VectorOpts.modulate.none'] - else: return img.name - +class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): + """The ``OverlyDisplyaToolBar`` is a :class:`.FSLEyesToolBar` containing + controls which allow the user to change the display settings of the + currently selected overlay (as defined by the + :attr:`.DisplayContext.selectedOverlay` property). The display settings + for an overlay are contained in the :class:`.Display` and + :class:`.DisplayOpts` instances that are associated with that overlay. -_TOOLTIPS = td.TypeDict({ - - 'Display.name' : fsltooltips.properties['Display.name'], - 'Display.overlayType' : fsltooltips.properties['Display.overlayType'], - 'Display.alpha' : fsltooltips.properties['Display.alpha'], - 'Display.brightness' : fsltooltips.properties['Display.brightness'], - 'Display.contrast' : fsltooltips.properties['Display.contrast'], - - 'VolumeOpts.displayRange' : fsltooltips.properties['VolumeOpts.' - 'displayRange'], - 'VolumeOpts.resetDisplayRange' : fsltooltips.actions[ 'VolumeOpts.reset' - 'DisplayRange'], - 'VolumeOpts.cmap' : fsltooltips.properties['VolumeOpts.cmap'], - 'MaskOpts.threshold' : fsltooltips.properties['MaskOpts.threshold'], - 'MaskOpts.colour' : fsltooltips.properties['MaskOpts.colour'], + An ``OverlyDisplyaToolBar`` looks something like the following: - 'LabelOpts.lut' : fsltooltips.properties['LabelOpts.lut'], - 'LabelOpts.outline' : fsltooltips.properties['LabelOpts.outline'], - 'LabelOpts.outlineWidth' : fsltooltips.properties['LabelOpts.' - 'outlineWidth'], + .. image:: images/overlaydisplaytoolbar.png + :scale: 50% + :align: center - 'RGBVectorOpts.modulate' : fsltooltips.properties['VectorOpts.' - 'modulate'], - 'RGBVectorOpts.modThreshold' : fsltooltips.properties['VectorOpts.' - 'modThreshold'], - - 'LineVectorOpts.modulate' : fsltooltips.properties['VectorOpts.' - 'modulate'], - 'LineVectorOpts.modThreshold' : fsltooltips.properties['VectorOpts.' - 'modThreshold'], - 'LineVectorOpts.lineWidth' : fsltooltips.properties['LineVectorOpts.' - 'lineWidth'], - - 'ModelOpts.colour' : fsltooltips.properties['ModelOpts.colour'], - 'ModelOpts.outline' : fsltooltips.properties['ModelOpts.outline'], - 'ModelOpts.outlineWidth' : fsltooltips.properties['ModelOpts.' - 'outlineWidth'], -}) - - -_TOOLBAR_PROPS = td.TypeDict({ - - 'Display' : { - 'name' : props.Widget( - 'name', - tooltip=_TOOLTIPS['Display.name']), - 'overlayType' : props.Widget( - 'overlayType', - tooltip=_TOOLTIPS['Display.overlayType'], - labels=strings.choices['Display.overlayType']), - 'alpha' : props.Widget( - 'alpha', - spin=False, - showLimits=False, - tooltip=_TOOLTIPS['Display.alpha']), - 'brightness' : props.Widget( - 'brightness', - spin=False, - showLimits=False, - tooltip=_TOOLTIPS['Display.brightness']), - 'contrast' : props.Widget( - 'contrast', - spin=False, - showLimits=False, - tooltip=_TOOLTIPS['Display.contrast'])}, - - 'VolumeOpts' : { - 'displayRange' : props.Widget( - 'displayRange', - slider=False, - showLimits=False, - tooltip=_TOOLTIPS['VolumeOpts.displayRange'], - labels=[strings.choices['VolumeOpts.displayRange.min'], - strings.choices['VolumeOpts.displayRange.max']]), - 'resetDisplayRange' : actions.ActionButton( - 'resetDisplayRange', - icon=icons.findImageFile('verticalReset24'), - tooltip=_TOOLTIPS['VolumeOpts.resetDisplayRange']), - 'cmap' : props.Widget( - 'cmap', - tooltip=_TOOLTIPS['VolumeOpts.cmap'])}, - - 'MaskOpts' : { - 'threshold' : props.Widget( - 'threshold', - showLimits=False, - spin=False, - tooltip=_TOOLTIPS['MaskOpts.threshold']), - 'colour' : props.Widget( - 'colour', - size=(24, 24), - tooltip=_TOOLTIPS['MaskOpts.colour'])}, - - 'LabelOpts' : { - 'lut' : props.Widget( - 'lut', - tooltip=_TOOLTIPS['LabelOpts.lut'], - labels=lambda l: l.name), - 'outline' : props.Widget( - 'outline', - tooltip=_TOOLTIPS['LabelOpts.outline'], - icon=[icons.findImageFile('outline24'), - icons.findImageFile('filled24')], - toggle=True, - enabledWhen=lambda i, sw: not sw, - dependencies=[(lambda o: o.display, 'softwareMode')]), - - 'outlineWidth' : props.Widget( - 'outlineWidth', - tooltip=_TOOLTIPS['LabelOpts.outlineWidth'], - enabledWhen=lambda i, sw: not sw, - dependencies=[(lambda o: o.display, 'softwareMode')], - showLimits=False, - spin=False)}, - - 'RGBVectorOpts' : { - 'modulate' : props.Widget( - 'modulate', - labels=_modImageLabel, - tooltip=_TOOLTIPS['RGBVectorOpts.modulate']), - 'modThreshold' : props.Widget( - 'modThreshold', - showLimits=False, - spin=False, - tooltip=_TOOLTIPS['RGBVectorOpts.modThreshold'])}, - - 'LineVectorOpts' : { - 'modulate' : props.Widget( - 'modulate', - labels=_modImageLabel, - tooltip=_TOOLTIPS['LineVectorOpts.modulate']), - 'modThreshold' : props.Widget( - 'modThreshold', - showLimits=False, - spin=False, - tooltip=_TOOLTIPS['LineVectorOpts.modThreshold']), - 'lineWidth' : props.Widget( - 'lineWidth', - showLimits=False, - spin=False, - tooltip=_TOOLTIPS['LineVectorOpts.lineWidth']), - }, - - 'ModelOpts' : { - 'colour' : props.Widget( - 'colour', - size=(24, 24), - tooltip=_TOOLTIPS['ModelOpts.colour']), - 'outline' : props.Widget( - 'outline', - tooltip=_TOOLTIPS['ModelOpts.outline'], - icon=[icons.findImageFile('outline24'), - icons.findImageFile('filled24')], - toggle=True), - 'outlineWidth' : props.Widget( - 'outlineWidth', - showLimits=False, - spin=False, - tooltip=_TOOLTIPS['ModelOpts.outlineWidth'], - enabledWhen=lambda i: i.outline)} -}) - - -class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): + + The ``OverlayDisplayToolBar`` also defines an action called ``more`` + (which is linked to the :meth:`showMoreSettings` method), which opens an + :class:`.OverlayDisplayPanel`. + + + The specific controls which are displayed are defined in the + :attr:`_TOOLBAR_PROPS` dictionary, and are created by the following + methods: + + .. autosummary:: + :nosignatures: + + __makeDisplayTools + __makeVolumeOptsTools + __makeMaskOptsTools + __makeLabelOptsTools + __makeVectorOptsTools + __makeRGBVectorOptsTools + __makeLineVectorOptsTools + __makeModelOptsTools + """ def __init__(self, parent, overlayList, displayCtx, viewPanel): + """Create an ``OverlyDisplyaToolBar``. + + :arg parent: The :mod:`wx` parent object. + + :arg overlayList: The :class:`.OverlayList` instance. + + :arg displayCtx: The :class:`.DisplayContext` instance. + + :arg viewPanel: The :class:`.ViewPanel` which this + ``OverlayDisplayToolBar`` is owned by. + """ actionz = {'more' : self.showMoreSettings} @@ -221,7 +100,10 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def destroy(self): - """Deregisters property listeners. """ + """Must be called when this ``OverlyDisplyaToolBar`` is no longer + needed. Removes some property listeners, and calls the + :meth:`.FSLEyesToolBar.destroy` method. + """ self._overlayList.removeListener('overlays', self._name) self._displayCtx .removeListener('selectedOverlay', self._name) @@ -240,18 +122,82 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def showMoreSettings(self, *a): + """Shows/hides a :class:`.OverlayDisplayPanel` dialog. """ self.__viewPanel.togglePanel(overlaydisplay.OverlayDisplayPanel, floatPane=True) + + def __showTools(self, overlay): + """Creates and shows a set of controls allowing the user to change + the display settings of the specified ``overlay``. + """ + + oldTools = self.GetTools() + + # See long comment at bottom + def destroyOldTools(): + for t in oldTools: + t.Destroy() + + for t in oldTools: + t.Show(False) + + self.ClearTools(destroy=False, postevent=False) + + log.debug('Showing tools for {}'.format(overlay)) + + display = self._displayCtx.getDisplay(overlay) + opts = display.getDisplayOpts() + + # Display tools + tools = self.__makeDisplayTools(display) + + # DisplayOpts tools + makeFunc = getattr(self, '_{}__make{}Tools'.format( + type(self).__name__, type(opts).__name__), None) + + if makeFunc is not None: + tools.extend(makeFunc(opts)) + + # Button which opens the OverlayDisplayPanel + more = props.buildGUI( + self, + self, + view=actions.ActionButton( + 'more', + icon=icons.findImageFile('gear24'), + tooltip=fsltooltips.actions[self, 'more'])) + + tools.insert(0, more) + + self.SetTools(tools) + + # This method may have been called via an + # event handler an existing tool in the + # toolbar - in this situation, destroying + # that tool will result in nasty crashes, + # as the wx widget that generated the event + # will be destroyed while said event is + # being processed. So we destroy the old + # tools asynchronously, well after the event + # which triggered this method call will have + # returned. + wx.CallLater(1000, destroyOldTools) + def __overlayEnableChanged(self, *a): + """Called when the :attr:`.Display.enabled` property for the currently + selected overlay changes. Enables/disables this + ``OverlayDisplayToolBar`` accordingly. + """ display = self._displayCtx.getDisplay(self.__currentOverlay) self.Enable(display.enabled) def __selectedOverlayChanged(self, *a): - """Called when the :attr:`.DisplayContext.selectedOverlay` - index changes. Ensures that the correct display panel is visible. + """Called when the :attr:`.DisplayContext.selectedOverlay` or + :class:`.OverlayList` changes. Ensures that controls for the currently + selected overlay are being shown. """ if self.__currentOverlay is not None and \ @@ -282,7 +228,8 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def __makeDisplayTools(self, display): - """ + """Creates and returns a collection of controls for editing properties + of the given :class:`.Display` instance. """ dispSpecs = _TOOLBAR_PROPS[display] @@ -336,7 +283,8 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def __makeVolumeOptsTools(self, opts): - """ + """Creates and returns a collection of controls for editing properties + of the given :class:`.VolumeOpts` instance. """ rangeSpec = _TOOLBAR_PROPS[opts]['displayRange'] resetSpec = _TOOLBAR_PROPS[opts]['resetDisplayRange'] @@ -354,8 +302,9 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def __makeMaskOptsTools(self, opts): - """ - """ + """Creates and returns a collection of controls for editing properties + of the given :class:`.MaskOpts` instance. + """ thresSpec = _TOOLBAR_PROPS[opts]['threshold'] colourSpec = _TOOLBAR_PROPS[opts]['colour'] @@ -366,8 +315,9 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def __makeLabelOptsTools(self, opts): - """ - """ + """Creates and returns a collection of controls for editing properties + of the given :class:`.LabelOpts` instance. + """ lutSpec = _TOOLBAR_PROPS[opts]['lut'] outlineSpec = _TOOLBAR_PROPS[opts]['outline'] @@ -401,6 +351,9 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def __makeVectorOptsTools(self, opts): + """Creates and returns a collection of controls for editing properties + of the given :class:`.VectorOpts` instance. + """ modSpec = _TOOLBAR_PROPS[opts]['modulate'] thresSpec = _TOOLBAR_PROPS[opts]['modThreshold'] @@ -425,10 +378,16 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): return [panel] def __makeRGBVectorOptsTools(self, opts): + """Creates and returns a collection of controls for editing properties + of the given :class:`.RGBVectorOpts` instance. + """ return self.__makeVectorOptsTools(opts) def __makeLineVectorOptsTools(self, opts): + """Creates and returns a collection of controls for editing properties + of the given :class:`.LineVectorOpts` instance. + """ widthSpec = _TOOLBAR_PROPS[opts]['lineWidth'] widget = props.buildGUI(self, opts, widthSpec) @@ -439,6 +398,9 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): def __makeModelOptsTools(self, opts): + """Creates and returns a collection of controls for editing properties + of the given :class:`.ModelOpts` instance. + """ colourSpec = _TOOLBAR_PROPS[opts]['colour'] outlineSpec = _TOOLBAR_PROPS[opts]['outline'] widthSpec = _TOOLBAR_PROPS[opts]['outlineWidth'] @@ -452,56 +414,180 @@ class OverlayDisplayToolBar(fsltoolbar.FSLEyesToolBar): return [colourWidget, outlineWidget, widthWidget] - def __showTools(self, overlay): +def _modImageLabel(img): + """Used to generate labels for the :attr:`.VectorOpts.modulate` + property choices. + """ + if img is None: return strings.choices['VectorOpts.modulate.none'] + else: return img.name - oldTools = self.GetTools() + +_TOOLTIPS = td.TypeDict({ - # See long comment at bottom - def destroyOldTools(): - for t in oldTools: - t.Destroy() + 'Display.name' : fsltooltips.properties['Display.name'], + 'Display.overlayType' : fsltooltips.properties['Display.overlayType'], + 'Display.alpha' : fsltooltips.properties['Display.alpha'], + 'Display.brightness' : fsltooltips.properties['Display.brightness'], + 'Display.contrast' : fsltooltips.properties['Display.contrast'], - for t in oldTools: - t.Show(False) + 'VolumeOpts.displayRange' : fsltooltips.properties['VolumeOpts.' + 'displayRange'], + 'VolumeOpts.resetDisplayRange' : fsltooltips.actions[ 'VolumeOpts.reset' + 'DisplayRange'], + 'VolumeOpts.cmap' : fsltooltips.properties['VolumeOpts.cmap'], - self.ClearTools(destroy=False, postevent=False) + 'MaskOpts.threshold' : fsltooltips.properties['MaskOpts.threshold'], + 'MaskOpts.colour' : fsltooltips.properties['MaskOpts.colour'], - log.debug('Showing tools for {}'.format(overlay)) + 'LabelOpts.lut' : fsltooltips.properties['LabelOpts.lut'], + 'LabelOpts.outline' : fsltooltips.properties['LabelOpts.outline'], + 'LabelOpts.outlineWidth' : fsltooltips.properties['LabelOpts.' + 'outlineWidth'], - display = self._displayCtx.getDisplay(overlay) - opts = display.getDisplayOpts() + 'RGBVectorOpts.modulate' : fsltooltips.properties['VectorOpts.' + 'modulate'], + 'RGBVectorOpts.modThreshold' : fsltooltips.properties['VectorOpts.' + 'modThreshold'], - # Display tools - tools = self.__makeDisplayTools(display) + 'LineVectorOpts.modulate' : fsltooltips.properties['VectorOpts.' + 'modulate'], + 'LineVectorOpts.modThreshold' : fsltooltips.properties['VectorOpts.' + 'modThreshold'], + 'LineVectorOpts.lineWidth' : fsltooltips.properties['LineVectorOpts.' + 'lineWidth'], - # DisplayOpts tools - makeFunc = getattr(self, '_{}__make{}Tools'.format( - type(self).__name__, type(opts).__name__), None) + 'ModelOpts.colour' : fsltooltips.properties['ModelOpts.colour'], + 'ModelOpts.outline' : fsltooltips.properties['ModelOpts.outline'], + 'ModelOpts.outlineWidth' : fsltooltips.properties['ModelOpts.' + 'outlineWidth'], +}) +"""This dictionary contains tooltips for :class:`.Display` and +:class:`.DisplayOpts` properties. It is referenced in the +:attr:`_TOOLBAR_PROPS` dictionary definition. +""" - if makeFunc is not None: - tools.extend(makeFunc(opts)) - # Button which opens the OverlayDisplayPanel - more = props.buildGUI( - self, - self, - view=actions.ActionButton( - 'more', - icon=icons.findImageFile('gear24'), - tooltip=fsltooltips.actions[self, 'more'])) +_TOOLBAR_PROPS = td.TypeDict({ - tools.insert(0, more) + 'Display' : { + 'name' : props.Widget( + 'name', + tooltip=_TOOLTIPS['Display.name']), + 'overlayType' : props.Widget( + 'overlayType', + tooltip=_TOOLTIPS['Display.overlayType'], + labels=strings.choices['Display.overlayType']), + 'alpha' : props.Widget( + 'alpha', + spin=False, + showLimits=False, + tooltip=_TOOLTIPS['Display.alpha']), + 'brightness' : props.Widget( + 'brightness', + spin=False, + showLimits=False, + tooltip=_TOOLTIPS['Display.brightness']), + 'contrast' : props.Widget( + 'contrast', + spin=False, + showLimits=False, + tooltip=_TOOLTIPS['Display.contrast'])}, - self.SetTools(tools) + 'VolumeOpts' : { + 'displayRange' : props.Widget( + 'displayRange', + slider=False, + showLimits=False, + tooltip=_TOOLTIPS['VolumeOpts.displayRange'], + labels=[strings.choices['VolumeOpts.displayRange.min'], + strings.choices['VolumeOpts.displayRange.max']]), + 'resetDisplayRange' : actions.ActionButton( + 'resetDisplayRange', + icon=icons.findImageFile('verticalReset24'), + tooltip=_TOOLTIPS['VolumeOpts.resetDisplayRange']), + 'cmap' : props.Widget( + 'cmap', + tooltip=_TOOLTIPS['VolumeOpts.cmap'])}, + + 'MaskOpts' : { + 'threshold' : props.Widget( + 'threshold', + showLimits=False, + spin=False, + tooltip=_TOOLTIPS['MaskOpts.threshold']), + 'colour' : props.Widget( + 'colour', + size=(24, 24), + tooltip=_TOOLTIPS['MaskOpts.colour'])}, + + 'LabelOpts' : { + 'lut' : props.Widget( + 'lut', + tooltip=_TOOLTIPS['LabelOpts.lut'], + labels=lambda l: l.name), + 'outline' : props.Widget( + 'outline', + tooltip=_TOOLTIPS['LabelOpts.outline'], + icon=[icons.findImageFile('outline24'), + icons.findImageFile('filled24')], + toggle=True, + enabledWhen=lambda i, sw: not sw, + dependencies=[(lambda o: o.display, 'softwareMode')]), - # This method may have been called via an - # event handler an existing tool in the - # toolbar - in this situation, destroying - # that tool will result in nasty crashes, - # as the wx widget that generated the event - # will be destroyed while said event is - # being processed. So we destroy the old - # tools asynchronously, well after the event - # which triggered this method call will have - # returned. - wx.CallLater(1000, destroyOldTools) + 'outlineWidth' : props.Widget( + 'outlineWidth', + tooltip=_TOOLTIPS['LabelOpts.outlineWidth'], + enabledWhen=lambda i, sw: not sw, + dependencies=[(lambda o: o.display, 'softwareMode')], + showLimits=False, + spin=False)}, + + 'RGBVectorOpts' : { + 'modulate' : props.Widget( + 'modulate', + labels=_modImageLabel, + tooltip=_TOOLTIPS['RGBVectorOpts.modulate']), + 'modThreshold' : props.Widget( + 'modThreshold', + showLimits=False, + spin=False, + tooltip=_TOOLTIPS['RGBVectorOpts.modThreshold'])}, + + 'LineVectorOpts' : { + 'modulate' : props.Widget( + 'modulate', + labels=_modImageLabel, + tooltip=_TOOLTIPS['LineVectorOpts.modulate']), + 'modThreshold' : props.Widget( + 'modThreshold', + showLimits=False, + spin=False, + tooltip=_TOOLTIPS['LineVectorOpts.modThreshold']), + 'lineWidth' : props.Widget( + 'lineWidth', + showLimits=False, + spin=False, + tooltip=_TOOLTIPS['LineVectorOpts.lineWidth']), + }, + + 'ModelOpts' : { + 'colour' : props.Widget( + 'colour', + size=(24, 24), + tooltip=_TOOLTIPS['ModelOpts.colour']), + 'outline' : props.Widget( + 'outline', + tooltip=_TOOLTIPS['ModelOpts.outline'], + icon=[icons.findImageFile('outline24'), + icons.findImageFile('filled24')], + toggle=True), + 'outlineWidth' : props.Widget( + 'outlineWidth', + showLimits=False, + spin=False, + tooltip=_TOOLTIPS['ModelOpts.outlineWidth'], + enabledWhen=lambda i: i.outline)} +}) +"""This dictionary defines specifications for all controls shown on an +:class:`OverlayDisplayToolBar`. +""" -- GitLab