1
0
Fork 0

Stefan Seifert: implement persistent dialog options, so changes in rendering, static LOD and sound settings dialogs are made permanent.

This commit is contained in:
ehofman 2005-12-17 15:34:37 +00:00
parent 96c0a7bbc1
commit f6174d2bf0
4 changed files with 35 additions and 6 deletions

View file

@ -190,6 +190,23 @@ static bool
do_exit (const SGPropertyNode * arg)
{
SG_LOG(SG_INPUT, SG_INFO, "Program exit requested.");
char* envp = ::getenv( "HOME" );
if ( envp != NULL ) {
SGPath config( globals->get_fg_root() );
config.set( envp );
config.append( ".fgfs" );
config.append( "preferences.xml" );
config.create_dir( 0700 );
SG_LOG(SG_IO, SG_INFO, "Saving user preferences");
try {
writeProperties(config.str(), globals->get_props(), false, SGPropertyNode::USERARCHIVE);
} catch (const sg_exception &e) {
guiErrorMessage("Error saving preferences: ", e);
}
SG_LOG(SG_INPUT, SG_BULK, "Finished Saving user preferences");
}
fgExit(arg->getIntValue("status", 0));
return true;
}

View file

@ -607,6 +607,18 @@ bool fgInitConfig ( int argc, char **argv ) {
SG_LOG( SG_INPUT, SG_ALERT, "No default aircraft specified" );
}
char* envp = ::getenv( "HOME" );
if ( envp != NULL ) {
SGPath config( globals->get_fg_root() );
config.set( envp );
config.append( ".fgfs" );
config.append( "preferences.xml" );
SG_LOG(SG_INPUT, SG_INFO, "Reading user preferences");
fgLoadProps(config.str().c_str(), globals->get_props(), false, SGPropertyNode::USERARCHIVE);
SG_LOG(SG_INPUT, SG_BULK, "Finished Reading user preferences");
}
// parse options after loading aircraft to ensure any user
// overrides of defaults are honored.
do_options(argc, argv);

View file

@ -585,7 +585,7 @@ fgLoadFlight (istream &input)
bool
fgLoadProps (const char * path, SGPropertyNode * props, bool in_fg_root)
fgLoadProps (const char * path, SGPropertyNode * props, bool in_fg_root, int default_mode)
{
string fullpath;
if (in_fg_root) {
@ -597,7 +597,7 @@ fgLoadProps (const char * path, SGPropertyNode * props, bool in_fg_root)
}
try {
readProperties(fullpath, props);
readProperties(fullpath, props, default_mode);
} catch (const sg_exception &e) {
guiErrorMessage("Error reading properties: ", e);
return false;

View file

@ -69,7 +69,7 @@ extern bool fgLoadFlight (istream &input);
* otherwise.
*/
extern bool fgLoadProps (const char * path, SGPropertyNode * props,
bool in_fg_root = true);
bool in_fg_root = true, int default_mode = 0);