Sort headers using clang-tidy
[geeqie.git] / src / bar-gps.cc
index 6316644..b17e006 100644 (file)
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 
-#include "main.h"
+#include <config.h>
+
 #ifdef HAVE_LIBCHAMPLAIN
 #ifdef HAVE_LIBCHAMPLAIN_GTK
 
 #include "bar-gps.h"
 
 #include "bar.h"
+#include "compat.h"
+#include "debug.h"
 #include "filedata.h"
+#include "intl.h"
 #include "layout.h"
-#include "metadata.h"
+#include "main-defines.h"
 #include "menu.h"
+#include "metadata.h"
 #include "misc.h"
 #include "rcfile.h"
 #include "thumb.h"
 #include "ui-menu.h"
-#include "uri-utils.h"
 #include "ui-utildlg.h"
+#include "uri-utils.h"
 
-#include <clutter-gtk/clutter-gtk.h>
-#include <champlain/champlain.h>
 #include <champlain-gtk/champlain-gtk.h>
+#include <champlain/champlain.h>
+#include <clutter-gtk/clutter-gtk.h>
 
 #define MARKER_COLOUR 0x00, 0x00, 0xff, 0xff
 #define TEXT_COLOUR 0x00, 0x00, 0x00, 0xff
@@ -54,8 +59,7 @@
  *-------------------------------------------------------------------
  */
 
