Пример #1
0
def _init3DWidgetSpec_VolumeOpts():

    return {
        'numSteps':
        props.Widget('numSteps', showLimits=False),
        'blendFactor':
        props.Widget('blendFactor', showLimits=False),
        'blendByIntensity':
        props.Widget('blendByIntensity', showLimits=False),
        'resolution':
        props.Widget('resolution', showLimits=False),
        'numClipPlanes':
        props.Widget('numClipPlanes', slider=False, showLimits=False),
        'clipMode':
        props.Widget('clipMode',
                     labels=strings.choices['Volume3DOpts.clipMode']),
        'showClipPlanes':
        props.Widget('showClipPlanes'),
        'clipPosition':
        props.Widget('clipPosition', showLimits=False),
        'clipAzimuth':
        props.Widget('clipAzimuth', showLimits=False),
        'clipInclination':
        props.Widget('clipInclination', showLimits=False),
        'custom_clipPlanes':
        _VolumeOpts_3DClipPlanes,
    }
Пример #2
0
def _initWidgetSpec_RGBVectorOpts(threedee):
    return {
        'interpolation':
        props.Widget('interpolation',
                     labels=strings.choices['VolumeOpts.interpolation']),
        'unitLength':
        props.Widget('unitLength')
    }
Пример #3
0
def _initWidgetSpec_LineVectorOpts(threedee):
    return {
        'directed': props.Widget('directed'),
        'unitLength': props.Widget('unitLength'),
        'orientFlip': props.Widget('orientFlip'),
        'lineWidth': props.Widget('lineWidth', showLimits=False),
        'lengthScale': props.Widget('lengthScale', showLimits=False),
    }
Пример #4
0
def _init3DWidgetSpec_MeshOpts():
    return {
        'wireframe':
        props.Widget('wireframe'),
        'flatShading':
        props.Widget('flatShading',
                     dependencies=['vertexData'],
                     enabledWhen=lambda o, vd: vd is not None),
    }
Пример #5
0
def _initWidgetSpec_MaskOpts(threedee):
    return {
        'custom_volume':
        _NiftiOpts_VolumeWidget,
        'volume':
        props.Widget('volume',
                     showLimits=False,
                     enabledWhen=lambda o: o.overlay.ndim > 3,
                     spinWidth=6),
        'volumeDim':
        props.Widget('volumeDim',
                     showLimits=False,
                     slider=False,
                     enabledWhen=lambda o: o.overlay.ndim > 4,
                     spinWidth=2),
        'interpolation':
        props.Widget('interpolation',
                     labels=strings.choices['VolumeOpts.interpolation']),
        'colour':
        props.Widget('colour'),
        'invert':
        props.Widget('invert'),
        'threshold':
        props.Widget('threshold', showLimits=False),
        'outline':
        props.Widget('outline'),
        'outlineWidth':
        props.Widget('outlineWidth', showLimits=False),
    }
Пример #6
0
def _initWidgetSpec_TensorOpts(threedee):
    return {
        'lighting'         : props.Widget('lighting'),
        'orientFlip'       : props.Widget('orientFlip'),
        'tensorResolution' : props.Widget(
            'tensorResolution',
            showLimits=False,
            spin=False,
            labels=[strings.choices['TensorOpts.tensorResolution.min'],
                    strings.choices['TensorOpts.tensorResolution.max']]),
        'tensorScale'      : props.Widget(
            'tensorScale',
            showLimits=False,
            spin=False),
    }
Пример #7
0
    def __init__(self, parent, overlayList, displayCtx, frame, histPanel):
        """Create a ``HistogramToolBar``.

        :arg parent:      The :mod:`wx` parent object.
        :arg overlayList: The :class:`.OverlayList` instance.
        :arg displayCtx:  The :class:`.DisplayContext` instance.
        :arg frame:       The :class:`.FSLeyesFrame` instance.
        :arg histPanel:   The :class:`.HistogramPanel` instance.
        """

        plottoolbar.PlotToolBar.__init__(self, parent, overlayList, displayCtx,
                                         frame, histPanel)

        togControl = actions.ToggleActionButton(
            'toggleHistogramControl',
            actionKwargs={'floatPane': True},
            icon=[
                icons.findImageFile('spannerHighlight24'),
                icons.findImageFile('spanner24')
            ],
            tooltip=tooltips.actions[histPanel, 'toggleHistogramControl'])

        togList = actions.ToggleActionButton(
            'togglePlotList',
            actionKwargs={'floatPane': True},
            icon=[
                icons.findImageFile('listHighlight24'),
                icons.findImageFile('list24')
            ],
            tooltip=tooltips.actions[histPanel, 'togglePlotList'])

        togOverlay = actions.ToggleActionButton(
            'toggleHistogramOverlay',
            icon=[
                icons.findImageFile('histogramOverlayHighlight24'),
                icons.findImageFile('histogramOverlay24')
            ])

        mode = props.Widget('histType',
                            labels=strings.choices[histPanel, 'histType'],
                            tooltip=tooltips.properties[histPanel, 'histType'])

        togControl = props.buildGUI(self, histPanel, togControl)
        togList = props.buildGUI(self, histPanel, togList)
        togOverlay = props.buildGUI(self, histPanel, togOverlay)
        mode = props.buildGUI(self, histPanel, mode)

        lblMode = self.MakeLabelledTool(
            mode, strings.properties[histPanel, 'histType'])

        self.InsertTools([togControl, togList], 0)
        self.AddTool(togOverlay)
        self.AddTool(lblMode)


        nav = [togControl, togList]    + \
              self.getCommonNavOrder() + \
              [togOverlay, mode]

        self.setNavOrder(nav)
Пример #8
0
def _initWidgetSpec_LabelOpts(threedee):
    return {
        'lut'          : props.Widget('lut', labels=lambda l: l.name),
        'outline'      : props.Widget('outline'),
        'outlineWidth' : props.Widget('outlineWidth', showLimits=False),
        'custom_volume'  : _NiftiOpts_VolumeWidget,
        'volume'         : props.Widget(
            'volume',
            showLimits=False,
            enabledWhen=lambda o: o.overlay.ndim > 3,
            spinWidth=6),
        'volumeDim'      : props.Widget(
            'volumeDim',
            showLimits=False,
            slider=False,
            enabledWhen=lambda o: o.overlay.ndim > 4,
            spinWidth=2),
    }
