gnome-scan r690 - in trunk: . modules/gsane



Author: bersace
Date: Sun Dec 14 21:27:06 2008
New Revision: 690
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=690&view=rev

Log:
Added string generic support in GSane.

Modified:
   trunk/ChangeLog
   trunk/modules/gsane/gsane-module.c
   trunk/modules/gsane/gsane-option-handler-generic.c
   trunk/modules/gsane/gsane-option-handler.c
   trunk/modules/gsane/gsane-option-handler.h

Modified: trunk/modules/gsane/gsane-module.c
==============================================================================
--- trunk/modules/gsane/gsane-module.c	(original)
+++ trunk/modules/gsane/gsane-module.c	Sun Dec 14 21:27:06 2008
@@ -63,6 +63,7 @@
 	gsane_option_manager_add_rule_by_type(gsane_option_manager, SANE_TYPE_BOOL, GSANE_TYPE_OPTION_HANDLER_GENERIC);
 	gsane_option_manager_add_rule_by_type(gsane_option_manager, SANE_TYPE_INT, GSANE_TYPE_OPTION_HANDLER_GENERIC);
 	gsane_option_manager_add_rule_by_type(gsane_option_manager, SANE_TYPE_FIXED, GSANE_TYPE_OPTION_HANDLER_GENERIC);
+	gsane_option_manager_add_rule_by_type(gsane_option_manager, SANE_TYPE_STRING, GSANE_TYPE_OPTION_HANDLER_GENERIC);
 }
 
 G_MODULE_EXPORT void

Modified: trunk/modules/gsane/gsane-option-handler-generic.c
==============================================================================
--- trunk/modules/gsane/gsane-option-handler-generic.c	(original)
+++ trunk/modules/gsane/gsane-option-handler-generic.c	Sun Dec 14 21:27:06 2008
@@ -60,6 +60,15 @@
 }
 
 static void
+gsane_option_handler_generic_string_option_value_changed(GSaneOptionHandlerGeneric* self, GParamSpec* pspec, GObject* option)
+{
+	gchar* value;
+	g_object_get(option, "value", &value, NULL);
+	gsane_option_handler_set_string(GSANE_OPTION_HANDLER(self), self->priv->desc, self->priv->index, value, NULL);
+	g_free(value);
+}
+
+static void
 gsane_option_handler_generic_handle_int_option(GSaneOptionHandler *handler, SANE_Int n, const SANE_Option_Descriptor*desc, const gchar* group)
 {
 	GSaneOptionHandlerGeneric* self = GSANE_OPTION_HANDLER_GENERIC(handler);
@@ -112,6 +121,7 @@
 {
 	GSaneOptionHandlerGeneric* self = GSANE_OPTION_HANDLER_GENERIC(handler);
 	gboolean boolval;
+	gchar* strval;
 	gint array_length;
 
 	/* instanciate option with default value depending on SANE_Value_Type */
@@ -136,6 +146,14 @@
 		else
 			gsane_option_handler_generic_handle_double_option(handler, n, desc, group);
 		break;
+	case SANE_TYPE_STRING:
+		strval = gsane_option_handler_get_string(handler, desc, n, NULL);
+		self->priv->option = GNOME_SCAN_OPTION(gnome_scan_option_string_new(desc->name, S_(desc->title), S_(desc->desc), group, SANE_GETTEXT_PACKAGE,
+										    strval, GNOME_SCAN_OPTION_HINT_SECONDARY));
+		g_signal_connect_swapped(self->priv->option, "notify::value", G_CALLBACK(gsane_option_handler_generic_string_option_value_changed), self);
+		g_debug("\toption  %d : string %s = \"%s\"", n, desc->name, strval);
+		g_free(strval);
+		break;
 	default:
 		g_debug("\toption %d : <unhandled> %s", n, desc->name);
 		break;

Modified: trunk/modules/gsane/gsane-option-handler.c
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.c	(original)
+++ trunk/modules/gsane/gsane-option-handler.c	Sun Dec 14 21:27:06 2008
@@ -186,6 +186,25 @@
 	gsane_option_handler_control_option(self, desc, index, SANE_ACTION_SET_VALUE, &fixed, error);
 }
 
+
+gchar*
+gsane_option_handler_get_string(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GError **error)
+{
+	gchar* value = g_new0(gchar, desc->size);
+	gchar* ret;
+	gsane_option_handler_control_option(self, desc, index, SANE_ACTION_GET_VALUE, value, error);
+	ret = g_strdup(value);
+	g_free(value);
+	return ret;
+}
+
+void
+gsane_option_handler_set_string(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gchar* value, GError **error)
+{
+	gsane_option_handler_control_option(self, desc, index, SANE_ACTION_SET_VALUE, value, error);
+}
+
+
 /* GType instance boiler plate code */
 void
 gsane_option_handler_instance_init(GTypeInstance *instance, gpointer g_class)

Modified: trunk/modules/gsane/gsane-option-handler.h
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.h	(original)
+++ trunk/modules/gsane/gsane-option-handler.h	Sun Dec 14 21:27:06 2008
@@ -76,6 +76,9 @@
 gdouble gsane_option_handler_get_double(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GError **error);
 void gsane_option_handler_set_double(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gdouble value, GError **error);
 
+gchar* gsane_option_handler_get_string(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GError **error);
+void gsane_option_handler_set_string(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gchar* value, GError **error);
+
 GType gsane_option_handler_get_type(void) G_GNUC_CONST;
 
 G_END_DECLS



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]