-typedef struct _PaneGPSData PaneGPSData;
-struct _PaneGPSData
+struct PaneGPSData
 {
        PaneData pane;
        GtkWidget *widget;
@@ -94,28 +98,28 @@ enum {
 };
 
 static GtkTargetEntry bar_pane_gps_drop_types[] = {
-       { "text/uri-list", 0, TARGET_URI_LIST },
-       { "text/plain", 0, TARGET_TEXT_PLAIN }
+       { const_cast<gchar *>("text/uri-list"), 0, TARGET_URI_LIST },
+       { const_cast<gchar *>("text/plain"), 0, TARGET_TEXT_PLAIN }
 };
 static gint n_gps_entry_drop_types = 2;
 
-static void bar_pane_gps_close_cancel_cb(GenericDialog *UNUSED(gd), gpointer data)
+static void bar_pane_gps_close_cancel_cb(GenericDialog *, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
 
        g_list_free(pgd->geocode_list);
 }
 
-static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
+static void bar_pane_gps_close_save_cb(GenericDialog *, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
        FileData *fd;
        GList *work;
 
        work = g_list_first(pgd->geocode_list);
        while (work)
                {
-               fd = work->data;
+               fd = static_cast<FileData *>(work->data);
                if (fd->name && !fd->parent)
                        {
                        work = work->next;
@@ -123,26 +127,29 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
                        metadata_write_GPS_coord(fd, "Xmp.exif.GPSLongitude", pgd->dest_longitude);
                        }
                }
-       g_list_free(work);
        g_list_free(pgd->geocode_list);
 }
 
- static void bar_pane_gps_dnd_receive(GtkWidget *pane, GdkDragContext *UNUSED(context),
+ static void bar_pane_gps_dnd_receive(GtkWidget *pane, GdkDragContext *,
                                                                          gint x, gint y,
                                                                          GtkSelectionData *selection_data, guint info,
-                                                                         guint UNUSED(time), gpointer UNUSED(data))
+                                                                         guint, gpointer)
 {
        PaneGPSData *pgd;
        GenericDialog *gd;
-       FileData *fd, *fd_found;
-       GList *work, *list;
-       gint count, geocoded_count;
-       gdouble latitude, longitude;
+       FileData *fd;
+       FileData *fd_found;
+       GList *work;
+       GList *list;
+       gint count;
+       gint geocoded_count;
+       gdouble latitude;
+       gdouble longitude;
        GString *message;
        gchar *location;
        gchar **latlong;
 
-       pgd = g_object_get_data(G_OBJECT(pane), "pane_data");
+       pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
        if (!pgd) return;
 
        if (info == TARGET_URI_LIST)
@@ -152,7 +159,7 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
 
                count = 0;
                geocoded_count = 0;
-               pgd->geocode_list = NULL;
+               pgd->geocode_list = nullptr;
 
                list = uri_filelist_from_gtk_selection_data(selection_data);
 
@@ -161,7 +168,7 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
                        work = list;
                        while (work)
                                {
-                               fd = work->data;
+                               fd = static_cast<FileData *>(work->data);
                                work = work->next;
                                if (fd->name && !fd->parent)
                                        {
@@ -175,14 +182,14 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
                                                }
                                        }
                                }
-                       g_list_free(work);
+                       g_list_free(list);
 
                        if(count)
                                {
                                message = g_string_new("");
                                if (count == 1)
                                        {
-                                       fd_found = g_list_first(pgd->geocode_list)->data;
+                                       fd_found = static_cast<FileData *>(g_list_first(pgd->geocode_list)->data);
                                        g_string_append_printf(message,
                                                        _("\nDo you want to geocode image %s?"), fd_found->name);
                                        }
@@ -193,12 +200,12 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
                                        }
                                if (geocoded_count == 1 && count == 1)
                                        {
-                                       g_string_append_printf(message,
+                                       g_string_append(message,
                                                        _("\nThis image is already geocoded!"));
                                        }
                                else if (geocoded_count == 1 && count > 1)
                                        {
-                                       g_string_append_printf(message,
+                                       g_string_append(message,
                                                        _("\nOne image is already geocoded!"));
                                        }
                                else if (geocoded_count > 1 && count > 1)
@@ -207,22 +214,19 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
                                                        _("\n%i Images are already geocoded!"), geocoded_count);
                                        }
 
-                               location = g_strdup_printf("%lf %lf", pgd->dest_latitude,
-                                                                                                               pgd->dest_longitude);
-                               g_string_append_printf(message, _("\n\nPosition: %s \n"), location);
+                               g_string_append_printf(message, _("\n\nPosition: %lf %lf \n"), pgd->dest_latitude, pgd->dest_longitude);
 
                                gd = generic_dialog_new(_("Geocode images"),
-                                                       "geocode_images", NULL, TRUE,
+                                                       "geocode_images", nullptr, TRUE,
                                                        bar_pane_gps_close_cancel_cb, pgd);
-                               generic_dialog_add_message(gd, GTK_STOCK_DIALOG_QUESTION,
+                               generic_dialog_add_message(gd, GQ_ICON_DIALOG_QUESTION,
                                                        _("Write lat/long to meta-data?"),
                                                        message->str, TRUE);
 
-                               generic_dialog_add_button(gd, GTK_STOCK_SAVE, NULL,
+                               generic_dialog_add_button(gd, GQ_ICON_SAVE, _("Save"),
                                                                                                bar_pane_gps_close_save_cb, TRUE);
 
                                gtk_widget_show(gd->dialog);
-                               g_free(location);
                                g_string_free(message, TRUE);
                                }
                        }
@@ -230,36 +234,33 @@ static void bar_pane_gps_close_save_cb(GenericDialog *UNUSED(gd), gpointer data)
 
        if (info == TARGET_TEXT_PLAIN)
                {
-               location = decode_geo_parameters((gchar *)gtk_selection_data_get_data(selection_data));
+               location = decode_geo_parameters(reinterpret_cast<const gchar *>(gtk_selection_data_get_data(selection_data)));
                if (!(g_strstr_len(location,-1,"Error")))
                        {
                        latlong = g_strsplit(location, " ", 2);
                        champlain_view_center_on(CHAMPLAIN_VIEW(pgd->gps_view),
-                                                       g_ascii_strtod(latlong[0],NULL),
-                                                       g_ascii_strtod(latlong[1],NULL));
+                                                       g_ascii_strtod(latlong[0],nullptr),
+                                                       g_ascii_strtod(latlong[1],nullptr));
                        g_strfreev(latlong);
                        }
                g_free(location);
                }
-
-       return;
 }
 
 static void bar_pane_gps_dnd_init(gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
 
        gtk_drag_dest_set(pgd->widget,
-                         GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP,
+                         static_cast<GtkDestDefaults>(GTK_DEST_DEFAULT_MOTION | GTK_DEST_DEFAULT_HIGHLIGHT | GTK_DEST_DEFAULT_DROP),
                          bar_pane_gps_drop_types, n_gps_entry_drop_types,
-                         GDK_ACTION_COPY | GDK_ACTION_MOVE);
+                         static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_MOVE));
        g_signal_connect(G_OBJECT(pgd->widget), "drag_data_received",
                         G_CALLBACK(bar_pane_gps_dnd_receive), NULL);
 
 }
 
