]> Pileus Git - grits/blobdiff - src/gis-test.c
Win32 build fixes
[grits] / src / gis-test.c
index 3364a6876e405ae998994fe4f7a2ae93bec0cbff..1146f41215731d985502e1ba411d4871ed60114f 100644 (file)
 
 #include <config.h>
 #include <gtk/gtk.h>
+#include <gtk/gtkgl.h>
 #include <gdk/gdkkeysyms.h>
 
 #include "gis.h"
 
+GisPrefs   *prefs   = NULL;
+GisPlugins *plugins = NULL;
+GisViewer  *viewer  = NULL;
+
 /*************
  * Callbacks *
  *************/
-static gboolean on_delete(GtkWidget *widget, GdkEvent *event, gpointer data)
+static gboolean gis_shutdown(GtkWidget *window)
 {
+       gis_plugins_free(plugins);
+       g_object_unref(prefs);
+       gtk_widget_destroy(window);
+
+       while (gtk_events_pending())
+                 gtk_main_iteration();
+
        gtk_main_quit();
        return TRUE;
 }
+static gboolean on_delete(GtkWidget *widget, GdkEvent *event, gpointer data)
+{
+       return gis_shutdown(widget);
+}
 static gboolean on_key_press(GtkWidget *widget, GdkEventKey *event,
                gpointer window)
 {
-       if (event->keyval == GDK_q) {
-               gtk_main_quit();
-               return TRUE;
-       }
+       if (event->keyval == GDK_q)
+               return gis_shutdown(widget);
        return FALSE;
 }
+static void load_plugin(GisPlugins *plugins, gchar *name,
+               GisViewer *viewer, GisPrefs *prefs, GtkNotebook *notebook)
+{
+       GisPlugin *plugin = gis_plugins_load(plugins, name, viewer, prefs);
+       GtkWidget *config = gis_plugin_get_config(plugin);
+       gtk_notebook_append_page(notebook, config, gtk_label_new(name));
+}
 
 /***********
  * Methods *
@@ -47,27 +68,37 @@ int main(int argc, char **argv)
        g_thread_init(NULL);
        gdk_threads_init();
        gtk_init(&argc, &argv);
+       gtk_gl_init(&argc, &argv);
 
-       GisPrefs   *prefs   = gis_prefs_new(NULL, NULL);
-       GisPlugins *plugins = gis_plugins_new(g_getenv("GIS_PLUGIN_PATH"), prefs);
-       GisViewer  *viewer  = gis_opengl_new(plugins, prefs);
+       prefs   = gis_prefs_new(NULL, NULL);
+       plugins = gis_plugins_new(g_getenv("GIS_PLUGIN_PATH"), prefs);
+       viewer  = gis_opengl_new(plugins, prefs);
 
        gdk_threads_enter();
-       GtkWidget  *window  = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+       GtkWidget *vbox   = gtk_vbox_new(FALSE, 0);
+       GtkWidget *config = gtk_notebook_new();
        g_signal_connect(window, "delete-event",    G_CALLBACK(on_delete),    NULL);
        g_signal_connect(window, "key-press-event", G_CALLBACK(on_key_press), NULL);
-       gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(viewer));
+       gtk_notebook_set_tab_pos(GTK_NOTEBOOK(config), GTK_POS_BOTTOM);
+       gtk_container_add(GTK_CONTAINER(window), vbox);
+       gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(viewer), TRUE,  TRUE,  0);
+       gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(config), FALSE, FALSE, 0);
        gtk_widget_show_all(window);
 
-       gis_plugins_load(plugins, "test", viewer, prefs);
-       gis_plugins_load(plugins, "env",  viewer, prefs);
+       /* Configurable stuff */
+       gis_viewer_set_offline(viewer, TRUE);
+       load_plugin(plugins, "elev",  viewer, prefs, GTK_NOTEBOOK(config));
+       load_plugin(plugins, "env",   viewer, prefs, GTK_NOTEBOOK(config));
+       //load_plugin(plugins, "map",   viewer, prefs, GTK_NOTEBOOK(config));
+       load_plugin(plugins, "sat",   viewer, prefs, GTK_NOTEBOOK(config));
+       //load_plugin(plugins, "test",  viewer, prefs, GTK_NOTEBOOK(config));
+       load_plugin(plugins, "radar", viewer, prefs, GTK_NOTEBOOK(config));
 
+       gtk_widget_show_all(config);
        gtk_main();
-
-       gis_plugins_free(plugins);
-       g_object_unref(prefs);
-       gtk_widget_destroy(window);
-
        gdk_threads_leave();
+
+       gdk_display_close(gdk_display_get_default());
        return 0;
 }