From 51ece9ed1f48054cd140c3b7e0923cdd7656168e Mon Sep 17 00:00:00 2001 From: Brandon Date: Wed, 6 May 2026 14:42:05 -0700 Subject: [PATCH 1/3] only display camera trigger if 1 simultaneous camera --- .../gui/tabs/acquisition/CameraPanel.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/CameraPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/CameraPanel.java index 96bb898a..541325dd 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/CameraPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/acquisition/CameraPanel.java @@ -28,7 +28,8 @@ public class CameraPanel extends Panel implements SettingsListener { private final LightSheetManager model_; public CameraPanel(final LightSheetManager model) { - super("Simultaneous Cameras"); + super((model.devices().adapter().numSimultaneousCameras() > 1) ? + "Simultaneous Cameras" : "Camera Settings"); model_ = Objects.requireNonNull(model); createUserInterface(); createEventHandlers(); @@ -100,8 +101,10 @@ private void createUserInterface() { pnlCameraSelectionRow.add(radPrimaryCamera_, ""); pnlCameraSelectionRow.add(pnlCheckboxes, "gaptop 2px"); - add(pnlCameraSelectionRow, "wrap"); - add(new JLabel("Camera Trigger Mode:"), "wrap"); + if (model_.devices().adapter().numSimultaneousCameras() > 1) { + add(pnlCameraSelectionRow, "wrap"); + } + add(new JLabel("Trigger Mode:"), "split 2"); add(cmbCameraMode_, "wrap"); } From 60559b11a4f9c36ab85cc2750f04dc2ded6cdd3b Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 7 May 2026 16:10:41 -0700 Subject: [PATCH 2/3] use shorter method names --- .../lightsheetmanager/LightSheetManager.java | 12 ------------ .../lightsheetmanager/LightSheetManagerPlugin.java | 2 +- .../lightsheetmanager/model/PLogicDispim.java | 10 +++++----- .../lightsheetmanager/model/PLogicScape.java | 10 +++++----- .../lightsheetmanager/model/UserSettings.java | 2 +- 5 files changed, 12 insertions(+), 24 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java index 7df7974e..81e11006 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java +++ b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java @@ -120,26 +120,14 @@ public void pluginSettings(final PluginSettings pluginSettings) { pluginSettings_ = Objects.requireNonNull(pluginSettings); } - public CMMCore getCore() { - return core_; - } - public CMMCore core() { return core_; } - public Studio getStudio() { - return studio_; - } - public Studio studio() { return studio_; } - public AcquisitionEngine getAcquisitionEngine() { - return acqEngine_; - } - @Override public AcquisitionEngine acquisitions() { return acqEngine_; diff --git a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java index edb58c7a..93ea5d4b 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java +++ b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManagerPlugin.java @@ -14,7 +14,7 @@ public class LightSheetManagerPlugin implements MenuPlugin, SciJavaPlugin { public static final String copyright = "Applied Scientific Instrumentation (ASI), 2022-2026"; public static final String description = "A plugin to control various types of light sheet microscopes."; public static final String menuName = "Light Sheet Manager"; - public static final String version = "0.6.4"; + public static final String version = "0.6.5"; private Studio studio_; private LightSheetManager model_; diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/PLogicDispim.java b/src/main/java/org/micromanager/lightsheetmanager/model/PLogicDispim.java index 6430e743..04ce9a71 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/PLogicDispim.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/PLogicDispim.java @@ -1020,7 +1020,7 @@ public double getSheetWidth(CameraMode cameraMode, int view) { // final Properties.Keys widthProp = (side == Devices.Sides.A) ? // Properties.Keys.PLUGIN_SHEET_WIDTH_EDGE_A : Properties.Keys.PLUGIN_SHEET_WIDTH_EDGE_B; // sheetWidth = props_.getPropValueFloat(Devices.Keys.PLUGIN, widthProp); - sheetWidth = model_.getAcquisitionEngine().settings().sheetCalibration().sheetWidth(); + sheetWidth = model_.acquisitions().settings().sheetCalibration().sheetWidth(); if (cameraName == null || cameraName.isEmpty()) { studio_.logs().logDebugMessage("Could not get sheet width for invalid device " + cameraName); @@ -1039,13 +1039,13 @@ public double getSheetWidth(CameraMode cameraMode, int view) { // final float slopePolarity = (side == Devices.Sides.B) ? -1 : 1; // sheetWidth = roi.height * sheetSlope * slopePolarity / 1e6; // in microdegrees per pixel, convert to degrees } else { - final boolean autoSheet = model_.getAcquisitionEngine().settings().sheetCalibration().autoSheetWidthEnabled(); + final boolean autoSheet = model_.acquisitions().settings().sheetCalibration().autoSheetWidthEnabled(); if (autoSheet) { Rectangle roi = camera.getROI(); if (roi == null || roi.height == 0) { studio_.logs().logDebugMessage("Could not get camera ROI for auto sheet mode"); } - final double sheetSlope = model_.getAcquisitionEngine().settings().sheetCalibration().autoSheetWidthPerPixel(); + final double sheetSlope = model_.acquisitions().settings().sheetCalibration().autoSheetWidthPerPixel(); sheetWidth = roi.height * sheetSlope / 1000.0; // in millidegrees per pixel, convert to degrees sheetWidth *= 1.1; // 10% extra width just to be sure } @@ -1074,12 +1074,12 @@ public double getSheetOffset(CameraMode cameraMode, int view) { if (cameraMode == CameraMode.VIRTUAL_SLIT) { // in millidegrees, convert to degrees // TODO: is this correct? - sheetOffset = model_.getAcquisitionEngine().settings().sheetCalibration().sheetOffset() / 1000.0; + sheetOffset = model_.acquisitions().settings().sheetCalibration().sheetOffset() / 1000.0; //sheetOffset = prefs_.getFloat( //MyStrings.PanelNames.SETUP.toString() + side.toString(), //Properties.Keys.PLUGIN_LIGHTSHEET_OFFSET, 0) / 1000; // in millidegrees, convert to degrees } else { - sheetOffset = model_.getAcquisitionEngine().settings().sheetCalibration().sheetOffset(); + sheetOffset = model_.acquisitions().settings().sheetCalibration().sheetOffset(); //final Properties.Keys offsetProp = (side == Devices.Sides.A) ? // Properties.Keys.PLUGIN_SHEET_OFFSET_EDGE_A : Properties.Keys.PLUGIN_SHEET_OFFSET_EDGE_B; // sheetOffset = props_.getPropValueFloat(Devices.Keys.PLUGIN, offsetProp); diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/PLogicScape.java b/src/main/java/org/micromanager/lightsheetmanager/model/PLogicScape.java index 60f5babd..fa462cb2 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/PLogicScape.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/PLogicScape.java @@ -901,7 +901,7 @@ public double getSheetWidth(CameraMode cameraMode, int view) { // final Properties.Keys widthProp = (side == Devices.Sides.A) ? // Properties.Keys.PLUGIN_SHEET_WIDTH_EDGE_A : Properties.Keys.PLUGIN_SHEET_WIDTH_EDGE_B; // sheetWidth = props_.getPropValueFloat(Devices.Keys.PLUGIN, widthProp); - sheetWidth = model_.getAcquisitionEngine().settings().sheetCalibration().sheetWidth(); + sheetWidth = model_.acquisitions().settings().sheetCalibration().sheetWidth(); if (cameraName == null || cameraName.isEmpty()) { studio_.logs().logDebugMessage("Could not get sheet width for invalid device " + cameraName); @@ -920,13 +920,13 @@ public double getSheetWidth(CameraMode cameraMode, int view) { // final float slopePolarity = (side == Devices.Sides.B) ? -1 : 1; // sheetWidth = roi.height * sheetSlope * slopePolarity / 1e6; // in microdegrees per pixel, convert to degrees } else { - final boolean autoSheet = model_.getAcquisitionEngine().settings().sheetCalibration().autoSheetWidthEnabled(); + final boolean autoSheet = model_.acquisitions().settings().sheetCalibration().autoSheetWidthEnabled(); if (autoSheet) { Rectangle roi = camera.getROI(); if (roi == null || roi.height == 0) { studio_.logs().logDebugMessage("Could not get camera ROI for auto sheet mode"); } - final double sheetSlope = model_.getAcquisitionEngine().settings().sheetCalibration().autoSheetWidthPerPixel(); + final double sheetSlope = model_.acquisitions().settings().sheetCalibration().autoSheetWidthPerPixel(); sheetWidth = roi.height * sheetSlope / 1000.0; // in millidegrees per pixel, convert to degrees sheetWidth *= 1.1; // 10% extra width just to be sure } @@ -955,12 +955,12 @@ public double getSheetOffset(CameraMode cameraMode, int view) { if (cameraMode == CameraMode.VIRTUAL_SLIT) { // in millidegrees, convert to degrees // TODO: is this correct? - sheetOffset = model_.getAcquisitionEngine().settings().sheetCalibration().sheetOffset() / 1000.0; + sheetOffset = model_.acquisitions().settings().sheetCalibration().sheetOffset() / 1000.0; //sheetOffset = prefs_.getFloat( //MyStrings.PanelNames.SETUP.toString() + side.toString(), //Properties.Keys.PLUGIN_LIGHTSHEET_OFFSET, 0) / 1000; // in millidegrees, convert to degrees } else { - sheetOffset = model_.getAcquisitionEngine().settings().sheetCalibration().sheetOffset(); + sheetOffset = model_.acquisitions().settings().sheetCalibration().sheetOffset(); //final Properties.Keys offsetProp = (side == Devices.Sides.A) ? // Properties.Keys.PLUGIN_SHEET_OFFSET_EDGE_A : Properties.Keys.PLUGIN_SHEET_OFFSET_EDGE_B; // sheetOffset = props_.getPropValueFloat(Devices.Keys.PLUGIN, offsetProp); diff --git a/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java b/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java index 4dc4f43d..8902e712 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java +++ b/src/main/java/org/micromanager/lightsheetmanager/model/UserSettings.java @@ -45,7 +45,7 @@ public class UserSettings { public UserSettings(final LightSheetManager model) { model_ = Objects.requireNonNull(model); // setup user profile - final UserProfile profile = model_.getStudio().getUserProfile(); + final UserProfile profile = model_.studio().getUserProfile(); settings_ = profile.getSettings(UserSettings.class); userName_ = profile.getProfileName(); } From f4412a3a8295a9277b26c83c1a99e2ce1d79035f Mon Sep 17 00:00:00 2001 From: Brandon Date: Thu, 7 May 2026 17:33:16 -0700 Subject: [PATCH 3/3] add light sheet tilt to joystick panel --- .../micromanager/lightsheetmanager/LightSheetManager.java | 6 +----- .../lightsheetmanager/gui/tabs/setup/JoystickPanel.java | 8 ++++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java index 81e11006..5e53761d 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java +++ b/src/main/java/org/micromanager/lightsheetmanager/LightSheetManager.java @@ -87,7 +87,7 @@ public boolean setup() { // load settings userSettings_.load(); - // TODO: put this somewhere better, need to put this value into LSMAcquisitionEvents for now + // TODO: put this somewhere better, need to put this value into LightSheetEventAdapter for now LightSheetEventAdapter.isUsingMultipleCameras = deviceManager_.adapter().numSimultaneousCameras() > 1; @@ -133,10 +133,6 @@ public AcquisitionEngine acquisitions() { return acqEngine_; } - public DeviceManager getDeviceManager() { - return deviceManager_; - } - @Override public DeviceManager devices() { return deviceManager_; diff --git a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/JoystickPanel.java b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/JoystickPanel.java index 168d8b78..cc9a8a6e 100644 --- a/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/JoystickPanel.java +++ b/src/main/java/org/micromanager/lightsheetmanager/gui/tabs/setup/JoystickPanel.java @@ -147,8 +147,8 @@ private void createEventHandlers() { scanner.js().inputX(Joystick.Input.LEFT_WHEEL); break; case "Light Sheet Tilt": - //final ASIZStage stage = model_.devices().device("SampleZ"); - //stage.js().input(Joystick.Input.LEFT_WHEEL); + final ASIZStage stage = model_.devices().device("IllumAngle"); + stage.js().input(Joystick.Input.LEFT_WHEEL); break; case "Sample Height": final ASIZStage zStage = model_.devices().device("SampleZ"); @@ -175,8 +175,8 @@ private void createEventHandlers() { scanner.js().inputX(Joystick.Input.RIGHT_WHEEL); break; case "Light Sheet Tilt": - //final ASIZStage stage = model_.devices().device("SampleZ"); - //stage.js().input(Joystick.Input.RIGHT_WHEEL); + final ASIZStage stage = model_.devices().device("IllumAngle"); + stage.js().input(Joystick.Input.RIGHT_WHEEL); break; case "Sample Height": final ASIZStage zStage = model_.devices().device("SampleZ");