-static gboolean bar_gps_draw_direction (ClutterCanvas *UNUSED(canvas),
-                               cairo_t *cr, gpointer UNUSED(data))
+static gboolean bar_gps_draw_direction (ClutterCanvas *, cairo_t *cr, gpointer)
 {
        cairo_set_source_rgb(cr, 255, 0, 0);
 
@@ -279,49 +280,52 @@ static void bar_pane_gps_thumb_done_cb(ThumbLoader *tl, gpointer data)
        ClutterActor *actor;
 
        marker = CLUTTER_ACTOR(data);
-       fd = g_object_get_data(G_OBJECT(marker), "file_fd");
-       if (fd->thumb_pixbuf != NULL)
+       fd = static_cast<FileData *>(g_object_get_data(G_OBJECT(marker), "file_fd"));
+       if (fd->thumb_pixbuf != nullptr)
                {
                actor = gtk_clutter_texture_new();
-               gtk_clutter_texture_set_from_pixbuf(GTK_CLUTTER_TEXTURE(actor), fd->thumb_pixbuf, NULL);
+               gtk_clutter_texture_set_from_pixbuf(GTK_CLUTTER_TEXTURE(actor), fd->thumb_pixbuf, nullptr);
                champlain_label_set_image(CHAMPLAIN_LABEL(marker), actor);
                }
        thumb_loader_free(tl);
 }
 
-static void bar_pane_gps_thumb_error_cb(ThumbLoader *tl, gpointer UNUSED(data))
+static void bar_pane_gps_thumb_error_cb(ThumbLoader *tl, gpointer)
 {
        thumb_loader_free(tl);
 }
 
-static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButtonEvent *bevent, gpointer UNUSED(data))
+static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButtonEvent *bevent, gpointer)
 {
-       //PaneGPSData *pgd = static_cast<//PaneGPSData *>(data);
        FileData *fd;
-       ClutterActor *label_marker, *parent_marker;
+       ClutterActor *label_marker;
+       ClutterActor *parent_marker;
        ClutterColor marker_colour = { MARKER_COLOUR };
        ClutterColor text_colour = { TEXT_COLOUR };
        ClutterColor thumb_colour = { THUMB_COLOUR };
        gchar *current_text;
-       ClutterActor *actor, *direction;
+       ClutterActor *actor;
+       ClutterActor *direction;
        ClutterActor *current_image;
        GString *text;
-       gint height, width, rotate;
-       gchar *altitude = NULL;
+       gint height;
+       gint width;
+       GdkPixbufRotation rotate;
+       gchar *altitude = nullptr;
        ThumbLoader *tl;
 
        if (bevent->button == MOUSE_BUTTON_LEFT)
                {
                label_marker = CLUTTER_ACTOR(widget);
-               fd = g_object_get_data(G_OBJECT(label_marker), "file_fd");
+               fd = static_cast<FileData *>(g_object_get_data(G_OBJECT(label_marker), "file_fd"));
 
                /* If the marker is showing a thumbnail, delete it
                 */
                current_image = champlain_label_get_image(CHAMPLAIN_LABEL(label_marker));
-               if (current_image != NULL)
+               if (current_image != nullptr)
                        {
                        clutter_actor_destroy(CLUTTER_ACTOR(current_image));
-                       champlain_label_set_image(CHAMPLAIN_LABEL(label_marker), NULL);
+                       champlain_label_set_image(CHAMPLAIN_LABEL(label_marker), nullptr);
                        }
 
                current_text = g_strdup(champlain_label_get_text(CHAMPLAIN_LABEL(label_marker)));
@@ -335,13 +339,13 @@ static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButton
                         * If not, call the thumb_loader to generate a thumbnail and update the marker later in the
                         * thumb_loader callback
                         */
-                        if (fd->thumb_pixbuf != NULL)
+                       if (fd->thumb_pixbuf != nullptr)
                                {
                                actor = gtk_clutter_texture_new();
-                               gtk_clutter_texture_set_from_pixbuf(GTK_CLUTTER_TEXTURE(actor), fd->thumb_pixbuf, NULL);
+                               gtk_clutter_texture_set_from_pixbuf(GTK_CLUTTER_TEXTURE(actor), fd->thumb_pixbuf, nullptr);
                                champlain_label_set_image(CHAMPLAIN_LABEL(label_marker), actor);
                                }
-                       else if (fd->pixbuf != NULL)
+                       else if (fd->pixbuf != nullptr)
                                {
                                actor = gtk_clutter_texture_new();
                                width = gdk_pixbuf_get_width (fd->pixbuf);
@@ -363,7 +367,7 @@ static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButton
 
                                        gtk_clutter_texture_set_from_pixbuf(GTK_CLUTTER_TEXTURE(actor),
                                                                                gdk_pixbuf_rotate_simple(gdk_pixbuf_scale_simple(fd->pixbuf, THUMB_SIZE, height * THUMB_SIZE / width,
-                                                                               GDK_INTERP_NEAREST), rotate), NULL);
+                                                                               GDK_INTERP_NEAREST), rotate), nullptr);
                                        champlain_label_set_image(CHAMPLAIN_LABEL(label_marker), actor);
                                }
                        else
