X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/97634600d01c0ebeb23d61fdaf69836b7db9bb90..de2fc9aa9e8db8e0258c8328161c6b5eda176a0a:/src/vikmapslayer.c diff --git a/src/vikmapslayer.c b/src/vikmapslayer.c index c5e06915..901b7f66 100644 --- a/src/vikmapslayer.c +++ b/src/vikmapslayer.c @@ -32,9 +32,10 @@ #include #include +#include +#include #include -#include #include #include #include "globals.h" @@ -44,11 +45,10 @@ #include "vikviewport.h" #include "viklayer.h" #include "vikmapslayer.h" -#include "vikmapslayer_pixmap.h" +#ifdef HAVE_UNISTD_H #include -#include -#include +#endif #include "mapcache.h" /* only for dialog.h -- ugh */ @@ -123,12 +123,12 @@ enum { PARAM_MAPTYPE=0, PARAM_CACHE_DIR, PARAM_ALPHA, PARAM_AUTODOWNLOAD, PARAM_ static VikToolInterface maps_tools[] = { { N_("Maps Download"), (VikToolConstructorFunc) maps_layer_download_create, NULL, NULL, NULL, (VikToolMouseFunc) maps_layer_download_click, NULL, (VikToolMouseFunc) maps_layer_download_release, - (VikToolKeyFunc) NULL, &cursor_mapdl }, + (VikToolKeyFunc) NULL, GDK_CURSOR_IS_PIXMAP, &cursor_mapdl_pixbuf }, }; VikLayerInterface vik_maps_layer_interface = { N_("Map"), - &mapslayer_pixbuf, + &vikmapslayer_pixbuf, maps_tools, sizeof(maps_tools) / sizeof(maps_tools[0]), @@ -211,7 +211,7 @@ void maps_layer_register_type ( const char *label, guint id, VikMapsLayer_MapTyp params_maptypes = g_list_append(params_maptypes, g_strdup(label)); /* Add the id */ - params_maptypes_ids = g_list_append(params_maptypes_ids, (gpointer)id); + params_maptypes_ids = g_list_append(params_maptypes_ids, GUINT_TO_POINTER (id)); /* We have to clone */ VikMapsLayer_MapType *clone = g_memdup(map_type, sizeof(VikMapsLayer_MapType)); @@ -249,14 +249,17 @@ gchar *vik_maps_layer_get_map_label(VikMapsLayer *vml) /****************************************/ #define DIRSTRUCTURE "%st%ds%dz%d" G_DIR_SEPARATOR_S "%d" G_DIR_SEPARATOR_S "%d" +#define MAPS_CACHE_DIR maps_layer_default_dir() + #ifdef WINDOWS -#define MAPS_CACHE_DIR "C:\\VIKING-MAPS\\" +#include +#define GLOBAL_MAPS_DIR "C:\\VIKING-MAPS\\" +#define LOCAL_MAPS_DIR "VIKING-MAPS" #else /* POSIX */ - #include - -#define MAPS_CACHE_DIR maps_layer_default_dir() #define GLOBAL_MAPS_DIR "/var/cache/maps/" +#define LOCAL_MAPS_DIR ".viking-maps" +#endif gchar *maps_layer_default_dir () { @@ -267,16 +270,16 @@ gchar *maps_layer_default_dir () const gchar *mapdir = g_getenv("VIKING_MAPS"); if ( mapdir ) { defaultdir = g_strdup ( mapdir ); - } else if ( access ( GLOBAL_MAPS_DIR, W_OK ) == 0 ) { + } else if ( g_access ( GLOBAL_MAPS_DIR, W_OK ) == 0 ) { defaultdir = g_strdup ( GLOBAL_MAPS_DIR ); } else { - const gchar *home = g_getenv("HOME"); - if (!home || access(home, W_OK)) + const gchar *home = g_get_home_dir(); + if (!home || g_access(home, W_OK)) home = g_get_home_dir (); if ( home ) - defaultdir = g_build_filename ( home, ".viking-maps", NULL ); + defaultdir = g_build_filename ( home, LOCAL_MAPS_DIR, NULL ); else - defaultdir = g_strdup ( ".viking-maps" ); + defaultdir = g_strdup ( LOCAL_MAPS_DIR ); } if (defaultdir && (defaultdir[strlen(defaultdir)-1] != G_DIR_SEPARATOR)) { @@ -290,17 +293,11 @@ gchar *maps_layer_default_dir () return defaultdir; } -#endif - static void maps_layer_mkdir_if_default_dir ( VikMapsLayer *vml ) { - if ( vml->cache_dir && strcmp ( vml->cache_dir, MAPS_CACHE_DIR ) == 0 && access ( vml->cache_dir, F_OK ) != 0 ) + if ( vml->cache_dir && strcmp ( vml->cache_dir, MAPS_CACHE_DIR ) == 0 && g_file_test ( vml->cache_dir, G_FILE_TEST_EXISTS ) == FALSE ) { -#ifdef WINDOWS - mkdir ( vml->cache_dir ); -#else - mkdir ( vml->cache_dir, 0777 ); -#endif + g_mkdir ( vml->cache_dir, 0777 ); } } @@ -531,7 +528,7 @@ static GdkPixbuf *get_pixbuf( VikMapsLayer *vml, gint mode, MapCoord *mapcoord, g_snprintf ( filename_buf, buf_len, DIRSTRUCTURE, vml->cache_dir, mode, mapcoord->scale, mapcoord->z, mapcoord->x, mapcoord->y ); - if ( access ( filename_buf, R_OK ) == 0) { + if ( g_file_test ( filename_buf, G_FILE_TEST_EXISTS ) == TRUE) { { GError *gx = NULL; pixbuf = gdk_pixbuf_new_from_file ( filename_buf, &gx ); @@ -688,7 +685,7 @@ static void maps_layer_draw_section ( VikMapsLayer *vml, VikViewport *vvp, VikCo g_snprintf ( path_buf, max_path_len, DIRSTRUCTURE, vml->cache_dir, mode, ulm.scale, ulm.z, ulm.x, ulm.y ); - if ( access ( path_buf, F_OK ) == 0 ) { + if ( g_file_test ( path_buf, G_FILE_TEST_EXISTS ) == TRUE ) { vik_viewport_draw_line ( vvp, black_gc, xx+tilesize_x_ceil, yy, xx, yy+tilesize_y_ceil ); } } else { @@ -790,22 +787,22 @@ static void map_download_thread ( MapDownloadInfo *mdi, gpointer threaddata ) a_background_thread_progress ( threaddata, ((gdouble)donemaps) / mdi->mapstoget ); /* this also calls testcancel */ if ( mdi->redownload == REDOWNLOAD_ALL) - remove ( mdi->filename_buf ); + g_remove ( mdi->filename_buf ); - else if ( (mdi->redownload == REDOWNLOAD_BAD) && (access ( mdi->filename_buf, F_OK ) == 0) ) + else if ( (mdi->redownload == REDOWNLOAD_BAD) && (g_file_test ( mdi->filename_buf, G_FILE_TEST_EXISTS ) == TRUE) ) { /* see if this one is bad or what */ GError *gx = NULL; GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file ( mdi->filename_buf, &gx ); if (gx || (!pixbuf)) - remove ( mdi->filename_buf ); + g_remove ( mdi->filename_buf ); if ( pixbuf ) g_object_unref ( pixbuf ); if ( gx ) g_error_free ( gx ); } - if ( access ( mdi->filename_buf, F_OK ) != 0 ) + if ( g_file_test ( mdi->filename_buf, G_FILE_TEST_EXISTS ) == FALSE ) { need_download = TRUE; if (( mdi->redownload != REDOWNLOAD_NONE ) && @@ -850,9 +847,9 @@ static void mdi_cancel_cleanup ( MapDownloadInfo *mdi ) g_snprintf ( mdi->filename_buf, mdi->maxlen, DIRSTRUCTURE, mdi->cache_dir, MAPS_LAYER_NTH_TYPE(mdi->maptype)->uniq_id, mdi->mapcoord.scale, mdi->mapcoord.z, mdi->mapcoord.x, mdi->mapcoord.y ); - if ( access ( mdi->filename_buf, F_OK ) == 0) + if ( g_file_test ( mdi->filename_buf, G_FILE_TEST_EXISTS ) == TRUE) { - remove ( mdi->filename_buf ); + g_remove ( mdi->filename_buf ); } } } @@ -903,7 +900,7 @@ static void start_download_thread ( VikMapsLayer *vml, VikViewport *vvp, const V g_snprintf ( mdi->filename_buf, mdi->maxlen, DIRSTRUCTURE, vml->cache_dir, map_type->uniq_id, ulm.scale, ulm.z, a, b ); - if ( access ( mdi->filename_buf, F_OK ) != 0) + if ( g_file_test ( mdi->filename_buf, G_FILE_TEST_EXISTS ) == FALSE ) mdi->mapstoget++; } } @@ -952,7 +949,7 @@ void maps_layer_download_section_without_redraw( VikMapsLayer *vml, VikViewport if (!map_type->coord_to_mapcoord(ul, zoom, zoom, &ulm) || !map_type->coord_to_mapcoord(br, zoom, zoom, &brm)) { - g_warning("%s() coord_to_mapcoord() failed\n", __PRETTY_FUNCTION__); + g_warning("%s() coord_to_mapcoord() failed", __PRETTY_FUNCTION__); return; } @@ -986,7 +983,7 @@ void maps_layer_download_section_without_redraw( VikMapsLayer *vml, VikViewport g_snprintf ( mdi->filename_buf, mdi->maxlen, DIRSTRUCTURE, vml->cache_dir, map_type->uniq_id, ulm.scale, ulm.z, i, j ); - if ( access ( mdi->filename_buf, F_OK ) != 0) + if ( g_file_test ( mdi->filename_buf, G_FILE_TEST_EXISTS ) == FALSE ) mdi->mapstoget++; } }