[aravis] viewer: make control widgets insensitive when feature is not available.
- From: Emmanuel Pacaud <emmanuel src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [aravis] viewer: make control widgets insensitive when feature is not available.
- Date: Mon, 18 Jun 2012 09:28:52 +0000 (UTC)
commit 6e5be2787c1718162cead3781e3fdf89d4c3b7f8
Author: Emmanuel Pacaud <emmanuel gnome org>
Date: Mon Jun 18 11:28:14 2012 +0200
viewer: make control widgets insensitive when feature is not available.
docs/reference/aravis/aravis-sections.txt | 4 ++
src/arvcamera.c | 59 +++++++++++++++++++++++++++++
src/arvcamera.h | 6 +++
viewer/arvviewer.c | 20 ++++++++++
4 files changed, 89 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/aravis/aravis-sections.txt b/docs/reference/aravis/aravis-sections.txt
index a8b908d..157c5de 100644
--- a/docs/reference/aravis/aravis-sections.txt
+++ b/docs/reference/aravis/aravis-sections.txt
@@ -32,11 +32,15 @@ arv_camera_set_trigger
arv_camera_set_trigger_source
arv_camera_get_trigger_source
arv_camera_software_trigger
+arv_camera_is_exposure_time_available
+arv_camera_is_exposure_auto_available
arv_camera_set_exposure_time
arv_camera_get_exposure_time
arv_camera_get_exposure_time_bounds
arv_camera_set_exposure_time_auto
arv_camera_get_exposure_time_auto
+arv_camera_is_gain_available
+arv_camera_is_gain_auto_available
arv_camera_set_gain
arv_camera_get_gain
arv_camera_get_gain_bounds
diff --git a/src/arvcamera.c b/src/arvcamera.c
index 0ba6e43..beabb3b 100644
--- a/src/arvcamera.c
+++ b/src/arvcamera.c
@@ -853,6 +853,65 @@ arv_camera_get_device (ArvCamera *camera)
}
/**
+ * arv_camera_is_exposure_time_available:
+ * @camera: a #ArvCamera
+ * Returns: TRUE if Exposure Time feature is available.
+ */
+
+gboolean
+arv_camera_is_exposure_time_available (ArvCamera *camera)
+{
+ g_return_val_if_fail (ARV_IS_CAMERA (camera), FALSE);
+
+ return arv_device_get_feature (camera->priv->device, "ExposureTimeAbs") != NULL;
+}
+
+/**
+ * arv_camera_is_exposure_auto_available:
+ * @camera: a #ArvCamera
+ * Returns: TRUE if Exposure Auto feature is available.
+ */
+
+gboolean
+arv_camera_is_exposure_auto_available (ArvCamera *camera)
+{
+ g_return_val_if_fail (ARV_IS_CAMERA (camera), FALSE);
+
+ return arv_device_get_feature (camera->priv->device, "ExposureAuto") != NULL;
+}
+
+/**
+ * arv_camera_is_gain_available:
+ * @camera: a #ArvCamera
+ * Returns: TRUE if Gain feature is available.
+ */
+
+gboolean
+arv_camera_is_gain_available (ArvCamera *camera)
+{
+ g_return_val_if_fail (ARV_IS_CAMERA (camera), FALSE);
+
+ if (camera->priv->use_gain_raw)
+ return arv_device_get_feature (camera->priv->device, "GainRaw") != NULL;
+
+ return arv_device_get_feature (camera->priv->device, "Gain") != NULL;
+}
+
+/**
+ * arv_camera_is_gain_auto_available:
+ * @camera: a #ArvCamera
+ * Returns: TRUE if Gain feature is available.
+ */
+
+gboolean
+arv_camera_is_gain_auto_available (ArvCamera *camera)
+{
+ g_return_val_if_fail (ARV_IS_CAMERA (camera), FALSE);
+
+ return arv_device_get_feature (camera->priv->device, "GainAuto") != NULL;
+}
+
+/**
* arv_camera_new:
* @name: (allow-none): name of the camera.
*
diff --git a/src/arvcamera.h b/src/arvcamera.h
index 1b9e753..770ef2d 100644
--- a/src/arvcamera.h
+++ b/src/arvcamera.h
@@ -92,6 +92,9 @@ const char * arv_camera_get_trigger_source (ArvCamera *camera);
void arv_camera_software_trigger (ArvCamera *camera);
+gboolean arv_camera_is_exposure_time_available (ArvCamera *camera);
+gboolean arv_camera_is_exposure_auto_available (ArvCamera *camera);
+
void arv_camera_set_exposure_time (ArvCamera *camera, double exposure_time_us);
double arv_camera_get_exposure_time (ArvCamera *camera);
void arv_camera_get_exposure_time_bounds (ArvCamera *camera, double *min, double *max);
@@ -100,6 +103,9 @@ ArvAuto arv_camera_get_exposure_time_auto (ArvCamera *camera);
/* Analog control */
+gboolean arv_camera_is_gain_available (ArvCamera *camera);
+gboolean arv_camera_is_gain_auto_available (ArvCamera *camera);
+
void arv_camera_set_gain (ArvCamera *camera, double gain);
double arv_camera_get_gain (ArvCamera *camera);
void arv_camera_get_gain_bounds (ArvCamera *camera, double *min, double *max);
diff --git a/viewer/arvviewer.c b/viewer/arvviewer.c
index b52397e..3c43aa8 100644
--- a/viewer/arvviewer.c
+++ b/viewer/arvviewer.c
@@ -403,6 +403,10 @@ arv_viewer_select_camera_cb (GtkComboBox *combo_box, ArvViewer *viewer)
double gain_min, gain_max;
gboolean auto_gain, auto_exposure;
const char *caps_string;
+ gboolean is_exposure_available;
+ gboolean is_exposure_auto_available;
+ gboolean is_gain_available;
+ gboolean is_gain_auto_available;
g_return_if_fail (viewer != NULL);
@@ -450,6 +454,11 @@ arv_viewer_select_camera_cb (GtkComboBox *combo_box, ArvViewer *viewer)
auto_gain = arv_camera_get_gain_auto (viewer->camera) != ARV_AUTO_OFF;
auto_exposure = arv_camera_get_gain_auto (viewer->camera) != ARV_AUTO_OFF;
+ is_exposure_available = arv_camera_is_exposure_time_available (viewer->camera);
+ is_exposure_auto_available = arv_camera_is_exposure_auto_available (viewer->camera);
+ is_gain_available = arv_camera_is_gain_available (viewer->camera);
+ is_gain_auto_available = arv_camera_is_gain_auto_available (viewer->camera);
+
g_signal_handler_block (viewer->gain_hscale, viewer->gain_hscale_changed);
g_signal_handler_block (viewer->gain_spin_button, viewer->gain_spin_changed);
g_signal_handler_block (viewer->exposure_hscale, viewer->exposure_hscale_changed);
@@ -468,6 +477,12 @@ arv_viewer_select_camera_cb (GtkComboBox *combo_box, ArvViewer *viewer)
gtk_entry_set_text (GTK_ENTRY (viewer->frame_rate_entry), string);
g_free (string);
+ gtk_widget_set_sensitive (viewer->gain_hscale, is_gain_available);
+ gtk_widget_set_sensitive (viewer->gain_spin_button, is_gain_available);
+
+ gtk_widget_set_sensitive (viewer->exposure_hscale, is_exposure_available);
+ gtk_widget_set_sensitive (viewer->exposure_spin_button, is_exposure_available);
+
g_signal_handler_unblock (viewer->gain_hscale, viewer->gain_hscale_changed);
g_signal_handler_unblock (viewer->gain_spin_button, viewer->gain_spin_changed);
g_signal_handler_unblock (viewer->exposure_hscale, viewer->exposure_hscale_changed);
@@ -481,8 +496,13 @@ arv_viewer_select_camera_cb (GtkComboBox *combo_box, ArvViewer *viewer)
g_signal_handler_block (viewer->auto_gain_toggle, viewer->auto_gain_clicked);
g_signal_handler_block (viewer->auto_exposure_toggle, viewer->auto_exposure_clicked);
+
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (viewer->auto_gain_toggle), auto_gain);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (viewer->auto_exposure_toggle), auto_exposure);
+
+ gtk_widget_set_sensitive (viewer->auto_gain_toggle, is_gain_auto_available);
+ gtk_widget_set_sensitive (viewer->auto_exposure_toggle, is_exposure_auto_available);
+
g_signal_handler_unblock (viewer->auto_gain_toggle, viewer->auto_gain_clicked);
g_signal_handler_unblock (viewer->auto_exposure_toggle, viewer->auto_exposure_clicked);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]