@@ -372,7 +376,7 @@ static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButton
                                thumb_loader_set_callbacks(tl,
                                                                                        bar_pane_gps_thumb_done_cb,
                                                                                        bar_pane_gps_thumb_error_cb,
-                                                                                       NULL,
+                                                                                       nullptr,
                                                                                        label_marker);
                                thumb_loader_start(tl, fd);
                                }
@@ -382,7 +386,7 @@ static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButton
                        g_string_append(text, text_from_time(fd->date));
                        g_string_append(text, "\n");
                        altitude = metadata_read_string(fd, "formatted.GPSAltitude", METADATA_FORMATTED);
-                       if (altitude != NULL)
+                       if (altitude != nullptr)
                                {
                                g_string_append(text, altitude);
                                }
@@ -428,12 +432,13 @@ static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButton
 
 static gboolean bar_pane_gps_create_markers_cb(gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
        gdouble latitude;
        gdouble longitude;
        gdouble compass;
        FileData *fd;
-       ClutterActor *parent_marker, *label_marker;
+       ClutterActor *parent_marker;
+       ClutterActor *label_marker;
        ClutterActor *direction;
        ClutterColor marker_colour = { MARKER_COLOUR };
        ClutterColor thumb_colour = { THUMB_COLOUR };
@@ -441,8 +446,8 @@ static gboolean bar_pane_gps_create_markers_cb(gpointer data)
        ClutterContent *canvas;
 
        gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pgd->progress),
-                                                       (gdouble)(pgd->selection_count - g_list_length(pgd->not_added)) /
-                                                       (gdouble)pgd->selection_count);
+                                                       static_cast<gdouble>(pgd->selection_count - g_list_length(pgd->not_added)) /
+                                                       static_cast<gdouble>(pgd->selection_count));
 
        message = g_string_new("");
        g_string_printf(message, "%i/%i", (pgd->selection_count - g_list_length(pgd->not_added)),
@@ -452,7 +457,7 @@ static gboolean bar_pane_gps_create_markers_cb(gpointer data)
 
        if(pgd->not_added)
                {
-               fd = pgd->not_added->data;
+               fd = static_cast<FileData *>(pgd->not_added->data);
                pgd->not_added = pgd->not_added->next;
 
                latitude = metadata_read_GPS_coord(fd, "Xmp.exif.GPSLatitude", 0);
@@ -499,7 +504,7 @@ static gboolean bar_pane_gps_create_markers_cb(gpointer data)
                        champlain_bounding_box_extend(pgd->bbox, latitude, longitude);
 
                        }
-               return TRUE;
+               return G_SOURCE_CONTINUE;
                }
 
        if (pgd->centre_map_checked)
@@ -509,16 +514,16 @@ static gboolean bar_pane_gps_create_markers_cb(gpointer data)
                        champlain_bounding_box_get_center(pgd->bbox, &latitude, &longitude);
                        champlain_view_go_to(CHAMPLAIN_VIEW(pgd->gps_view), latitude, longitude);
                        }
-                else if (pgd->num_added > 1)
+               else if (pgd->num_added > 1)
                        {
                        champlain_view_ensure_visible(CHAMPLAIN_VIEW(pgd->gps_view), pgd->bbox, TRUE);
                        }
                }
        gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(pgd->progress), 0);
-       gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pgd->progress), NULL);
+       gtk_progress_bar_set_text(GTK_PROGRESS_BAR(pgd->progress), nullptr);
        pgd->create_markers_id = 0;
 
-       return FALSE;
+       return G_SOURCE_REMOVE;
 }
 
 static void bar_pane_gps_update(PaneGPSData *pgd)
@@ -558,7 +563,7 @@ static void bar_pane_gps_update(PaneGPSData *pgd)
        if (pgd->bbox) champlain_bounding_box_free(pgd->bbox);
 
        list = layout_selection_list(pgd->pane.lw);
-       list = file_data_process_groups_in_selection(list, FALSE, NULL);
+       list = file_data_process_groups_in_selection(list, FALSE, nullptr);
 
        pgd->selection_list = list;
        pgd->not_added = list;
@@ -569,7 +574,7 @@ static void bar_pane_gps_update(PaneGPSData *pgd)
        pgd->num_added = 0;
 }
 
