+
+/***************
+ * GUI loading *
+ ***************/
+/* Setup a loading screen in the tab */
+static void _load_gui_pre(GisPluginRadar *self)
+{
+ g_debug("GisPluginRadar: _load_gui_pre");
+
+ gdk_threads_enter();
+ /* Set up progress bar */
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(self->config_body));
+ if (child)
+ gtk_widget_destroy(child);
+
+ GtkWidget *vbox = gtk_vbox_new(FALSE, 10);
+ gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
+ self->progress_bar = gtk_progress_bar_new();
+ self->progress_label = gtk_label_new("Loading radar...");
+ gtk_box_pack_start(GTK_BOX(vbox), self->progress_bar, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), self->progress_label, FALSE, FALSE, 0);
+ gtk_container_add(GTK_CONTAINER(self->config_body), vbox);
+ gtk_widget_show_all(self->config_body);
+
+ /* Clear radar */
+ if (self->cur_radar)
+ RSL_free_radar(self->cur_radar);
+ self->cur_radar = NULL;
+ self->cur_sweep = NULL;
+ gtk_widget_queue_draw(GTK_WIDGET(self->viewer));
+ gdk_threads_leave();
+}
+
+/* Update pogress bar of loading screen */
+static void _load_gui_update(char *path, goffset cur, goffset total, gpointer _self)
+{
+ GisPluginRadar *self = GIS_PLUGIN_RADAR(_self);
+ double percent = (double)cur/total;
+
+ //g_debug("GisPluginRadar: cache_chunk_cb - %lld/%lld = %.2f%%",
+ // cur, total, percent*100);
+
+ gdk_threads_enter();
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(self->progress_bar), MIN(percent, 1.0));
+
+ gchar *msg = g_strdup_printf("Loading radar... %5.1f%% (%.2f/%.2f MB)",
+ percent*100, (double)cur/1000000, (double)total/1000000);
+ gtk_label_set_text(GTK_LABEL(self->progress_label), msg);
+ gdk_threads_leave();
+ g_free(msg);
+}
+
+/* Update pogress bar of loading screen */
+static void _load_gui_error(GisPluginRadar *self, gchar *error)
+{
+ gchar *msg = g_strdup_printf(
+ "GisPluginRadar: error loading radar - %s", error);
+ g_warning("%s", msg);
+ gdk_threads_enter();
+ 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(msg));
+ gtk_widget_show_all(self->config_body);
+ gdk_threads_leave();
+ g_free(msg);
+}
+
+/* Clear loading screen and add sweep selectors */