#endif
#include <glib.h>
#include <glib/gstdio.h>
+#include <glib/gi18n.h>
/* Relax some dependencies */
#if ! GLIB_CHECK_VERSION(2,12,0)
switch ( mode ) {
case VIK_VIEWPORT_DRAWMODE_UTM: modestring = "utm"; break;
case VIK_VIEWPORT_DRAWMODE_EXPEDIA: modestring = "expedia"; break;
- case VIK_VIEWPORT_DRAWMODE_GOOGLE: modestring = "google"; break;
- case VIK_VIEWPORT_DRAWMODE_KH: modestring = "kh"; break;
case VIK_VIEWPORT_DRAWMODE_MERCATOR: modestring = "mercator"; break;
default:
g_critical("Houston, we've had a problem. mode=%d", mode);
else if ( stack->under == NULL && eq_pos == 4 && strncasecmp ( line, "mode", eq_pos ) == 0 && strcasecmp ( line+5, "expedia" ) == 0)
vik_viewport_set_drawmode ( VIK_VIEWPORT(vp), VIK_VIEWPORT_DRAWMODE_EXPEDIA );
else if ( stack->under == NULL && eq_pos == 4 && strncasecmp ( line, "mode", eq_pos ) == 0 && strcasecmp ( line+5, "google" ) == 0)
- vik_viewport_set_drawmode ( VIK_VIEWPORT(vp), VIK_VIEWPORT_DRAWMODE_GOOGLE );
+ {
+ g_warning ( _("Draw mode '%s' no more supported"), "google" );
+ }
else if ( stack->under == NULL && eq_pos == 4 && strncasecmp ( line, "mode", eq_pos ) == 0 && strcasecmp ( line+5, "kh" ) == 0)
- vik_viewport_set_drawmode ( VIK_VIEWPORT(vp), VIK_VIEWPORT_DRAWMODE_KH );
+ {
+ g_warning ( _("Draw mode '%s' no more supported"), "kh" );
+ }
else if ( stack->under == NULL && eq_pos == 4 && strncasecmp ( line, "mode", eq_pos ) == 0 && strcasecmp ( line+5, "mercator" ) == 0)
vik_viewport_set_drawmode ( VIK_VIEWPORT(vp), VIK_VIEWPORT_DRAWMODE_MERCATOR );
else if ( stack->under == NULL && eq_pos == 5 && strncasecmp ( line, "color", eq_pos ) == 0 )
}
/* 0 on failure, 1 on success (vik file) 2 on success (other file) */
-gshort a_file_load ( VikAggregateLayer *top, VikViewport *vp, const gchar *filename )
+gshort a_file_load ( VikAggregateLayer *top, VikViewport *vp, const gchar *filename_or_uri )
{
+ char *filename = filename_or_uri;
+ if (strncmp(filename, "file://", 7) == 0)
+ filename = filename + 7;
+
+ gboolean is_gpx_file = check_file_ext ( filename, ".gpx" );
FILE *f = xfopen ( filename, "r" );
g_assert ( vp );
if ( ! f )
return 0;
- if ( check_magic ( f, VIK_MAGIC ) )
+ if ( !is_gpx_file && check_magic ( f, VIK_MAGIC ) )
{
file_read ( top, f, vp );
if ( f != stdin )
VikLayer *vtl = vik_layer_create ( VIK_LAYER_TRW, vp, NULL, FALSE );
vik_layer_rename ( vtl, a_file_basename ( filename ) );
- if ( check_magic ( f, GPX_MAGIC ) )
+ if ( is_gpx_file || check_magic ( f, GPX_MAGIC ) )
a_gpx_read_file ( VIK_TRW_LAYER(vtl), f );
else
a_gpspoint_read_file ( VIK_TRW_LAYER(vtl), f );
gboolean a_file_save ( VikAggregateLayer *top, gpointer vp, const gchar *filename )
{
- FILE *f = g_fopen(filename, "w");
+ FILE *f;
+
+ if (strncmp(filename, "file://", 7) == 0)
+ filename = filename + 7;
+
+ f = g_fopen(filename, "w");
if ( ! f )
return FALSE;
return filename;
}
+/* example:
+ gboolean is_gpx = check_file_ext ( "a/b/c.gpx", ".gpx" );
+*/
+gboolean check_file_ext ( const gchar *filename, const gchar *fileext )
+{
+ const gchar *basename = a_file_basename(filename);
+ g_assert( filename );
+ g_assert( fileext && fileext[0]=='.' );
+ if (!basename)
+ return FALSE;
+
+ const char * dot = strrchr(basename, '.');
+ if (dot && !strcmp(dot, fileext))
+ return TRUE;
+
+ return FALSE;
+}
+
gboolean a_file_export ( VikTrwLayer *vtl, const gchar *filename, gshort file_type )
{
FILE *f = g_fopen ( filename, "w" );