X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=src%2Fmain.c;h=aa02ea9dc0e961b394d029602f874805a14f4ce5;hb=b6ef934425e0d137606209d91b239c3cec472a3a;hp=546628330471e2a377397ac3b13d3e515893691b;hpb=678a6fa08ee7cdc98a631b9b6a6fef87be63deab;p=grits diff --git a/src/main.c b/src/main.c index 5466283..aa02ea9 100644 --- a/src/main.c +++ b/src/main.c @@ -19,10 +19,9 @@ #include #include +#include + #include "aweather-gui.h" -#include "plugin-radar.h" -#include "plugin-ridge.h" -#include "plugin-example.h" static gint log_levels = 0; @@ -33,10 +32,18 @@ static void log_func(const gchar *log_domain, GLogLevelFlags log_level, g_log_default_handler(log_domain, log_level, message, udata); } +static void on_log_level_changed(GtkSpinButton *spinner, AWeatherGui *self) +{ + gint value = gtk_spin_button_get_value_as_int(spinner); + log_levels = (1 << (value+1))-1; +} + +static gulong on_map_id = 0; static gboolean on_map(AWeatherGui *gui, GdkEvent *event, gchar *site) { - AWeatherView *view = aweather_gui_get_view(gui); - aweather_view_set_site(view, site); + GisView *view = aweather_gui_get_view(gui); + gis_view_set_site(view, site); + g_signal_handler_disconnect(gui, on_map_id); return FALSE; } @@ -46,14 +53,16 @@ static gboolean on_map(AWeatherGui *gui, GdkEvent *event, gchar *site) int main(int argc, char *argv[]) { /* Arguments */ - gint opt_debug = 6; - gchar *opt_site = "IND"; - gboolean opt_auto = FALSE; + gint opt_debug = 6; + gchar *opt_site = "KIND"; + gboolean opt_auto = FALSE; + gboolean opt_offline = FALSE; GOptionEntry entries[] = { - //long short flg type location description arg desc - {"debug", 'd', 0, G_OPTION_ARG_INT, &opt_debug, "Change default log level", "[1-7]"}, - {"site", 's', 0, G_OPTION_ARG_STRING, &opt_site, "Set initial site", NULL}, - {"auto", 'a', 0, G_OPTION_ARG_NONE, &opt_auto, "Auto update radar (todo)", NULL}, + //long short flg type location description arg desc + {"debug", 'd', 0, G_OPTION_ARG_INT, &opt_debug, "Change default log level", "[1-7]"}, + {"site", 's', 0, G_OPTION_ARG_STRING, &opt_site, "Set initial site", NULL}, + {"offline", 'o', 0, G_OPTION_ARG_NONE, &opt_offline, "Run in offline mode", NULL}, + {"auto", 'a', 0, G_OPTION_ARG_NONE, &opt_auto, "Auto update radar (todo)", NULL}, {NULL} }; @@ -67,21 +76,20 @@ int main(int argc, char *argv[]) } gtk_gl_init(&argc, &argv); - /* Finish arguments */ - log_levels = (1 << (opt_debug+1))-1; - /* Logging */ + log_levels = (1 << (opt_debug+1))-1; g_log_set_handler(NULL, G_LOG_LEVEL_MASK, log_func, NULL); /* Set up AWeather */ - AWeatherGui *gui = aweather_gui_new(); - AWeatherView *view = aweather_gui_get_view(gui); - g_signal_connect(gui, "map-event", G_CALLBACK(on_map), opt_site); + AWeatherGui *gui = aweather_gui_new(); + GisWorld *world = aweather_gui_get_world(gui); + GisOpenGL *opengl = aweather_gui_get_opengl(gui); + + gis_world_set_offline(world, opt_offline); + on_map_id = g_signal_connect(gui, "map-event", G_CALLBACK(on_map), opt_site); - /* Load plugins */ - aweather_gui_register_plugin(gui, AWEATHER_PLUGIN(aweather_example_new(gui))); - aweather_gui_register_plugin(gui, AWEATHER_PLUGIN(aweather_ridge_new(gui))); - aweather_gui_register_plugin(gui, AWEATHER_PLUGIN(aweather_radar_new(gui))); + GObject *action = aweather_gui_get_object(gui, "log_level"); + g_signal_connect(action, "changed", G_CALLBACK(on_log_level_changed), NULL); gtk_widget_show_all(GTK_WIDGET(gui)); gtk_main();