X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/79ffe90e1f995be8fef4eec2462b94c0296c2ecb..8401739442bc74f2ba6554cd597e7f06b45b5704:/src/modules.c diff --git a/src/modules.c b/src/modules.c index 1f734c15..74cba1cf 100644 --- a/src/modules.c +++ b/src/modules.c @@ -45,12 +45,15 @@ #include "vikexttools.h" #include "vikexttool_datasources.h" #include "vikgoto.h" +#include "vikrouting.h" +#include "vikroutingwebengine.h" #include "vikgobjectbuilder.h" #define VIKING_MAPS_FILE "maps.xml" #define VIKING_EXTTOOLS_FILE "external_tools.xml" #define VIKING_DATASOURCES_FILE "datasources.xml" #define VIKING_GOTOTOOLS_FILE "goto_tools.xml" +#define VIKING_ROUTING_FILE "routing.xml" static void modules_register_map_source(VikGobjectBuilder *self, GObject *object) @@ -85,6 +88,14 @@ modules_register_gototools(VikGobjectBuilder *self, GObject *object) vik_goto_register (tool); } +static void +modules_register_routing_engine(VikGobjectBuilder *self, GObject *object) +{ + g_debug (__FUNCTION__); + VikRoutingEngine *engine = VIK_ROUTING_ENGINE (object); + vik_routing_register (engine); +} + static void modules_load_config_dir(const gchar *dir) { @@ -128,6 +139,16 @@ modules_load_config_dir(const gchar *dir) vik_gobject_builder_parse (builder, go_to); g_object_unref (builder); } + + /* Routing engines */ + gchar *routing = g_build_filename(dir, VIKING_ROUTING_FILE, NULL); + if (g_access (routing, R_OK) == 0) + { + VikGobjectBuilder *builder = vik_gobject_builder_new (); + g_signal_connect (builder, "new-object", G_CALLBACK (modules_register_routing_engine), NULL); + vik_gobject_builder_parse (builder, routing); + g_object_unref (builder); + } } static void @@ -194,6 +215,9 @@ void modules_init() spotmaps_init(); #endif + /* Force registering of loadable types */ + VIK_ROUTING_WEB_ENGINE_TYPE; + /* As modules are loaded, we can load configuration files */ modules_load_config (); }