Skip to content

Commit 931b807

Browse files
committed
Rename RectangularROI views
1 parent b0020e6 commit 931b807

File tree

9 files changed

+31
-27
lines changed

9 files changed

+31
-27
lines changed

src/ndv/controllers/_array_viewer.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from ndv._types import MouseMoveEvent
2323
from ndv.models._array_display_model import ArrayDisplayModelKwargs
2424
from ndv.views.bases import HistogramCanvas
25-
from ndv.views.bases._graphics._canvas_elements import RectangularROI
25+
from ndv.views.bases._graphics._canvas_elements import RectangularROIHandle
2626

2727
LutKey: TypeAlias = int | None
2828

@@ -102,7 +102,7 @@ def __init__(
102102
self._canvas.frontend_widget(), self._data_model, self._viewer_model
103103
)
104104

105-
self._roi_view: RectangularROI | None = None
105+
self._roi_view: RectangularROIHandle | None = None
106106

107107
self._set_model_connected(self._data_model.display)
108108
self._canvas.set_ndim(self.display_model.n_visible_axes)

src/ndv/v1/_old_viewer.py

+4-3
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
from ndv.views.bases._graphics._canvas_elements import (
4040
CanvasElement,
4141
ImageHandle,
42-
RectangularROI,
42+
RectangularROIHandle,
4343
)
4444

