X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fgis-viewer.c;h=e7e772fadbd5c7702c4b8368ef3bfafae7cdc968;hb=e5da3e49e161851790d35bc8b7267424dea73973;hp=79dab10648f80edee73789802a3abb75830c4846;hpb=a15a1829ffbf0176930601ee9ac7cc0c07fa2d06;p=grits diff --git a/src/gis-viewer.c b/src/gis-viewer.c index 79dab10..e7e772f 100644 --- a/src/gis-viewer.c +++ b/src/gis-viewer.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2009 Andy Spencer + * Copyright (C) 2009-2010 Andy Spencer * * 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 @@ -26,15 +26,8 @@ /* Constants */ -enum { - PROP_0, - PROP_TIME, - PROP_SITE, - PROP_OFFLINE, -}; enum { SIG_TIME_CHANGED, - SIG_SITE_CHANGED, SIG_LOCATION_CHANGED, SIG_ROTATION_CHANGED, SIG_REFRESH, @@ -77,11 +70,6 @@ static void _gis_viewer_emit_time_changed(GisViewer *self) g_signal_emit(self, signals[SIG_TIME_CHANGED], 0, self->time); } -static void _gis_viewer_emit_site_changed(GisViewer *self) -{ - g_signal_emit(self, signals[SIG_SITE_CHANGED], 0, - self->site); -} static void _gis_viewer_emit_refresh(GisViewer *self) { g_signal_emit(self, signals[SIG_REFRESH], 0); @@ -121,7 +109,7 @@ static gboolean on_key_press(GisViewer *self, GdkEventKey *event, gpointer _) else if (kv == GDK_J) gis_viewer_rotate(self, 2, 0, 0); else if (kv == GDK_K) gis_viewer_rotate(self, -2, 0, 0); else if (kv == GDK_L) gis_viewer_rotate(self, 0, 0, 2); - return TRUE; + return FALSE; } static void on_view_changed(GisViewer *self, gdouble _1, gdouble _2, gdouble _3) @@ -132,6 +120,13 @@ static void on_view_changed(GisViewer *self, /*********** * Methods * ***********/ +void gis_viewer_setup(GisViewer *self, GisPlugins *plugins, GisPrefs *prefs) +{ + self->plugins = plugins; + self->prefs = prefs; + self->offline = gis_prefs_get_boolean(prefs, "gis/offline", NULL); +} + void gis_viewer_set_time(GisViewer *self, const char *time) { g_assert(GIS_IS_VIEWER(self)); @@ -216,23 +211,6 @@ void gis_viewer_rotate(GisViewer *self, gdouble x, gdouble y, gdouble z) _gis_viewer_emit_rotation_changed(self); } -/* To be deprecated, use {get,set}_location */ -void gis_viewer_set_site(GisViewer *self, const gchar *site) -{ - g_assert(GIS_IS_VIEWER(self)); - g_debug("GisViewer: set_site"); - g_free(self->site); - self->site = g_strdup(site); - _gis_viewer_emit_site_changed(self); -} - -gchar *gis_viewer_get_site(GisViewer *self) -{ - g_assert(GIS_IS_VIEWER(self)); - g_debug("GisViewer: get_site - %s", self->site); - return self->site; -} - void gis_viewer_refresh(GisViewer *self) { g_debug("GisViewer: refresh"); @@ -243,6 +221,7 @@ void gis_viewer_set_offline(GisViewer *self, gboolean offline) { g_assert(GIS_IS_VIEWER(self)); g_debug("GisViewer: set_offline - %d", offline); + gis_prefs_set_boolean(self->prefs, "gis/offline", offline); self->offline = offline; _gis_viewer_emit_offline(self); } @@ -292,22 +271,6 @@ void gis_viewer_set_height_func(GisViewer *self, GisTile *tile, klass->set_height_func(self, tile, height_func, user_data, update); } -void gis_viewer_render_tile(GisViewer *self, GisTile *tile) -{ - GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self); - if (!klass->render_tile) - g_warning("GisViewer: render_tile - Unimplemented"); - klass->render_tile(self, tile); -} - -void gis_viewer_render_tiles(GisViewer *self, GisTile *root) -{ - GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self); - if (!klass->render_tiles) - g_warning("GisViewer: render_tiles - Unimplemented"); - klass->render_tiles(self, root); -} - void gis_viewer_begin(GisViewer *self) { GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self); @@ -324,6 +287,23 @@ void gis_viewer_end(GisViewer *self) klass->end(self); } +gpointer gis_viewer_add(GisViewer *self, GisObject *object, + gint level, gboolean sort) +{ + GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self); + if (!klass->add) + g_warning("GisViewer: add - Unimplemented"); + return klass->add(self, object, level, sort); +} + +void gis_viewer_remove(GisViewer *self, gpointer ref) +{ + GisViewerClass *klass = GIS_VIEWER_GET_CLASS(self); + if (!klass->remove) + g_warning("GisViewer: remove - Unimplemented"); + klass->remove(self, ref); +} + /**************** * GObject code * ****************/ @@ -333,7 +313,6 @@ static void gis_viewer_init(GisViewer *self) g_debug("GisViewer: init"); /* Default values */ self->time = g_strdup(""); - self->site = g_strdup(""); self->location[0] = 40; self->location[1] = -100; self->location[2] = 1.5*EARTH_R; @@ -352,60 +331,13 @@ static void gis_viewer_finalize(GObject *gobject) g_debug("GisViewer: finalize"); GisViewer *self = GIS_VIEWER(gobject); g_free(self->time); - g_free(self->site); G_OBJECT_CLASS(gis_viewer_parent_class)->finalize(gobject); } -static void gis_viewer_set_property(GObject *object, guint property_id, - const GValue *value, GParamSpec *pspec) -{ - g_debug("GisViewer: set_property"); - GisViewer *self = GIS_VIEWER(object); - switch (property_id) { - case PROP_TIME: gis_viewer_set_time (self, g_value_get_string (value)); break; - case PROP_SITE: gis_viewer_set_site (self, g_value_get_string (value)); break; - case PROP_OFFLINE: gis_viewer_set_offline(self, g_value_get_boolean(value)); break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); - } -} -static void gis_viewer_get_property(GObject *object, guint property_id, - GValue *value, GParamSpec *pspec) -{ - g_debug("GisViewer: get_property"); - GisViewer *self = GIS_VIEWER(object); - switch (property_id) { - case PROP_TIME: g_value_set_string (value, gis_viewer_get_time (self)); break; - case PROP_SITE: g_value_set_string (value, gis_viewer_get_site (self)); break; - case PROP_OFFLINE: g_value_set_boolean(value, gis_viewer_get_offline(self)); break; - default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); - } -} static void gis_viewer_class_init(GisViewerClass *klass) { g_debug("GisViewer: class_init"); GObjectClass *gobject_class = G_OBJECT_CLASS(klass); gobject_class->finalize = gis_viewer_finalize; - gobject_class->get_property = gis_viewer_get_property; - gobject_class->set_property = gis_viewer_set_property; - g_object_class_install_property(gobject_class, PROP_TIME, - g_param_spec_pointer( - "time", - "time of the current frame", - "(format unknown)", - G_PARAM_READWRITE)); - g_object_class_install_property(gobject_class, PROP_SITE, - g_param_spec_pointer( - "site", - "site seen by the viewerport", - "Site of the viewerport. " - "Currently this is the name of the radar site.", - G_PARAM_READWRITE)); - g_object_class_install_property(gobject_class, PROP_OFFLINE, - g_param_spec_pointer( - "offline", - "whether the viewer should access the network", - "Offline state of the viewer. " - "If set to true, the viewer will not access the network", - G_PARAM_READWRITE)); signals[SIG_TIME_CHANGED] = g_signal_new( "time-changed", G_TYPE_FROM_CLASS(gobject_class), @@ -417,17 +349,6 @@ static void gis_viewer_class_init(GisViewerClass *klass) G_TYPE_NONE, 1, G_TYPE_STRING); - signals[SIG_SITE_CHANGED] = g_signal_new( - "site-changed", - G_TYPE_FROM_CLASS(gobject_class), - G_SIGNAL_RUN_LAST, - 0, - NULL, - NULL, - g_cclosure_marshal_VOID__STRING, - G_TYPE_NONE, - 1, - G_TYPE_STRING); signals[SIG_LOCATION_CHANGED] = g_signal_new( "location-changed", G_TYPE_FROM_CLASS(gobject_class),