/* Append the list of entries as an array. */
void
gconf_dbus_utils_append_entries (DBusMessageIter *iter,
				 GSList          *entries)
{
  DBusMessageIter array_iter;
  GSList *l;

  dbus_message_iter_open_container (iter,
				    DBUS_TYPE_ARRAY,
				    DBUS_STRUCT_BEGIN_CHAR_AS_STRING
				    DBUS_TYPE_STRING_AS_STRING
				    DBUS_TYPE_STRING_AS_STRING
				    DBUS_TYPE_BOOLEAN_AS_STRING
				    DBUS_TYPE_STRING_AS_STRING
				    DBUS_TYPE_BOOLEAN_AS_STRING
				    DBUS_TYPE_BOOLEAN_AS_STRING
				    DBUS_STRUCT_END_CHAR_AS_STRING,
				    &array_iter);

  for (l = entries; l; l = l->next)
    {
      GConfEntry *entry = l->data;

      utils_append_entry_values_stringified (&array_iter,
					     entry->key,
					     gconf_entry_get_value (entry),
					     gconf_entry_get_is_default (entry),
					     gconf_entry_get_is_writable (entry),
					     gconf_entry_get_schema_name (entry));
    }

  dbus_message_iter_close_container (iter, &array_iter);
}
static GConfSchema* gconf_dialog_safely_get_schema (GConfDialog* self, GConfEntry* entry) {
	GConfSchema* result = NULL;
	GError * _inner_error_;
	const char* schema_name;
	GConfSchema* rt;
	GConfSchema* _tmp3_;
	g_return_val_if_fail (self != NULL, NULL);
	g_return_val_if_fail (entry != NULL, NULL);
	_inner_error_ = NULL;
	schema_name = gconf_entry_get_schema_name (entry);
	rt = NULL;
	if (schema_name != NULL) {
		{
			GConfSchema* _tmp0_;
			GConfSchema* _tmp2_;
			GConfSchema* _tmp1_;
			_tmp0_ = gconf_client_get_schema (self->priv->_default_client, schema_name, &_inner_error_);
			if (_inner_error_ != NULL) {
				goto __catch24_g_error;
			}
			rt = (_tmp2_ = gconf_schema_copy (_tmp1_ = _tmp0_), _gconf_schema_free0 (rt), _tmp2_);
			_gconf_schema_free0 (_tmp1_);
			result = rt;
			return result;
		}
		goto __finally24;
		__catch24_g_error:
		{
			GError * e;
			e = _inner_error_;
			_inner_error_ = NULL;
			{
				_g_error_free0 (e);
			}
		}
		__finally24:
		if (_inner_error_ != NULL) {
			_gconf_schema_free0 (rt);
			g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
			g_clear_error (&_inner_error_);
			return NULL;
		}
	}
	g_critical ("gtkextra-gconfdialog.vala:161: schema not found for entry %s", gconf_entry_get_key (entry));
	rt = (_tmp3_ = gconf_schema_new (), _gconf_schema_free0 (rt), _tmp3_);
	gconf_schema_set_short_desc (rt, gconf_entry_get_key (entry));
	gconf_schema_set_long_desc (rt, "This key lacks a schema");
	gconf_schema_set_type (rt, GCONF_VALUE_STRING);
	result = rt;
	return result;
}
static void
gnc_reset_warnings_add_one (GConfEntry *entry, GtkWidget *box)
{
    const gchar *name, *schema_name, *desc, *long_desc = NULL;
    GtkWidget *checkbox;
    GConfSchema *schema = NULL;

    ENTER(" ");
    name = strrchr(entry->key, '/') + 1;
    schema_name = gconf_entry_get_schema_name(entry);
    if (schema_name)
        schema = gnc_gconf_get_schema(NULL, schema_name, NULL);
    if (schema)
    {
        DEBUG("found schema %p", schema);
        desc = gconf_schema_get_short_desc(schema);
        DEBUG("description %s", desc);
        long_desc = gconf_schema_get_long_desc(schema);
        checkbox = gtk_check_button_new_with_label(desc ? desc : name);
        if (long_desc)
        {
            GtkTooltips *tips;
            tips = g_object_get_data(G_OBJECT(box), TIPS_STRING);
            if (!tips)
            {
                tips = gtk_tooltips_new();
                g_object_set_data(G_OBJECT(box), TIPS_STRING, tips);
            }
            gtk_tooltips_set_tip(tips, checkbox, long_desc, NULL);
        }
        gconf_schema_free(schema);
    }
    else
    {
        DEBUG("no schema");
        checkbox = gtk_check_button_new_with_label(name);
    }

    gtk_widget_set_name(checkbox, entry->key);
    g_signal_connect_swapped(G_OBJECT(checkbox), "toggled",
                             (GCallback)gnc_reset_warnings_update_widgets,
                             box);
    gtk_box_pack_start_defaults(GTK_BOX(box), checkbox);
    LEAVE(" ");
}