gnome-scan r744 - in trunk: . modules/gsane
- From: bersace svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-scan r744 - in trunk: . modules/gsane
- Date: Thu, 25 Dec 2008 13:34:57 +0000 (UTC)
Author: bersace
Date: Thu Dec 25 13:34:57 2008
New Revision: 744
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=744&view=rev
Log:
Match different names for one option.
Modified:
trunk/ChangeLog
trunk/modules/gsane/gsane-option-handler.h
trunk/modules/gsane/gsane-option-source.c
Modified: trunk/modules/gsane/gsane-option-handler.h
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.h (original)
+++ trunk/modules/gsane/gsane-option-handler.h Thu Dec 25 13:34:57 2008
@@ -74,17 +74,22 @@
/* Define class struct field to handle a named SANE option. */
#define GSANE_OPTION_HANDLER_CLASS_DEFINE_HANDLER(name) \
- GSaneOptionHandlerFunc handle_##name;
+ GSaneOptionHandlerFunc handle_##name; \
+ gchar** name##_names;
/* Install a named SANE option handler in the class. Requires
gsane_option_handler_handler_<oname> to be declared. See
GSANE_OPTION_HANDLER_DEFINE_OPTION and
GSANE_OPTION_HANDLER_CLASS_DEFINE_HANDLER. */
-#define GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, oname) klass->handle_##oname = gsane_option_handler_handle_##oname;
+#define GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, oname, onames) \
+ klass->handle_##oname = gsane_option_handler_handle_##oname; \
+ klass->oname##_names = g_strsplit(onames, ",", 8);
/* If SANE option desc match oname, desc and n are saved in self->priv
and named option handler is called. */
-#define GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, oname, desc, n, group) if (g_str_equal(#oname, desc->name)) { \
+#define GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, oname, desc, n, group) \
+ if (gsane_string_in_array(desc->name, \
+ (const gchar**)klass->oname##_names)) { \
self->priv->oname##_desc = desc; \
self->priv->oname##_index = n; \
klass->handle_##oname(GSANE_OPTION_HANDLER(self), desc, n, group); \
Modified: trunk/modules/gsane/gsane-option-source.c
==============================================================================
--- trunk/modules/gsane/gsane-option-source.c (original)
+++ trunk/modules/gsane/gsane-option-source.c Thu Dec 25 13:34:57 2008
@@ -145,7 +145,7 @@
GSaneOptionSource *self = GSANE_OPTION_SOURCE(handler);
GSaneOptionSourceClass *klass = GSANE_OPTION_SOURCE_GET_CLASS(self);
- GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, source, desc, n, group);
+ GSANE_OPTION_HANDLER_MATCH_OPTION(self, klass, source, desc, n, group);
}
void
@@ -157,12 +157,13 @@
oh_class->unique = TRUE;
oh_class->handle_option = gsane_option_source_handle_option;
- GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, source);
+ GSANE_OPTION_HANDLER_CLASS_INSTALL_OPTION(klass, source, "source,doc-source");
}
void
gsane_option_source_class_finalize(GSaneOptionSourceClass *klass)
{
+ g_free(klass->source_names);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]