4545
DimKey = int
@@ -166,7 +166,7 @@ def __init__(
166166
# Canvas selection
167167
self._selection: CanvasElement | None = None
168168
# ROI
169-
self._roi: RectangularROI | None = None
169+
self._roi: RectangularROIHandle | None = None
170170

171171
# WIDGETS ----------------------------------------------------
172172

@@ -764,9 +764,10 @@ def _update_cursor(self, event: QMouseEvent) -> bool:
764764
self._qcanvas.setCursor(Qt.CursorShape.CrossCursor)
765765
return False
766766
# If any local elements have a preference, use it
767+
mme = MouseMoveEvent(event.pos().x(), event.pos().y())
767768
pos = (event.pos().x(), event.pos().y())
768769
for e in self._canvas.elements_at(pos):
769-
if (pref := e.get_cursor(pos)) is not None:
770+
if (pref := e.get_cursor(mme)) is not None:
770771
self._qcanvas.setCursor(pref.to_qt())
771772
return False
772773
# Otherwise, normal cursor

src/ndv/views/_pygfx/_array_canvas.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
from ndv.models._viewer_model import ArrayViewerModel, InteractionMode
2121
from ndv.views._app import filter_mouse_events
2222
from ndv.views.bases import ArrayCanvas, CanvasElement, ImageHandle
23-
from ndv.views.bases._graphics._canvas_elements import RectangularROI, ROIMoveMode
23+
from ndv.views.bases._graphics._canvas_elements import RectangularROIHandle, ROIMoveMode
2424

2525
if TYPE_CHECKING:
2626
from collections.abc import Sequence
@@ -110,7 +110,7 @@ def get_cursor(self, mme: MouseMoveEvent) -> CursorType | None:
110110
return None
111111

112112

113-
class PyGFXBoundingBox(RectangularROI):
113+
class PyGFXRectangle(RectangularROIHandle):
114114
def __init__(
115115
self,
116116
render: Callable,
@@ -407,8 +407,8 @@ def __init__(self, viewer_model: ArrayViewerModel) -> None:
407407

408408
self._elements = WeakKeyDictionary[pygfx.WorldObject, CanvasElement]()
409409
self._selection: CanvasElement | None = None
410-
# TODO: Weak Reference?
411-
self._last_roi_created: ReferenceType[PyGFXBoundingBox] | None = None
410+
# Maintain a weak reference to the last ROI created.
411+
self._last_roi_created: ReferenceType[PyGFXRectangle] | None = None
412412

413413
def frontend_widget(self) -> Any:
414414
return self._canvas
@@ -504,9 +504,9 @@ def add_volume(self, data: np.ndarray | None = None) -> PyGFXImageHandle:
504504
self._elements[vol] = handle
505505
return handle
506506

507-
def add_bounding_box(self) -> PyGFXBoundingBox:
507+
def add_bounding_box(self) -> PyGFXRectangle:
508508
"""Add a new Rectangular ROI node to the scene."""
509-
roi = PyGFXBoundingBox(
509+
roi = PyGFXRectangle(
510510
render=self.refresh,
511511
canvas_to_world=self.canvas_to_world,
512512
parent=self._scene,

src/ndv/views/_qt/_array_view.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838

3939
from ndv._types import AxisKey
4040
from ndv.models._data_display_model import _ArrayDataDisplayModel
41-
from ndv.views.bases._graphics._canvas_elements import CanvasElement, RectangularROI
41+
from ndv.views.bases._graphics._canvas_elements import (
42+
CanvasElement,
43+
RectangularROIHandle,
44+
)
4245

4346
SLIDER_STYLE = """
4447
QSlider::groove:horizontal {
@@ -346,7 +349,7 @@ def __init__(self, canvas_widget: QWidget, parent: QWidget | None = None):
346349
self.histogram_btn = QPushButton(add_histogram_icon, "", self)
347350

348351
# button to draw ROIs
349-
self._roi_handle: RectangularROI | None = None
352+
self._roi_handle: RectangularROIHandle | None = None
350353
self._selection: CanvasElement | None = None
351354
self.add_roi_btn = ROIButton()
352355

src/ndv/views/_vispy/_array_canvas.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
from ndv.views.bases._graphics._canvas_elements import (
2929
CanvasElement,
3030
ImageHandle,
31-
RectangularROI,
31+
RectangularROIHandle,
3232
ROIMoveMode,
3333
)
3434

@@ -116,7 +116,7 @@ def get_cursor(self, mme: MouseMoveEvent) -> CursorType | None:
116116
return None
117117

118118

119-
class VispyBoundingBox(RectangularROI):
119+
class VispyRectangle(RectangularROIHandle):
120120
def __init__(self, parent: Any) -> None:
121121
self._selected = False
122122
self._move_mode: ROIMoveMode | None = None
@@ -307,8 +307,8 @@ def __init__(self, viewer_model: ArrayViewerModel) -> None:
307307

308308
self._elements: WeakKeyDictionary = WeakKeyDictionary()
309309
self._selection: CanvasElement | None = None
310-
# TODO: Weak Reference?
311-
self._last_roi_created: ReferenceType[VispyBoundingBox] | None = None
310+
# Maintain weak reference to last ROI created
311+
self._last_roi_created: ReferenceType[VispyRectangle] | None = None
312312

313313
@property
314314
def _camera(self) -> vispy.scene.cameras.BaseCamera:
@@ -389,9 +389,9 @@ def add_volume(self, data: np.ndarray | None = None) -> VispyImageHandle:
389389
self.set_range()
390390
return handle
391391

392-
def add_bounding_box(self) -> VispyBoundingBox:
392+
def add_bounding_box(self) -> VispyRectangle:
393393
"""Add a new Rectangular ROI node to the scene."""
394-
roi = VispyBoundingBox(parent=self._view.scene)
394+
roi = VispyRectangle(parent=self._view.scene)
395395
roi.set_visible(False)
396396
self._elements[roi._handles] = roi
397397
self._elements[roi._rect] = roi
@@ -423,7 +423,7 @@ def set_range(
423423
_y[1] = max(_y[1], shape[1])
424424
if len(shape) > 2:
425425
_z[1] = max(_z[1], shape[2])
426-
elif isinstance(handle, VispyBoundingBox):
426+
elif isinstance(handle, VispyRectangle):
427427
for v in handle.vertices:
428428
_x[0] = min(_x[0], v[0])
429429
_x[1] = max(_x[1], v[0])

src/ndv/views/bases/__init__.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from ._app import NDVApp
44
from ._array_view import ArrayView
55
from ._graphics._canvas import ArrayCanvas, HistogramCanvas
6-
from ._graphics._canvas_elements import CanvasElement, ImageHandle, RectangularROI
6+
from ._graphics._canvas_elements import CanvasElement, ImageHandle, RectangularROIHandle
77
from ._graphics._mouseable import Mouseable
88
from ._lut_view import LutView
99
from ._view_base import Viewable
@@ -17,6 +17,6 @@
1717
"LutView",
1818
"Mouseable",
1919
"NDVApp",
20-
"RectangularROI",
20+
"RectangularROIHandle",
2121
"Viewable",
2222
]
+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
"""Base classes for graphics elements."""
22

33
from ._canvas import ArrayCanvas, HistogramCanvas
4-
from ._canvas_elements import CanvasElement, ImageHandle, RectangularROI
4+
from ._canvas_elements import CanvasElement, ImageHandle, RectangularROIHandle
55
from ._mouseable import Mouseable
66

77
__all__ = [
@@ -10,5 +10,5 @@
1010
"HistogramCanvas",
1111
"ImageHandle",
1212
"Mouseable",
13-
"RectangularROI",
13+
"RectangularROIHandle",
1414
]

src/ndv/views/bases/_graphics/_canvas.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
from ndv.models._viewer_model import ArrayViewerModel
1717

18-
from ._canvas_elements import CanvasElement, ImageHandle, RectangularROI
18+
from ._canvas_elements import CanvasElement, ImageHandle, RectangularROIHandle
1919

2020

2121
class GraphicsCanvas(Viewable, Mouseable):
@@ -57,7 +57,7 @@ def add_image(self, data: np.ndarray | None = ...) -> ImageHandle: ...
5757
@abstractmethod
5858
def add_volume(self, data: np.ndarray | None = ...) -> ImageHandle: ...
5959
@abstractmethod
60-
def add_bounding_box(self) -> RectangularROI: ...
60+
def add_bounding_box(self) -> RectangularROIHandle: ...
6161

6262

6363
class HistogramCanvas(GraphicsCanvas, LutView):

src/ndv/views/bases/_graphics/_canvas_elements.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ class ROIMoveMode(Enum):
6666
TRANSLATE = auto() # Translating everything
6767

6868

69-
class RectangularROI(CanvasElement):
69+
class RectangularROIHandle(CanvasElement):
7070
"""An axis-aligned rectanglular ROI."""
7171

7272
boundingBoxChanged = Signal(tuple[tuple[float, float], tuple[float, float]])

0 commit comments

Comments
 (0)