-void bar_pane_gps_set_map_source(PaneGPSData *pgd, const gchar *map_id)
+static void bar_pane_gps_set_map_source(PaneGPSData *pgd, const gchar *map_id)
 {
        ChamplainMapSource *map_source;
        ChamplainMapSourceFactory *map_factory;
@@ -577,7 +582,7 @@ void bar_pane_gps_set_map_source(PaneGPSData *pgd, const gchar *map_id)
        map_factory = champlain_map_source_factory_dup_default();
        map_source = champlain_map_source_factory_create(map_factory, map_id);
 
-       if (map_source != NULL)
+       if (map_source != nullptr)
                {
                g_object_set(G_OBJECT(pgd->gps_view), "map-source", map_source, NULL);
                }
@@ -585,9 +590,9 @@ void bar_pane_gps_set_map_source(PaneGPSData *pgd, const gchar *map_id)
        g_object_unref(map_factory);
 }
 
-void bar_pane_gps_enable_markers_checked_toggle_cb(GtkWidget *UNUSED(menu_widget), gpointer data)
+static void bar_pane_gps_enable_markers_checked_toggle_cb(GtkWidget *, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
 
        if (pgd->enable_markers_checked)
                {
@@ -599,9 +604,9 @@ void bar_pane_gps_enable_markers_checked_toggle_cb(GtkWidget *UNUSED(menu_widget
                }
 }
 
-static void bar_pane_gps_centre_map_checked_toggle_cb(GtkWidget *UNUSED(menu_widget), gpointer data)
+static void bar_pane_gps_centre_map_checked_toggle_cb(GtkWidget *, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
 
        if (pgd->centre_map_checked)
                {
@@ -615,7 +620,7 @@ static void bar_pane_gps_centre_map_checked_toggle_cb(GtkWidget *UNUSED(menu_wid
 
 static void bar_pane_gps_change_map_cb(GtkWidget *widget, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
        gchar *mapsource;
 
        if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)))
@@ -623,7 +628,7 @@ static void bar_pane_gps_change_map_cb(GtkWidget *widget, gpointer data)
 
        if (!pgd) return;
 
-       mapsource = g_object_get_data(G_OBJECT(widget), "menu_item_radio_data");
+       mapsource = static_cast<gchar *>(g_object_get_data(G_OBJECT(widget), "menu_item_radio_data"));
        bar_pane_gps_set_map_source(pgd, mapsource);
 }
 
@@ -633,7 +638,7 @@ static void bar_pane_gps_notify_selection(GtkWidget *bar, gint count)
 
        if (count == 0) return;
 
-       pgd = g_object_get_data(G_OBJECT(bar), "pane_data");
+       pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(bar), "pane_data"));
        if (!pgd) return;
 
        bar_pane_gps_update(pgd);
@@ -643,7 +648,7 @@ static void bar_pane_gps_set_fd(GtkWidget *bar, FileData *fd)
 {
        PaneGPSData *pgd;
 
-       pgd = g_object_get_data(G_OBJECT(bar), "pane_data");
+       pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(bar), "pane_data"));
        if (!pgd) return;
 
        file_data_unref(pgd->fd);
@@ -656,7 +661,7 @@ static gint bar_pane_gps_event(GtkWidget *bar, GdkEvent *event)
 {
        PaneGPSData *pgd;
 
-       pgd = g_object_get_data(G_OBJECT(bar), "pane_data");
+       pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(bar), "pane_data"));
        if (!pgd) return FALSE;
 
        if (gtk_widget_has_focus(pgd->widget)) return gtk_widget_event(GTK_WIDGET(pgd->widget), event);
