diff --git a/pyproject.toml b/pyproject.toml index bb027e8..2ada2e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,7 +38,7 @@ dependencies = [ "typer >= 0.12", "rich >= 13", "numpy >= 1.24", - "cellier[pyside]>=0.0.19", + "cellier[pyside]>=0.0.20", "jupyterlab>=4.5.6", "aiohttp >= 3.9", "zarr >= 3.0", diff --git a/src/oz_viewer/viewer/_orthoviewer.py b/src/oz_viewer/viewer/_orthoviewer.py index 0430900..0840272 100644 --- a/src/oz_viewer/viewer/_orthoviewer.py +++ b/src/oz_viewer/viewer/_orthoviewer.py @@ -683,9 +683,7 @@ def _on_mode_toggle(self) -> None: # Toggle multichannel visual visibility. if self._multichannel_visual_ids: for vid in self._multichannel_visual_ids: - self._controller.update_appearance_field( - vid, "visible", to_multichannel - ) + self._controller.set_visual_visible(vid, to_multichannel) # Update scene dims to add/remove the channel axis from slice_indices. if self._channel_axis is not None: @@ -768,7 +766,8 @@ def _build_multichannel(self) -> None: transform=self._voxel_to_world, ) # Hide immediately; the toggle will show it. - self._controller.update_appearance_field(mc_visual.id, "visible", False) + for ch in mc_visual.channels.values(): + ch.visible = False self._multichannel_visual_ids.append(mc_visual.id) if key == "vol": _lazy_mc_vol_visual_id = mc_visual.id diff --git a/src/oz_viewer/viewer/_viewer.py b/src/oz_viewer/viewer/_viewer.py index e4dc7b1..f5b8159 100644 --- a/src/oz_viewer/viewer/_viewer.py +++ b/src/oz_viewer/viewer/_viewer.py @@ -300,16 +300,9 @@ def _on_released() -> None: # ------------------------------------------------------------------ def _on_toggle_clicked(self) -> None: - from cellier.v2.events import DimsUpdateEvent - current_slice = dict(self._scene.dims.selection.slice_indices) self._controller.cancel_pending_slices(self._scene.id) in_sc = self._mode_channel == "single" - stacked = ( - (self._geo.channel_axis,) - if not in_sc and self._geo.channel_axis is not None - else None - ) if self._active_mode == "2d": # Save the Z world-coord before it leaves slice_indices. @@ -333,15 +326,8 @@ def _on_toggle_clicked(self) -> None: self._lod_bias_3d_slider.setValue(self._lod_bias_3d) self._lod_bias_3d_slider.blockSignals(False) - self._controller.incoming_events.emit( - DimsUpdateEvent( - source_id=self._controller._id, - scene_id=self._scene.id, - slice_indices=new_slice, - displayed_axes=self._displayed_axes_3d, - stacked_axes=stacked, - ) - ) + self._controller.update_slice_indices(self._scene.id, new_slice) + self._controller.set_displayed_axes(self._scene.id, self._displayed_axes_3d) self._active_mode = "3d" self._mode_label.setText("Mode: 3D") self._toggle_btn.setText("Switch to 2D") @@ -364,15 +350,8 @@ def _on_toggle_clicked(self) -> None: self._lod_bias_2d_slider.setValue(self._lod_bias_2d) self._lod_bias_2d_slider.blockSignals(False) - self._controller.incoming_events.emit( - DimsUpdateEvent( - source_id=self._controller._id, - scene_id=self._scene.id, - slice_indices=new_slice, - displayed_axes=self._displayed_axes_2d, - stacked_axes=stacked, - ) - ) + self._controller.update_slice_indices(self._scene.id, new_slice) + self._controller.set_displayed_axes(self._scene.id, self._displayed_axes_2d) self._active_mode = "2d" self._mode_label.setText("Mode: 2D") self._toggle_btn.setText("Switch to 3D") @@ -402,7 +381,7 @@ def _on_mc_toggle_clicked(self) -> None: self._saved_channel = float(current.get(ch, self._saved_channel)) current.pop(ch, None) self._controller.update_slice_indices(self._scene.id, current) - self._controller.update_stacked_axes(self._scene.id, (ch,)) + self._controller.set_stacked_axes(self._scene.id, (ch,)) self._channel_stack.setCurrentIndex(1) self._mode_channel = "multichannel" if self._toggle_mc_btn is not None: @@ -417,7 +396,7 @@ def _on_mc_toggle_clicked(self) -> None: # so the slider reappears. ch = self._geo.channel_axis if ch is not None: - self._controller.update_stacked_axes(self._scene.id, ()) + self._controller.set_stacked_axes(self._scene.id, ()) current = dict(self._scene.dims.selection.slice_indices) current[ch] = self._saved_channel self._controller.update_slice_indices(self._scene.id, current)