+/****************
+ * GObject code *
+ ****************/
+static void aweather_gui_parser_finished(GtkBuildable *_self, GtkBuilder *builder)
+{
+ g_debug("AWeatherGui: parser finished");
+ AWeatherGui *self = AWEATHER_GUI(_self);
+ self->builder = builder;
+
+ /* Simple things */
+ gchar *config = g_build_filename(g_get_user_config_dir(), PACKAGE, "config.ini", NULL);
+ gchar *defaults = g_build_filename(PKGDATADIR, "defaults.ini", NULL);
+ self->prefs = grits_prefs_new(config, defaults);
+ self->plugins = grits_plugins_new(PLUGINSDIR, self->prefs);
+ self->viewer = GRITS_VIEWER(aweather_gui_get_widget(self, "main_viewer"));
+ self->gtk_plugins = GTK_LIST_STORE(aweather_gui_get_object(self, "plugins"));
+ grits_viewer_setup(self->viewer, self->plugins, self->prefs);
+ g_free(config);
+ g_free(defaults);
+
+ /* Misc, helpers */
+ site_setup(self);
+ menu_setup(self);
+ time_setup(self);
+ prefs_setup(self);
+ icons_setup(self);
+
+ /* Default size */
+ gint width = grits_prefs_get_integer(self->prefs, "aweather/width", NULL);
+ gint height = grits_prefs_get_integer(self->prefs, "aweather/height", NULL);
+ if (width && height)
+ gtk_window_set_default_size(GTK_WINDOW(self), width, height);
+
+ /* Connect signals */
+ gtk_builder_connect_signals(self->builder, self);
+ g_signal_connect(self, "key-press-event",
+ G_CALLBACK(on_gui_key_press), self);
+ g_signal_connect_swapped(self->viewer, "offline",
+ G_CALLBACK(gtk_toggle_action_set_active),
+ aweather_gui_get_object(self, "offline"));
+ g_signal_connect_swapped(self->viewer, "refresh",
+ G_CALLBACK(set_update_timeout), self);
+ g_signal_connect_swapped(self->viewer, "realize",
+ G_CALLBACK(aweather_gui_load_plugins), self);