+ char *objects[2] = {name, NULL};
+ gtk_builder_add_objects_from_file(self->builder,
+ DATADIR "/aweather/main.ui", objects, NULL);
+ gtk_builder_connect_signals(self->builder, self);
+ GtkWidget *main_win = aweather_gui_get_widget(self, "main_window");
+ GtkWidget *this_win = aweather_gui_get_widget(self, name);
+ gtk_window_set_transient_for(GTK_WINDOW(this_win), GTK_WINDOW(main_win));
+ gtk_widget_show_all(this_win);
+}
+
+void on_about(GtkAction *action, AWeatherGui *self)
+{
+ load_window("about_window", self);
+}
+
+void on_plugin_toggled(GtkCellRendererToggle *cell, gchar *path_str, AWeatherGui *self)
+{
+ GtkWidget *tview = aweather_gui_get_widget(self, "plugins_view");
+ GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(tview));
+ g_message("model=%p", model);
+ gboolean state;
+ gchar *so;
+ GtkTreeIter iter;
+ gtk_tree_model_get_iter_from_string(model, &iter, path_str);
+ gtk_tree_model_get(model, &iter, 0, &so, 1, &state, -1);
+ state = !state;
+ gtk_list_store_set(GTK_LIST_STORE(model), &iter, 1, state, -1);
+ g_strdelimit(so, ".", '\0');
+ if (state)
+ aweather_gui_load_plugin(self, so);
+ else
+ aweather_gui_unload_plugin(self, so);
+ g_free(so);
+ gtk_widget_show_all(aweather_gui_get_widget(self, "tabs"));
+}
+void on_prefs(GtkAction *action, AWeatherGui *self)
+{
+ /* get prefs */
+ gchar *is = g_key_file_get_string(self->prefs, "general", "initial_site", NULL);
+ gchar *nu = g_key_file_get_string(self->prefs, "general", "nexrad_url", NULL);
+ gint ll = g_key_file_get_integer(self->prefs, "general", "log_level", NULL);
+ load_window("prefs_window", self);
+ /* set prefs */
+ GtkWidget *isw = aweather_gui_get_widget(self, "initial_site");
+ GtkWidget *nuw = aweather_gui_get_widget(self, "nexrad_url");
+ GtkWidget *llw = aweather_gui_get_widget(self, "log_level");
+ if (is) gtk_entry_set_text(GTK_ENTRY(isw), is), g_free(is);
+ if (nu) gtk_entry_set_text(GTK_ENTRY(nuw), nu), g_free(nu);
+ if (ll) gtk_spin_button_set_value(GTK_SPIN_BUTTON(llw), ll);
+
+ /* Plugins */
+ GtkTreeView *tview = GTK_TREE_VIEW(aweather_gui_get_widget(self, "plugins_view"));
+ GtkCellRenderer *rend1 = gtk_cell_renderer_text_new();
+ GtkCellRenderer *rend2 = gtk_cell_renderer_toggle_new();
+ GtkTreeViewColumn *col1 = gtk_tree_view_column_new_with_attributes(
+ "Plugin", rend1, "text", 0, NULL);
+ GtkTreeViewColumn *col2 = gtk_tree_view_column_new_with_attributes(
+ "Enabled", rend2, "active", 1, NULL);
+ gtk_tree_view_append_column(tview, col1);
+ gtk_tree_view_append_column(tview, col2);
+ g_signal_connect(rend2, "toggled", G_CALLBACK(on_plugin_toggled), self);
+ gtk_tree_view_set_model(GTK_TREE_VIEW(tview), GTK_TREE_MODEL(self->gtk_plugins));