+ AWeatherRadar *self = AWEATHER_RADAR(_self);
+ load_colormap(self, g_object_get_data(G_OBJECT(button), "type" ));
+ load_sweep (self, g_object_get_data(G_OBJECT(button), "sweep"));
+}
+
+static void on_time_changed(AWeatherView *view, char *time, gpointer _self)
+{
+ AWeatherRadar *self = AWEATHER_RADAR(_self);
+ g_debug("AWeatherRadar: on_time_changed - setting time");
+ // format: http://mesonet.agron.iastate.edu/data/nexrd2/raw/KABR/KABR_20090510_0323
+ char *site = aweather_view_get_site(view);
+ char *base = "http://mesonet.agron.iastate.edu/data/";
+ char *path = g_strdup_printf("nexrd2/raw/K%s/K%s_%s", site, site, time);
+
+ /* Clear out children */
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(self->config_body));
+ if (child)
+ gtk_widget_destroy(child);
+ gtk_container_add(GTK_CONTAINER(self->config_body),
+ gtk_label_new("Loading radar..."));
+ gtk_widget_show_all(self->config_body);
+ if (self->cur_radar)
+ RSL_free_radar(self->cur_radar);
+ self->cur_radar = NULL;
+ self->cur_sweep = NULL;
+ aweather_gui_gl_redraw(self->gui);
+
+ /* Start loading the new radar */
+ cache_file(base, path, AWEATHER_AUTOMATIC, cached_cb, self);
+ g_free(path);
+}
+
+static void on_site_changed(AWeatherView *view, char *site, gpointer _self)
+{
+ AWeatherRadar *self = AWEATHER_RADAR(_self);
+ g_debug("AWeatherRadar: on_site_changed - Loading wsr88d list for %s", site);
+ char *time = NULL;
+ update_times(self, site, &time);
+ aweather_view_set_time(view, time);
+
+ g_free(time);
+}
+
+static void on_refresh(AWeatherView *view, gpointer user_data, gpointer _self)
+{
+ AWeatherRadar *self = AWEATHER_RADAR(_self);
+ char *site = aweather_view_get_site(view);
+ char *time = NULL;
+ update_times(self, site, &time);
+ aweather_view_set_time(view, time);
+ g_free(time);
+}
+
+/***********
+ * Methods *
+ ***********/
+AWeatherRadar *aweather_radar_new(AWeatherGui *gui)
+{
+ g_debug("AWeatherRadar: new");
+ AWeatherRadar *self = g_object_new(AWEATHER_TYPE_RADAR, NULL);
+ self->gui = gui;
+
+ GtkWidget *config = aweather_gui_get_widget(gui, "tabs");
+ AWeatherView *view = aweather_gui_get_view(gui);
+
+ /* Add configuration tab */
+ self->config_body = gtk_alignment_new(0, 0, 1, 1);
+ gtk_container_set_border_width(GTK_CONTAINER(self->config_body), 5);
+ gtk_container_add(GTK_CONTAINER(self->config_body), gtk_label_new("No radar loaded"));
+ gtk_notebook_prepend_page(GTK_NOTEBOOK(config), self->config_body, gtk_label_new("Radar"));
+
+ /* Set up OpenGL Stuff */
+ g_signal_connect(view, "site-changed", G_CALLBACK(on_site_changed), self);
+ g_signal_connect(view, "time-changed", G_CALLBACK(on_time_changed), self);
+ g_signal_connect(view, "refresh", G_CALLBACK(on_refresh), self);
+
+ return self;
+}
+
+static void _aweather_radar_expose(AWeatherPlugin *_self)
+{
+ AWeatherRadar *self = AWEATHER_RADAR(_self);
+ g_debug("AWeatherRadar: expose");
+ if (self->cur_sweep == NULL)
+ return;
+ Sweep *sweep = self->cur_sweep;