/*
- * Copyright (C) 2009 Andy Spencer <spenceal@rose-hulman.edu>
+ * Copyright (C) 2009-2010 Andy Spencer <andy753421@gmail.com>
*
* 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
/* 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,
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);
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)
/***********
* 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));
_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");
{
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);
}
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 *
****************/
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;
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),
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),