Skip to content

Commit 4c49765

Browse files
committed
Clean up layer selection API
1 parent 51b6b03 commit 4c49765

File tree

5 files changed

+20
-10
lines changed

5 files changed

+20
-10
lines changed

docs/changelog.rst

+3
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ Changes
1818
you would be interested in please open an issue at https://github.com/matplotlib/napari-matplotlib.
1919
- Labels plotting with the features scatter widget no longer have underscores
2020
replaced with spaces.
21+
- ``NapariMPLWidget.update_layers()`` has been removed as it is intended to be
22+
private API. Use `NapariMPLWidget.on_update_layers` instead to implement
23+
funcitonality when layer selection is changed.
2124

2225
Bug fixes
2326
~~~~~~~~~

src/napari_matplotlib/base.py

+13-6
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ class NapariMPLWidget(QWidget):
3434
advantage of this sub-classes should implement the ``clear()`` and
3535
``draw()`` methods.
3636
37+
When both the z-step and layer selection is changed, ``clear()`` is called
38+
and if the number a type of selected layers are valid for the widget
39+
``draw()`` is then called. When layer selection is changed ``on_update_layers()``
40+
is also called, which can be useful e.g. for updating a layer list in a
41+
selection widget.
42+
3743
Attributes
3844
----------
3945
viewer : `napari.Viewer`
@@ -103,14 +109,16 @@ def _setup_callbacks(self) -> None:
103109
# z-step changed in viewer
104110
self.viewer.dims.events.current_step.connect(self._draw)
105111
# Layer selection changed in viewer
106-
self.viewer.layers.selection.events.changed.connect(self.update_layers)
112+
self.viewer.layers.selection.events.changed.connect(
113+
self._update_layers
114+
)
107115

108-
def update_layers(self, event: napari.utils.events.Event) -> None:
116+
def _update_layers(self, event: napari.utils.events.Event) -> None:
109117
"""
110118
Update the ``layers`` attribute with currently selected layers and re-draw.
111119
"""
112120
self.layers = list(self.viewer.layers.selection)
113-
self._on_update_layers()
121+
self.on_update_layers()
114122
self._draw()
115123

116124
def _draw(self) -> None:
@@ -165,10 +173,9 @@ def apply_napari_colorscheme(ax: Axes) -> None:
165173
ax.tick_params(axis="x", colors="white")
166174
ax.tick_params(axis="y", colors="white")
167175

168-
def _on_update_layers(self) -> None:
176+
def on_update_layers(self) -> None:
169177
"""
170-
Function is called when self.layers is updated via
171-
``self.update_layers()``.
178+
Called when the selected layers are updated.
172179
173180
This is a no-op, and is intended for derived classes to override.
174181
"""

src/napari_matplotlib/histogram.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def __init__(
2727
):
2828
super().__init__(napari_viewer, parent=parent)
2929
self.add_single_axes()
30-
self.update_layers(None)
30+
self._update_layers(None)
3131

3232
def clear(self) -> None:
3333
"""

src/napari_matplotlib/scatter.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ def __init__(
132132
self.layout().addWidget(QLabel(f"{dim}-axis:"))
133133
self.layout().addWidget(self._selectors[dim])
134134

135-
self.update_layers(None)
135+
self._update_layers(None)
136136

137137
@property
138138
def x_axis_key(self) -> Union[str, None]:
@@ -230,7 +230,7 @@ def _get_data(self) -> Tuple[npt.NDArray[Any], npt.NDArray[Any], str, str]:
230230

231231
return x, y, x_axis_name, y_axis_name
232232

233-
def _on_update_layers(self) -> None:
233+
def on_update_layers(self) -> None:
234234
"""
235235
Called when the layer selection changes by ``self.update_layers()``.
236236
"""

src/napari_matplotlib/slice.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def __init__(
5151
for d in _dims_sel:
5252
self.slice_selectors[d].textChanged.connect(self._draw)
5353

54-
self.update_layers(None)
54+
self._update_layers(None)
5555

5656
@property
5757
def _layer(self) -> napari.layers.Layer:

0 commit comments

Comments
 (0)