@@ -670,13 +675,12 @@ static void bar_pane_gps_write_config(GtkWidget *pane, GString *outstr, gint ind
        gint zoom;
        ChamplainMapSource *mapsource;
        const gchar *map_id;
-       gchar *str = NULL;
-       GString *buffer = g_string_new(str);
        gdouble position;
        gint int_position;
-       gint w, h;
+       gint w;
+       gint h;
 
-       pgd = g_object_get_data(G_OBJECT(pane), "pane_data");
+       pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
        if (!pgd) return;
 
        WRITE_NL();
@@ -696,6 +700,8 @@ static void bar_pane_gps_write_config(GtkWidget *pane, GString *outstr, gint ind
        WRITE_NL();
        write_char_option(outstr, indent, "map-id", map_id);
 
+       GString *buffer = g_string_new(nullptr);
+
        g_object_get(G_OBJECT(pgd->gps_view), "zoom-level", &zoom, NULL);
        g_string_printf(buffer, "%d", zoom);
        WRITE_NL();
@@ -717,30 +723,28 @@ static void bar_pane_gps_write_config(GtkWidget *pane, GString *outstr, gint ind
        WRITE_NL();
        WRITE_STRING("/>");
 
-  g_object_unref(mapsource);
-
+       g_string_free(buffer, TRUE);
+       g_object_unref(mapsource);
 }
 
 static void bar_pane_gps_slider_changed_cb(GtkScaleButton *slider,
                                           gdouble zoom,
                                           gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
        GString *message;
 
        message = g_string_new("");
-       g_string_printf(message, _("Zoom %i"), (gint)zoom);
+       g_string_printf(message, _("Zoom %i"), static_cast<gint>(zoom));
 
-       g_object_set(G_OBJECT(CHAMPLAIN_VIEW(pgd->gps_view)), "zoom-level", (gint)zoom, NULL);
+       g_object_set(G_OBJECT(CHAMPLAIN_VIEW(pgd->gps_view)), "zoom-level", static_cast<gint>(zoom), NULL);
        gtk_widget_set_tooltip_text(GTK_WIDGET(slider), message->str);
        g_string_free(message, TRUE);
 
 }
-static void bar_pane_gps_view_state_changed_cb(ChamplainView *view,
-                                              GParamSpec *UNUSED(gobject),
-                                              gpointer data)
+static void bar_pane_gps_view_state_changed_cb(ChamplainView *view, GParamSpec *, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
        ChamplainState status;
        gint zoom;
        GString *message;
@@ -760,14 +764,14 @@ static void bar_pane_gps_view_state_changed_cb(ChamplainView *view,
                }
 
        gtk_widget_set_tooltip_text(GTK_WIDGET(pgd->slider), message->str);
-       gtk_scale_button_set_value(GTK_SCALE_BUTTON(pgd->slider), (gdouble)zoom);
+       gtk_scale_button_set_value(GTK_SCALE_BUTTON(pgd->slider), static_cast<gdouble>(zoom));
 
        g_string_free(message, TRUE);
 }
 
 static void bar_pane_gps_notify_cb(FileData *fd, NotifyType type, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
 
        if ((type & (NOTIFY_REREAD | NOTIFY_CHANGE | NOTIFY_METADATA)) &&
            g_list_find(pgd->selection_list, fd))
@@ -776,7 +780,7 @@ static void bar_pane_gps_notify_cb(FileData *fd, NotifyType type, gpointer data)
                }
 }
 
-const gchar *bar_pane_gps_get_map_id(PaneGPSData *pgd)
+static const gchar *bar_pane_gps_get_map_id(PaneGPSData *pgd)
 {
        const gchar *map_id;
        ChamplainMapSource *mapsource;
@@ -806,11 +810,11 @@ static GtkWidget *bar_pane_gps_menu(PaneGPSData *pgd)
 
        while (map_list)
                {
-               map_desc = (ChamplainMapSourceDesc *)(map_list->data);
+               map_desc = static_cast<ChamplainMapSourceDesc *>(map_list->data);
 
                menu_item_add_radio(menu,
                                    champlain_map_source_desc_get_name(map_desc),
-                                   (gpointer)champlain_map_source_desc_get_id(map_desc),
+                                   const_cast<gchar *>(champlain_map_source_desc_get_id(map_desc)),
                                    strcmp(champlain_map_source_desc_get_id(map_desc), current) == 0,
                                    G_CALLBACK(bar_pane_gps_change_map_cb), pgd);
 
@@ -835,7 +839,7 @@ static GtkWidget *bar_pane_gps_menu(PaneGPSData *pgd)
 
 /* Determine if the map is to be re-centred on the marker when another photo is selected
  */
-void bar_pane_gps_map_centreing(PaneGPSData *pgd)
+static void bar_pane_gps_map_centreing(PaneGPSData *pgd)
 {
        GenericDialog *gd;
        GString *message = g_string_new("");
@@ -852,19 +856,26 @@ void bar_pane_gps_map_centreing(PaneGPSData *pgd)
                }
 
        gd = generic_dialog_new(_("Map centering"),
-                               "map_centering", NULL, TRUE, NULL, pgd);
-       generic_dialog_add_message(gd, GTK_STOCK_DIALOG_INFO,
+                               "map_centering", nullptr, TRUE, nullptr, pgd);
+       generic_dialog_add_message(gd, GQ_ICON_DIALOG_INFO,
                                "Map Centering", message->str, TRUE);
-       generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, NULL, TRUE);
+       generic_dialog_add_button(gd, GQ_ICON_OK, "OK", nullptr, TRUE);
 
        gtk_widget_show(gd->dialog);
 
        g_string_free(message, TRUE);
 }
 
-static gboolean bar_pane_gps_map_keypress_cb(GtkWidget *UNUSED(widget), GdkEventButton *bevent, gpointer data)
+#ifdef HAVE_GTK4
+static gboolean bar_pane_gps_map_keypress_cb(GtkWidget *, GdkEventButton *bevent, gpointer data)
+{
+/* @FIXME GTK4 stub */
+       return FALSE;
+}
+#else
+static gboolean bar_pane_gps_map_keypress_cb(GtkWidget *, GdkEventButton *bevent, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
        GtkWidget *menu;
        GtkClipboard *clipboard;
        gchar *geo_coords;
@@ -872,15 +883,17 @@ static gboolean bar_pane_gps_map_keypress_cb(GtkWidget *UNUSED(widget), GdkEvent
        if (bevent->button == MOUSE_BUTTON_RIGHT)
                {
                menu = bar_pane_gps_menu(pgd);
-               gtk_menu_popup_at_pointer(GTK_MENU(menu), NULL);
+               gtk_menu_popup_at_pointer(GTK_MENU(menu), nullptr);
                return TRUE;
                }
-       else if (bevent->button == MOUSE_BUTTON_MIDDLE)
+
+       if (bevent->button == MOUSE_BUTTON_MIDDLE)
                {
                bar_pane_gps_map_centreing(pgd);
                return TRUE;
                }
-       else if (bevent->button == MOUSE_BUTTON_LEFT)
+
+       if (bevent->button == MOUSE_BUTTON_LEFT)
                {
                clipboard = gtk_clipboard_get(GDK_SELECTION_PRIMARY);
                geo_coords = g_strdup_printf("%lf %lf",
@@ -894,15 +907,14 @@ static gboolean bar_pane_gps_map_keypress_cb(GtkWidget *UNUSED(widget), GdkEvent
 
                return TRUE;
                }
-       else
-               {
-               return FALSE;
-               }
+
+       return FALSE;
 }
+#endif
 
-static void bar_pane_gps_destroy(GtkWidget *UNUSED(widget), gpointer data)
+static void bar_pane_gps_destroy(GtkWidget *, gpointer data)
 {
-       PaneGPSData *pgd = static_cast<PaneGPSData *>(data);
+       auto pgd = static_cast<PaneGPSData *>(data);
 
        file_data_unregister_notify_func(bar_pane_gps_notify_cb, pgd);
 
@@ -924,12 +936,16 @@ GtkWidget *bar_pane_gps_new(const gchar *id, const gchar *title, const gchar *ma
                                        gboolean expanded, gint height)
 {
        PaneGPSData *pgd;
-       GtkWidget *vbox, *frame;
+       GtkWidget *vbox;
+       GtkWidget *frame;
        GtkWidget *gpswidget;
-       GtkWidget *status, *state, *progress, *slider;
+       GtkWidget *status;
+       GtkWidget *state;
+       GtkWidget *progress;
+       GtkWidget *slider;
        ChamplainMarkerLayer *layer;
        ChamplainView *view;
-       const gchar *slider_list[] = {"zoom-in", "zoom-out", NULL};
+       const gchar *slider_list[] = {GQ_ICON_ZOOM_IN, GQ_ICON_ZOOM_OUT, nullptr};
        const gchar **slider_icons = slider_list;
 
        pgd = g_new0(PaneGPSData, 1);
@@ -944,20 +960,24 @@ GtkWidget *bar_pane_gps_new(const gchar *id, const gchar *title, const gchar *ma
        pgd->pane.expanded = expanded;
        pgd->height = height;
 
-       frame = gtk_frame_new(NULL);
+       frame = gtk_frame_new(nullptr);
        DEBUG_NAME(frame);
        vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
 
        gpswidget = gtk_champlain_embed_new();
        view = gtk_champlain_embed_get_view(GTK_CHAMPLAIN_EMBED(gpswidget));
 
-       gtk_box_pack_start(GTK_BOX(vbox), gpswidget, TRUE, TRUE, 0);
+       gq_gtk_box_pack_start(GTK_BOX(vbox), gpswidget, TRUE, TRUE, 0);
        gtk_container_add(GTK_CONTAINER(frame), vbox);
 
        status = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,0);
+#ifdef HAVE_GTK4
+       slider = gtk_scale_button_new(1, 17, 1, slider_icons);
+#else
        slider = gtk_scale_button_new(GTK_ICON_SIZE_SMALL_TOOLBAR, 1, 17, 1, slider_icons);
+#endif
        gtk_widget_set_tooltip_text(slider, _("Zoom"));
-       gtk_scale_button_set_value(GTK_SCALE_BUTTON(slider), (gdouble)zoom);
+       gtk_scale_button_set_value(GTK_SCALE_BUTTON(slider), static_cast<gdouble>(zoom));
 
        progress = gtk_progress_bar_new();
        gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progress), "");
@@ -968,10 +988,10 @@ GtkWidget *bar_pane_gps_new(const gchar *id, const gchar *title, const gchar *ma
        gtk_label_set_ellipsize(GTK_LABEL(state), PANGO_ELLIPSIZE_START);
        gtk_widget_set_tooltip_text(state, _("Zoom level"));
 
-       gtk_box_pack_start(GTK_BOX(status), GTK_WIDGET(slider), FALSE, FALSE, 0);
-       gtk_box_pack_start(GTK_BOX(status), GTK_WIDGET(state), FALSE, FALSE, 5);
-       gtk_box_pack_end(GTK_BOX(status), GTK_WIDGET(progress), FALSE, FALSE, 0);
-       gtk_box_pack_end(GTK_BOX(vbox),GTK_WIDGET(status), FALSE, FALSE, 0);
+       gq_gtk_box_pack_start(GTK_BOX(status), GTK_WIDGET(slider), FALSE, FALSE, 0);
+       gq_gtk_box_pack_start(GTK_BOX(status), GTK_WIDGET(state), FALSE, FALSE, 5);
+       gq_gtk_box_pack_end(GTK_BOX(status), GTK_WIDGET(progress), FALSE, FALSE, 0);
+       gq_gtk_box_pack_end(GTK_BOX(vbox),GTK_WIDGET(status), FALSE, FALSE, 0);
 
        layer = champlain_marker_layer_new();
        champlain_view_add_layer(view, CHAMPLAIN_LAYER(layer));
@@ -998,7 +1018,7 @@ GtkWidget *bar_pane_gps_new(const gchar *id, const gchar *title, const gchar *ma
        g_object_set_data(G_OBJECT(pgd->widget), "pane_data", pgd);
        g_signal_connect(G_OBJECT(pgd->widget), "destroy", G_CALLBACK(bar_pane_gps_destroy), pgd);
 
-       gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
+       gq_gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
 
        gtk_widget_set_size_request(pgd->widget, -1, height);
 
@@ -1021,7 +1041,7 @@ GtkWidget *bar_pane_gps_new(const gchar *id, const gchar *title, const gchar *ma
 GtkWidget *bar_pane_gps_new_from_config(const gchar **attribute_names, const gchar **attribute_values)
 {
        gchar *title = g_strdup(_("GPS Map"));
-       gchar *map_id = NULL;
+       gchar *map_id = nullptr;
        gboolean expanded = TRUE;
        gint height = 350;
        gint zoom = 7;
@@ -1061,8 +1081,8 @@ GtkWidget *bar_pane_gps_new_from_config(const gchar **attribute_names, const gch
                }
 
        bar_pane_translate_title(PANE_COMMENT, id, &title);
-       latitude = (gdouble)int_latitude / 1000000;
-       longitude = (gdouble)int_longitude / 1000000;
+       latitude = static_cast<gdouble>(int_latitude) / 1000000;
+       longitude = static_cast<gdouble>(int_longitude) / 1000000;
        ret = bar_pane_gps_new(id, title, map_id, zoom, latitude, longitude, expanded, height);
        g_free(title);
        g_free(map_id);
@@ -1075,14 +1095,16 @@ void bar_pane_gps_update_from_config(GtkWidget *pane, const gchar **attribute_na
 {
        PaneGPSData *pgd;
        gint zoom;
-       gint int_longitude, int_latitude;
-       gdouble longitude, latitude;
+       gint int_longitude;
+       gint int_latitude;
+       gdouble longitude;
+       gdouble latitude;
 
-       pgd = g_object_get_data(G_OBJECT(pane), "pane_data");
+       pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
        if (!pgd)
                return;
 
-       gchar *title = NULL;
+       gchar *title = nullptr;
 
        while (*attribute_names)
        {
@@ -1106,13 +1128,13 @@ void bar_pane_gps_update_from_config(GtkWidget *pane, const gchar **attribute_na
                        }
                if (READ_INT_CLAMP_FULL("longitude", int_longitude, -90000000, +90000000))
                        {
-                       longitude = int_longitude / 1000000;
+                       longitude = int_longitude / 1000000.0;
                        g_object_set(G_OBJECT(CHAMPLAIN_VIEW(pgd->gps_view)), "longitude", longitude, NULL);
                        continue;
                        }
                if (READ_INT_CLAMP_FULL("latitude", int_latitude, -90000000, +90000000))
                        {
-                       latitude = int_latitude / 1000000;
+                       latitude = int_latitude / 1000000.0;
                        g_object_set(G_OBJECT(CHAMPLAIN_VIEW(pgd->gps_view)), "latitude", latitude, NULL);
                        continue;
                        }