[gnome-scan] Reload SANE options descriptor when reload needed.
- From: Étienne Bersac <bersace src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-scan] Reload SANE options descriptor when reload needed.
- Date: Fri, 19 Feb 2010 21:10:19 +0000 (UTC)
commit b45747f047fb5069b621ddb9a01b7306e899f543
Author: Ã?tienne Bersac <bersace gnome org>
Date: Fri Feb 19 22:09:40 2010 +0100
Reload SANE options descriptor when reload needed.
modules/gsane/gsane-option-area.c | 12 ++++++++++++
modules/gsane/gsane-option-handler-generic.c | 3 +++
modules/gsane/gsane-option-handler.c | 10 +++++++++-
modules/gsane/gsane-option-handler.h | 1 +
modules/gsane/gsane-option-source.c | 11 ++++++++++-
5 files changed, 35 insertions(+), 2 deletions(-)
---
diff --git a/modules/gsane/gsane-option-area.c b/modules/gsane/gsane-option-area.c
index ea5e5d5..7b8eedc 100644
--- a/modules/gsane/gsane-option-area.c
+++ b/modules/gsane/gsane-option-area.c
@@ -372,12 +372,24 @@ gsane_option_area_handle_option(GSaneOptionHandler *handler, const SANE_Option_D
}
static void
+gsane_option_area_reload_options(GSaneOptionHandler *handler)
+{
+ GSaneOptionArea* self = GSANE_OPTION_AREA (handler);
+
+ self->priv->tl_x_desc = gsane_option_handler_get_sane_option_descriptor(handler, self->priv->tl_x_index);
+ self->priv->tl_y_desc = gsane_option_handler_get_sane_option_descriptor(handler, self->priv->tl_y_index);
+ self->priv->br_x_desc = gsane_option_handler_get_sane_option_descriptor(handler, self->priv->br_x_index);
+ self->priv->br_y_desc = gsane_option_handler_get_sane_option_descriptor(handler, self->priv->br_y_index);
+}
+
+static void
gsane_option_area_class_init(GSaneOptionAreaClass *klass)
{
g_type_class_add_private(klass, sizeof(GSaneOptionAreaPrivate));
GSaneOptionHandlerClass *oh_class = GSANE_OPTION_HANDLER_CLASS(klass);
oh_class->unique = TRUE;
oh_class->handle_option = gsane_option_area_handle_option;
+ oh_class->reload_options= gsane_option_area_reload_options;
#define gsane_option_handler_handle_tl_x gsane_option_handler_handle_matched
#define gsane_option_handler_handle_tl_y gsane_option_handler_handle_matched
diff --git a/modules/gsane/gsane-option-handler-generic.c b/modules/gsane/gsane-option-handler-generic.c
index 8e8ad6f..ab641f2 100644
--- a/modules/gsane/gsane-option-handler-generic.c
+++ b/modules/gsane/gsane-option-handler-generic.c
@@ -353,9 +353,12 @@ gsane_option_handler_generic_reload_options(GSaneOptionHandler *handler)
if (!self->priv->option)
return;
+ self->priv->desc = gsane_option_handler_get_sane_option_descriptor(handler, self->priv->index);
+
gboolean was_active = gnome_scan_option_get_active(self->priv->option);
gboolean is_active = SANE_OPTION_IS_ACTIVE(self->priv->desc->cap);
if (!was_active && is_active) {
+ g_debug("Activate option %s(%d)", self->priv->desc->name, self->priv->index);
self->priv->get_value(self);
}
diff --git a/modules/gsane/gsane-option-handler.c b/modules/gsane/gsane-option-handler.c
index ba9f5e2..545c0ee 100644
--- a/modules/gsane/gsane-option-handler.c
+++ b/modules/gsane/gsane-option-handler.c
@@ -105,6 +105,11 @@ gsane_option_handler_reload_options(GSaneOptionHandler *self)
GSANE_OPTION_HANDLER_GET_CLASS(self)->reload_options(self);
}
+const SANE_Option_Descriptor*
+gsane_option_handler_get_sane_option_descriptor(GSaneOptionHandler *self, SANE_Int n)
+{
+ return sane_get_option_descriptor(self->priv->handle, n);
+}
GSList*
gsane_option_handler_enum_list_int_values(GSaneOptionHandler *handler, const SANE_Option_Descriptor*desc, SANE_Int n)
@@ -213,8 +218,11 @@ gsane_option_handler_control_option(GSaneOptionHandler*self, const SANE_Option_D
g_debug("Setting %s : value inexact", desc->name);
inexact = TRUE;
}
- if (flags & SANE_INFO_RELOAD_OPTIONS)
+ if (flags & SANE_INFO_RELOAD_OPTIONS) {
+ g_debug("Reload options");
g_signal_emit_by_name(self->scanner, "reload-options");
+ g_debug("Options reloaded");
+ }
if (flags & SANE_INFO_RELOAD_PARAMS)
gsane_scanner_reload_parameters(GSANE_SCANNER(self->scanner));
diff --git a/modules/gsane/gsane-option-handler.h b/modules/gsane/gsane-option-handler.h
index f823352..4b394a2 100644
--- a/modules/gsane/gsane-option-handler.h
+++ b/modules/gsane/gsane-option-handler.h
@@ -109,6 +109,7 @@ void gsane_option_handler_reload_options(GSaneOptionHandler *self);
GSList* gsane_option_handler_enum_list_int_values(GSaneOptionHandler *handler, const SANE_Option_Descriptor*desc, SANE_Int n);
GSList* gsane_option_handler_enum_list_double_values(GSaneOptionHandler *handler, const SANE_Option_Descriptor*desc, SANE_Int n);
GSList* gsane_option_handler_enum_list_string_values(GSaneOptionHandler *handler, const SANE_Option_Descriptor*desc, SANE_Int n);
+const SANE_Option_Descriptor* gsane_option_handler_get_sane_option_descriptor(GSaneOptionHandler *self, SANE_Int n);
gboolean gsane_option_handler_get_bool(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GError **error);
gboolean gsane_option_handler_set_bool(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gboolean value, GError **error);
diff --git a/modules/gsane/gsane-option-source.c b/modules/gsane/gsane-option-source.c
index ef3cab3..fbc3e08 100644
--- a/modules/gsane/gsane-option-source.c
+++ b/modules/gsane/gsane-option-source.c
@@ -155,7 +155,7 @@ gsane_option_handler_handle_source(GSaneOptionHandler* handler, const SANE_Optio
g_free(sources);
}
-void
+static void
gsane_option_source_handle_option(GSaneOptionHandler *handler, const SANE_Option_Descriptor* desc, SANE_Int n, const gchar*group)
{
GSaneOptionSource *self = GSANE_OPTION_SOURCE(handler);
@@ -165,6 +165,14 @@ gsane_option_source_handle_option(GSaneOptionHandler *handler, const SANE_Option
}
static void
+gsane_option_source_reload_option(GSaneOptionHandler *handler)
+{
+ GSaneOptionSource *self = GSANE_OPTION_SOURCE(handler);
+
+ self->priv->source_desc = gsane_option_handler_get_sane_option_descriptor(handler, self->priv->source_index);
+}
+
+static void
gsane_option_source_class_init(GSaneOptionSourceClass *klass)
{
GSaneOptionHandlerClass *oh_class = GSANE_OPTION_HANDLER_CLASS(klass);
@@ -173,6 +181,7 @@ gsane_option_source_class_init(GSaneOptionSourceClass *klass)
oh_class->unique = TRUE;
oh_class->handle_option = gsane_option_source_handle_option;
+ oh_class->reload_options = gsane_option_source_reload_option;
GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, source, "doc-source");
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]