Automatically apply settings change for planet/aspect icons as characters

This commit is contained in:
Gergely Polonkai 2014-07-04 21:55:07 +02:00
parent 76975df877
commit 740691f97f

View File

@ -426,9 +426,10 @@ ag_window_redraw_aspect_table(AgWindow *window)
guint i;
for (planet = planet_list, i = 0; planet; planet = g_list_next(planet), i++) {
GtkWidget *label_hor,
*label_ver;
GswePlanet planet_id;
GtkWidget *label_hor,
*label_ver,
*current_widget;
GswePlanet planet_id;
GswePlanetData *planet_data;
GswePlanetInfo *planet_info;
@ -436,10 +437,18 @@ ag_window_redraw_aspect_table(AgWindow *window)
planet_data = gswe_moment_get_planet(GSWE_MOMENT(priv->chart), planet_id, NULL);
planet_info = gswe_planet_data_get_planet_info(planet_data);
if ((current_widget = gtk_grid_get_child_at(GTK_GRID(priv->aspect_table), i + 1, i)) != NULL) {
gtk_container_remove(GTK_CONTAINER(priv->aspect_table), current_widget);
}
label_hor = ag_window_create_planet_widget(planet_info);
gtk_grid_attach(GTK_GRID(priv->aspect_table), label_hor, i + 1, i, 1, 1);
if (i > 0) {
if ((current_widget = gtk_grid_get_child_at(GTK_GRID(priv->aspect_table), 0, i)) != NULL) {
gtk_container_remove(GTK_CONTAINER(priv->aspect_table), current_widget);
}
label_ver = ag_window_create_planet_widget(planet_info);
gtk_grid_attach(GTK_GRID(priv->aspect_table), label_ver, 0, i, 1, 1);
}
@ -638,15 +647,34 @@ static GActionEntry win_entries[] = {
{ "change-tab", ag_window_change_tab_action, "s", "'edit'", NULL },
};
static void
ag_window_display_changed(GSettings *settings, gchar *key, AgWindow *window)
{
AgWindowPrivate *priv = ag_window_get_instance_private(window);
/* The planet symbols are redrawn only if aspect_table_populated is
* set to FALSE */
if (g_str_equal("planets-char", key)) {
priv->aspect_table_populated = FALSE;
}
ag_window_redraw_aspect_table(window);
}
static void
ag_window_init(AgWindow *window)
{
AgWindowPrivate *priv;
GtkAccelGroup *accel_group;
GSettings *main_settings;
AgWindowPrivate *priv = ag_window_get_instance_private(window);
gtk_widget_init_template(GTK_WIDGET(window));
priv = ag_window_get_instance_private(window);
priv->settings = ag_settings_get();
main_settings = ag_settings_peek_main_settings(priv->settings);
g_signal_connect(G_OBJECT(main_settings), "changed::planets-char", G_CALLBACK(ag_window_display_changed), window);
g_signal_connect(G_OBJECT(main_settings), "changed::aspects-char", G_CALLBACK(ag_window_display_changed), window);
webkit_web_view_load_string(
WEBKIT_WEB_VIEW(priv->chart_web_view),