Source code for fsleyes.controls.lightboxtoolbar

#
# lightboxtoolbar.py - The LightBoxToolBar class.
#
# Author: Paul McCarthy <pauldmccarthy@gmail.com>
#
"""This module provides the :class:`LightBoxToolBar` class, which is a
:class:`.ControlToolBar` for use with the :class:`.LightBoxPanel`.
"""


import wx

import fsleyes_props                 as props

import fsleyes.controls.controlpanel as ctrlpanel
import fsleyes.views.lightboxpanel   as lightboxpanel
import fsleyes.toolbar               as fsltoolbar
import fsleyes.actions               as actions
import fsleyes.icons                 as fslicons
import fsleyes.tooltips              as fsltooltips
import fsleyes.strings               as strings


[docs]class LightBoxToolBar(ctrlpanel.ControlToolBar): """The ``LightBoxToolBar`` is a :class:`.ControlToolBar` for use with the :class:`.LightBoxPanel`. A ``LightBoxToolBar`` looks something like this: .. image:: images/lightboxtoolbar.png :scale: 50% :align: center The ``LightBoxToolBar`` allows the user to control important parts of the :class:`.LightBoxPanel` display, and also to display a :class:`.CanvasSettingsPanel`, which allows control over all aspects of a ``LightBoxPanel``. """
[docs] @staticmethod def supportedViews(): """Overrides :meth:`.ControlMixin.supportedViews`. The ``LightBoxToolBar`` is only intended to be added to :class:`.LightBoxPanel` views. """ return [lightboxpanel.LightBoxPanel]
[docs] def __init__(self, parent, overlayList, displayCtx, lb): """Create a ``LightBoxToolBar``. :arg parent: The :mod:`wx` parent object. :arg overlayList: The :class:`.OverlayList` instance. :arg displayCtx: The :class:`.DisplayContext` instance. :arg lb: The :class:`.LightBoxPanel` instance. """ ctrlpanel.ControlToolBar.__init__(self, parent, overlayList, displayCtx, lb, height=24, kbFocus=True) self.lightBoxPanel = lb lbOpts = lb.sceneOpts coronalIcon = 'coronalSlice24' coronalHighlightIcon = 'coronalSliceHighlight24' icons = { 'screenshot' : fslicons.findImageFile('camera24'), 'movieMode' : [ fslicons.findImageFile('movieHighlight24'), fslicons.findImageFile('movie24')], 'CanvasSettingsPanel' : [ fslicons.findImageFile('spannerHighlight24'), fslicons.findImageFile('spanner24')], 'zax' : { 0 : [fslicons.findImageFile('sagittalSliceHighlight24'), fslicons.findImageFile('sagittalSlice24')], 1 : [fslicons.findImageFile(coronalHighlightIcon), fslicons.findImageFile(coronalIcon)], 2 : [fslicons.findImageFile('axialSliceHighlight24'), fslicons.findImageFile('axialSlice24')], } } tooltips = { 'screenshot' : fsltooltips.actions[ lb, 'screenshot'], 'movieMode' : fsltooltips.properties[lb, 'movieMode'], 'zax' : fsltooltips.properties[lbOpts, 'zax'], 'sliceSpacing' : fsltooltips.properties[lbOpts, 'sliceSpacing'], 'zrange' : fsltooltips.properties[lbOpts, 'zrange'], 'zoom' : fsltooltips.properties[lbOpts, 'zoom'], 'CanvasSettingsPanel' : fsltooltips.actions[ lb, 'CanvasSettingsPanel'], } specs = { 'CanvasSettingsPanel' : actions.ToggleActionButton( 'CanvasSettingsPanel', actionKwargs={'floatPane' : True}, icon=icons['CanvasSettingsPanel'], tooltip=tooltips['CanvasSettingsPanel']), 'screenshot' : actions.ActionButton( 'screenshot', icon=icons['screenshot'], tooltip=tooltips['screenshot']), 'movieMode' : props.Widget( 'movieMode', icon=icons['movieMode'], tooltip=tooltips['movieMode']), 'zax' : props.Widget( 'zax', icons=icons['zax'], tooltip=tooltips['zax']), 'sliceSpacing' : props.Widget( 'sliceSpacing', spin=False, showLimits=False, tooltip=tooltips['sliceSpacing']), 'zrange' : props.Widget( 'zrange', spin=False, showLimits=False, tooltip=tooltips['zrange'], labels=[strings.choices[lbOpts, 'zrange', 'min'], strings.choices[lbOpts, 'zrange', 'max']]), 'zoom' : props.Widget( 'zoom', spin=False, showLimits=False, tooltip=tooltips['zoom']), } # Slice spacing and zoom go on a single panel panel = wx.Panel(self) sizer = wx.FlexGridSizer(2, 2, 0, 0) panel.SetSizer(sizer) more = props.buildGUI(self, lb, specs['CanvasSettingsPanel']) screenshot = props.buildGUI(self, lb, specs['screenshot']) movieMode = props.buildGUI(self, lb, specs['movieMode']) zax = props.buildGUI(self, lbOpts, specs['zax']) zrange = props.buildGUI(self, lbOpts, specs['zrange']) zoom = props.buildGUI(panel, lbOpts, specs['zoom']) spacing = props.buildGUI(panel, lbOpts, specs['sliceSpacing']) zoomLabel = wx.StaticText(panel) spacingLabel = wx.StaticText(panel) zoomLabel .SetLabel(strings.properties[lbOpts, 'zoom']) spacingLabel.SetLabel(strings.properties[lbOpts, 'sliceSpacing']) sizer.Add(zoomLabel) sizer.Add(zoom, flag=wx.EXPAND) sizer.Add(spacingLabel) sizer.Add(spacing, flag=wx.EXPAND) tools = [more, screenshot, fsltoolbar.ToolBarDivider(self, height=24, orient=wx.VERTICAL), zax, fsltoolbar.ToolBarDivider(self, height=24, orient=wx.VERTICAL), movieMode, zrange, panel] nav = [more, screenshot, zax, movieMode, zrange, zoom, spacing] self.SetTools(tools) self.setNavOrder(nav)