Пример #9
0
def _initWidgetSpec_MIPOpts(threedee):

    return {
        'custom_volume':
        _NiftiOpts_VolumeWidget,
        'volume':
        props.Widget('volume',
                     showLimits=False,
                     enabledWhen=lambda o: o.overlay.ndim > 3,
                     spinWidth=6),
        'volumeDim':
        props.Widget('volumeDim',
                     showLimits=False,
                     slider=False,
                     enabledWhen=lambda o: o.overlay.ndim > 4,
                     spinWidth=2),
        'interpolation':
        props.Widget('interpolation',
                     labels=strings.choices['VolumeOpts.interpolation']),
        'window':
        props.Widget('window', showLimits=False, slider=True),
        'minimum':
        props.Widget('minimum'),
        'absolute':
        props.Widget('absolute'),
    }
Пример #10
0
def _initWidgetSpec_MaskOpts(threedee):
    return {
        'custom_volume':
        _NiftiOpts_VolumeWidget,
        'volume':
        props.Widget('volume',
                     showLimits=False,
                     enabledWhen=lambda o: o.overlay.ndims > 3,
                     spinWidth=6),
        'volumeDim':
        props.Widget('volumeDim',
                     showLimits=False,
                     slider=False,
                     enabledWhen=lambda o: o.overlay.ndims > 4,
                     spinWidth=2),
        'colour':
        props.Widget('colour'),
        'invert':
        props.Widget('invert'),
        'threshold':
        props.Widget('threshold', showLimits=False),
    }
Пример #11
0
def _initWidgetSpec_Display(threedee):
    return {
        'name'        : props.Widget('name'),
        'overlayType' : props.Widget(
            'overlayType',
            labels=strings.choices['Display.overlayType']),
        'enabled'     : props.Widget('enabled'),
        'alpha'       : props.Widget('alpha',      showLimits=False),
        'brightness'  : props.Widget('brightness', showLimits=False),
        'contrast'    : props.Widget('contrast',   showLimits=False),
    }
Пример #12
0
def _initWidgetSpec_VolumeOpts(threedee):
    def imageName(img):
        if img is None: return 'None'
        else: return img.name

    return {
        'custom_volume':
        _NiftiOpts_VolumeWidget,
        'custom_overrideDataRange':
        _VolumeOpts_OverrideDataRangeWidget,
        'channel':
        props.Widget('channel'),
        'volume':
        props.Widget('volume',
                     showLimits=False,
                     enabledWhen=lambda o: o.overlay.ndim > 3,
                     spinWidth=6),
        'volumeDim':
        props.Widget('volumeDim',
                     showLimits=False,
                     slider=False,
                     enabledWhen=lambda o: o.overlay.ndim > 4,
                     spinWidth=2),
        'interpolation':
        props.Widget('interpolation',
                     labels=strings.choices['VolumeOpts.interpolation']),
        'clipImage':
        props.Widget('clipImage', labels=imageName),
        'modulateImage':
        props.Widget('modulateImage', labels=imageName),
        'enableOverrideDataRange':
        props.Widget('enableOverrideDataRange'),
        'overrideDataRange':
        props.Widget('overrideDataRange',
                     showLimits=False,
                     spin=True,
                     slider=False,
                     dependencies=['enableOverrideDataRange'],
                     enabledWhen=lambda vo, en: en),
    }
Пример #13
0
def _initWidgetSpec_MeshOpts(threedee):
    def imageName(img):
        if img is None: return 'None'
        else: return img.name

    def pathName(vdata):
        if vdata is None: return 'None'
        else: return op.basename(vdata)

    def colourEnabledWhen(opts, vdata, useLut):
        return (vdata is not None) and (not useLut)

    colourKwargs = {
        'dependencies': ['vertexData', 'useLut'],
        'enabledWhen': colourEnabledWhen
    }

    return {
        'outline':
        props.Widget('outline',
                     dependencies=['vertexData'],
                     enabledWhen=lambda o, v: v is None),
        'outlineWidth':
        props.Widget('outlineWidth',
                     showLimits=False,
                     dependencies=['outline', 'vertexData'],
                     enabledWhen=lambda op, o, v: o or v is not None),
        'refImage':
        props.Widget('refImage', labels=imageName),
        'coordSpace':
        props.Widget('coordSpace',
                     enabledWhen=lambda o, ri: ri != 'none',
                     labels=strings.choices['MeshOpts.coordSpace'],
                     dependencies=['refImage']),
        'colour':
        props.Widget('colour'),
        'custom_vertexData':
        _MeshOpts_vertexDataWidget,
        'custom_vertexSet':
        _MeshOpts_vertexSetWidget,
        'vertexSet':
        props.Widget('vertexSet', labels=pathName),
        'vertexData':
        props.Widget('vertexData', labels=pathName),
        'modulateData':
        props.Widget('modulateData', labels=pathName),
        'vertexDataIndex':
        props.Widget('vertexDataIndex',
                     showLimits=False,
                     dependencies=['vertexData'],
                     enabledWhen=lambda o, vd: vd is not None),
        'useLut':
        props.Widget('useLut',
                     dependencies=['vertexData'],
                     enabledWhen=lambda o, vd: vd is not None),
        'custom_lut':
        _MeshOpts_LutWidget,
        'lut':
        props.Widget('lut',
                     labels=lambda l: l.name,
                     dependencies=['vertexData'],
                     enabledWhen=lambda o, vd: vd is not None),

        # We override the ColourMapOpts definitions
        # for custom enabledWhen behaviour.
        'cmap':
        props.Widget('cmap', labels=fslcm.getColourMapLabel, **colourKwargs),
        'useNegativeCmap':
        props.Widget('useNegativeCmap', **colourKwargs),
        'negativeCmap':
        props.Widget('negativeCmap',
                     labels=fslcm.getColourMapLabel,
                     **colourKwargs),
        'cmapResolution':
        props.Widget('cmapResolution',
                     slider=True,
                     spin=True,
                     showLimits=False,
                     **colourKwargs),
        'interpolateCmaps':
        props.Widget('interpolateCmaps', **colourKwargs),
        'invert':
        props.Widget('invert', **colourKwargs),
        'invertClipping':
        props.Widget('invertClipping', **colourKwargs),
        'linkLowRanges':
        props.Widget('linkLowRanges', **colourKwargs),
        'linkHighRanges':
        props.Widget('linkHighRanges', **colourKwargs),
        'displayRange':
        props.Widget('displayRange',
                     showLimits=False,
                     slider=True,
                     labels=[
                         strings.choices['ColourMapOpts.displayRange.min'],
                         strings.choices['ColourMapOpts.displayRange.max']
                     ],
                     **colourKwargs),
        'clippingRange':
        props.Widget('clippingRange',
                     showLimits=False,
                     slider=True,
                     labels=[
                         strings.choices['ColourMapOpts.displayRange.min'],
                         strings.choices['ColourMapOpts.displayRange.max']
                     ],
                     dependencies=['vertexData'],
                     enabledWhen=lambda o, vd: vd is not None),
        'discardClipped':
        props.Widget('discardClipped', **colourKwargs),
    }
