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



Author: bersace
Date: Fri Dec 12 20:40:12 2008
New Revision: 666
URL: http://svn.gnome.org/viewvc/gnome-scan?rev=666&view=rev

Log:
Added handle_option abstract method.

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

Modified: trunk/modules/gsane/gsane-option-handler.c
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.c	(original)
+++ trunk/modules/gsane/gsane-option-handler.c	Fri Dec 12 20:40:12 2008
@@ -26,17 +26,48 @@
 struct _GSaneOptionHandlerPrivate
 {
 	/* pointer to the SANE handle owned by the GSaneScanner */
-	gpointer*	handle;
+	SANE_Handle handle;
 };
 
+GnomeScanOptionHint gsane_option_hint(const SANE_Option_Descriptor*desc)
+{
+	if (desc->cap & SANE_CAP_ADVANCED) {
+		return GNOME_SCAN_OPTION_HINT_SECONDARY;
+	}
+	else {
+		return GNOME_SCAN_OPTION_HINT_PRIMARY;
+	}
+}
+
+
 GSaneOptionHandler*
-gsane_option_handler_new(GType type, gpointer* handle)
+gsane_option_handler_new(GType type, GnomeScanScanner* scanner, SANE_Handle handle)
 {
 	GSaneOptionHandler *self = GSANE_OPTION_HANDLER(g_type_create_instance(type));
 	self->priv->handle = handle;
+	self->scanner = scanner;
 	return self;
 }
 
+void
+gsane_option_handler_destroy(GSaneOptionHandler *self)
+{
+	g_type_free_instance((GTypeInstance*) self);
+}
+
+static void
+gsane_option_handler_do_handle_option(GSaneOptionHandler *self, SANE_Int n, const SANE_Option_Descriptor* desc, const gchar* group)
+{
+	g_warning("gsane_option_handler_handle_option not implemented by %s", g_type_name(G_TYPE_FROM_INSTANCE(self)));
+}
+
+void
+gsane_option_handler_handle_option(GSaneOptionHandler *self, SANE_Int n, const SANE_Option_Descriptor* desc, const gchar*group)
+{
+	GSANE_OPTION_HANDLER_GET_CLASS(self)->handle_option(self, n, desc, group);
+}
+
+
 /* GType instance boiler plate code */
 void
 gsane_option_handler_instance_init(GTypeInstance *instance, gpointer g_class)
@@ -51,6 +82,7 @@
 	GSaneOptionHandlerClass *oh_class = GSANE_OPTION_HANDLER_CLASS(g_class);
 	g_type_class_add_private(g_class, sizeof(GSaneOptionHandlerPrivate));
 	oh_class->unique = FALSE;
+	oh_class->handle_option	= gsane_option_handler_do_handle_option;
 }
 
 GType

Modified: trunk/modules/gsane/gsane-option-handler.h
==============================================================================
--- trunk/modules/gsane/gsane-option-handler.h	(original)
+++ trunk/modules/gsane/gsane-option-handler.h	Fri Dec 12 20:40:12 2008
@@ -24,12 +24,15 @@
 
 #include <glib-object.h>
 #include <sane/sane.h>
+#include <gnome-scan-scanner.h>
+#include <gnome-scan-option.h>
 
 G_BEGIN_DECLS
 
-#define	GSANE_TYPE_OPTION_HANDLER	(gsane_option_handler_get_type())
-#define GSANE_OPTION_HANDLER(o)		(G_TYPE_CHECK_INSTANCE_CAST((o), GSANE_TYPE_OPTION_HANDLER, GSaneOptionHandler))
-#define GSANE_OPTION_HANDLER_CLASS(k)	(G_TYPE_CHECK_CLASS_CAST((k), GSANE_TYPE_OPTION_HANDLER, GSaneOptionHandlerClass))
+#define	GSANE_TYPE_OPTION_HANDLER		(gsane_option_handler_get_type())
+#define GSANE_OPTION_HANDLER(o)			(G_TYPE_CHECK_INSTANCE_CAST((o), GSANE_TYPE_OPTION_HANDLER, GSaneOptionHandler))
+#define GSANE_OPTION_HANDLER_CLASS(k)		(G_TYPE_CHECK_CLASS_CAST((k), GSANE_TYPE_OPTION_HANDLER, GSaneOptionHandlerClass))
+#define	GSANE_OPTION_HANDLER_GET_CLASS(o)	(G_TYPE_INSTANCE_GET_CLASS((o), GSANE_TYPE_OPTION_HANDLER, GSaneOptionHandlerClass))
 
 typedef struct _GSaneOptionHandlerClass GSaneOptionHandlerClass;
 typedef struct _GSaneOptionHandler GSaneOptionHandler;
@@ -38,6 +41,8 @@
 struct _GSaneOptionHandlerClass
 {
 	GTypeClass	parent_class;
+	void		(*handle_option) (GSaneOptionHandler*self, SANE_Int n, const SANE_Option_Descriptor*desc, const gchar* group);
+
 	/* Whether the scanner must have a unique instance of the
 	   option handler */
 	gboolean	unique;
@@ -46,17 +51,20 @@
 struct _GSaneOptionHandler
 {
 	GTypeInstance	parent_instance;
+	GnomeScanScanner* scanner;
+
+	/*< private >*/
 	GSaneOptionHandlerPrivate* priv;
 };
 
-GType
-gsane_option_handler_get_type(void) G_GNUC_CONST;
+/* utils */
+GnomeScanOptionHint gsane_option_hint(const SANE_Option_Descriptor*desc);
 
-gint
-gsane_option_handler_get_int(GSaneOptionHandler handler, SANE_Int index);
+GSaneOptionHandler* gsane_option_handler_new(GType type, GnomeScanScanner *scanner, SANE_Handle handle);
+void gsane_option_handler_destroy(GSaneOptionHandler *self);
+void gsane_option_handler_handle_option(GSaneOptionHandler *self, SANE_Int n, const SANE_Option_Descriptor* desc, const gchar*group);
 
-gboolean
-gsane_option_handler_set_int(GSaneOptionHandler handler, SANE_Int index, gint value);
+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]