+static void repvehicle_export_csv(GtkWidget *widget, gpointer user_data)
+{
+struct repvehicle_data *data;
+GtkTreeModel *model;
+GtkTreeIter iter;
+gboolean valid;
+gchar *filename = NULL;
+GIOChannel *io;
+gchar *outstr, *name;
+
+ DB( g_print("\n[repvehicle] export csv\n") );
+
+ data = g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW)), "inst_data");
+
+ name = "hb-vehicle.csv";
+
+ if( ui_file_chooser_csv(GTK_WINDOW(data->window), GTK_FILE_CHOOSER_ACTION_SAVE, &filename, name) == TRUE )
+ {
+ DB( g_print(" + filename is %s\n", filename) );
+
+ io = g_io_channel_new_file(filename, "w", NULL);
+ if(io != NULL)
+ {
+ // header
+ outstr = g_strdup_printf("%s;%s;%s;%s;%s;%s;%s;%s\n",
+ _("Date"),
+ _("Meter"),
+ _("Fuel"),
+ _("Price"),
+ _("Amount"),
+ _("Dist."),
+ PREFS->vehicle_unit_100,
+ PREFS->vehicle_unit_distbyvol
+ );
+ g_io_channel_write_chars(io, outstr, -1, NULL, NULL);
+
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(data->LV_report));
+ valid = gtk_tree_model_get_iter_first(GTK_TREE_MODEL(model), &iter);
+ while (valid)
+ {
+ guint32 julian;
+ gint meter, dist, distbyvol;
+ gdouble fuel, price, amount, centkm;
+ gboolean partial;
+ gchar datebuf[16];
+
+ gtk_tree_model_get (model, &iter,
+ LST_CAR_DATE , &julian,
+ LST_CAR_METER , &meter,
+ LST_CAR_FUEL , &fuel,
+ LST_CAR_PRICE , &price,
+ LST_CAR_AMOUNT , &amount,
+ LST_CAR_DIST , &dist,
+ LST_CAR_100KM , ¢km,
+ LST_CAR_DISTBYVOL, &distbyvol,
+ LST_CAR_PARTIAL, &partial,
+ -1);
+
+ hb_sprint_date(datebuf, julian);
+
+ outstr = g_strdup_printf("%s;%d;%.2f;%.2f;%.2f;%d;%.2f;%d;%d\n",
+ datebuf, meter, fuel, price, amount, dist, centkm, distbyvol, partial);
+ g_io_channel_write_chars(io, outstr, -1, NULL, NULL);
+
+ DB( g_print("%s", outstr) );
+
+ g_free(outstr);
+
+ valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), &iter);
+ }
+
+ g_io_channel_unref (io);
+ }
+
+ g_free( filename );
+ }
+}
+
+