* 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
{
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;
}
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)
_("\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", 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, nullptr,
+ 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);
}
}
static gboolean bar_pane_gps_marker_keypress_cb(GtkWidget *widget, ClutterButtonEvent *bevent, gpointer)
{
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;
+ gint height;
+ gint width;
GdkPixbufRotation rotate;
gchar *altitude = nullptr;
ThumbLoader *tl;
* If not, call the thumb_loader to generate a thumbnail and update the marker later in the
* thumb_loader callback
*/
- if (fd->thumb_pixbuf != nullptr)
+ if (fd->thumb_pixbuf != nullptr)
{
actor = gtk_clutter_texture_new();
gtk_clutter_texture_set_from_pixbuf(GTK_CLUTTER_TEXTURE(actor), fd->thumb_pixbuf, nullptr);
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 };
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);
}
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;
g_object_unref(map_factory);
}
-void bar_pane_gps_enable_markers_checked_toggle_cb(GtkWidget *, gpointer data)
+static void bar_pane_gps_enable_markers_checked_toggle_cb(GtkWidget *, gpointer data)
{
auto pgd = static_cast<PaneGPSData *>(data);
const gchar *map_id;
gdouble position;
gint int_position;
- gint w, h;
+ gint w;
+ gint h;
pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
if (!pgd) return;
}
}
-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;
/* 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("");
gd = generic_dialog_new(_("Map centering"),
"map_centering", nullptr, TRUE, nullptr, pgd);
- generic_dialog_add_message(gd, GTK_STOCK_DIALOG_INFO,
+ generic_dialog_add_message(gd, GQ_ICON_DIALOG_INFO,
"Map Centering", message->str, TRUE);
- generic_dialog_add_button(gd, GTK_STOCK_OK, nullptr, nullptr, TRUE);
+ generic_dialog_add_button(gd, GQ_ICON_OK, "OK", nullptr, TRUE);
gtk_widget_show(gd->dialog);
g_string_free(message, TRUE);
}
+#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)
{
auto pgd = static_cast<PaneGPSData *>(data);
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",
return TRUE;
}
- else
- {
- return FALSE;
- }
+
+ return FALSE;
}
+#endif
static void bar_pane_gps_destroy(GtkWidget *, gpointer data)
{
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", nullptr};
+ const gchar *slider_list[] = {GQ_ICON_ZOOM_IN, GQ_ICON_ZOOM_OUT, nullptr};
const gchar **slider_icons = slider_list;
pgd = g_new0(PaneGPSData, 1);
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), static_cast<gdouble>(zoom));
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));
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);
{
PaneGPSData *pgd;
gint zoom;
- gint int_longitude, int_latitude;
- gdouble longitude, latitude;
+ gint int_longitude;
+ gint int_latitude;
+ gdouble longitude;
+ gdouble latitude;
pgd = static_cast<PaneGPSData *>(g_object_get_data(G_OBJECT(pane), "pane_data"));
if (!pgd)
}
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;
}