diff --git a/devices/CurrentCamera.properties b/devices/CurrentCamera.properties
index 31c4cac..6470e7a 100644
--- a/devices/CurrentCamera.properties
+++ b/devices/CurrentCamera.properties
@@ -1,14 +1,14 @@
-#Mon Sep 12 15:37:13 CEST 2016
+#Tue Sep 13 08:34:13 CEST 2016
colormap=Temperature
-colormapAutomatic=true
-colormapMax=1.0
+colormapAutomatic=false
+colormapMax=0.0
colormapMin=0.0
flipHorizontally=false
flipVertically=false
grayscale=false
imageHeight=1024
imageWidth=1280
-invert=true
+invert=false
rescaleFactor=1.0
rescaleOffset=0.0
roiHeight=-1
diff --git a/plugins/Cameras.form b/plugins/Cameras.form
index 7993cd6..28e8683 100644
--- a/plugins/Cameras.form
+++ b/plugins/Cameras.form
@@ -8,6 +8,8 @@
+
+
@@ -25,34 +27,21 @@
-
-
-
-
-
-
+
+
-
-
+
-
-
-
-
-
-
-
-
+
-
@@ -64,7 +53,7 @@
-
+
@@ -111,7 +100,7 @@
-
+
@@ -225,14 +214,7 @@
-
-
-
-
-
-
-
-
+
@@ -240,280 +222,390 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
diff --git a/plugins/Cameras.java b/plugins/Cameras.java
index 38748e0..b57cf64 100644
--- a/plugins/Cameras.java
+++ b/plugins/Cameras.java
@@ -27,6 +27,7 @@ import ch.psi.pshell.imaging.ColormapSource;
import ch.psi.pshell.imaging.ColormapSource.ColormapSourceConfig;
import ch.psi.pshell.ui.App;
import ch.psi.pshell.imaging.Data;
+import ch.psi.pshell.imaging.Histogram;
import ch.psi.pshell.imaging.Overlay;
import ch.psi.pshell.imaging.Overlays;
import ch.psi.pshell.imaging.Overlays.Text;
@@ -58,6 +59,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+import javax.swing.JDialog;
import org.apache.commons.math3.analysis.function.Gaussian;
import org.apache.commons.math3.fitting.GaussianCurveFitter;
import org.apache.commons.math3.fitting.WeightedObservedPoint;
@@ -71,7 +73,7 @@ public class Cameras extends Panel {
initComponents();
renderer.setPersistenceFile(Paths.get(getController().getSetup().getContextPath(), "Renderer_Cameras.bin"));
renderer.setProfileFactor(4);
- setPersistedComponents(new Component[]{checkCamtool});
+ //setPersistedComponents(new Component[]{buttonCamtool, buttonDirect});
comboCameras.setEnabled(false);
if (App.hasArgument("poll")) {
try{
@@ -94,7 +96,8 @@ public class Cameras extends Panel {
public void onStart() {
super.onStart();
if (App.hasArgument("ct")) {
- checkCamtool.setSelected(!App.getArgumentValue("ct").equals("0") && !App.getArgumentValue("ct").equalsIgnoreCase("false"));
+ buttonCamtool.setSelected(!App.getArgumentValue("ct").equals("0") && !App.getArgumentValue("ct").equalsIgnoreCase("false"));
+ buttonDirect.setSelected(!buttonCamtool.isSelected());
}
}
@@ -106,6 +109,7 @@ public class Cameras extends Panel {
CameraConfig config;
int polling = 1000;
Overlay marker = null;
+ JDialog histogramDialog;
//Overridable callbacks
@Override
@@ -268,7 +272,7 @@ public class Cameras extends Panel {
Overlay[] fitOv;
void setCamera(String cameraName) throws IOException, InterruptedException {
- System.out.println("Setting camera: " + cameraName);
+ System.out.println("Setting camera: " + cameraName + " [" + (buttonCamtool.isSelected() ? "camtool" : "direct") + "]");
if (camera != null) {
camera.close();
camera = null;
@@ -284,7 +288,7 @@ public class Cameras extends Panel {
this.cameraName = cameraName;
//SwingUtils.showMessage(null, "", json);
try {
- if (checkCamtool.isSelected()) {
+ if (buttonCamtool.isSelected()) {
camera = new Camtool("CurrentCamera", cameraName, false);
camera.getConfig().flipHorizontally = false;
camera.getConfig().flipVertically = false;
@@ -420,7 +424,7 @@ public class Cameras extends Panel {
buttonFullRange.setSelected(config.isDefaultColormap());
buttonAutomatic.setSelected(config.colormapAutomatic);
- buttonManual.setSelected((!buttonFullRange.isSelected()) && (!buttonAutomatic.isSelected()));
+ buttonManual.setSelected((!config.colormapAutomatic) && (!config.isDefaultColormap()));
spinnerMin.setEnabled(buttonManual.isSelected());
spinnerMax.setEnabled(buttonManual.isSelected());
spinnerMin.setValue(Double.isNaN(config.colormapMin) ? 0 : Math.min(Math.max((int)config.colormapMin, 0), 65535));
@@ -446,6 +450,8 @@ public class Cameras extends Panel {
}
updateZoom();
updateColormap();
+ buttonSave.setSelected(renderer.isSnapshotDialogVisible());
+ buttonHistogram.setSelected((histogramDialog!=null)&&(histogramDialog.isShowing()));
}
Pen fitPen = new Pen(new Color(192, 105, 0), 1);
@@ -803,6 +809,7 @@ public class Camtool extends ArraySource {
buttonGroup1 = new javax.swing.ButtonGroup();
buttonGroup2 = new javax.swing.ButtonGroup();
buttonGroup3 = new javax.swing.ButtonGroup();
+ buttonGroup4 = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
buttonGrabBackground = new javax.swing.JButton();
renderer = new ch.psi.pshell.imaging.Renderer();
@@ -817,6 +824,13 @@ public class Camtool extends ArraySource {
jLabel1 = new javax.swing.JLabel();
buttonConfig = new javax.swing.JButton();
buttonReticle = new javax.swing.JToggleButton();
+ jPanel4 = new javax.swing.JPanel();
+ jPanel3 = new javax.swing.JPanel();
+ buttonZoomFit = new javax.swing.JRadioButton();
+ buttonZoomStretch = new javax.swing.JRadioButton();
+ buttonZoomNormal = new javax.swing.JRadioButton();
+ buttonZoom025 = new javax.swing.JRadioButton();
+ buttonZoom05 = new javax.swing.JRadioButton();
jPanel2 = new javax.swing.JPanel();
buttonGrayscale = new javax.swing.JRadioButton();
buttonRainbow = new javax.swing.JRadioButton();
@@ -828,13 +842,10 @@ public class Camtool extends ArraySource {
spinnerMin = new javax.swing.JSpinner();
spinnerMax = new javax.swing.JSpinner();
buttonAutomatic = new javax.swing.JRadioButton();
- jPanel3 = new javax.swing.JPanel();
- buttonZoomFit = new javax.swing.JRadioButton();
- buttonZoomStretch = new javax.swing.JRadioButton();
- buttonZoomNormal = new javax.swing.JRadioButton();
- buttonZoom025 = new javax.swing.JRadioButton();
- buttonZoom05 = new javax.swing.JRadioButton();
- checkCamtool = new javax.swing.JCheckBox();
+ buttonHistogram = new javax.swing.JToggleButton();
+ jPanel5 = new javax.swing.JPanel();
+ buttonCamtool = new javax.swing.JRadioButton();
+ buttonDirect = new javax.swing.JRadioButton();
buttonGrabBackground.setText("Grab Background");
buttonGrabBackground.addActionListener(new java.awt.event.ActionListener() {
@@ -915,7 +926,7 @@ public class Camtool extends ArraySource {
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
- .addContainerGap()
+ .addGap(0, 0, 0)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(renderer, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
@@ -963,7 +974,7 @@ public class Camtool extends ArraySource {
.addComponent(buttonConfig)
.addComponent(buttonSetup))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(renderer, javax.swing.GroupLayout.DEFAULT_SIZE, 498, Short.MAX_VALUE)
+ .addComponent(renderer, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(12, 12, 12)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(buttonPause)
@@ -977,131 +988,6 @@ public class Camtool extends ArraySource {
jPanel1Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {comboCameras, textState});
- jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Colormap"));
-
- buttonGroup2.add(buttonGrayscale);
- buttonGrayscale.setText("Grayscale");
- buttonGrayscale.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- onChangeColormap(evt);
- }
- });
-
- buttonGroup2.add(buttonRainbow);
- buttonRainbow.setText("Rainbow");
- buttonRainbow.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- onChangeColormap(evt);
- }
- });
-
- buttonGroup2.add(buttonTemperature);
- buttonTemperature.setText("Temperature");
- buttonTemperature.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- onChangeColormap(evt);
- }
- });
-
- buttonGroup3.add(buttonFullRange);
- buttonFullRange.setText("Full range");
- buttonFullRange.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- onChangeColormap(evt);
- }
- });
-
- buttonGroup3.add(buttonManual);
- buttonManual.setText("Manual");
- buttonManual.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- onChangeColormap(evt);
- }
- });
-
- jLabel3.setText("min:");
-
- jLabel4.setText("max:");
-
- spinnerMin.setModel(new javax.swing.SpinnerNumberModel(0, 0, 65535, 1));
- spinnerMin.setEnabled(false);
- spinnerMin.setPreferredSize(new java.awt.Dimension(60, 20));
- spinnerMin.addChangeListener(new javax.swing.event.ChangeListener() {
- public void stateChanged(javax.swing.event.ChangeEvent evt) {
- onChangeColormapRange(evt);
- }
- });
-
- spinnerMax.setModel(new javax.swing.SpinnerNumberModel(255, 0, 65535, 1));
- spinnerMax.setEnabled(false);
- spinnerMax.setPreferredSize(new java.awt.Dimension(60, 20));
- spinnerMax.addChangeListener(new javax.swing.event.ChangeListener() {
- public void stateChanged(javax.swing.event.ChangeEvent evt) {
- onChangeColormapRange(evt);
- }
- });
-
- buttonGroup3.add(buttonAutomatic);
- buttonAutomatic.setText("Automatic");
- buttonAutomatic.addActionListener(new java.awt.event.ActionListener() {
- public void actionPerformed(java.awt.event.ActionEvent evt) {
- onChangeColormap(evt);
- }
- });
-
- javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
- jPanel2.setLayout(jPanel2Layout);
- jPanel2Layout.setHorizontalGroup(
- jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel2Layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(buttonFullRange)
- .addComponent(buttonManual))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(jLabel4)
- .addComponent(jLabel3))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addContainerGap())
- .addGroup(jPanel2Layout.createSequentialGroup()
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(buttonGrayscale)
- .addComponent(buttonRainbow)
- .addComponent(buttonTemperature)
- .addComponent(buttonAutomatic))
- .addGap(0, 0, Short.MAX_VALUE))))
- );
- jPanel2Layout.setVerticalGroup(
- jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(jPanel2Layout.createSequentialGroup()
- .addComponent(buttonGrayscale)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(buttonRainbow)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(buttonTemperature)
- .addGap(18, 18, 18)
- .addComponent(buttonAutomatic)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
- .addGroup(jPanel2Layout.createSequentialGroup()
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(buttonFullRange)
- .addComponent(jLabel3)
- .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(buttonManual))
- .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
- .addComponent(jLabel4)
- .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
- .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- );
-
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Zoom"));
buttonGroup1.add(buttonZoomFit);
@@ -1174,37 +1060,226 @@ public class Camtool extends ArraySource {
.addContainerGap())
);
- checkCamtool.setSelected(true);
- checkCamtool.setText("Use Camtool");
+ jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Colormap"));
+
+ buttonGroup2.add(buttonGrayscale);
+ buttonGrayscale.setText("Grayscale");
+ buttonGrayscale.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ onChangeColormap(evt);
+ }
+ });
+
+ buttonGroup2.add(buttonRainbow);
+ buttonRainbow.setText("Rainbow");
+ buttonRainbow.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ onChangeColormap(evt);
+ }
+ });
+
+ buttonGroup2.add(buttonTemperature);
+ buttonTemperature.setText("Temperature");
+ buttonTemperature.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ onChangeColormap(evt);
+ }
+ });
+
+ buttonGroup3.add(buttonFullRange);
+ buttonFullRange.setText("Full range");
+ buttonFullRange.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ onChangeColormap(evt);
+ }
+ });
+
+ buttonGroup3.add(buttonManual);
+ buttonManual.setText("Manual");
+ buttonManual.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ onChangeColormap(evt);
+ }
+ });
+
+ jLabel3.setText("min:");
+
+ jLabel4.setText("max:");
+
+ spinnerMin.setModel(new javax.swing.SpinnerNumberModel(0, 0, 65535, 1));
+ spinnerMin.setEnabled(false);
+ spinnerMin.setPreferredSize(new java.awt.Dimension(60, 20));
+ spinnerMin.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent evt) {
+ onChangeColormapRange(evt);
+ }
+ });
+
+ spinnerMax.setModel(new javax.swing.SpinnerNumberModel(255, 0, 65535, 1));
+ spinnerMax.setEnabled(false);
+ spinnerMax.setPreferredSize(new java.awt.Dimension(60, 20));
+ spinnerMax.addChangeListener(new javax.swing.event.ChangeListener() {
+ public void stateChanged(javax.swing.event.ChangeEvent evt) {
+ onChangeColormapRange(evt);
+ }
+ });
+
+ buttonGroup3.add(buttonAutomatic);
+ buttonAutomatic.setText("Automatic");
+ buttonAutomatic.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ onChangeColormap(evt);
+ }
+ });
+
+ buttonHistogram.setText("Histogram");
+ buttonHistogram.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonHistogramActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
+ jPanel2.setLayout(jPanel2Layout);
+ jPanel2Layout.setHorizontalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(buttonFullRange)
+ .addComponent(buttonManual))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 24, Short.MAX_VALUE)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addComponent(jLabel4)
+ .addComponent(jLabel3))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addContainerGap())
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(buttonGrayscale)
+ .addComponent(buttonRainbow)
+ .addComponent(buttonTemperature)
+ .addComponent(buttonAutomatic))
+ .addGap(0, 0, Short.MAX_VALUE))))
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(buttonHistogram)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel2Layout.setVerticalGroup(
+ jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(buttonGrayscale)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonRainbow)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonTemperature)
+ .addGap(18, 18, 18)
+ .addComponent(buttonAutomatic)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
+ .addGroup(jPanel2Layout.createSequentialGroup()
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(buttonFullRange)
+ .addComponent(jLabel3)
+ .addComponent(spinnerMin, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonManual))
+ .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(jLabel4)
+ .addComponent(spinnerMax, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 20, Short.MAX_VALUE)
+ .addComponent(buttonHistogram)
+ .addContainerGap())
+ );
+
+ jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder("Source"));
+
+ buttonGroup4.add(buttonCamtool);
+ buttonCamtool.setSelected(true);
+ buttonCamtool.setText("Camtool");
+ buttonCamtool.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonCamtoolActionPerformed(evt);
+ }
+ });
+
+ buttonGroup4.add(buttonDirect);
+ buttonDirect.setText("Direct");
+ buttonDirect.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ buttonDirectActionPerformed(evt);
+ }
+ });
+
+ javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
+ jPanel5.setLayout(jPanel5Layout);
+ jPanel5Layout.setHorizontalGroup(
+ jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel5Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(buttonCamtool)
+ .addComponent(buttonDirect))
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+ jPanel5Layout.setVerticalGroup(
+ jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel5Layout.createSequentialGroup()
+ .addContainerGap()
+ .addComponent(buttonCamtool)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(buttonDirect)
+ .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ );
+
+ javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4);
+ jPanel4.setLayout(jPanel4Layout);
+ jPanel4Layout.setHorizontalGroup(
+ jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel4Layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addContainerGap())
+ );
+ jPanel4Layout.setVerticalGroup(
+ jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(jPanel4Layout.createSequentialGroup()
+ .addGap(10, 10, 10)
+ .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(18, 18, 18)
+ .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addGap(18, 18, 18)
+ .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addContainerGap())
+ );
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
- .addContainerGap()
- .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(checkCamtool)
- .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jPanel3, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addGap(0, 0, 0)
+ .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addGap(0, 0, 0))
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addContainerGap()
+ .addGap(0, 0, 0)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addGroup(layout.createSequentialGroup()
- .addComponent(checkCamtool)
- .addGap(61, 61, 61)
- .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 0, Short.MAX_VALUE))
- .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(0, 0, 0))
+ .addComponent(jPanel4, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
);
}// //GEN-END:initComponents
@@ -1362,7 +1437,7 @@ public class Camtool extends ArraySource {
source.getConfig().colormapMax = buttonFullRange.isSelected() ? Double.NaN : (Integer)spinnerMax.getValue();
source.getConfig().save();
source.refresh();
- }
+ }
} catch (Exception ex) {
showException(ex);
}
@@ -1379,12 +1454,42 @@ public class Camtool extends ArraySource {
private void buttonZoom05ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonZoom05ActionPerformed
renderer.setZoom(0.5);
- renderer.setMode(RendererMode.Zoom);
+ renderer.setMode(RendererMode.Zoom);
}//GEN-LAST:event_buttonZoom05ActionPerformed
+ private void buttonHistogramActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonHistogramActionPerformed
+ try {
+ if (buttonHistogram.isSelected()){
+ if ((histogramDialog==null)||(!histogramDialog.isShowing())){
+ Histogram histogram = new Histogram();
+ histogram.setRenderer(renderer);
+ histogramDialog = SwingUtils.showDialog(SwingUtils.getWindow(renderer), "Histogram", null, histogram);
+ renderer.refresh();
+ }
+ } else{
+ if (histogramDialog!=null){
+ histogramDialog.setVisible(false);
+ histogramDialog=null;
+ }
+ }
+ } catch (Exception ex) {
+ showException(ex);
+ }
+ }//GEN-LAST:event_buttonHistogramActionPerformed
+
+ private void buttonCamtoolActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonCamtoolActionPerformed
+ comboCamerasActionPerformed(null);
+ }//GEN-LAST:event_buttonCamtoolActionPerformed
+
+ private void buttonDirectActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonDirectActionPerformed
+ comboCamerasActionPerformed(null);
+ }//GEN-LAST:event_buttonDirectActionPerformed
+
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JRadioButton buttonAutomatic;
+ private javax.swing.JRadioButton buttonCamtool;
private javax.swing.JButton buttonConfig;
+ private javax.swing.JRadioButton buttonDirect;
private javax.swing.JToggleButton buttonFit;
private javax.swing.JRadioButton buttonFullRange;
private javax.swing.JButton buttonGrabBackground;
@@ -1392,6 +1497,8 @@ public class Camtool extends ArraySource {
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.ButtonGroup buttonGroup2;
private javax.swing.ButtonGroup buttonGroup3;
+ private javax.swing.ButtonGroup buttonGroup4;
+ private javax.swing.JToggleButton buttonHistogram;
private javax.swing.JRadioButton buttonManual;
private javax.swing.JToggleButton buttonMarker;
private javax.swing.JToggleButton buttonPause;
@@ -1405,7 +1512,6 @@ public class Camtool extends ArraySource {
private javax.swing.JRadioButton buttonZoomFit;
private javax.swing.JRadioButton buttonZoomNormal;
private javax.swing.JRadioButton buttonZoomStretch;
- private javax.swing.JCheckBox checkCamtool;
private javax.swing.JComboBox comboCameras;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
@@ -1414,6 +1520,8 @@ public class Camtool extends ArraySource {
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
+ private javax.swing.JPanel jPanel4;
+ private javax.swing.JPanel jPanel5;
private ch.psi.pshell.imaging.Renderer renderer;
private javax.swing.JSpinner spinnerMax;
private javax.swing.JSpinner spinnerMin;
diff --git a/script/Alignment/Gun_solenoid_alignment.py b/script/Alignment/Gun_solenoid_alignment.py
index fb96d43..a7aca47 100755
--- a/script/Alignment/Gun_solenoid_alignment.py
+++ b/script/Alignment/Gun_solenoid_alignment.py
@@ -30,6 +30,9 @@ else:
#from camtool import CamTool
run("camtool")
#from ImageStats import ImageStats, get_simulated_source
+
+laser_was_on = is_laser_on()
+original_gun_solenoid = gun_solenoid.read()
multiple_background = multiple_background and use_background
@@ -96,7 +99,13 @@ finally:
#laser_off()
pass
-image_stats.stop()
+#image_stats.stop()
+
+gun_solenoid.write(original_gun_solenoid)
+if laser_was_on:
+ laser_on()
+else:
+ laser_off()
# take the result of the scan and generate convex hull plot
diff --git a/script/Alignment/Laser_gun_alignment.py b/script/Alignment/Laser_gun_alignment.py
index 404c56b..4812599 100755
--- a/script/Alignment/Laser_gun_alignment.py
+++ b/script/Alignment/Laser_gun_alignment.py
@@ -33,6 +33,8 @@ run("camtool")
#from BpmStats import BpmStats
+laser_was_on = is_laser_on()
+original_phase = gun_phase.read()
multiple_background = multiple_background and use_background
print "Parameters: ", phi1, phi2, dphi, settling_time, plot_image, number_images, use_background, multiple_background, number_backgrounds
@@ -95,9 +97,14 @@ try:
r = lscan(gun_phase, sensors , phi1, phi2, dphi, settling_time, before_read = before_sample, after_read = after_sample)
finally:
pass
- #laser_off()
-image_stats.stop()
+#image_stats.stop()
+
+gun_phase.write(original_phase)
+if laser_was_on:
+ laser_on()
+else:
+ laser_off()
# take the result of the scan and generate convex hull plot
@@ -110,11 +117,12 @@ else:
# save the entry in the logbook
gsa_log_msg = "Data file: " + get_context().path
-gsa_log_msg = gsa_log_msg + "\nImages: " + str(number_images)
-gsa_log_msg = gsa_log_msg + "\nBackground: enabled=" + str(use_background) + " multiple=" + str(multiple_background) + " number=" + str(number_backgrounds)
+gsa_log_msg = gsa_log_msg + "\nImages: " + str(number_images) + " Background: enabled=" + str(use_background) + " multiple=" + str(multiple_background) + " number=" + str(number_backgrounds)
+gsa_log_msg = gsa_log_msg + "\nPhase range: " + str(phi1) + " to " + str(phi2)
+gsa_log_msg = gsa_log_msg + "\nLaser position on cathod: " + str(caget("SLG-LCAM-C103:FIT-XPOS")) + "/" + str(caget("SLG-LCAM-C103:FIT-YPOS"))
gsa_log_msg = gsa_log_msg + "\n\n" + r.print()
if do_elog:
- elog("Gun phasee scan", gsa_log_msg , get_plot_snapshots())
+ elog("Laser alignment with phase scan", gsa_log_msg , get_plot_snapshots())
_=[r, hx, hy]
set_return([r, hx, hy])