fsleyes.editor.editor¶
This module provides the Editor class, which provides
functionality to edit the data in an Image overlay.
-
class
fsleyes.editor.editor.Editor(image, overlayList, displayCtx, recordSelection=False)[source]¶ Bases:
fsleyes.actions.ActionProviderThe
Editorclass provides functionality to edit the data of anImageoverlay. AnEditorinstance is associated with a specificImageoverlay, passed to__init__().An
Editorinstance uses aselection.Selectionobject which allows voxel selections to be made, and keeps track of all changes to both the selection and image data.The editing process
Making changes to the data in an
Imageinvolves two steps:Create a selection
Change the value of voxels in that selection
The first step can be peformed by working directly with the
Selectionobject - this is accessible via thegetSelection()method. ThefillSelection()method can be used to perform the second step.Some convenience methods are also provided for working with selections:
Returns the
selection.Selectioninstance currently in use.Fills the current selection with the specified value or values.
Copies the
Imagedata in the current selection.Pastes the data in the given
clipboardinto theImagethat is managed by thisEditor.Change tracking
An
Editorinstance keeps track of all changes made to theImagedata and to theSelectionEvery selection/data change made is recorded usingSelectionChangeandValueChangeinstances, which are stored in a list. These changes can be undone (and redone), through theundo()andredo()“action” methods (see theactionsmodule). Changes to theSelectionobject are, by default, only recorded when the selection is cleared. However, you can track all selection changes by initialising anEditorinstance withrecordSelection=True.Sometimes it is useful to treat many small changes as a single large change. For example, if a selection is being updated by dragging the mouse across a canvas, storing a separate change for every change in mouse position would result in many small changes which, if the user then wishes to undo, would have to be undone one by one. This problem can be overcome by the use of change groups. Whenever an operation similar to the above begins, you can call the
startChangeGroup()method - from now on, all changes will be aggregated into one group. When the operation completes, call theendChangeGroup()to stop group changes. When undoing/redoing changes, all of the changes in a change group will be undone/redone together.-
__init__(image, overlayList, displayCtx, recordSelection=False)[source]¶ Create an
Editor.- Parameters
image – The
Imageinstance being edited.overlayList – The
OverlayListinstance.displayCtx – The
DisplayContextinstance.recordSelection – Defaults to
False. IfTrue, changes to theselection.Selectionare recorded in the change history.
-
destroy()[source]¶ Removes some property listeners, and clears references to objects to prevent memory leaks.
-
getSelection()[source]¶ Returns the
selection.Selectioninstance currently in use.
-
clearSelection()[source]¶ Clears the
selection.Selection(seeselection.Selection.clearSelection()). If thisEditoris not recording all selection changes (recordSelection=Falsein__init__()), the selection state before being cleared is saved in the change history.
-
fillSelection(newVals)[source]¶ Fills the current selection with the specified value or values.
- Parameters
newVals – A scalar value, or a sequence containing the same number of values as the current selection size.
-
startChangeGroup()[source]¶ Starts a change group. All subsequent changes will be grouped together, for
undo()/redo()purposes, until a call toendChangeGroup().
-
endChangeGroup()[source]¶ Ends a change group previously started by a call to
startChangeGroup().
-
recordChanges(record=True)[source]¶ Cause this
Editorto either record or ignore any changes that are made to the selection or the image data until further notice.- Parameters
record – If
True, changes are recorded. Otherwise they are ignored.
-
ignoreChanges()[source]¶ Cause this
Editorto ignore any changes that are made to the selection or the image data until further notice. Call therecordChanges()method to resume recording changes.
-
undo()[source]¶ Un-does the most recent change. Returns a list containing all change objects that were undone - either
ValueChangeorSelectionChangeobjects.
-
redo()[source]¶ Re-does the most recent undone change. Returns a list containing all change objects that were undone - either
ValueChangeorSelectionChangeobjects.
-
copySelection()[source]¶ Copies the
Imagedata in the current selection. Returns the data in a format that can be passed directly to thepasteSelection()method of this, or another,Editorinstance.Note
The format of the returned data might change, so I haven’t specified it.
-
pasteSelection(clipboard)[source]¶ Pastes the data in the given
clipboardinto theImagethat is managed by thisEditor.The
clipboardis assumed to have been created by thecopySelection()method of anotherEditorinstance which is managing anImagethat has the same resolution and dimensions as theImagemanaged by this instance.
-
_Editor__applyChange(change)¶ Called by the
fillSelection()andredo()methods.Applies the given
change(either aValueChangeor aSelectionChange).
-
_Editor__changeMade(change)¶ Called by the
fillSelection()and__selectionChanged()methods, whenever a data/selection change is made.Saves the change, and updates the state of the
undo()/redo()methods.
-
_Editor__makeSlice(offset, shape, volume=None)¶ Generate a tuple of
sliceobjects and/or integers, suitable for indexing a region of an image at the givenoffset, with the givenshape. If the image has more than three dimensions, the generated slice will index the specifiedvolume(assumed to be a sequence of indices).
-
_Editor__revertChange(change)¶ Called by the
undo()method. Reverses the change made by the givenchangeobject, (either aValueChangeor aSelectionChange)
-
_Editor__selectionChanged(*a)¶ Called when the current
Selection.selectionchanges.Saves a record of the change with a
SelectionChangeobject.
-
__module__= 'fsleyes.editor.editor'¶
-
class
fsleyes.editor.editor.ValueChange(overlay, volume, offset, oldVals, newVals)[source]¶ Bases:
objectRepresents a change which has been made to the data for an
Imageinstance. Stores the location, the old values, and the new values.-
__init__(overlay, volume, offset, oldVals, newVals)[source]¶ Create a
ValueChange.- Parameters
overlay – The
Imageinstance.volume – Sequence of volume indices, if
overlayhas more than 3 dimensions.offset – Location (voxel coordinates) of the change.
oldVals – A
numpyarray containing the old image values.newVals – A
numpyarray containing the new image values.
-
__dict__= mappingproxy({'__module__': 'fsleyes.editor.editor', '__doc__': 'Represents a change which has been made to the data for an\n :class:`.Image` instance. Stores the location, the old values,\n and the new values.\n ', '__init__': <function ValueChange.__init__>, '__dict__': <attribute '__dict__' of 'ValueChange' objects>, '__weakref__': <attribute '__weakref__' of 'ValueChange' objects>})¶
-
__module__= 'fsleyes.editor.editor'¶
-
__weakref__¶ list of weak references to the object (if defined)
-
-
class
fsleyes.editor.editor.SelectionChange(overlay, offset, oldSelection, newSelection)[source]¶ Bases:
objectRepresents a change which has been made to a
selection.Selectioninstance. Stores the location, the old selection, and the new selection.-
__init__(overlay, offset, oldSelection, newSelection)[source]¶ Create a
SelectionChange.- Parameters
overlay – The
Imageinstance.offset – Location (voxel coordinates) of the change.
oldSelection – A
numpyarray containing the old selection.newSelection – A
numpyarray containing the new selection.
-
__dict__= mappingproxy({'__module__': 'fsleyes.editor.editor', '__doc__': 'Represents a change which has been made to a\n :class:`.selection.Selection` instance. Stores the location, the old\n selection, and the new selection.\n ', '__init__': <function SelectionChange.__init__>, '__dict__': <attribute '__dict__' of 'SelectionChange' objects>, '__weakref__': <attribute '__weakref__' of 'SelectionChange' objects>})¶
-
__module__= 'fsleyes.editor.editor'¶
-
__weakref__¶ list of weak references to the object (if defined)
-