X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/1f78e182e7eaf305c3a10d2e145dbcc994d5e862..4a050412da32aa6f237c358cfa0c5a3775f21e9a:/src/viklayer.c diff --git a/src/viklayer.c b/src/viklayer.c index ce9e04fb..c111764c 100644 --- a/src/viklayer.c +++ b/src/viklayer.c @@ -1,7 +1,8 @@ /* * viking -- GPS Data and Topo Analyzer, Explorer, and Manager * - * Copyright (C) 2003-2005, Evan Battaglia + * Copyright (C) 2005, Alex Foobarian + * Copyright (C) 2003-2007, Evan Battaglia * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -260,7 +261,7 @@ void vik_layer_marshall_params ( VikLayer *vl, guint8 **data, gint *datalen ) for ( i = 0; i < params_count; i++ ) { g_debug("%s: %s", __FUNCTION__, params[i].name); - d = get_param(vl, i); + d = get_param(vl, i, FALSE); switch ( params[i].type ) { case VIK_LAYER_PARAM_STRING: @@ -332,7 +333,7 @@ void vik_layer_unmarshall_params ( VikLayer *vl, guint8 *data, gint datalen, Vik s[vlm_size]=0; vlm_read(s); d.s = s; - set_param(vl, i, d, vvp); + set_param(vl, i, d, vvp, FALSE); g_free(s); break; case VIK_LAYER_PARAM_STRING_LIST: { @@ -348,14 +349,14 @@ void vik_layer_unmarshall_params ( VikLayer *vl, guint8 *data, gint datalen, Vik list = g_list_append ( list, s ); } d.sl = list; - set_param ( vl, i, d, vvp ); + set_param(vl, i, d, vvp, FALSE); /* don't free -- string list is responsibility of the layer */ break; } default: vlm_read(&d); - set_param(vl, i, d, vvp); + set_param(vl, i, d, vvp, FALSE); break; } } @@ -393,6 +394,14 @@ gboolean vik_layer_sublayer_toggle_visible ( VikLayer *l, gint subtype, gpointer return TRUE; /* if unknown, will always be visible */ } +gboolean vik_layer_selected ( VikLayer *l, gint subtype, gpointer sublayer, gint type, gpointer vlp ) +{ + if ( vik_layer_interfaces[l->type]->layer_selected ) + return vik_layer_interfaces[l->type]->layer_selected ( l, subtype, sublayer, type, vlp ); + /* Since no 'layer_selected' function explicitly turn off here */ + return vik_window_clear_highlight ( (VikWindow *)VIK_GTK_WINDOW_FROM_LAYER(l) ); +} + void vik_layer_realize ( VikLayer *l, VikTreeview *vt, GtkTreeIter *layer_iter ) { l->vt = vt; @@ -422,10 +431,10 @@ void vik_layer_add_menu_items ( VikLayer *l, GtkMenu *menu, gpointer vlp ) vik_layer_interfaces[l->type]->add_menu_items ( l, menu, vlp ); } -gboolean vik_layer_sublayer_add_menu_items ( VikLayer *l, GtkMenu *menu, gpointer vlp, gint subtype, gpointer sublayer, GtkTreeIter *iter ) +gboolean vik_layer_sublayer_add_menu_items ( VikLayer *l, GtkMenu *menu, gpointer vlp, gint subtype, gpointer sublayer, GtkTreeIter *iter, VikViewport *vvp ) { if ( vik_layer_interfaces[l->type]->sublayer_add_menu_items ) - return vik_layer_interfaces[l->type]->sublayer_add_menu_items ( l, menu, vlp, subtype, sublayer, iter ); + return vik_layer_interfaces[l->type]->sublayer_add_menu_items ( l, menu, vlp, subtype, sublayer, iter, vvp ); return FALSE; } @@ -437,6 +446,20 @@ const gchar *vik_layer_sublayer_rename_request ( VikLayer *l, const gchar *newna return NULL; } +const gchar* vik_layer_sublayer_tooltip ( VikLayer *l, gint subtype, gpointer sublayer ) +{ + if ( vik_layer_interfaces[l->type]->sublayer_tooltip ) + return vik_layer_interfaces[l->type]->sublayer_tooltip ( l, subtype, sublayer ); + return NULL; +} + +const gchar* vik_layer_layer_tooltip ( VikLayer *l ) +{ + if ( vik_layer_interfaces[l->type]->layer_tooltip ) + return vik_layer_interfaces[l->type]->layer_tooltip ( l ); + return NULL; +} + GdkPixbuf *vik_layer_load_icon ( gint type ) { g_assert ( type < VIK_LAYER_NUM_TYPES ); @@ -445,10 +468,10 @@ GdkPixbuf *vik_layer_load_icon ( gint type ) return NULL; } -gboolean vik_layer_set_param ( VikLayer *layer, guint16 id, VikLayerParamData data, gpointer vp ) +gboolean vik_layer_set_param ( VikLayer *layer, guint16 id, VikLayerParamData data, gpointer vp, gboolean is_file_operation ) { if ( vik_layer_interfaces[layer->type]->set_param ) - return vik_layer_interfaces[layer->type]->set_param ( layer, id, data, vp ); + return vik_layer_interfaces[layer->type]->set_param ( layer, id, data, vp, is_file_operation ); return FALSE; } @@ -460,7 +483,8 @@ void vik_layer_post_read ( VikLayer *layer, VikViewport *vp, gboolean from_file static gboolean layer_properties_factory ( VikLayer *vl, VikViewport *vp ) { - switch ( a_uibuilder_properties_factory ( VIK_GTK_WINDOW_FROM_WIDGET(vp), + switch ( a_uibuilder_properties_factory ( _("Layer Properties"), + VIK_GTK_WINDOW_FROM_WIDGET(vp), vik_layer_interfaces[vl->type]->params, vik_layer_interfaces[vl->type]->params_count, vik_layer_interfaces[vl->type]->params_groups,