[gnome-maps/wip/jonasdn/vector-tiles] Add notifcation on parse-error
- From: Jonas Danielsson <jonasdn src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-maps/wip/jonasdn/vector-tiles] Add notifcation on parse-error
- Date: Fri, 8 May 2015 19:24:55 +0000 (UTC)
commit e1207a5103d8242bfb89cdef0d97eb96f03309a8
Author: Jonas Danielsson <jonas threetimestwo org>
Date: Fri May 8 21:24:22 2015 +0200
Add notifcation on parse-error
lib/maps-mapbox-renderer.c | 38 ++++++++++++++++++++++++++++++++++++--
src/mapView.js | 12 ++++++++++--
2 files changed, 46 insertions(+), 4 deletions(-)
---
diff --git a/lib/maps-mapbox-renderer.c b/lib/maps-mapbox-renderer.c
index 1b50207..a3b13cf 100644
--- a/lib/maps-mapbox-renderer.c
+++ b/lib/maps-mapbox-renderer.c
@@ -23,6 +23,14 @@
#include "maps-mapbox-renderer.h"
#include "maps-mapbox-text-layer.h"
+enum
+{
+ PARSE_ERROR,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0, };
+
struct _MapsMapboxRendererPrivate
{
gchar *data;
@@ -80,6 +88,22 @@ maps_mapbox_renderer_class_init (MapsMapboxRendererClass *klass)
renderer_class->set_data = set_data;
renderer_class->render = render;
+
+ /**
+ * MapsMapboxRenderer::parse-error:
+ *
+ * Indicates that the parsing of the style file failed.
+ *
+ */
+ signals[PARSE_ERROR] =
+ g_signal_new ("parse-error",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0, NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING);
}
@@ -124,8 +148,18 @@ on_stylesheet_changed (GFileMonitor *monitor,
MapsMapboxRenderer *renderer)
{
if (event_type == G_FILE_MONITOR_EVENT_CHANGED) {
- vtile_mapcss_load (renderer->priv->stylesheet,
- g_file_get_path (file), NULL);
+ VTileMapCSS *stylesheet;
+ GError *error = NULL;
+
+ stylesheet = vtile_mapcss_new();
+ if (!vtile_mapcss_load (stylesheet, g_file_get_path (file), &error)) {
+ g_object_unref (stylesheet);
+ g_signal_emit_by_name (renderer, "parse-error",
+ g_strdup (error->message));
+ return;
+ }
+ g_object_unref (renderer->priv->stylesheet);
+ renderer->priv->stylesheet = stylesheet;
maps_mapbox_text_layer_remove_all (renderer->priv->layer);
champlain_view_zoom_out (renderer->priv->view);
diff --git a/src/mapView.js b/src/mapView.js
index 51f8b72..f85b691 100644
--- a/src/mapView.js
+++ b/src/mapView.js
@@ -151,8 +151,16 @@ const MapView = new Lang.Class({
let renderer = new Maps.MapboxRenderer();
renderer.set_view(this.view);
- renderer.load_css(GLib.build_filenamev([pkg.pkgdatadir,
- 'gnome-maps.mapcss']));
+ renderer.connect('parse-error', (function(renderer, error) {
+ Application.notificationManager.showMessage(error);
+ }).bind(this));
+
+ try {
+ renderer.load_css(GLib.build_filenamev([pkg.pkgdatadir,
+ 'gnome-maps.mapcss']));
+ } catch(e) {
+ Application.notificationManager.showMessage(e.message);
+ }
let tile = Champlain.NetworkTileSource.new_full(
id,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]