From 698d03cd82700e49797680260b6d8cc2b6fd06b1 Mon Sep 17 00:00:00 2001 From: Hleb Valoshka <375gnu@gmail.com> Date: Fri, 15 Apr 2022 23:40:20 +0300 Subject: [PATCH] [gtk] Fix display of rings and fading orbits Closes: #1360 --- src/celestia/gtk/actions.cpp | 12 +++++++++--- src/celestia/gtk/actions.h | 1 + src/celestia/gtk/data/celestiaui.xml | 1 + src/celestia/gtk/settings-file.cpp | 2 ++ src/celestia/gtk/ui.h | 1 + 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/celestia/gtk/actions.cpp b/src/celestia/gtk/actions.cpp index e0fdefc1d..904a43871 100644 --- a/src/celestia/gtk/actions.cpp +++ b/src/celestia/gtk/actions.cpp @@ -943,6 +943,11 @@ void actionRenderSpacecrafts(GtkToggleAction* action, AppData* app) } +void actionRenderPlanetRings(GtkToggleAction* action, AppData* app) +{ + setRenderFlag(app, Renderer::ShowPlanetRings, gtk_toggle_action_get_active(action)); +} + void actionRenderRingShadows(GtkToggleAction* action, AppData* app) { setRenderFlag(app, Renderer::ShowRingShadows, gtk_toggle_action_get_active(action)); @@ -1270,9 +1275,9 @@ void resyncRenderActions(AppData* app) /* Unlike the other interfaces, which go through each menu item and set * the corresponding renderFlag, we go the other way and set the menu - * based on the renderFlag. Last one is ShowFadingOrbits. */ + * based on the renderFlag. Last one is ShowPlanetRings. */ - for (uint64_t i = Renderer::ShowStars; i <= Renderer::ShowFadingOrbits; i *= 2) + for (uint64_t i = Renderer::ShowStars; i <= Renderer::ShowPlanetRings; i *= 2) { switch (i) { @@ -1294,6 +1299,7 @@ void resyncRenderActions(AppData* app) case Renderer::ShowAtmospheres: actionName = "RenderAtmospheres"; break; case Renderer::ShowSmoothLines: actionName = "RenderAA"; break; case Renderer::ShowEclipseShadows: actionName = "RenderEclipseShadows"; break; + case Renderer::ShowPlanetRings: actionName = "RenderPlanetRings"; break; case Renderer::ShowRingShadows: actionName = "RenderRingShadows"; break; case Renderer::ShowBoundaries: actionName = "RenderConstellationBoundaries"; break; case Renderer::ShowAutoMag: actionName = "RenderAutoMagnitude"; break; @@ -1317,7 +1323,7 @@ void resyncRenderActions(AppData* app) action = gtk_action_group_get_action(app->agRender, actionName); /* The current i anded with the renderFlags gives state of flag */ - gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (i & rf)); + gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(action), (i & rf) != 0); } } } diff --git a/src/celestia/gtk/actions.h b/src/celestia/gtk/actions.h index ecec46132..be6336917 100644 --- a/src/celestia/gtk/actions.h +++ b/src/celestia/gtk/actions.h @@ -96,6 +96,7 @@ void actionRenderMinorMoons(GtkToggleAction*, AppData*); void actionRenderAsteroids(GtkToggleAction*, AppData*); void actionRenderComets(GtkToggleAction*, AppData*); void actionRenderSpacecrafts(GtkToggleAction*, AppData*); +void actionRenderPlanetRings(GtkToggleAction*, AppData*); void actionRenderRingShadows(GtkToggleAction*, AppData*); void actionRenderStars(GtkToggleAction*, AppData*); diff --git a/src/celestia/gtk/data/celestiaui.xml b/src/celestia/gtk/data/celestiaui.xml index 57855d012..2e4276439 100644 --- a/src/celestia/gtk/data/celestiaui.xml +++ b/src/celestia/gtk/data/celestiaui.xml @@ -58,6 +58,7 @@ + diff --git a/src/celestia/gtk/settings-file.cpp b/src/celestia/gtk/settings-file.cpp index 536dd09f4..87e8567b4 100644 --- a/src/celestia/gtk/settings-file.cpp +++ b/src/celestia/gtk/settings-file.cpp @@ -155,6 +155,7 @@ void applySettingsFileMain(AppData* app, GKeyFile* file) getFlag64(file, &rf, Renderer::ShowAtmospheres, "RenderFlags", "atmospheres", &errors); getFlag64(file, &rf, Renderer::ShowSmoothLines, "RenderFlags", "smoothLines", &errors); getFlag64(file, &rf, Renderer::ShowEclipseShadows, "RenderFlags", "eclipseShadows", &errors); + getFlag64(file, &rf, Renderer::ShowPlanetRings, "RenderFlags", "planetRings", &errors); getFlag64(file, &rf, Renderer::ShowRingShadows, "RenderFlags", "ringShadows", &errors); getFlag64(file, &rf, Renderer::ShowBoundaries, "RenderFlags", "boundaries", &errors); getFlag64(file, &rf, Renderer::ShowAutoMag, "RenderFlags", "autoMag", &errors); @@ -267,6 +268,7 @@ void saveSettingsFile(AppData* app) g_key_file_set_boolean(file, "RenderFlags", "atmospheres", (rf & Renderer::ShowAtmospheres) != 0); g_key_file_set_boolean(file, "RenderFlags", "smoothLines", (rf & Renderer::ShowSmoothLines) != 0); g_key_file_set_boolean(file, "RenderFlags", "eclipseShadows", (rf & Renderer::ShowEclipseShadows) != 0); + g_key_file_set_boolean(file, "RenderFlags", "planetRings", (rf & Renderer::ShowPlanetRings) != 0); g_key_file_set_boolean(file, "RenderFlags", "ringShadows", (rf & Renderer::ShowRingShadows) != 0); g_key_file_set_boolean(file, "RenderFlags", "boundaries", (rf & Renderer::ShowBoundaries) != 0); g_key_file_set_boolean(file, "RenderFlags", "autoMag", (rf & Renderer::ShowAutoMag) != 0); diff --git a/src/celestia/gtk/ui.h b/src/celestia/gtk/ui.h index 6a478d646..90edb437d 100644 --- a/src/celestia/gtk/ui.h +++ b/src/celestia/gtk/ui.h @@ -155,6 +155,7 @@ static const GtkToggleActionEntry actionsRenderFlags[] = { { "RenderComets", NULL, "Comets", NULL, NULL, G_CALLBACK(actionRenderComets), FALSE }, { "RenderAsteroids", NULL, "Asteroids", NULL, NULL, G_CALLBACK(actionRenderAsteroids), FALSE }, { "RenderSpacecrafts", NULL, "Spacecraft", NULL, NULL, G_CALLBACK(actionRenderSpacecrafts), FALSE }, + { "RenderPlanetRings", NULL, "Planet Rings", NULL, NULL, G_CALLBACK(actionRenderPlanetRings), FALSE }, { "RenderRingShadows", NULL, "Ring Shadows", NULL, NULL, G_CALLBACK(actionRenderRingShadows), FALSE }, { "RenderStars", NULL, "Stars", NULL, NULL, G_CALLBACK(actionRenderStars), FALSE }, };