#include "viking.h"
#include "babel.h"
#include "gpx.h"
+#include "babel_ui.h"
#include "acquire.h"
typedef struct {
/* The last file format selected */
static int last_type = 0;
-static gpointer datasource_file_init( );
+static gpointer datasource_file_init ( acq_vik_t *avt );
static void datasource_file_add_setup_widgets ( GtkWidget *dialog, VikViewport *vvp, gpointer user_data );
-static void datasource_file_get_cmd_string ( datasource_file_widgets_t *widgets, gchar **cmd, gchar **input_file_type );
+static void datasource_file_get_cmd_string ( datasource_file_widgets_t *widgets, gchar **cmd, gchar **input_file_type, gpointer not_used );
static void datasource_file_cleanup ( gpointer data );
VikDataSourceInterface vik_datasource_file_interface = {
N_("Import file with GPSBabel"),
N_("Imported file"),
- VIK_DATASOURCE_GPSBABEL_DIRECT,
VIK_DATASOURCE_ADDTOLAYER,
VIK_DATASOURCE_INPUTTYPE_NONE,
TRUE,
TRUE,
+ TRUE,
(VikDataSourceInitFunc) datasource_file_init,
(VikDataSourceCheckExistenceFunc) NULL,
(VikDataSourceAddSetupWidgetsFunc) datasource_file_add_setup_widgets,
(VikDataSourceGetCmdStringFunc) datasource_file_get_cmd_string,
- (VikDataSourceProcessFunc) NULL,
+ (VikDataSourceProcessFunc) a_babel_convert_from,
(VikDataSourceProgressFunc) NULL,
(VikDataSourceAddProgressWidgetsFunc) NULL,
(VikDataSourceCleanupFunc) datasource_file_cleanup,
};
/* See VikDataSourceInterface */
-static gpointer datasource_file_init ( )
+static gpointer datasource_file_init ( acq_vik_t *avt )
{
datasource_file_widgets_t *widgets = g_malloc(sizeof(*widgets));
return widgets;
}
-static void fill_combo_box (gpointer data, gpointer user_data)
-{
- const gchar *label = ((BabelFile*) data)->label;
-#if GTK_CHECK_VERSION (2,24,0)
- GtkComboBoxText *combo = GTK_COMBO_BOX_TEXT (user_data);
- gtk_combo_box_text_append_text (combo, label);
-#else
- GtkComboBox *combo = GTK_COMBO_BOX (user_data);
- gtk_combo_box_append_text (combo, label);
-#endif
-}
-
static void add_file_filter (gpointer data, gpointer user_data)
{
GtkFileChooser *chooser = GTK_FILE_CHOOSER ( user_data );
/* The file format selector */
type_label = gtk_label_new (_("File type:"));
-#if GTK_CHECK_VERSION (2,24,0)
- widgets->type = gtk_combo_box_text_new ();
-#else
- widgets->type = gtk_combo_box_new_text ();
-#endif
- g_list_foreach (a_babel_file_list, fill_combo_box, widgets->type);
- gtk_combo_box_set_active (GTK_COMBO_BOX (widgets->type), last_type);
+ /* Propose all readable file */
+ BabelMode mode = { 1, 0, 1, 0, 1, 0 };
+ widgets->type = a_babel_ui_file_type_selector_new ( mode );
+ g_signal_connect ( G_OBJECT(widgets->type), "changed",
+ G_CALLBACK(a_babel_ui_type_selector_dialog_sensitivity_cb), dialog );
+ gtk_combo_box_set_active ( GTK_COMBO_BOX(widgets->type), last_type );
+ /* Manually call the callback to fix the state */
+ a_babel_ui_type_selector_dialog_sensitivity_cb ( GTK_COMBO_BOX(widgets->type), dialog );
/* Packing all these widgets */
- gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), filename_label, FALSE, FALSE, 5 );
- gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), widgets->file, FALSE, FALSE, 5 );
- gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), type_label, FALSE, FALSE, 5 );
- gtk_box_pack_start ( GTK_BOX(GTK_DIALOG(dialog)->vbox), widgets->type, FALSE, FALSE, 5 );
+ GtkBox *box = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));
+ gtk_box_pack_start ( box, filename_label, FALSE, FALSE, 5 );
+ gtk_box_pack_start ( box, widgets->file, FALSE, FALSE, 5 );
+ gtk_box_pack_start ( box, type_label, FALSE, FALSE, 5 );
+ gtk_box_pack_start ( box, widgets->type, FALSE, FALSE, 5 );
gtk_widget_show_all(dialog);
}
/* See VikDataSourceInterface */
-static void datasource_file_get_cmd_string ( datasource_file_widgets_t *widgets, gchar **cmd, gchar **input_file )
+static void datasource_file_get_cmd_string ( datasource_file_widgets_t *widgets, gchar **cmd, gchar **input_file, gpointer not_used )
{
- gchar *filename, *type;
-
/* Retrieve the file selected */
- filename = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER(widgets->file) );
+ gchar *filename = gtk_file_chooser_get_filename ( GTK_FILE_CHOOSER(widgets->file) );
/* Memorize the directory for later use */
g_free (last_folder_uri);
last_file_filter = g_object_get_data ( G_OBJECT(filter), "Babel" );
/* Retrieve and memorize file format selected */
+ gchar *type = NULL;
last_type = gtk_combo_box_get_active ( GTK_COMBO_BOX (widgets->type) );
- type = ((BabelFile*)g_list_nth_data (a_babel_file_list, last_type))->name;
+ type = (a_babel_ui_file_type_selector_get ( widgets->type ))->name;
/* Build the string */
*cmd = g_strdup_printf( "-i %s", type);