static GList *routing_engine_list = NULL;
static VikLayerParam prefs[] = {
- { VIK_LAYER_NUM_TYPES, VIKING_ROUTING_PARAMS_NAMESPACE "default", VIK_LAYER_PARAM_STRING, VIK_LAYER_GROUP_NONE, N_("Default engine:"), VIK_LAYER_WIDGET_COMBOBOX, NULL, NULL, NULL },
+ { VIK_LAYER_NUM_TYPES, VIKING_ROUTING_PARAMS_NAMESPACE "default", VIK_LAYER_PARAM_STRING, VIK_LAYER_GROUP_NONE, N_("Default engine:"), VIK_LAYER_WIDGET_COMBOBOX, NULL, NULL, NULL, NULL, NULL, NULL },
};
gchar **routing_engine_labels = NULL;
void
vik_routing_prefs_init()
{
- a_preferences_register_group ( VIKING_ROUTING_PARAMS_GROUP_KEY, "Routing" );
+ a_preferences_register_group ( VIKING_ROUTING_PARAMS_GROUP_KEY, _("Routing") );
VikLayerParamData tmp;
tmp.s = NULL;
*
* Returns: the default engine
*/
-static VikRoutingEngine *
+VikRoutingEngine *
vik_routing_default_engine ( void )
{
const gchar *id = a_preferences_get ( VIKING_ROUTING_PARAMS_NAMESPACE "default")->s;
* vik_routing_default_find:
*
* Route computation with default engine.
+ *
+ * Return indicates success or not
*/
-void
+gboolean
vik_routing_default_find(VikTrwLayer *vt, struct LatLon start, struct LatLon end)
{
/* The engine */
VikRoutingEngine *engine = vik_routing_default_engine ( );
/* The route computation */
- vik_routing_engine_find ( engine, vt, start, end );
+ return vik_routing_engine_find ( engine, vt, start, end );
}
/**
/* Retrieve combo */
GtkWidget *widget = (GtkWidget*) user_data;
- /* Only register engine fulliling expected behavior */
+ /* Only register engine fulfilling expected behaviour */
Predicate predicate = g_object_get_data ( G_OBJECT ( widget ), "func" );
gpointer predicate_data = g_object_get_data ( G_OBJECT ( widget ), "user_data" );
/* No predicate means to register all engines */
*
* Creates a combo box to allow selection of a routing engine.
*
- * We use GObject data hastable to store and retrieve the VikRoutingEngine
+ * We use GObject data hashtable to store and retrieve the VikRoutingEngine
* associated to the selection.
*
* Returns: the combo box
return engine;
}
+
+// For simplicity a variable with visibility to multiple functions
+static guint engine_count = 0;
+
+static void
+count_engine_directions (gpointer data, gpointer user_data)
+{
+ VikRoutingEngine *engine = (VikRoutingEngine*) data;
+ if ( vik_routing_engine_supports_direction ( engine ) )
+ engine_count++;
+}
+
+/**
+ * vik_routing_number_of_engines:
+ *
+ * Returns: the number of engines available
+ */
+guint vik_routing_number_of_engines ( VikRoutingMethodType method )
+{
+ engine_count = 0;
+ if ( routing_engine_list ) {
+ if ( method == VIK_ROUTING_METHOD_DIRECTIONS )
+ vik_routing_foreach_engine ( count_engine_directions, NULL );
+ else
+ // ATM Every engine supports Lat/Lon requests
+ engine_count = g_list_length ( routing_engine_list );
+ }
+ return engine_count;
+}