#include "background.h"
#include "acquire.h"
#include "datasources.h"
+#include "geojson.h"
#include "vikgoto.h"
#include "dems.h"
#include "mapcache.h"
g_free ( message );
}
+static void my_acquire ( VikWindow *vw, VikDataSourceInterface *datasource )
+{
+ vik_datasource_mode_t mode = datasource->mode;
+ if ( mode == VIK_DATASOURCE_AUTO_LAYER_MANAGEMENT )
+ mode = VIK_DATASOURCE_CREATENEWLAYER;
+ a_acquire ( vw, vw->viking_vlp, vw->viking_vvp, mode, datasource, NULL, NULL );
+}
+
static void acquire_from_gps ( GtkAction *a, VikWindow *vw )
{
- // Via the file menu, acquiring from a GPS makes a new layer
- // this has always been the way (not entirely sure if this was the real intention!)
- // thus maintain the behaviour ATM.
- // Hence explicit setting here (as the value may be changed elsewhere)
- vik_datasource_gps_interface.mode = VIK_DATASOURCE_CREATENEWLAYER;
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_gps_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_gps_interface );
}
static void acquire_from_file ( GtkAction *a, VikWindow *vw )
{
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_file_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_file_interface );
+}
+
+static void acquire_from_geojson ( GtkAction *a, VikWindow *vw )
+{
+ my_acquire ( vw, &vik_datasource_geojson_interface );
}
static void acquire_from_routing ( GtkAction *a, VikWindow *vw )
{
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_routing_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_routing_interface );
}
#ifdef VIK_CONFIG_OPENSTREETMAP
static void acquire_from_osm ( GtkAction *a, VikWindow *vw )
{
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_osm_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_osm_interface );
}
static void acquire_from_my_osm ( GtkAction *a, VikWindow *vw )
{
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_osm_my_traces_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_osm_my_traces_interface );
}
#endif
#ifdef VIK_CONFIG_GEOCACHES
static void acquire_from_gc ( GtkAction *a, VikWindow *vw )
{
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_gc_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_gc_interface );
}
#endif
#ifdef VIK_CONFIG_GEOTAG
static void acquire_from_geotag ( GtkAction *a, VikWindow *vw )
{
- vik_datasource_geotag_interface.mode = VIK_DATASOURCE_CREATENEWLAYER;
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_geotag_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_geotag_interface );
}
#endif
#ifdef VIK_CONFIG_GEONAMES
static void acquire_from_wikipedia ( GtkAction *a, VikWindow *vw )
{
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_wikipedia_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_wikipedia_interface );
}
#endif
static void acquire_from_url ( GtkAction *a, VikWindow *vw )
{
- vik_datasource_url_interface.mode = VIK_DATASOURCE_CREATENEWLAYER;
- a_acquire(vw, vw->viking_vlp, vw->viking_vvp, &vik_datasource_url_interface, NULL, NULL );
+ my_acquire ( vw, &vik_datasource_url_interface );
}
static void goto_default_location( GtkAction *a, VikWindow *vw)
{ "ExportKML", NULL, N_("_KML..."), NULL, N_("Export as KML"), (GCallback)export_to_kml },
};
+static GtkActionEntry entries_geojson[] = {
+ { "AcquireGeoJSON", NULL, N_("Import Geo_JSON File..."), NULL, N_("Import GeoJSON file"), (GCallback)acquire_from_geojson },
+};
+
/* Radio items */
/* FIXME use VIEWPORT_DRAWMODE values */
static GtkRadioActionEntry mode_entries[] = {
gtk_action_group_add_actions ( action_group, entries_gpsbabel, G_N_ELEMENTS (entries_gpsbabel), window );
}
+ // GeoJSON import capability
+ if ( g_find_program_in_path ( a_geojson_program_import() ) ) {
+ if ( gtk_ui_manager_add_ui_from_string ( uim,
+ "<ui><menubar name='MainMenu'><menu action='File'><menu action='Acquire'><menuitem action='AcquireGeoJSON'/></menu></menu></menubar></ui>",
+ -1, &error ) )
+ gtk_action_group_add_actions ( action_group, entries_geojson, G_N_ELEMENTS (entries_geojson), window );
+ }
+
icon_factory = gtk_icon_factory_new ();
gtk_icon_factory_add_default (icon_factory);