[gnome-scan] Fix build with Vala 0.7.6
- From: Étienne Bersac <bersace src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-scan] Fix build with Vala 0.7.6
- Date: Fri, 19 Feb 2010 20:19:48 +0000 (UTC)
commit ae27a712bfea6d0f309a7fb8692c96c1bbf1e02d
Author: Ã?tienne Bersac <bersace gnome org>
Date: Fri Feb 19 21:14:03 2010 +0100
Fix build with Vala 0.7.6
By the way, completed debug output for set/get values and generic enum option declaration.
configure.ac | 1 +
gnome-scan.anjuta | 14 +----
lib/Makefile.am | 2 +
lib/gnome-scan-combo-box-widget.vala | 25 ++++-----
lib/gnome-scan-option.vala | 46 +++++++---------
lib/gnome-scan-paper-size-widget.vala | 34 ++++++------
modules/gsane/gsane-option-area.c | 27 ++++------
modules/gsane/gsane-option-handler-generic.c | 35 +++++++++----
modules/gsane/gsane-option-handler.c | 73 +++++++++++++++----------
modules/gsane/gsane-option-source.c | 6 +-
modules/gsane/gsane-scanner.c | 2 +
src/flegita-sink.vala | 2 +-
12 files changed, 140 insertions(+), 127 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 8bc4fd1..5bb853f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -142,6 +142,7 @@ AC_OUTPUT([
gnome-scan.pc
Makefile
lib/Makefile
+ lib/tests/Makefile
modules/Makefile
modules/gsfile/Makefile
modules/gsane/Makefile
diff --git a/gnome-scan.anjuta b/gnome-scan.anjuta
index 02f4ca3..2389e4c 100644
--- a/gnome-scan.anjuta
+++ b/gnome-scan.anjuta
@@ -14,8 +14,8 @@
url="http://anjuta.org/plugins/"
mandatory="yes">
<require group="Anjuta Plugin"
- attribute="Location"
- value="anjuta-symbol-browser:SymbolBrowserPlugin"/>
+ attribute="Interfaces"
+ value="IAnjutaSymbolManager"/>
</plugin>
<plugin name="Make Build System"
url="http://anjuta.org/plugins/"
@@ -27,14 +27,6 @@
attribute="Supported-Build-Types"
value="make"/>
</plugin>
- <plugin name="Subversion" mandatory="no">
- <require group="Anjuta Plugin"
- attribute="Location"
- value="anjuta-subversion:Subversion"/>
- <require group="Anjuta Plugin"
- attribute="Interfaces"
- value="IAnjutaVcs"/>
- </plugin>
<plugin name="Task Manager"
url="http://anjuta.org/plugins/"
mandatory="no">
@@ -47,6 +39,6 @@
mandatory="no">
<require group="Anjuta Plugin"
attribute="Interfaces"
- value="IAnjutaDebuggerManager"/>
+ value="IAnjutaDebugManager"/>
</plugin>
</anjuta>
diff --git a/lib/Makefile.am b/lib/Makefile.am
index fedb552..c20cd19 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -1,5 +1,7 @@
include $(top_srcdir)/Makefile.decl
+SUBDIRS = . tests
+
INCLUDES = \
-DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \
-DGETTEXT_PACKAGE=\""@GETTEXT_PACKAGE@"\" \
diff --git a/lib/gnome-scan-combo-box-widget.vala b/lib/gnome-scan-combo-box-widget.vala
index c930aea..171bc29 100644
--- a/lib/gnome-scan-combo-box-widget.vala
+++ b/lib/gnome-scan-combo-box-widget.vala
@@ -29,7 +29,6 @@ namespace Gnome.Scan {
enum Column {
LABEL,
- VALUE,
LENGTH
}
@@ -39,7 +38,7 @@ namespace Gnome.Scan {
strings = new HashTable<string,string>(GLib.str_hash, GLib.str_equal);
- this.store = new ListStore(Column.LENGTH, typeof(string), typeof(Gnome.Scan.EnumValue));
+ this.store = new ListStore(Column.LENGTH, typeof(string));
combo = new ComboBox.with_model(store);
this.pack_start(combo, false, true, 0);
renderer = new CellRendererText();
@@ -47,16 +46,14 @@ namespace Gnome.Scan {
combo.set_attributes(renderer, "text", Column.LABEL);
var option = this.option as OptionEnum;
- Gnome.Scan.EnumValue? curval = option.value;
- foreach(weak Gnome.Scan.EnumValue? value in option.values) {
+ weak Gnome.Scan.EnumValue curval = option.value;
+ foreach(Gnome.Scan.EnumValue value in option.values) {
store.append(out iter);
- store.set(iter,
- Column.LABEL, value.label,
- Column.VALUE, value);
+ store.set(iter, Column.LABEL, value.label);
strings.insert(value.label, store.get_string_from_iter(iter));
- if (curval != null && value.label == curval.label)
+ if (value.label == curval.label)
combo.set_active_iter(iter);
}
@@ -72,26 +69,28 @@ namespace Gnome.Scan {
private void on_combo_changed()
{
TreeIter iter;
- weak Gnome.Scan.EnumValue? value;
weak string label;
combo.get_active_iter(out iter);
store.get(iter,
- Column.VALUE, out value,
Column.LABEL, out label);
option.freeze_notify();
var option = this.option as OptionEnum;
- option.value = value;
+ foreach(Gnome.Scan.EnumValue value in option.values) {
+ if (value.label == label)
+ option.value = value;
+ }
option.thaw_notify();
}
private void on_option_changed()
{
TreeIter iter;
- string str = strings.lookup(((OptionEnum)option).value.label);
+ var option = this.option as OptionEnum;
+ string str = strings.lookup(option.value.label);
if (str == null) {
- debug("No path for %s value", ((OptionEnum)option).value.label);
+ debug("No path for '%s' value", option.value.label);
return;
}
diff --git a/lib/gnome-scan-option.vala b/lib/gnome-scan-option.vala
index 8e826f8..ebef476 100644
--- a/lib/gnome-scan-option.vala
+++ b/lib/gnome-scan-option.vala
@@ -88,8 +88,8 @@ namespace Gnome.Scan {
this.desc = desc;
this.group = group;
this.domain = domain;
- this.value = value;
this.hint = hint;
+ this.value = value;
}
public override void set_g_value(Value value)
@@ -112,10 +112,10 @@ namespace Gnome.Scan {
this.desc = desc;
this.group = group;
this.domain = domain;
- this.value = value;
this.range = range;
this.unit = unit;
this.hint = hint;
+ this.value = value;
}
public override void set_g_value(Value value)
@@ -136,60 +136,54 @@ namespace Gnome.Scan {
this.desc = desc;
this.group = group;
this.domain = domain;
- this.value = value;
this.hint = hint;
+ this.value = value;
}
}
public class OptionEnum : Option {
- public weak Gnome.Scan.EnumValue? value {set; get;}
-
- protected weak SList<Gnome.Scan.EnumValue?> _values;
- public weak SList<Gnome.Scan.EnumValue?> values {
- get {
- return this._values;
- }
- }
+ public Gnome.Scan.EnumValue value {set; get;}
+ public weak SList<Gnome.Scan.EnumValue?> values {set construct; get;}
- public OptionEnum(string name, string title, string desc, string group, string domain, Gnome.Scan.EnumValue? value, SList<Gnome.Scan.EnumValue?> values, OptionHint hint)
+ public OptionEnum(string name, string title, string desc, string group, string domain, Gnome.Scan.EnumValue value, SList<Gnome.Scan.EnumValue?> values, OptionHint hint)
{
this.name = name;
this.title = title;
this.desc = desc;
this.group = group;
this.domain = domain;
- this.value = value;
- this._values = values;
this.hint = hint;
+ this.values = values;
+ this.value = value;
}
- public virtual void append(Gnome.Scan.EnumValue? value)
+ public virtual void append(Gnome.Scan.EnumValue value)
{
- foreach(weak Gnome.Scan.EnumValue? val in _values)
+ foreach(weak Gnome.Scan.EnumValue val in values)
if (val.label == value.label)
return;
- _values.append(value);
+ values.append(value);
}
}
public class OptionPaperSize : OptionEnum {
public Extent extent {set construct; get; }
- public OptionPaperSize(string name, string title, string desc, string group, string domain, Extent extent, Gnome.Scan.EnumValue? value, SList<Gnome.Scan.EnumValue?> values, OptionHint hint)
+ public OptionPaperSize(string name, string title, string desc, string group, string domain, Extent extent, Gnome.Scan.EnumValue value, SList<Gnome.Scan.EnumValue?> values, OptionHint hint)
{
this.name = name;
this.title = title;
this.desc = desc;
this.group = group;
this.domain = domain;
- this.extent = extent;
- this.value = value;
- this._values = values;
+ this.extent = extent;
this.hint = hint;
+ this.values = values;
+ this.value = value;
}
- public override void append(Gnome.Scan.EnumValue? value)
+ public override void append(Gnome.Scan.EnumValue value)
{
// Ensure the wanted papersize fit the device extent.
weak Gtk.PaperSize ps = (Gtk.PaperSize) value.value.get_boxed();
@@ -204,17 +198,17 @@ namespace Gnome.Scan {
}
public class OptionBoxed : Option {
- public weak Boxed value {set; get;}
+ weak Value value {set; get;}
- public OptionBoxed(string name, string title, string desc, string group, string domain, Boxed value, OptionHint hint)
+ public OptionBoxed(string name, string title, string desc, string group, string domain, Value value, OptionHint hint)
{
this.name = name;
this.title = title;
this.desc = desc;
this.group = group;
this.domain = domain;
- this.value = value;
this.hint = hint;
+ this.value = value;
}
}
@@ -228,8 +222,8 @@ namespace Gnome.Scan {
this.desc = desc;
this.group = group;
this.domain = domain;
- this.value = value;
this.hint = hint;
+ this.value = value;
}
}
}
diff --git a/lib/gnome-scan-paper-size-widget.vala b/lib/gnome-scan-paper-size-widget.vala
index f9dc9fe..88a9da5 100644
--- a/lib/gnome-scan-paper-size-widget.vala
+++ b/lib/gnome-scan-paper-size-widget.vala
@@ -30,7 +30,6 @@ namespace Gnome.Scan {
enum Column {
LABEL,
- VALUE,
LENGTH
}
@@ -44,7 +43,7 @@ namespace Gnome.Scan {
this.pack_start(box, false, true, 0);
strings = new HashTable<string,string>(GLib.str_hash, GLib.str_equal);
- this.store = new ListStore(Column.LENGTH, typeof(string), typeof(Gnome.Scan.EnumValue));
+ this.store = new ListStore(Column.LENGTH, typeof(string));
combo = new ComboBox.with_model(store);
box.pack_start(combo, false, true, 0);
renderer = new CellRendererText();
@@ -52,16 +51,15 @@ namespace Gnome.Scan {
combo.set_attributes(renderer, "text", Column.LABEL);
var option = this.option as OptionEnum;
- Gnome.Scan.EnumValue? curval = option.value;
- foreach(weak Gnome.Scan.EnumValue? value in option.values) {
+ weak Gnome.Scan.EnumValue curval = option.value;
+ foreach(weak Gnome.Scan.EnumValue value in option.values) {
store.append(out iter);
store.set(iter,
- Column.LABEL, value.label,
- Column.VALUE, value);
+ Column.LABEL, value.label);
strings.insert(value.label, store.get_string_from_iter(iter));
- if (curval != null && value.label == curval.label)
+ if (value.label == curval.label)
combo.set_active_iter(iter);
}
@@ -69,11 +67,9 @@ namespace Gnome.Scan {
label.set_alignment(0, (float)0.5);
label.set_padding(12, 0);
box.pack_start(label, false, true, 0);
- if (curval != null) {
- weak PaperSize ps = (PaperSize) curval.value.get_boxed();
- label.set_text("%.0fx%.0f mm".printf(ps.get_width(Gtk.Unit.MM),
- ps.get_height(Gtk.Unit.MM)));
- }
+ weak PaperSize ps = (PaperSize) curval.value.get_boxed();
+ label.set_text("%.0fx%.0f mm".printf(ps.get_width(Gtk.Unit.MM),
+ ps.get_height(Gtk.Unit.MM)));
combo.notify["active"] += this.on_combo_changed;
option.notify["value"] += this.on_option_changed;
@@ -87,17 +83,18 @@ namespace Gnome.Scan {
private void on_combo_changed()
{
TreeIter iter;
- weak Gnome.Scan.EnumValue? value;
weak string label;
combo.get_active_iter(out iter);
store.get(iter,
- Column.VALUE, out value,
Column.LABEL, out label);
option.freeze_notify();
var option = this.option as OptionEnum;
- option.value = value;
+ foreach(Gnome.Scan.EnumValue value in option.values) {
+ if (value.label == label)
+ option.value = value;
+ }
option.thaw_notify();
}
@@ -105,15 +102,16 @@ namespace Gnome.Scan {
{
TreeIter iter;
OptionEnum option = this.option as OptionEnum;
- string str = strings.lookup(option.value.label);
+ weak Gnome.Scan.EnumValue evalue = option.value;
+ string str = strings.lookup(evalue.label);
if (str == null) {
- debug("No path for %s value", option.value.label);
+ debug("No path for %s value", evalue.label);
return;
}
store.get_iter_from_string(out iter, str);
- weak PaperSize ps = (PaperSize) option.value.value.get_boxed();
+ weak PaperSize ps = (PaperSize) evalue.value.get_boxed();
label.set_text("%.0fx%.0f mm".printf(ps.get_width(Gtk.Unit.MM),
ps.get_height(Gtk.Unit.MM)));
diff --git a/modules/gsane/gsane-option-area.c b/modules/gsane/gsane-option-area.c
index d9fe142..ea5e5d5 100644
--- a/modules/gsane/gsane-option-area.c
+++ b/modules/gsane/gsane-option-area.c
@@ -72,22 +72,16 @@ gsane_option_area_update(GSaneOptionArea* self)
{
GSaneOptionHandler* handler = GSANE_OPTION_HANDLER(self);
GtkPaperSize* ps;
- GnomeScanEnumValue* value;
+ GnomeScanEnumValue evalue = {0};
gdouble tl_x, tl_y, br_x, br_y;
GnomeScanPoint *origin;
GtkPageOrientation orientation;
- gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(self->priv->paper_size), &value);
+ gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(self->priv->paper_size), &evalue);
- /* Value was unset, don't actually update hardware
- values. Should you use default hardware value ? No use case
- yet. */
- if (value == NULL)
- return;
-
- ps = g_value_get_boxed(&value->value);
- gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(self->priv->page_orientation), &value);
- orientation = g_value_get_enum(&value->value);
+ ps = g_value_get_boxed(&evalue.value);
+ gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(self->priv->page_orientation), &evalue);
+ orientation = g_value_get_enum(&evalue.value);
origin = gnome_scan_option_pointer_get_value(GNOME_SCAN_OPTION_POINTER(self->priv->origin));
tl_x = origin->x;
@@ -270,20 +264,21 @@ gsane_option_area_install_page_orientation(GSaneOptionArea *self)
{
GSaneOptionHandler* handler = (GSaneOptionHandler*)self;
GSList* values = NULL;
- GnomeScanEnumValue*value;
+ GnomeScanEnumValue value0;
+ GnomeScanEnumValue* value1;
GtkPaperSize *ps;
gdouble width, height;
- gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(self->priv->paper_size), &value);
- ps = g_value_get_boxed(&value->value);
+ gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(self->priv->paper_size), &value0);
+ ps = g_value_get_boxed(&(value0.value));
width = gtk_paper_size_get_width(ps, GTK_UNIT_MM);
height= gtk_paper_size_get_height(ps, GTK_UNIT_MM);
values = gsane_option_area_add_orientation(self, values, GTK_PAGE_ORIENTATION_PORTRAIT, GTK_STOCK_ORIENTATION_PORTRAIT);
values = gsane_option_area_add_orientation(self, values, GTK_PAGE_ORIENTATION_LANDSCAPE, GTK_STOCK_ORIENTATION_LANDSCAPE);
- value = width <= height ? values->data : values->next->data;
+ value1 = width <= height ? values->data : values->next->data;
self->priv->page_orientation = GNOME_SCAN_OPTION(gnome_scan_option_enum_new("page-orientation", _("Page Orientation"), _("Page orientation"), GNOME_SCAN_OPTION_GROUP_FORMAT, GETTEXT_PACKAGE,
- value, values, GNOME_SCAN_OPTION_HINT_PRIMARY));
+ value1, values, GNOME_SCAN_OPTION_HINT_PRIMARY));
gnome_scan_node_install_option(GNOME_SCAN_NODE(handler->scanner), self->priv->page_orientation);
g_signal_connect_swapped(self->priv->page_orientation, "notify::value", G_CALLBACK(gsane_option_area_option_changed), self);
}
diff --git a/modules/gsane/gsane-option-handler-generic.c b/modules/gsane/gsane-option-handler-generic.c
index 77af046..8e8ad6f 100644
--- a/modules/gsane/gsane-option-handler-generic.c
+++ b/modules/gsane/gsane-option-handler-generic.c
@@ -71,7 +71,7 @@ gsane_option_handler_generic_enum_get_value(GSaneOptionHandlerGeneric *self)
GnomeScanEnumValue* value = gsane_option_handler_get_enum(GSANE_OPTION_HANDLER(self), self->priv->desc, self->priv->index,
gnome_scan_option_enum_get_values(GNOME_SCAN_OPTION_ENUM(self->priv->option)),
NULL);
- gnome_scan_option_enum_set_value(GNOME_SCAN_OPTION_ENUM(self->priv->option), &value);
+ gnome_scan_option_enum_set_value(GNOME_SCAN_OPTION_ENUM(self->priv->option), value);
}
@@ -106,9 +106,9 @@ gsane_option_handler_generic_string_option_value_changed(GSaneOptionHandlerGener
static void
gsane_option_handler_generic_enum_option_changed(GSaneOptionHandlerGeneric* self, GParamSpec* pspec, GObject* option)
{
- GnomeScanEnumValue *evalue = NULL;
+ GnomeScanEnumValue evalue;
gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(option), &evalue);
- gsane_option_handler_set_enum(GSANE_OPTION_HANDLER(self), self->priv->desc, self->priv->index, evalue, NULL);
+ gsane_option_handler_set_enum(GSANE_OPTION_HANDLER(self), self->priv->desc, self->priv->index, &evalue, NULL);
}
@@ -225,7 +225,7 @@ gsane_option_handler_generic_handle_string_option(GSaneOptionHandler *handler, c
GSANE_OPTION_HANDLER_GENERIC_GET_CLASS(handler)->option_hint));
self->priv->get_value = gsane_option_handler_generic_string_get_value;
g_signal_connect_swapped(self->priv->option, "notify::value", G_CALLBACK(gsane_option_handler_generic_string_option_value_changed), self);
- g_debug("\toption %02d : string %s = \"%s\"", n, desc->name, value);
+ g_debug("\toption %02d : string %s = \"%s\"", n, desc->name, value);
g_free(value);
}
@@ -261,9 +261,10 @@ static void
gsane_option_handler_generic_handle_list_option(GSaneOptionHandler *handler, const SANE_Option_Descriptor*desc, SANE_Int n, const gchar* group)
{
GSaneOptionHandlerGeneric* self = GSANE_OPTION_HANDLER_GENERIC(handler);
- GSList *values = NULL;
- GnomeScanEnumValue* default_value;
+ GSList *values = NULL, *iter;
+ GnomeScanEnumValue *default_value, *evalue;
gint array_length;
+ gchar *enums = NULL, *old, *enum_content;
switch(desc->type) {
case SANE_TYPE_INT:
@@ -291,6 +292,20 @@ gsane_option_handler_generic_handle_list_option(GSaneOptionHandler *handler, con
if (!values)
return;
+ for (iter = values ; iter; iter = iter->next) {
+ evalue = iter->data;
+ enum_content = g_strdup_value_contents(&evalue->value);
+ if (enums) {
+ old = enums;
+ enums = g_strdup_printf("%s, %s", enums, enum_content);
+ g_free(enum_content);
+ g_free(old);
+ }
+ else
+ enums = enum_content;
+ }
+
+
default_value = gsane_option_handler_get_enum(handler, desc, n, values, NULL);
self->priv->option = GNOME_SCAN_OPTION(gnome_scan_option_enum_new(desc->name, S_(desc->title), S_(desc->desc),
gsane_option_handler_generic_get_group(self, desc, n, group),
@@ -299,6 +314,8 @@ gsane_option_handler_generic_handle_list_option(GSaneOptionHandler *handler, con
GSANE_OPTION_HANDLER_GENERIC_GET_CLASS(self)->option_hint));
self->priv->get_value = gsane_option_handler_generic_enum_get_value;
g_signal_connect_swapped(self->priv->option, "notify::value", G_CALLBACK(gsane_option_handler_generic_enum_option_changed), self);
+ g_debug("\toption %02d : %s = %s ; enum = {%s}", n, desc->name, g_strdup_value_contents(&default_value->value), enums);
+ g_free(enums);
}
static void
@@ -333,15 +350,13 @@ static void
gsane_option_handler_generic_reload_options(GSaneOptionHandler *handler)
{
GSaneOptionHandlerGeneric*self = GSANE_OPTION_HANDLER_GENERIC(handler);
- if (!self->priv->option) {
+ if (!self->priv->option)
return;
- }
+
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_object_freeze_notify(G_OBJECT(self->priv->option));
self->priv->get_value(self);
- g_object_thaw_notify(G_OBJECT(self->priv->option));
}
if (was_active != is_active)
diff --git a/modules/gsane/gsane-option-handler.c b/modules/gsane/gsane-option-handler.c
index ae0cfc3..ba9f5e2 100644
--- a/modules/gsane/gsane-option-handler.c
+++ b/modules/gsane/gsane-option-handler.c
@@ -204,7 +204,7 @@ gsane_option_handler_control_option(GSaneOptionHandler*self, const SANE_Option_D
if (status != SANE_STATUS_GOOD) {
gsane_propagate_prefixed_status(error, status,
- "%s(%s)", GSANE_ACTION_TO_STRING(action), desc->name);
+ "%s %s(%d)", GSANE_ACTION_TO_STRING(action), desc->name, index);
return FALSE;
}
@@ -227,12 +227,14 @@ gsane_option_handler_get_bool(GSaneOptionHandler *self, const SANE_Option_Descri
{
gboolean value = FALSE;
gsane_option_handler_control_option(self, desc, index, SANE_ACTION_GET_VALUE, &value, error);
+ g_debug("get %s(%d) = %x", desc->name, index, value);
return value;
}
gboolean
gsane_option_handler_set_bool(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gboolean value, GError**error)
{
+ g_debug("set %s(%d) = %x", desc->name, index, value);
return gsane_option_handler_control_option(self, desc, index, SANE_ACTION_SET_VALUE, &value, error);
}
@@ -242,12 +244,14 @@ gsane_option_handler_get_int(GSaneOptionHandler *self, const SANE_Option_Descrip
{
gint value = 0;
gsane_option_handler_control_option(self, desc, index, SANE_ACTION_GET_VALUE, &value, error);
+ g_debug("get %s(%d) = %d", desc->name, index, value);
return value;
}
gboolean
gsane_option_handler_set_int(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gint value, GError **error)
{
+ g_debug("set %s(%d) = %d", desc->name, index, value);
return gsane_option_handler_control_option(self, desc, index, SANE_ACTION_SET_VALUE, &value, error);
}
@@ -255,20 +259,23 @@ gsane_option_handler_set_int(GSaneOptionHandler *self, const SANE_Option_Descrip
gdouble
gsane_option_handler_get_double(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GError **error)
{
- SANE_Word value;
+ SANE_Word data;
+ gdouble value = 0.0;
+
switch(desc->type) {
case SANE_TYPE_INT:
- return (gdouble) gsane_option_handler_get_int(self, desc, index, error);
+ value = (gdouble) gsane_option_handler_get_int(self, desc, index, error);
break;
case SANE_TYPE_FIXED:
- gsane_option_handler_control_option(self, desc, index, SANE_ACTION_GET_VALUE, &value, error);
- return SANE_UNFIX(value);
+ gsane_option_handler_control_option(self, desc, index, SANE_ACTION_GET_VALUE, &data, error);
+ value = SANE_UNFIX(data);
+ g_debug("get %s(%d) = %f", desc->name, index, value);
break;
default:
g_warning("Trying to get double value on a non number option.");
- return 0.0;
break;
}
+ return value;
}
gboolean
@@ -280,6 +287,7 @@ gsane_option_handler_set_double(GSaneOptionHandler *self, const SANE_Option_Desc
return gsane_option_handler_set_int(self, desc, index, (gint) value, error);
break;
case SANE_TYPE_FIXED:
+ g_debug("set %s(%d) = %f", desc->name, index, value);
fixed = SANE_FIX(value);
return gsane_option_handler_control_option(self, desc, index, SANE_ACTION_SET_VALUE, &fixed, error);
break;
@@ -293,17 +301,19 @@ gsane_option_handler_set_double(GSaneOptionHandler *self, const SANE_Option_Desc
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;
+ gchar* data = g_new0(gchar, desc->size);
+ gchar* value;
+ gsane_option_handler_control_option(self, desc, index, SANE_ACTION_GET_VALUE, data, error);
+ value = g_strdup(data);
+ g_free(data);
+ g_debug("get %s(%d) = '%s'", desc->name, index, value);
+ return value;
}
gboolean
gsane_option_handler_set_string(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, gchar* value, GError **error)
{
+ g_debug("set %s(%d) = '%s'", desc->name, index, value);
return gsane_option_handler_control_option(self, desc, index, SANE_ACTION_SET_VALUE, value, error);
}
@@ -320,57 +330,62 @@ gsane_option_handler_get_enum(GSaneOptionHandler *self, const SANE_Option_Descri
gchar* strval;
GSList* iter;
GnomeScanEnumValue* evalue;
+ /* default to first */
+ const GnomeScanEnumValue* retvalue = values->data;
switch(desc->type) {
case SANE_TYPE_INT:
intval = gsane_option_handler_get_int(self, desc, index, error);
for (iter = values; iter; iter = iter->next) {
evalue = iter->data;
- if (g_value_get_int(&evalue->value) == intval)
- return evalue;
+ if (g_value_get_int(&evalue->value) == intval) {
+ retvalue = evalue;
+ break;
+ }
}
- /* default to first */
- return values->data;
break;
case SANE_TYPE_FIXED:
doubleval = gsane_option_handler_get_double(self, desc, index, error);
for (iter = values; iter; iter = iter->next) {
evalue = iter->data;
- if (g_value_get_double(&evalue->value) == doubleval)
- return evalue;
+ if (g_value_get_double(&evalue->value) == doubleval) {
+ retvalue = evalue;
+ break;
+ }
}
- /* default to first */
- return values->data;
break;
case SANE_TYPE_STRING:
strval = gsane_option_handler_get_string(self, desc, index, error);
for (iter = values; iter; iter = iter->next) {
evalue = iter->data;
- if (g_str_equal(g_value_get_string(&evalue->value), strval))
- return evalue;
+ if (g_str_equal(g_value_get_string(&evalue->value), strval)) {
+ retvalue = evalue;
+ break;
+ }
}
- /* default to first */
- return values->data;
break;
default:
break;
}
- return NULL;
+ if (retvalue)
+ return gnome_scan_enum_value_dup(retvalue);
+ else
+ return NULL;
}
gboolean
-gsane_option_handler_set_enum(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GnomeScanEnumValue* value, GError **error)
+gsane_option_handler_set_enum(GSaneOptionHandler *self, const SANE_Option_Descriptor* desc, SANE_Int index, GnomeScanEnumValue* evalue, GError **error)
{
switch(desc->type) {
case SANE_TYPE_INT:
- return gsane_option_handler_set_int(self, desc, index, g_value_get_int(&value->value), error);
+ return gsane_option_handler_set_int(self, desc, index, g_value_get_int(&evalue->value), error);
break;
case SANE_TYPE_FIXED:
- return gsane_option_handler_set_double(self, desc, index, g_value_get_double(&value->value), error);
+ return gsane_option_handler_set_double(self, desc, index, g_value_get_double(&evalue->value), error);
break;
case SANE_TYPE_STRING:
- return gsane_option_handler_set_string(self, desc, index, g_value_dup_string(&value->value), error);
+ return gsane_option_handler_set_string(self, desc, index, g_value_dup_string(&evalue->value), error);
default:
return FALSE;
break;
diff --git a/modules/gsane/gsane-option-source.c b/modules/gsane/gsane-option-source.c
index dcd2da7..ef3cab3 100644
--- a/modules/gsane/gsane-option-source.c
+++ b/modules/gsane/gsane-option-source.c
@@ -104,11 +104,11 @@ static const gchar* negative_src[] = {
static void
gsane_option_source_option_changed(GSaneOptionSource* self, GParamSpec *pspec, GObject* option)
{
- GnomeScanEnumValue *evalue = NULL;
+ GnomeScanEnumValue evalue;
gnome_scan_option_enum_get_value(GNOME_SCAN_OPTION_ENUM(option), &evalue);
gsane_scanner_set_mass_acquisition(GSANE_SCANNER(GSANE_OPTION_HANDLER(self)->scanner),
- g_str_equal(evalue->label, GSANE_SOURCE_ADF));
- gsane_option_handler_set_enum(GSANE_OPTION_HANDLER(self), self->priv->source_desc, self->priv->source_index, evalue, NULL);
+ g_str_equal(evalue.label, GSANE_SOURCE_ADF));
+ gsane_option_handler_set_enum(GSANE_OPTION_HANDLER(self), self->priv->source_desc, self->priv->source_index, &evalue, NULL);
}
static void
diff --git a/modules/gsane/gsane-scanner.c b/modules/gsane/gsane-scanner.c
index d6da867..6cfde4d 100644
--- a/modules/gsane/gsane-scanner.c
+++ b/modules/gsane/gsane-scanner.c
@@ -244,6 +244,8 @@ gsane_scanner_handle_sane_option(GSaneScanner*self, SANE_Int n, const SANE_Optio
static void
gsane_scanner_probe_options(GSaneScanner *self)
{
+ g_return_if_fail(self != NULL);
+
SANE_Status status;
const SANE_Option_Descriptor* desc;
SANE_Int count;
diff --git a/src/flegita-sink.vala b/src/flegita-sink.vala
index 49b633b..8d77828 100644
--- a/src/flegita-sink.vala
+++ b/src/flegita-sink.vala
@@ -63,7 +63,7 @@ namespace Flegita {
public override bool start_image()
{
- string filename;
+ string filename = "";
string number;
do {
if (count == 0)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]