#include <gtk/gtk.h>#include "common.h"Include dependency graph for settings-file.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.
Defines | |
| #define | CELESTIARC ".celestiarc" |
Functions | |
| void | applySettingsFileMain (AppData *app, GKeyFile *file) |
| void | applySettingsFilePre (AppData *app, GKeyFile *file) |
| void | initSettingsFile (AppData *app) |
| void | saveSettingsFile (AppData *app) |
|
|
Definition at line 21 of file settings-file.h. Referenced by initSettingsFile(), and saveSettingsFile(). |
|
||||||||||||
|
Definition at line 87 of file settings-file.cpp. References getFlag(), setDefaultRenderFlags(), setSaneAltSurface(), setSaneAmbientLight(), setSaneGalaxyLightGain(), setSaneStarStyle(), setSaneVerbosity(), and setSaneVisualMagnitude(). Referenced by initRealize(). 00088 {
00089 GError* e;
00090 float ambientLight, visualMagnitude, galaxyLightGain;
00091 int errors, verbosity, starStyle, rf, om, lm;
00092
00093 /* See comment in applySettingsFilePrefs() */
00094 e= NULL;
00095 ambientLight = (float)g_key_file_get_integer(file, "Main", "ambientLight", &e) / 1000.0;
00096 if (e != NULL) ambientLight = -1.0;
00097
00098 e = NULL;
00099 visualMagnitude = (float)g_key_file_get_integer(file, "Main", "visualMagnitude", &e) / 1000.0;
00100 if (e != NULL) visualMagnitude = -1.0;
00101
00102 e = NULL;
00103 galaxyLightGain = (float)g_key_file_get_integer(file, "Main", "galaxyLightGain", &e) / 1000.0;
00104 if (e != NULL) galaxyLightGain = -1.0;
00105
00106 e = NULL;
00107 verbosity = g_key_file_get_integer(file, "Main", "verbosity", &e);
00108 if (e != NULL) verbosity = -1;
00109
00110 e = NULL;
00111 starStyle = g_key_file_get_integer(file, "Main", "starStyle", &e);
00112 if (e != NULL) starStyle = -1;
00113
00114 e= NULL;
00115 app->showLocalTime = g_key_file_get_boolean(file, "Main", "localTime", &e);
00116 if (e != NULL) app->showLocalTime = FALSE;
00117
00118 /* All settings that need sanity checks get them */
00119 setSaneAmbientLight(app, ambientLight);
00120 setSaneVisualMagnitude(app, visualMagnitude);
00121 setSaneGalaxyLightGain(galaxyLightGain);
00122 setSaneVerbosity(app, verbosity);
00123 setSaneStarStyle(app, (Renderer::StarStyle)starStyle);
00124 setSaneAltSurface(app, g_key_file_get_string(file, "Main", "altSurfaceName", NULL));
00125
00126 /* Render Flags */
00127 errors = 0;
00128 rf = Renderer::ShowNothing;
00129 getFlag(file, &rf, Renderer::ShowStars, "RenderFlags", "stars", &errors);
00130 getFlag(file, &rf, Renderer::ShowPlanets, "RenderFlags", "planets", &errors);
00131 getFlag(file, &rf, Renderer::ShowGalaxies, "RenderFlags", "galaxies", &errors);
00132 getFlag(file, &rf, Renderer::ShowDiagrams, "RenderFlags", "diagrams", &errors);
00133 getFlag(file, &rf, Renderer::ShowCloudMaps, "RenderFlags", "cloudMaps", &errors);
00134 getFlag(file, &rf, Renderer::ShowOrbits, "RenderFlags", "orbits", &errors);
00135 getFlag(file, &rf, Renderer::ShowCelestialSphere, "RenderFlags", "celestialSphere", &errors);
00136 getFlag(file, &rf, Renderer::ShowNightMaps, "RenderFlags", "nightMaps", &errors);
00137 getFlag(file, &rf, Renderer::ShowAtmospheres, "RenderFlags", "atmospheres", &errors);
00138 getFlag(file, &rf, Renderer::ShowSmoothLines, "RenderFlags", "smoothLines", &errors);
00139 getFlag(file, &rf, Renderer::ShowEclipseShadows, "RenderFlags", "eclipseShadows", &errors);
00140 getFlag(file, &rf, Renderer::ShowRingShadows, "RenderFlags", "ringShadows", &errors);
00141 getFlag(file, &rf, Renderer::ShowBoundaries, "RenderFlags", "boundaries", &errors);
00142 getFlag(file, &rf, Renderer::ShowAutoMag, "RenderFlags", "autoMag", &errors);
00143 getFlag(file, &rf, Renderer::ShowCometTails, "RenderFlags", "cometTails", &errors);
00144 getFlag(file, &rf, Renderer::ShowMarkers, "RenderFlags", "markers", &errors);
00145 getFlag(file, &rf, Renderer::ShowPartialTrajectories, "RenderFlags", "partialTrajectories", &errors);
00146 getFlag(file, &rf, Renderer::ShowNebulae, "RenderFlags", "nebulae", &errors);
00147 getFlag(file, &rf, Renderer::ShowOpenClusters, "RenderFlags", "openClusters", &errors);
00148
00149 /* If any flag is missing, use defaults for all. */
00150 if (errors > 0)
00151 setDefaultRenderFlags(app);
00152 else
00153 app->renderer->setRenderFlags(rf);
00154
00155 /* Orbit Mask */
00156 errors = 0;
00157 om = 0;
00158 getFlag(file, &om, Body::Planet, "OrbitMask", "planet", &errors);
00159 getFlag(file, &om, Body::Moon, "OrbitMask", "moon", &errors);
00160 getFlag(file, &om, Body::Asteroid, "OrbitMask", "asteroid", &errors);
00161 getFlag(file, &om, Body::Comet, "OrbitMask", "comet", &errors);
00162 getFlag(file, &om, Body::Spacecraft, "OrbitMask", "spacecraft", &errors);
00163 getFlag(file, &om, Body::Invisible, "OrbitMask", "invisible", &errors);
00164 getFlag(file, &om, Body::Unknown, "OrbitMask", "unknown", &errors);
00165
00166 /* If any orbit is missing, use core defaults for all (do nothing). */
00167 if (errors == 0)
00168 app->renderer->setOrbitMask(om);
00169
00170 /* Label Mode */
00171 errors = 0;
00172 lm = Renderer::NoLabels;
00173
00174 getFlag(file, &lm, Renderer::StarLabels, "LabelMode", "star", &errors);
00175 getFlag(file, &lm, Renderer::PlanetLabels, "LabelMode", "planet", &errors);
00176 getFlag(file, &lm, Renderer::MoonLabels, "LabelMode", "moon", &errors);
00177 getFlag(file, &lm, Renderer::ConstellationLabels, "LabelMode", "constellation", &errors);
00178 getFlag(file, &lm, Renderer::GalaxyLabels, "LabelMode", "galaxy", &errors);
00179 getFlag(file, &lm, Renderer::AsteroidLabels, "LabelMode", "asteroid", &errors);
00180 getFlag(file, &lm, Renderer::SpacecraftLabels, "LabelMode", "spacecraft", &errors);
00181 getFlag(file, &lm, Renderer::LocationLabels, "LabelMode", "location", &errors);
00182 getFlag(file, &lm, Renderer::CometLabels, "LabelMode", "comet", &errors);
00183 getFlag(file, &lm, Renderer::NebulaLabels, "LabelMode", "nebula", &errors);
00184 getFlag(file, &lm, Renderer::OpenClusterLabels, "LabelMode", "opencluster", &errors);
00185 getFlag(file, &lm, Renderer::I18nConstellationLabels, "LabelMode", "i18n", &errors);
00186
00187 /* If any label is missing, use core defaults for all (do nothing). */
00188 if (errors == 0)
00189 app->renderer->setLabelMode(lm);
00190 }
|
|
||||||||||||
|
Definition at line 50 of file settings-file.cpp. References setSaneWinPosition(), and setSaneWinSize(). Referenced by main(). 00051 {
00052 int sizeX, sizeY, positionX, positionY;
00053 GError* e;
00054
00055 /* Numbers require special treatment because if they are not found they
00056 * are not set to NULL like strings. So, if that is the case, we set them
00057 * to values that will cause setSane*() to set defaults. */
00058 e= NULL;
00059 sizeX = g_key_file_get_integer(file, "Window", "width", &e);
00060 if (e != NULL) sizeX = -1;
00061
00062 e= NULL;
00063 sizeY = g_key_file_get_integer(file, "Window", "height", &e);
00064 if (e != NULL) sizeY = -1;
00065
00066 e= NULL;
00067 positionX = g_key_file_get_integer(file, "Window", "x", &e);
00068 if (e != NULL) positionX = -1;
00069
00070 e= NULL;
00071 positionY = g_key_file_get_integer(file, "Window", "y", &e);
00072 if (e != NULL) positionY = -1;
00073
00074 /* These next two cannot be checked for sanity, default set here */
00075 e= NULL;
00076 app->fullScreen = g_key_file_get_boolean(file, "Window", "fullScreen", &e);
00077 if (e != NULL) app->fullScreen = FALSE;
00078
00079 /* Nothing is set here. The prefs structure is used to set things at the
00080 * corrent times. */
00081 setSaneWinSize(app, sizeX, sizeY);
00082 setSaneWinPosition(app, positionX, positionY);
00083 }
|
|
|
Definition at line 28 of file settings-file.cpp. References CELESTIARC. Referenced by main(). 00029 {
00030 GError *error = NULL;
00031 app->settingsFile = g_key_file_new();
00032
00033 char* fn = g_build_filename(g_get_home_dir(), CELESTIARC, NULL);
00034
00035 g_key_file_load_from_file(app->settingsFile, fn, G_KEY_FILE_NONE, &error);
00036
00037 /* Should check G_KEY_FILE_ERROR_NOT_FOUND, but bug in glib returns wrong
00038 * error code. */
00039 if (error != NULL && g_file_test(fn, G_FILE_TEST_EXISTS))
00040 {
00041 g_print("Error reading '%s': %s.\n", fn, error->message);
00042 exit(1);
00043 }
00044
00045 g_free(fn);
00046 }
|
|
|
Definition at line 194 of file settings-file.cpp. References CELESTIARC, getWinHeight(), getWinWidth(), getWinX(), and getWinY(). Referenced by actionQuit(). 00195 {
00196 int rf, om, lm;
00197 GKeyFile* file = app->settingsFile;
00198 char* fn = g_build_filename(g_get_home_dir(), CELESTIARC, NULL);
00199 FILE* outfile;
00200
00201 g_key_file_set_integer(file, "Main", "ambientLight", (int)(1000 * app->renderer->getAmbientLightLevel()));
00202 g_key_file_set_comment(file, "Main", "ambientLight", "ambientLight = (int)(1000 * AmbientLightLevel)", NULL);
00203 g_key_file_set_integer(file, "Main", "visualMagnitude", (int)(1000 * app->simulation->getFaintestVisible()));
00204 g_key_file_set_comment(file, "Main", "visualMagnitude", "visualMagnitude = (int)(1000 * FaintestVisible)", NULL);
00205 g_key_file_set_integer(file, "Main", "galaxyLightGain", (int)(1000 * Galaxy::getLightGain()));
00206 g_key_file_set_comment(file, "Main", "galaxyLightGain", "galaxyLightGain = (int)(1000 * GalaxyLightGain)", NULL);
00207 g_key_file_set_boolean(file, "Main", "localTime", app->showLocalTime);
00208 g_key_file_set_integer(file, "Main", "verbosity", app->core->getHudDetail());
00209 g_key_file_set_comment(file, "Main", "verbosity", "Level of Detail in the heads-up-display. 0=None, 1=Terse, 2=Verbose", NULL);
00210 g_key_file_set_integer(file, "Main", "starStyle", app->renderer->getStarStyle());
00211 g_key_file_set_comment(file, "Main", "starStyle", "Style of star rendering. 0=Fuzzy Points, 1=Points, 2=Scaled Discs", NULL);
00212 g_key_file_set_string(file, "Main", "altSurfaceName", app->simulation->getActiveObserver()->getDisplayedSurface().c_str());
00213
00214 g_key_file_set_integer(file, "Window", "width", getWinWidth(app));
00215 g_key_file_set_integer(file, "Window", "height", getWinHeight(app));
00216 g_key_file_set_integer(file, "Window", "x", getWinX(app));
00217 g_key_file_set_integer(file, "Window", "y", getWinY(app));
00218 g_key_file_set_boolean(file, "Window", "fullScreen", app->fullScreen);
00219
00220 rf = app->renderer->getRenderFlags();
00221 g_key_file_set_boolean(file, "RenderFlags", "stars", rf & Renderer::ShowStars);
00222 g_key_file_set_boolean(file, "RenderFlags", "planets", rf & Renderer::ShowPlanets);
00223 g_key_file_set_boolean(file, "RenderFlags", "galaxies", rf & Renderer::ShowGalaxies);
00224 g_key_file_set_boolean(file, "RenderFlags", "diagrams", rf & Renderer::ShowDiagrams);
00225 g_key_file_set_boolean(file, "RenderFlags", "cloudMaps", rf & Renderer::ShowCloudMaps);
00226 g_key_file_set_boolean(file, "RenderFlags", "orbits", rf & Renderer::ShowOrbits);
00227 g_key_file_set_boolean(file, "RenderFlags", "celestialSphere", rf & Renderer::ShowCelestialSphere);
00228 g_key_file_set_boolean(file, "RenderFlags", "nightMaps", rf & Renderer::ShowNightMaps);
00229 g_key_file_set_boolean(file, "RenderFlags", "atmospheres", rf & Renderer::ShowAtmospheres);
00230 g_key_file_set_boolean(file, "RenderFlags", "smoothLines", rf & Renderer::ShowSmoothLines);
00231 g_key_file_set_boolean(file, "RenderFlags", "eclipseShadows", rf & Renderer::ShowEclipseShadows);
00232 g_key_file_set_boolean(file, "RenderFlags", "ringShadows", rf & Renderer::ShowRingShadows);
00233 g_key_file_set_boolean(file, "RenderFlags", "boundaries", rf & Renderer::ShowBoundaries);
00234 g_key_file_set_boolean(file, "RenderFlags", "autoMag", rf & Renderer::ShowAutoMag);
00235 g_key_file_set_boolean(file, "RenderFlags", "cometTails", rf & Renderer::ShowCometTails);
00236 g_key_file_set_boolean(file, "RenderFlags", "markers", rf & Renderer::ShowMarkers);
00237 g_key_file_set_boolean(file, "RenderFlags", "partialTrajectories", rf & Renderer::ShowPartialTrajectories);
00238 g_key_file_set_boolean(file, "RenderFlags", "nebulae", rf & Renderer::ShowNebulae);
00239 g_key_file_set_boolean(file, "RenderFlags", "openClusters", rf & Renderer::ShowOpenClusters);
00240
00241 om = app->renderer->getOrbitMask();
00242 g_key_file_set_boolean(file, "OrbitMask", "planet", om & Body::Planet);
00243 g_key_file_set_boolean(file, "OrbitMask", "moon", om & Body::Moon);
00244 g_key_file_set_boolean(file, "OrbitMask", "asteroid", om & Body::Asteroid);
00245 g_key_file_set_boolean(file, "OrbitMask", "comet", om & Body::Comet);
00246 g_key_file_set_boolean(file, "OrbitMask", "spacecraft", om & Body::Spacecraft);
00247 g_key_file_set_boolean(file, "OrbitMask", "invisible", om & Body::Invisible);
00248 g_key_file_set_boolean(file, "OrbitMask", "unknown", om & Body::Unknown);
00249
00250 lm = app->renderer->getLabelMode();
00251 g_key_file_set_boolean(file, "LabelMode", "star", lm & Renderer::StarLabels);
00252 g_key_file_set_boolean(file, "LabelMode", "planet", lm & Renderer::PlanetLabels);
00253 g_key_file_set_boolean(file, "LabelMode", "moon", lm & Renderer::MoonLabels);
00254 g_key_file_set_boolean(file, "LabelMode", "constellation", lm & Renderer::ConstellationLabels);
00255 g_key_file_set_boolean(file, "LabelMode", "galaxy", lm & Renderer::GalaxyLabels);
00256 g_key_file_set_boolean(file, "LabelMode", "asteroid", lm & Renderer::AsteroidLabels);
00257 g_key_file_set_boolean(file, "LabelMode", "spacecraft", lm & Renderer::SpacecraftLabels);
00258 g_key_file_set_boolean(file, "LabelMode", "location", lm & Renderer::LocationLabels);
00259 g_key_file_set_boolean(file, "LabelMode", "comet", lm & Renderer::CometLabels);
00260 g_key_file_set_boolean(file, "LabelMode", "nebula", lm & Renderer::NebulaLabels);
00261 g_key_file_set_boolean(file, "LabelMode", "opencluster", lm & Renderer::OpenClusterLabels);
00262 g_key_file_set_boolean(file, "LabelMode", "i18n", lm & Renderer::I18nConstellationLabels);
00263
00264 g_key_file_set_comment(file, "RenderFlags", NULL, "All Render Flag values must be true or false", NULL);
00265 g_key_file_set_comment(file, "OrbitMask", NULL, "All Orbit Mask values must be true or false", NULL);
00266 g_key_file_set_comment(file, "LabelMode", NULL, "All Label Mode values must be true or false", NULL);
00267
00268 /* Write the settings to a file */
00269 outfile = fopen(fn, "w");
00270
00271 if (outfile == NULL)
00272 g_print("Error writing '%s'.\n", fn);
00273
00274 fputs(g_key_file_to_data(file, NULL, NULL), outfile);
00275
00276 g_free(fn);
00277 }
|
1.4.1