Пример #14
0
def _initWidgetSpec_SHOpts(threedee):
    return {
        'shResolution':
        props.Widget('shResolution', spin=False, showLimits=False),
        'shOrder':
        props.Widget('shOrder'),
        'orientFlip':
        props.Widget('orientFlip'),
        'lighting':
        props.Widget('lighting'),
        'normalise':
        props.Widget('normalise'),
        'size':
        props.Widget('size', spin=False, showLimits=False),
        'radiusThreshold':
        props.Widget('radiusThreshold', spin=False, showLimits=False),
        'colourMode':
        props.Widget('colourMode',
                     labels=strings.choices['SHOpts.colourMode'],
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'cmap':
        props.Widget(
            'cmap',
            labels=fslcm.getColourMapLabel,
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is not None or cm == 'radius'),
        'xColour':
        props.Widget(
            'xColour',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
        'yColour':
        props.Widget(
            'yColour',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
        'zColour':
        props.Widget(
            'zColour',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
        'suppressX':
        props.Widget(
            'suppressX',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
        'suppressY':
        props.Widget(
            'suppressY',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
        'suppressZ':
        props.Widget(
            'suppressZ',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
        'suppressMode':
        props.Widget(
            'suppressMode',
            dependencies=['colourImage', 'colourMode'],
            enabledWhen=lambda o, ci, cm: ci is None and cm == 'direction'),
    }
Пример #15
0
def _initWidgetSpec_VectorOpts(threedee):
    def imageName(img):
        if img is None: return 'None'
        else: return img.name

    return {
        'colourImage':
        props.Widget('colourImage', labels=imageName),
        'modulateImage':
        props.Widget('modulateImage',
                     labels=imageName,
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'clipImage':
        props.Widget('clipImage', labels=imageName),
        'cmap':
        props.Widget('cmap',
                     labels=fslcm.getColourMapLabel,
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is not None),
        'clippingRange':
        props.Widget('clippingRange',
                     showLimits=False,
                     slider=True,
                     labels=[
                         strings.choices['VectorOpts.clippingRange.min'],
                         strings.choices['VectorOpts.clippingRange.max']
                     ],
                     dependencies=['clipImage'],
                     enabledWhen=lambda o, ci: ci is not None),
        'modulateRange':
        props.Widget(
            'modulateRange',
            showLimits=False,
            slider=True,
            labels=[
                strings.choices['VectorOpts.modulateRange.min'],
                strings.choices['VectorOpts.modulateRange.max']
            ],
            dependencies=['colourImage', 'modulateImage'],
            enabledWhen=lambda o, ci, mi: ci is None and mi is not None),
        'xColour':
        props.Widget('xColour',
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'yColour':
        props.Widget('yColour',
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'zColour':
        props.Widget('zColour',
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'suppressX':
        props.Widget('suppressX',
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'suppressY':
        props.Widget('suppressY',
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'suppressZ':
        props.Widget('suppressZ',
                     dependencies=['colourImage'],
                     enabledWhen=lambda o, ci: ci is None),
        'suppressMode':
        props.Widget('suppressMode',
                     dependencies=['colourImage'],
                     labels=strings.choices['VectorOpts.suppressMode'],
                     enabledWhen=lambda o, ci: ci is None),
    }
Пример #16
0
    def __makeTools(self, *a):
        """Called by :meth:`__init__`, and whenever the
        :attr:`.ViewPanel.profile` property changes.

        Re-creates all tools shown on this ``OrthoToolBar``.
        """

        ortho = self.orthoPanel
        orthoOpts = ortho.sceneOpts
        profile = ortho.getCurrentProfile()

        coronalIcon = 'coronalSlice24'
        coronalHighlightIcon = 'coronalSliceHighlight24'

        icons = {
            'screenshot':
            fslicons.findImageFile('camera24'),
            'resetDisplay':
            fslicons.findImageFile('resetZoom24'),
            'showCursorAndLabels': [
                fslicons.findImageFile('addHighlight24'),
                fslicons.findImageFile('add24')
            ],
            'movieMode': [
                fslicons.findImageFile('movieHighlight24'),
                fslicons.findImageFile('movie24')
            ],
            'showXCanvas': [
                fslicons.findImageFile('sagittalSliceHighlight24'),
                fslicons.findImageFile('sagittalSlice24')
            ],
            'showYCanvas': [
                fslicons.findImageFile(coronalHighlightIcon),
                fslicons.findImageFile(coronalIcon)
            ],
            'showZCanvas': [
                fslicons.findImageFile('axialSliceHighlight24'),
                fslicons.findImageFile('axialSlice24')
            ],
            'toggleCanvasSettingsPanel': [
                fslicons.findImageFile('spannerHighlight24'),
                fslicons.findImageFile('spanner24')
            ],
            'layout': {
                'horizontal': [
                    fslicons.findImageFile('horizontalLayoutHighlight24'),
                    fslicons.findImageFile('horizontalLayout24')
                ],
                'vertical': [
                    fslicons.findImageFile('verticalLayoutHighlight24'),
                    fslicons.findImageFile('verticalLayout24')
                ],
                'grid': [
                    fslicons.findImageFile('gridLayoutHighlight24'),
                    fslicons.findImageFile('gridLayout24')
                ]
            }
        }

        tooltips = {
            'screenshot':
            fsltooltips.actions[ortho, 'screenshot'],
            'resetDisplay':
            fsltooltips.actions[profile, 'resetDisplay'],
            'movieMode':
            fsltooltips.properties[ortho, 'movieMode'],
            'showCursorAndLabels':
            fsltooltips.properties[self, 'showCursorAndLabels'],
            'zoom':
            fsltooltips.properties[orthoOpts, 'zoom'],
            'layout':
            fsltooltips.properties[orthoOpts, 'layout'],
            'showXCanvas':
            fsltooltips.properties[orthoOpts, 'showXCanvas'],
            'showYCanvas':
            fsltooltips.properties[orthoOpts, 'showYCanvas'],
            'showZCanvas':
            fsltooltips.properties[orthoOpts, 'showZCanvas'],
            'toggleCanvasSettingsPanel':
            fsltooltips.actions[ortho, 'toggleCanvasSettingsPanel'],
        }

        targets = {
            'screenshot': ortho,
            'movieMode': ortho,
            'showCursorAndLabels': self,
            'resetDisplay': profile,
            'zoom': orthoOpts,
            'layout': orthoOpts,
            'showXCanvas': orthoOpts,
            'showYCanvas': orthoOpts,
            'showZCanvas': orthoOpts,
            'toggleCanvasSettingsPanel': ortho
        }

        toolSpecs = [
            actions.ToggleActionButton(
                'toggleCanvasSettingsPanel',
                actionKwargs={'floatPane': True},
                icon=icons['toggleCanvasSettingsPanel'],
                tooltip=tooltips['toggleCanvasSettingsPanel']),
            actions.ActionButton('screenshot',
                                 icon=icons['screenshot'],
                                 tooltip=tooltips['screenshot']),
            'div',
            props.Widget('showXCanvas',
                         icon=icons['showXCanvas'],
                         tooltip=tooltips['showXCanvas']),
            props.Widget('showYCanvas',
                         icon=icons['showYCanvas'],
                         tooltip=tooltips['showYCanvas']),
            props.Widget('showZCanvas',
                         icon=icons['showZCanvas'],
                         tooltip=tooltips['showZCanvas']),
            'div',
            props.Widget('layout',
                         icons=icons['layout'],
                         tooltip=tooltips['layout']),
            'div',
            props.Widget('movieMode',
                         icon=icons['movieMode'],
                         tooltip=tooltips['movieMode']),
            props.Widget('showCursorAndLabels',
                         icon=icons['showCursorAndLabels'],
                         tooltip=tooltips['showCursorAndLabels']),
            actions.ActionButton('resetDisplay',
                                 icon=icons['resetDisplay'],
                                 tooltip=tooltips['resetDisplay']),
            props.Widget('zoom',
                         spin=True,
                         slider=True,
                         showLimits=False,
                         spinWidth=5,
                         tooltip=tooltips['zoom']),
        ]

        tools = []
        nav = []

        for spec in toolSpecs:

            if spec == 'div':
                tools.append(
                    fsltoolbar.ToolBarDivider(self,
                                              height=24,
                                              orient=wx.VERTICAL))
                continue

            widget = props.buildGUI(self, targets[spec.key], spec)
            navWidget = widget

            if spec.key in ('zoom', ):
                widget = self.MakeLabelledTool(
                    widget, strings.properties[targets[spec.key], spec.key])

            tools.append(widget)
            nav.append(navWidget)

        self.SetTools(tools, destroy=True)
        self.setNavOrder(nav)
Пример #17
0
def _initWidgetSpec_ComplexOpts(threedee):
    return {
        'component':
        props.Widget('component',
                     labels=strings.choices['ComplexOpts.component'])
    }
Пример #18
0
def _initWidgetSpec_ColourMapOpts(threedee):
    return {
        'custom_cmap':
        _ColourMapOpts_ColourMapWidget,
        'cmap':
        props.Widget('cmap', labels=fslcm.getColourMapLabel),
        'useNegativeCmap':
        props.Widget('useNegativeCmap'),
        'negativeCmap':
        props.Widget('negativeCmap',
                     labels=fslcm.getColourMapLabel,
                     dependencies=['useNegativeCmap'],
                     enabledWhen=lambda i, unc: unc),
        'cmapResolution':
        props.Widget('cmapResolution',
                     slider=True,
                     spin=True,
                     showLimits=False),
        'interpolateCmaps':
        props.Widget('interpolateCmaps'),
        'invert':
        props.Widget('invert'),
        'invertClipping':
        props.Widget('invertClipping'),
        'linkLowRanges':
        props.Widget('linkLowRanges'),
        'linkHighRanges':
        props.Widget('linkHighRanges'),
        'modulateAlpha':
        props.Widget('modulateAlpha'),
        'gamma':
        props.Widget('gamma', showLimits=False, slider=True, spin=True),
        'displayRange':
        props.Widget('displayRange',
                     showLimits=False,
                     slider=True,
                     labels=[
                         strings.choices['ColourMapOpts.displayRange.min'],
                         strings.choices['ColourMapOpts.displayRange.max']
                     ]),
        'clippingRange':
        props.Widget('clippingRange',
                     showLimits=False,
                     slider=True,
                     labels=[
                         strings.choices['ColourMapOpts.displayRange.min'],
                         strings.choices['ColourMapOpts.displayRange.max']
                     ]),
        'modulateRange':
        props.Widget('modulateRange',
                     showLimits=False,
                     slider=True,
                     dependencies=['modulateAlpha'],
                     enabledWhen=lambda i, ma: ma,
                     labels=[
                         strings.choices['ColourMapOpts.displayRange.min'],
                         strings.choices['ColourMapOpts.displayRange.max']
                     ]),
    }
Пример #19
0
    def __makeTools(self):
        """Called by :meth:`__init__`. Creates the toolbar widgets. """

        panel = self.panel
        opts = panel.sceneOpts
        profile = panel.getCurrentProfile()

        icons = {
            'screenshot':
            fslicons.findImageFile('camera24'),
            'resetDisplay':
            fslicons.findImageFile('resetZoom24'),
            'showCursorAndLegend': [
                fslicons.findImageFile('addHighlight24'),
                fslicons.findImageFile('add24')
            ],
            'movieMode': [
                fslicons.findImageFile('movieHighlight24'),
                fslicons.findImageFile('movie24')
            ],
            'toggleCanvasSettingsPanel': [
                fslicons.findImageFile('spannerHighlight24'),
                fslicons.findImageFile('spanner24')
            ],
        }

        tooltips = {
            'screenshot':
            fsltooltips.actions[panel, 'screenshot'],
            'resetDisplay':
            fsltooltips.actions[profile, 'resetDisplay'],
            'movieMode':
            fsltooltips.properties[panel, 'movieMode'],
            'showCursorAndLegend':
            fsltooltips.properties[self, 'showCursorAndLegend'],
            'zoom':
            fsltooltips.properties[opts, 'zoom'],
            'toggleCanvasSettingsPanel':
            fsltooltips.actions[panel, 'toggleCanvasSettingsPanel'],
        }

        targets = {
            'screenshot': panel,
            'resetDisplay': profile,
            'movieMode': panel,
            'showCursorAndLegend': self,
            'zoom': opts,
            'toggleCanvasSettingsPanel': panel,
        }

        toolSpecs = [
            actions.ToggleActionButton(
                'toggleCanvasSettingsPanel',
                actionKwargs={'floatPane': True},
                icon=icons['toggleCanvasSettingsPanel'],
                tooltip=tooltips['toggleCanvasSettingsPanel']),
            actions.ActionButton('screenshot',
                                 icon=icons['screenshot'],
                                 tooltip=tooltips['screenshot']),
            'div',
            props.Widget('movieMode',
                         icon=icons['movieMode'],
                         tooltip=tooltips['movieMode']),
            props.Widget('showCursorAndLegend',
                         icon=icons['showCursorAndLegend'],
                         tooltip=tooltips['showCursorAndLegend']),
            actions.ActionButton('resetDisplay',
                                 icon=icons['resetDisplay'],
                                 tooltip=tooltips['resetDisplay']),
            props.Widget('zoom',
                         spin=True,
                         slider=True,
                         showLimits=False,
                         spinWidth=5,
                         tooltip=tooltips['zoom']),
        ]

        tools = []
        nav = []

        for spec in toolSpecs:

            if spec == 'div':
                tools.append(
                    fsltoolbar.ToolBarDivider(self,
                                              height=24,
                                              orient=wx.VERTICAL))
                continue

            widget = props.buildGUI(self, targets[spec.key], spec)
            navWidget = widget

            if spec.key in ('zoom', ):
                widget = self.MakeLabelledTool(
                    widget, strings.properties[targets[spec.key], spec.key])

            tools.append(widget)
            nav.append(navWidget)

        self.SetTools(tools, destroy=True)
        self.setNavOrder(nav)
Пример #20
0
    'targetImage': fsltooltips.properties['OrthoEditProfile.targetImage'],
}
"""This dictionary contains tooltips for some :class:`OrthoEditToolBar`
controls. It is referenced in the :attr:`_TOOLBAR_SPECS` dictionary.
"""


def _targetImageName(image):
    if image is None: return 'None'
    else: return image.name


_TOOLBAR_SPECS = [
    props.Widget('drawMode',
                 toggle=False,
                 icon=_ICONS['drawMode'],
                 tooltip=_TOOLTIPS['drawMode'],
                 style=wx.HORIZONTAL), 'div',
    props.Widget('mode',
                 icons=_ICONS['mode'],
                 tooltip=_TOOLTIPS['mode'],
                 fixChoices=['nav', 'sel', 'desel', 'fill', 'selint']), 'div',
    props.Widget('selectionIs3D',
                 icon=_ICONS['selectionIs3D'],
                 tooltip=_TOOLTIPS['selectionIs3D'],
                 toggle=False,
                 dependencies=['mode'],
                 enabledWhen=lambda p, m: m != 'fill'),
    props.Widget('limitToRadius',
                 icon=_ICONS['limitToRadius'],
                 tooltip=_TOOLTIPS['limitToRadius'],
Пример #21
0
def _initWidgetSpec_VolumeRGBOpts(threedee):

    return {
        'custom_volume':
        _NiftiOpts_VolumeWidget,
        'volume':
        props.Widget('volume',
                     showLimits=False,
                     enabledWhen=lambda o: o.overlay.ndim > 3,
                     spinWidth=6),
        'volumeDim':
        props.Widget('volumeDim',
                     showLimits=False,
                     slider=False,
                     enabledWhen=lambda o: o.overlay.ndim > 4,
                     spinWidth=2),
        'interpolation':
        props.Widget('interpolation',
                     labels=strings.choices['VolumeOpts.interpolation']),
        'rColour':
        props.Widget('rColour'),
        'gColour':
        props.Widget('gColour'),
        'bColour':
        props.Widget('bColour'),
        'suppressR':
        props.Widget('suppressR'),
        'suppressG':
        props.Widget('suppressG'),
        'suppressB':
        props.Widget('suppressB'),
        'suppressA':
        props.Widget('suppressA'),
        'suppressMode':
        props.Widget('suppressMode'),
    }
Пример #22
0
def _init3DWidgetSpec_MeshOpts():
    return {
        'wireframe': props.Widget('wireframe'),
    }
Пример #23
0
    'SHOpts.lighting':
    fsltooltips.properties['SHOpts.lighting'],
    'SHOpts.size':
    fsltooltips.properties['SHOpts.size'],
    'SHOpts.radiusThreshold':
    fsltooltips.properties['SHOpts.'
                           'radiusThreshold'],
})
"""This dictionary contains tooltips for :class:`.Display` and
:class:`.DisplayOpts` properties. It is referenced in the
:attr:`_TOOLBAR_PROPS` dictionary definition.
"""

_TOOLBAR_PROPS = td.TypeDict({
    'Display.name':
    props.Widget('name', tooltip=_TOOLTIPS['Display.name']),
    'Display.overlayType':
    props.Widget('overlayType',
                 tooltip=_TOOLTIPS['Display.overlayType'],
                 labels=strings.choices['Display.overlayType']),
    'Display.alpha':
    props.Widget('alpha',
                 spin=False,
                 showLimits=False,
                 tooltip=_TOOLTIPS['Display.alpha']),
    'Display.brightness':
    props.Widget('brightness',
                 spin=False,
                 showLimits=False,
                 tooltip=_TOOLTIPS['Display.brightness']),
    'Display.contrast':
Пример #24
0
    def __init__(self, parent, overlayList, displayCtx, frame, lb):
        """Create a ``LightBoxToolBar``.

        :arg parent:      The :mod:`wx` parent object.
        :arg overlayList: The :class:`.OverlayList` instance.
        :arg displayCtx:  The :class:`.DisplayContext` instance.
        :arg frame:       The :class:`.FSLeyesFrame` instance.
        :arg lb:          The :class:`.LightBoxPanel` instance.
        """

        fsltoolbar.FSLeyesToolBar.__init__(self,
                                           parent,
                                           overlayList,
                                           displayCtx,
                                           frame,
                                           height=24,
                                           kbFocus=True)

        self.lightBoxPanel = lb

        lbOpts = lb.sceneOpts

        if BUM_MODE: coronalIcon = 'coronalBumSlice24'
        else: coronalIcon = 'coronalSlice24'
        if BUM_MODE: coronalHighlightIcon = 'coronalBumSliceHighlight24'
        else: coronalHighlightIcon = 'coronalSliceHighlight24'

        icons = {
            'screenshot':
            fslicons.findImageFile('camera24'),
            'movieMode': [
                fslicons.findImageFile('movieHighlight24'),
                fslicons.findImageFile('movie24')
            ],
            'toggleCanvasSettingsPanel': [
                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'],
            'toggleCanvasSettingsPanel':
            fsltooltips.actions[lb, 'toggleCanvasSettingsPanel'],
        }

        specs = {
            'toggleCanvasSettingsPanel':
            actions.ToggleActionButton(
                'toggleCanvasSettingsPanel',
                actionKwargs={'floatPane': True},
                icon=icons['toggleCanvasSettingsPanel'],
                tooltip=tooltips['toggleCanvasSettingsPanel']),
            '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['toggleCanvasSettingsPanel'])
        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)
Пример #25
0
    def generateCustomDataSeriesWidgets(self, hs, groupName):
        """Overrides :meth:`.PlotControlPanel.generateCustomDataSeriesWidgets`.
        Adds some widgets to control properties of the
        :class:`.HistogramSeries`.
        """

        isimage = isinstance(hs, hseries.ImageHistogramSeries)
        widgetList = self.getWidgetList()
        allWidgets = []

        autoBin = props.Widget('autoBin')
        nbins = props.Widget('nbins',
                             enabledWhen=lambda i: not i.autoBin,
                             showLimits=False)
        autoBin = props.buildGUI(widgetList, hs, autoBin)
        nbins = props.buildGUI(widgetList, hs, nbins)

        dataRange = props.makeWidget(
            widgetList,
            hs,
            'dataRange',
            labels=[
                strings.choices['HistogramPanel.dataRange.min'],
                strings.choices['HistogramPanel.dataRange.max']
            ],
            showLimits=False)

        ignoreZeros = props.makeWidget(widgetList, hs, 'ignoreZeros')
        includeOutliers = props.makeWidget(widgetList, hs, 'includeOutliers')

        widgetList.AddWidget(ignoreZeros,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'ignoreZeros'],
                             tooltip=fsltooltips.properties[hs, 'ignoreZeros'])
        allWidgets.append(ignoreZeros)

        if isimage:
            showOverlay = props.makeWidget(widgetList, hs, 'showOverlay')
            widgetList.AddWidget(showOverlay,
                                 groupName=groupName,
                                 displayName=strings.properties[hs,
                                                                'showOverlay'],
                                 tooltip=fsltooltips.properties[hs,
                                                                'showOverlay'])
            allWidgets.append(showOverlay)

        widgetList.AddWidget(includeOutliers,
                             groupName=groupName,
                             displayName=strings.properties[hs,
                                                            'includeOutliers'],
                             tooltip=fsltooltips.properties[hs,
                                                            'includeOutliers'])
        widgetList.AddWidget(autoBin,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'autoBin'],
                             tooltip=fsltooltips.properties[hs, 'autoBin'])
        widgetList.AddWidget(nbins,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'nbins'],
                             tooltip=fsltooltips.properties[hs, 'nbins'])
        widgetList.AddWidget(dataRange,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'dataRange'],
                             tooltip=fsltooltips.properties[hs, 'dataRange'])
        allWidgets.append(includeOutliers)
        allWidgets.append(autoBin)
        allWidgets.append(nbins)
        allWidgets.append(dataRange)

        if isinstance(hs, hseries.ComplexHistogramSeries):
            for propName in [
                    'plotReal', 'plotImaginary', 'plotMagnitude', 'plotPhase'
            ]:
                widget = props.makeWidget(widgetList, hs, propName)
                widgetList.AddWidget(widget,
                                     groupName=groupName,
                                     displayName=strings.properties[hs,
                                                                    propName],
                                     tooltip=fsltooltips.properties[hs,
                                                                    propName])
                allWidgets.append(widget)

        return allWidgets
Пример #26
0
    def __makeTools(self):

        displayCtx = self.displayCtx
        canvasPanel = self.__canvasPanel
        widgets = self.getWidgetList()

        canvasPanelProps = collections.OrderedDict(
            (('syncOverlayOrder', props.Widget('syncOverlayOrder')),
             ('syncLocation', props.Widget('syncLocation')),
             ('syncOverlayDisplay', props.Widget('syncOverlayDisplay')),
             ('syncOverlayVolume', props.Widget('syncOverlayVolume')),
             ('movieMode',
              props.Widget('movieMode')), ('movieSyncRefresh',
                                           props.Widget('movieSyncRefresh')),
             ('movieAxis',
              props.Widget('movieAxis',
                           labels=strings.choices[canvasPanel, 'movieAxis'])),
             ('movieRate',
              props.Widget('movieRate', spin=False, showLimits=False))))

        sceneOptsProps = collections.OrderedDict(
            (('showCursor',
              props.Widget('showCursor')), ('bgColour',
                                            props.Widget('bgColour')),
             ('fgColour',
              props.Widget('fgColour')), ('cursorColour',
                                          props.Widget('cursorColour')),
             ('performance',
              props.Widget('performance',
                           spin=False,
                           showLimits=False,
                           labels=strings.choices['SceneOpts.performance'])),
             ('highDpi',
              props.Widget('highDpi')), ('showColourBar',
                                         props.Widget('showColourBar')),
             ('colourBarLabelSide',
              props.Widget(
                  'colourBarLabelSide',
                  labels=strings.choices['SceneOpts.colourBarLabelSide'],
                  enabledWhen=lambda o: o.showColourBar)),
             ('colourBarLocation',
              props.Widget(
                  'colourBarLocation',
                  labels=strings.choices['SceneOpts.colourBarLocation'],
                  enabledWhen=lambda o: o.showColourBar)),
             ('colourBarSize',
              props.Widget('colourBarSize',
                           showLimits=False,
                           slider=True,
                           spin=True)), ('labelSize',
                                         props.Widget('labelSize',
                                                      spin=True,
                                                      showLimits=False))))

        # The highDpi setting is
        # only relevant on macOS
        if platform.system != 'Darwin':
            sceneOptsProps.pop('highDpi')

        def _displaySpaceOptionName(opt):

            if isinstance(opt, fslimage.Nifti):
                return opt.name
            else:
                return strings.choices['DisplayContext.displaySpace'][opt]

        displayCtxProps = collections.OrderedDict(
            (('displaySpace',
              props.Widget('displaySpace',
                           labels=_displaySpaceOptionName,
                           dependencies=[(canvasPanel, 'profile')],
                           enabledWhen=lambda i, p: p == 'view')),
             ('radioOrientation', props.Widget('radioOrientation'))))

        orthoOptsProps = collections.OrderedDict(
            (('layout',
              props.Widget('layout',
                           labels=strings.choices['OrthoOpts.layout'])),
             ('zoom', props.Widget('zoom', showLimits=False)),
             ('showLabels', props.Widget('showLabels')),
             ('cursorGap',
              props.Widget('cursorGap')), ('showXCanvas',
                                           props.Widget('showXCanvas')),
             ('showYCanvas',
              props.Widget('showYCanvas')), ('showZCanvas',
                                             props.Widget('showZCanvas'))))

        lightBoxOptsProps = collections.OrderedDict(
            (('zax',
              props.Widget('zax', labels=strings.choices['CanvasOpts.zax'])),
             ('zoom', props.Widget('zoom', showLimits=False, spin=False)),
             ('sliceSpacing', props.Widget('sliceSpacing', showLimits=False)),
             ('zrange', props.Widget('zrange', showLimits=False)),
             ('highlightSlice', props.Widget('highlightSlice')),
             ('showGridLines', props.Widget('showGridLines'))))

        scene3dOptsProps = collections.OrderedDict((
            ('zoom', props.Widget('zoom', showLimits=False)),
            ('showLegend', props.Widget('showLegend')),
            ('light', props.Widget('light')),
            ('occlusion', props.Widget('occlusion')),
        ))

        import fsleyes.views.orthopanel as orthopanel
        import fsleyes.views.lightboxpanel as lightboxpanel
        import fsleyes.views.scene3dpanel as scene3dpanel

        if isinstance(canvasPanel, orthopanel.OrthoPanel):
            panelGroup = 'ortho'
            panelProps = orthoOptsProps

        elif isinstance(canvasPanel, lightboxpanel.LightBoxPanel):
            panelGroup = 'lightbox'
            panelProps = lightBoxOptsProps
        elif isinstance(canvasPanel, scene3dpanel.Scene3DPanel):
            panelGroup = '3d'
            panelProps = scene3dOptsProps

            # We hide some options in 3D
            sceneOptsProps.pop('performance')
            displayCtxProps.pop('displaySpace')
            displayCtxProps.pop('radioOrientation')

        widgets.AddGroup('scene', strings.labels[self, 'scene'])
        widgets.AddGroup(panelGroup, strings.labels[self, panelGroup])

        allWidgets = []

        for dispProp in canvasPanelProps.values():

            widget = props.buildGUI(widgets,
                                    canvasPanel,
                                    dispProp,
                                    showUnlink=False)

            allWidgets.append(widget)
            widgets.AddWidget(widget,
                              displayName=strings.properties[canvasPanel,
                                                             dispProp.key],
                              tooltip=fsltooltips.properties[canvasPanel,
                                                             dispProp.key],
                              groupName='scene')

        opts = canvasPanel.sceneOpts

        for dispProp in sceneOptsProps.values():

            widget = props.buildGUI(widgets, opts, dispProp, showUnlink=False)

            allWidgets.append(widget)
            widgets.AddWidget(widget,
                              displayName=strings.properties[opts,
                                                             dispProp.key],
                              tooltip=fsltooltips.properties[opts,
                                                             dispProp.key],
                              groupName='scene')

        for dispProp in displayCtxProps.values():
            widget = props.buildGUI(widgets,
                                    displayCtx,
                                    dispProp,
                                    showUnlink=False)

            allWidgets.append(widget)
            widgets.AddWidget(widget,
                              displayName=strings.properties[displayCtx,
                                                             dispProp.key],
                              tooltip=fsltooltips.properties[displayCtx,
                                                             dispProp.key],
                              groupName='scene')

        for dispProp in panelProps.values():

            widget = props.buildGUI(widgets, opts, dispProp, showUnlink=False)

            allWidgets.append(widget)
            widgets.AddWidget(widget,
                              displayName=strings.properties[opts,
                                                             dispProp.key],
                              tooltip=fsltooltips.properties[opts,
                                                             dispProp.key],
                              groupName=panelGroup)

        self.setNavOrder(allWidgets)

        widgets.Expand('scene')
        widgets.Expand(panelGroup)
Пример #27
0
    def __makeTools(self):
        """Generates all of the tools and adds them to the :class:`.WidgetList`
        (see :class:`.FSLeyesSettingsPanel`),
        """

        ortho = self.__ortho
        widgets = self.getWidgetList()
        profile = ortho.getCurrentProfile()

        if ortho.profile != 'edit':
            return

        generalProps = [
            props.Widget('mode',
                         labels=strings.choices[profile, 'mode'],
                         fixChoices=['nav', 'sel', 'desel', 'selint']),
            props.Widget('drawMode'),
            props.Widget('selectionIs3D'),
            props.Widget('selectionSize',
                         slider=False,
                         spin=True,
                         showLimits=False),
            props.Widget('fillValue', slider=False, spin=True),
            props.Widget('eraseValue', slider=False, spin=True),

            # 'showSelectionOutline',
            props.Widget('selectionCursorColour'),
            props.Widget('selectionOverlayColour'),
            props.Widget('locationFollowsMouse',
                         dependencies=['drawMode'],
                         enabledWhen=lambda p, m: not m),
            props.Widget('showSelection',
                         dependencies=['drawMode'],
                         enabledWhen=lambda p, m: not m)
        ]

        selintProps = [
            props.Widget('localFill',
                         dependencies=['mode'],
                         enabledWhen=lambda p, m: m == 'selint'),
            props.Widget('limitToRadius',
                         dependencies=['mode'],
                         enabledWhen=lambda p, m: m == 'selint'),
            props.Widget('intensityThresLimit',
                         spin=True,
                         slider=False,
                         showLimits=False,
                         dependencies=['mode'],
                         enabledWhen=lambda p, m: m == 'selint'),
            props.Widget('intensityThres',
                         spin=True,
                         slider=True,
                         showLimits=False,
                         dependencies=['mode'],
                         enabledWhen=lambda p, m: m == 'selint'),
            props.Widget('searchRadius',
                         spin=True,
                         slider=True,
                         showLimits=False,
                         dependencies=['mode', 'limitToRadius'],
                         enabledWhen=lambda p, m, r: m == 'selint' and r),
        ]

        widgets.AddGroup('general', strings.labels[self, 'general'])
        widgets.AddGroup('selint', strings.labels[self, 'selint'])

        allWidgets = []

        for spec in generalProps:

            widget = props.buildGUI(widgets, profile, spec)
            allWidgets.append(widget)
            widgets.AddWidget(widget,
                              displayName=strings.properties[profile,
                                                             spec.key],
                              tooltip=fsltooltips.properties[profile,
                                                             spec.key],
                              groupName='general')

        for spec in selintProps:

            widget = props.buildGUI(widgets, profile, spec)
            allWidgets.append(widget)
            widgets.AddWidget(widget,
                              displayName=strings.properties[profile,
                                                             spec.key],
                              tooltip=fsltooltips.properties[profile,
                                                             spec.key],
                              groupName='selint')

        self.setNavOrder(allWidgets)
        widgets.Expand('general')
        widgets.Expand('selint')
Пример #28
0
    def generateCustomDataSeriesWidgets(self, hs, groupName):
        """Overrides :meth:`.PlotControlPanel.generateCustomDataSeriesWidgets`.
        Adds some widgets to control properties of the
        :class:`.HistogramSeries`.
        """

        isimage = isinstance(hs, hseries.ImageHistogramSeries)
        widgetList = self.getWidgetList()

        autoBin = props.Widget('autoBin')
        nbins = props.Widget('nbins',
                             enabledWhen=lambda i: not i.autoBin,
                             showLimits=False)
        autoBin = props.buildGUI(widgetList, hs, autoBin)
        nbins = props.buildGUI(widgetList, hs, nbins)

        dataRange = props.makeWidget(
            widgetList,
            hs,
            'dataRange',
            labels=[
                strings.choices['HistogramPanel.dataRange.min'],
                strings.choices['HistogramPanel.dataRange.max']
            ],
            showLimits=False)

        ignoreZeros = props.makeWidget(widgetList, hs, 'ignoreZeros')
        includeOutliers = props.makeWidget(widgetList, hs, 'includeOutliers')

        if isimage:
            showOverlay = props.makeWidget(widgetList, hs, 'showOverlay')

        widgetList.AddWidget(ignoreZeros,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'ignoreZeros'],
                             tooltip=fsltooltips.properties[hs, 'ignoreZeros'])

        if isimage:
            widgetList.AddWidget(showOverlay,
                                 groupName=groupName,
                                 displayName=strings.properties[hs,
                                                                'showOverlay'],
                                 tooltip=fsltooltips.properties[hs,
                                                                'showOverlay'])

        widgetList.AddWidget(includeOutliers,
                             groupName=groupName,
                             displayName=strings.properties[hs,
                                                            'includeOutliers'],
                             tooltip=fsltooltips.properties[hs,
                                                            'includeOutliers'])
        widgetList.AddWidget(autoBin,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'autoBin'],
                             tooltip=fsltooltips.properties[hs, 'autoBin'])
        widgetList.AddWidget(nbins,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'nbins'],
                             tooltip=fsltooltips.properties[hs, 'nbins'])
        widgetList.AddWidget(dataRange,
                             groupName=groupName,
                             displayName=strings.properties[hs, 'dataRange'],
                             tooltip=fsltooltips.properties[hs, 'dataRange'])

        if isimage:
            return [
                ignoreZeros, showOverlay, includeOutliers, autoBin, nbins,
                dataRange
            ]
        else:
            return [ignoreZeros, includeOutliers, autoBin, nbins, dataRange]
Пример #29
0
_TOOLBAR_SPECS = [

    actions.ToggleActionButton(
        'toggleEditPanel',
        actionKwargs={'floatPane' : True},
        icon=_ICONS['toggleEditPanel'],
        tooltip=_TOOLTIPS['toggleEditPanel']),
    actions.ActionButton(
        'createMask',
        icon=_ICONS['createMask'],
        tooltip=_TOOLTIPS['createMask']),

    'div',

    props.Widget(
        'locationFollowsMouse',
        icon=_ICONS['locationFollowsMouse'],
        tooltip=_TOOLTIPS['locationFollowsMouse']),

    'div',


    actions.ActionButton(
        'undo',
        icon=_ICONS['undo'],
        tooltip=_TOOLTIPS['undo']),
    actions.ActionButton(
        'redo',
        icon=_ICONS['redo'],
        tooltip=_TOOLTIPS['redo']),

    'div',