[niepce/gtk4] gtk4: replace osm-gps-map with shumate
- From: Hubert Figuière <hub src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [niepce/gtk4] gtk4: replace osm-gps-map with shumate
- Date: Sat, 14 May 2022 02:46:25 +0000 (UTC)
commit 64499ff9b3ad510f079bce24830286245121d517
Author: Hubert Figuière <hub figuiere net>
Date: Wed May 11 19:29:23 2022 -0400
gtk4: replace osm-gps-map with shumate
configure.ac | 2 +-
src/fwk/toolkit/mapcontroller.cpp | 75 +++++++++++++++------------------------
src/fwk/toolkit/mapcontroller.hpp | 4 +--
3 files changed, 32 insertions(+), 49 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index b365809..60075c9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,7 +58,7 @@ AC_LANG_CPLUSPLUS
AC_LANG_COMPILER_REQUIRE
dnl Framework requirements.
-PKG_CHECK_MODULES(FRAMEWORK, [glibmm-2.68 >= $LIBGLIBMM_VERSION giomm-2.68 >= $LIBGIOMM_VERSION gthread-2.0
gtkmm-4.0 >= $LIBGTKMM_VERSION sqlite3 >= $SQLITE_VERSION exempi-2.0 >= $EXEMPI_VERSION libxml-2.0 >=
$LIBXML2_VERSION])
+PKG_CHECK_MODULES(FRAMEWORK, [glibmm-2.68 >= $LIBGLIBMM_VERSION giomm-2.68 >= $LIBGIOMM_VERSION gthread-2.0
gtkmm-4.0 >= $LIBGTKMM_VERSION sqlite3 >= $SQLITE_VERSION exempi-2.0 >= $EXEMPI_VERSION libxml-2.0 >=
$LIBXML2_VERSION shumate-1.0])
dnl optional framework
PKG_CHECK_MODULES(GPHOTO, [libgphoto2 >= $LIBGPHOTO_VERSION libgphoto2_port])
diff --git a/src/fwk/toolkit/mapcontroller.cpp b/src/fwk/toolkit/mapcontroller.cpp
index bd8029b..4f9c46f 100644
--- a/src/fwk/toolkit/mapcontroller.cpp
+++ b/src/fwk/toolkit/mapcontroller.cpp
@@ -22,9 +22,7 @@
#include <gtkmm/widget.h>
#include <gtkmm/label.h>
-#if 0
-#include <osm-gps-map.h>
-#endif
+#include <shumate/shumate.h>
namespace fwk {
@@ -32,44 +30,29 @@ class MapController::Priv {
public:
Priv()
: m_map(nullptr)
+ , m_registry(nullptr)
{
}
~Priv()
{
- // XXX
- #if 0
if (m_map) {
g_object_unref(G_OBJECT(m_map));
}
- #endif
+ if (m_registry) {
+ g_object_unref(G_OBJECT(m_registry));
+ }
}
void create_widget()
{
- #if 0
- m_map = OSM_GPS_MAP(osm_gps_map_new());
+ m_map = SHUMATE_SIMPLE_MAP(shumate_simple_map_new());
+ m_registry = shumate_map_source_registry_new_with_defaults();
+ shumate_simple_map_set_map_source(
+ SHUMATE_SIMPLE_MAP(m_map),
+ SHUMATE_MAP_SOURCE(g_list_model_get_item(G_LIST_MODEL(m_registry), 0)));
g_object_ref(m_map);
-
- OsmGpsMapLayer* osd = OSM_GPS_MAP_LAYER(
- g_object_new (OSM_TYPE_GPS_MAP_OSD,
- "show-scale", TRUE,
- "show-coordinates", TRUE,
- "show-crosshair", TRUE,
- "show-dpad", TRUE,
- "show-zoom", TRUE,
- "show-gps-in-dpad", TRUE,
- "show-gps-in-zoom", FALSE,
- "dpad-radius", 30,
- nullptr));
- osm_gps_map_layer_add(OSM_GPS_MAP(m_map), osd);
- g_object_unref(G_OBJECT(osd));
- #endif
}
- #if 0
- OsmGpsMap*
- #else
- GtkWidget*
- #endif
- m_map;
+ ShumateSimpleMap* m_map;
+ ShumateMapSourceRegistry* m_registry;
};
MapController::MapController()
@@ -83,8 +66,7 @@ MapController::~MapController()
delete m_priv;
}
-Gtk::Widget *
-MapController::buildWidget()
+Gtk::Widget* MapController::buildWidget()
{
if (m_widget) {
return m_widget;
@@ -92,10 +74,11 @@ MapController::buildWidget()
m_priv->create_widget();
- m_widget = Gtk::manage(new Gtk::Label("This is a map")); //Glib::wrap(GTK_WIDGET(m_priv->m_map)));
+ m_widget = Gtk::manage(Glib::wrap(GTK_WIDGET(m_priv->m_map)));
+ m_widget->set_vexpand(true);
// Default position. Somewhere over Montréal, QC
- setZoomLevel(10);
+ setZoomLevel(10.0);
centerOn(45.5030854, -73.5698944);
return m_widget;
@@ -103,30 +86,30 @@ MapController::buildWidget()
void MapController::centerOn(double lat, double longitude)
{
- #if 0
- osm_gps_map_set_center(m_priv->m_map, lat, longitude);
- #endif
+ ShumateViewport* viewport =
+ shumate_simple_map_get_viewport(m_priv->m_map);
+ shumate_location_set_location(SHUMATE_LOCATION(viewport), lat, longitude);
}
void MapController::zoomIn()
{
- #if 0
- osm_gps_map_zoom_in(m_priv->m_map);
- #endif
+ ShumateViewport* viewport =
+ shumate_simple_map_get_viewport(m_priv->m_map);
+ shumate_viewport_zoom_in(viewport);
}
void MapController::zoomOut()
{
- #if 0
- osm_gps_map_zoom_out(m_priv->m_map);
- #endif
+ ShumateViewport* viewport =
+ shumate_simple_map_get_viewport(m_priv->m_map);
+ shumate_viewport_zoom_in(viewport);
}
-void MapController::setZoomLevel(uint8_t level)
+void MapController::setZoomLevel(double level)
{
- #if 0
- osm_gps_map_set_zoom(m_priv->m_map, level);
- #endif
+ ShumateViewport* viewport =
+ shumate_simple_map_get_viewport(m_priv->m_map);
+ shumate_viewport_set_zoom_level(viewport, level);
}
}
diff --git a/src/fwk/toolkit/mapcontroller.hpp b/src/fwk/toolkit/mapcontroller.hpp
index a5b31d7..e22667f 100644
--- a/src/fwk/toolkit/mapcontroller.hpp
+++ b/src/fwk/toolkit/mapcontroller.hpp
@@ -1,7 +1,7 @@
/*
* niepce - fwk/toolkit/mapcontroller.hpp
*
- * Copyright (C) 2014-2019 Hubert Figuière
+ * Copyright (C) 2014-2022 Hubert Figuière
*
* 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
@@ -38,7 +38,7 @@ public:
void zoomIn();
void zoomOut();
- void setZoomLevel(uint8_t level); // 1 to 20
+ void setZoomLevel(double level); // 1 to 20
private:
class Priv;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]