#include "modules.h"
#include "bing.h"
-#include "spotmaps.h"
#include "google.h"
#include "terraserver.h"
#include "expedia.h"
#include "bluemarble.h"
#include "geonames.h"
#include "dir.h"
+#include "datasources.h"
#include "vikmapslayer.h"
#include "vikexttools.h"
#include "vikexttool_datasources.h"
#include "vikgobjectbuilder.h"
+#ifdef HAVE_LIBMAPNIK
+#include "vikmapniklayer.h"
+#endif
+
#define VIKING_MAPS_FILE "maps.xml"
#define VIKING_EXTTOOLS_FILE "external_tools.xml"
#define VIKING_DATASOURCES_FILE "datasources.xml"
vik_gobject_builder_parse (builder, maps);
g_object_unref (builder);
}
+ g_free ( maps );
/* External tools */
gchar *tools = g_build_filename(dir, VIKING_EXTTOOLS_FILE, NULL);
vik_gobject_builder_parse (builder, tools);
g_object_unref (builder);
}
+ g_free ( tools );
gchar *datasources = g_build_filename(dir, VIKING_DATASOURCES_FILE, NULL);
if (g_access (datasources, R_OK) == 0)
vik_gobject_builder_parse (builder, datasources);
g_object_unref (builder);
}
+ g_free ( datasources );
/* Go-to search engines */
gchar *go_to = g_build_filename(dir, VIKING_GOTOTOOLS_FILE, NULL);
vik_gobject_builder_parse (builder, go_to);
g_object_unref (builder);
}
+ g_free ( go_to );
/* Routing engines */
gchar *routing = g_build_filename(dir, VIKING_ROUTING_FILE, NULL);
vik_gobject_builder_parse (builder, routing);
g_object_unref (builder);
}
+ g_free ( routing );
}
static void
But our logic is to load all existing files and overwrite
overlapping config with last recent one.
So, we have to process directories in reverse order. */
- /* First: find the last element */
- gchar * * ptr = data_dirs;
- while (*ptr != NULL) ptr++;
- /* Second: deduce the number of directories */
- int nb_data_dirs = 0;
- nb_data_dirs = ptr - data_dirs;
- /* Last: parse them in reverse order */
+ int nb_data_dirs = g_strv_length ( data_dirs );
for (; nb_data_dirs > 0 ; nb_data_dirs--)
{
modules_load_config_dir(data_dirs[nb_data_dirs-1]);
}
g_strfreev(data_dirs);
-
+
/* Check if system config is set */
modules_load_config_dir(VIKING_SYSCONFDIR);
{
modules_load_config_dir(data_home);
}
-
+
/* Check user's home config */
modules_load_config_dir(a_get_viking_dir());
}
VIK_ROUTING_WEB_ENGINE_TYPE
};
- /* kill 'unused variable' warning */
- g_debug("%ld types loaded", sizeof(types)/sizeof(GType));
+ /* kill 'unused variable' + argument type warnings */
+ g_debug("%d types loaded", (int)sizeof(types)/(int)sizeof(GType));
}
+/**
+ * First stage initialization
+ * Can not use a_get_preferences() yet...
+ * See comment in main.c
+ */
void modules_init()
{
+// OSM done first so this will be the default service for searching/routing/etc...
+#ifdef VIK_CONFIG_OPENSTREETMAP
+ osm_init();
+ osm_traces_init();
+#endif
#ifdef VIK_CONFIG_BING
bing_init();
#endif
#ifdef VIK_CONFIG_TERRASERVER
terraserver_init();
#endif
-#ifdef VIK_CONFIG_OPENSTREETMAP
- osm_init();
- osm_traces_init();
-#endif
#ifdef VIK_CONFIG_BLUEMARBLE
bluemarble_init();
#endif
#ifdef VIK_CONFIG_GEONAMES
geonames_init();
#endif
-#ifdef VIK_CONFIG_SPOTMAPS
- spotmaps_init();
+#ifdef VIK_CONFIG_GEOCACHES
+ a_datasource_gc_init();
+#endif
+
+#ifdef HAVE_LIBMAPNIK
+ vik_mapnik_layer_init();
#endif
register_loadable_types ();
modules_load_config ();
}
+/**
+ * modules_post_init:
+ *
+ * Secondary stage initialization
+ * Can now use a_get_preferences() and a_babel_available()
+ */
+void modules_post_init ()
+{
+#ifdef VIK_CONFIG_GOOGLE
+ google_post_init();
+#endif
+#ifdef HAVE_LIBMAPNIK
+ vik_mapnik_layer_post_init();
+#endif
+}
+
+/**
+ *
+ */
+void modules_uninit()
+{
+#ifdef VIK_CONFIG_OPENSTREETMAP
+ osm_traces_uninit();
+#endif
+#ifdef HAVE_LIBMAPNIK
+ vik_mapnik_layer_uninit();
+#endif
+}