]> git.street.me.uk Git - andy/viking.git/blob - src/modules.c
Add Nominatim search engine
[andy/viking.git] / src / modules.c
1 /*
2  * viking -- GPS Data and Topo Analyzer, Explorer, and Manager
3  *
4  * Copyright (C) 2006-2007, Guilhem Bonnefille <guilhem.bonnefille@gmail.com>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  *
20  */
21
22 #ifdef HAVE_CONFIG_H
23 #include "config.h"
24 #endif
25
26 #include <glib.h>
27 #include <glib/gstdio.h>
28 #ifdef HAVE_UNISTD_H
29 #include <unistd.h>
30 #endif
31
32 #include "modules.h"
33
34 #include "google.h"
35 #include "terraserver.h"
36 #include "expedia.h"
37 #include "osm.h"
38 #include "osm-traces.h"
39 #include "bluemarble.h"
40 #include "openaerial.h"
41 #include "geonames.h"
42 #include "file.h"
43 #include "vikmapslayer.h"
44 #include "vikexttools.h"
45 #include "vikgobjectbuilder.h"
46
47 #define VIKING_MAPS_FILE "maps.xml"
48 #define VIKING_EXTTOOLS_FILE "external_tools.xml"
49
50 static void
51 modules_register_map_source(VikGobjectBuilder *self, GObject *object)
52 {
53   g_debug (__FUNCTION__);
54   VikMapSource *mapsource = VIK_MAP_SOURCE (object);
55   /* FIXME label should be hosted by object */
56   maps_layer_register_map_source (mapsource);
57 }
58
59 static void
60 modules_register_exttools(VikGobjectBuilder *self, GObject *object)
61 {
62   g_debug (__FUNCTION__);
63   VikExtTool *tool = VIK_EXT_TOOL (object);
64   vik_ext_tools_register (tool);
65 }
66
67 static void
68 modules_load_config(void)
69 {
70   /* Maps sources */
71   gchar *maps = g_build_filename(a_get_viking_dir(), VIKING_MAPS_FILE, NULL);
72   if (g_access (maps, R_OK) == 0)
73   {
74         VikGobjectBuilder *builder = vik_gobject_builder_new ();
75         g_signal_connect (builder, "new-object", G_CALLBACK (modules_register_map_source), NULL);
76         vik_gobject_builder_parse (builder, maps);
77         g_object_unref (builder);
78   }
79
80   /* External tools */
81   gchar *tools = g_build_filename(a_get_viking_dir(), VIKING_EXTTOOLS_FILE, NULL);
82   if (g_access (tools, R_OK) == 0)
83   {
84         VikGobjectBuilder *builder = vik_gobject_builder_new ();
85         g_signal_connect (builder, "new-object", G_CALLBACK (modules_register_exttools), NULL);
86         vik_gobject_builder_parse (builder, tools);
87         g_object_unref (builder);
88   }
89 }
90
91 void modules_init()
92 {
93 #ifdef VIK_CONFIG_GOOGLE 
94   google_init();
95 #endif
96 #ifdef VIK_CONFIG_EXPEDIA
97   expedia_init();
98 #endif
99 #ifdef VIK_CONFIG_TERRASERVER
100   terraserver_init();
101 #endif
102 #ifdef VIK_CONFIG_OPENSTREETMAP
103   osm_init();
104   osm_traces_init();
105 #endif
106 #ifdef VIK_CONFIG_BLUEMARBLE
107   bluemarble_init();
108 #endif
109 #ifdef VIK_CONFIG_OPENAERIAL
110   openaerial_init();
111 #endif
112 #ifdef VIK_CONFIG_GEONAMES
113   geonames_init();
114 #endif
115   
116   /* As modules are loaded, we can load configuration files */
117   modules_load_config ();
118 }
119