1
0
Fork 0

Added fgLoadProps to load properties from a path relative to FG_ROOT.

This commit is contained in:
david 2002-11-06 18:57:31 +00:00
parent a8f40e0771
commit 0de065b0ec
8 changed files with 41 additions and 18 deletions

View file

@ -78,11 +78,9 @@ unsigned int Menu_size;
void initMenu() void initMenu()
{ {
SGPropertyNode main; SGPropertyNode main;
SGPath spath( globals->get_fg_root() );
spath.append( "menu.xml" );
try { try {
readProperties(spath.c_str(), &main); fgLoadProps("menu.xml", &main);
} catch (const sg_exception &ex) { } catch (const sg_exception &ex) {
SG_LOG(SG_GENERAL, SG_ALERT, "Error processing the menu file."); SG_LOG(SG_GENERAL, SG_ALERT, "Error processing the menu file.");
return; return;

View file

@ -205,13 +205,9 @@ do_panel_mouse_click (const SGPropertyNode * arg)
static bool static bool
do_preferences_load (const SGPropertyNode * arg) do_preferences_load (const SGPropertyNode * arg)
{ {
const string &path = arg->getStringValue("path", "preferences.xml");
SGPath props_path(globals->get_fg_root());
props_path.append(path);
SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences from "
<< props_path.str());
try { try {
readProperties(props_path.str(), globals->get_props()); fgLoadProps(arg->getStringValue("path", "preferences.xml"),
globals->get_props());
} catch (const sg_exception &e) { } catch (const sg_exception &e) {
guiErrorMessage("Error reading global preferences: ", e); guiErrorMessage("Error reading global preferences: ", e);
return false; return false;

View file

@ -389,10 +389,8 @@ bool fgInitConfig ( int argc, char **argv ) {
fgSetDefaults(); fgSetDefaults();
// Read global preferences from $FG_ROOT/preferences.xml // Read global preferences from $FG_ROOT/preferences.xml
SGPath props_path(globals->get_fg_root());
props_path.append("preferences.xml");
SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences"); SG_LOG(SG_INPUT, SG_INFO, "Reading global preferences");
readProperties(props_path.str(), globals->get_props()); fgLoadProps("preferences.xml", globals->get_props());
SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences"); SG_LOG(SG_INPUT, SG_INFO, "Finished Reading global preferences");
// Detect the required language as early as possible // Detect the required language as early as possible

View file

@ -27,6 +27,7 @@
#include <simgear/misc/exception.hxx> #include <simgear/misc/exception.hxx>
#include <simgear/magvar/magvar.hxx> #include <simgear/magvar/magvar.hxx>
#include <simgear/timing/sg_time.hxx> #include <simgear/timing/sg_time.hxx>
#include <simgear/misc/sg_path.hxx>
#include STL_IOSTREAM #include STL_IOSTREAM
@ -679,6 +680,15 @@ fgLoadFlight (istream &input)
} }
void
fgLoadProps (const char * path, SGPropertyNode * props)
{
SGPath loadpath(globals->get_fg_root());
loadpath.append(path);
readProperties(loadpath.c_str(), props);
}
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// Property convenience functions. // Property convenience functions.

View file

@ -64,6 +64,14 @@ extern bool fgSaveFlight (ostream &output, bool write_all = false);
extern bool fgLoadFlight (istream &input); extern bool fgLoadFlight (istream &input);
/**
* Load properties from a file relative to $FG_ROOT.
*
* @param file The file name relative to $FG_ROOT.
*/
extern void fgLoadProps (const char * path, SGPropertyNode * props);
//////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////
// Convenience functions for getting property values. // Convenience functions for getting property values.

View file

@ -21,6 +21,21 @@ FGSubsystem::~FGSubsystem ()
{ {
} }
void
FGSubsystem::init ()
{
}
void
FGSubsystem::bind ()
{
}
void
FGSubsystem::unbind ()
{
}
void void
FGSubsystem::suspend () FGSubsystem::suspend ()
{ {

View file

@ -145,7 +145,7 @@ public:
* in the constructor, so that FlightGear can control the * in the constructor, so that FlightGear can control the
* initialization order.</p> * initialization order.</p>
*/ */
virtual void init () = 0; virtual void init ();
/** /**
@ -155,7 +155,7 @@ public:
* publishes. It will be invoked after init, but before any * publishes. It will be invoked after init, but before any
* invocations of update.</p> * invocations of update.</p>
*/ */
virtual void bind () = 0; virtual void bind ();
/** /**
@ -165,7 +165,7 @@ public:
* publishes. It will be invoked by FlightGear (not the destructor) * publishes. It will be invoked by FlightGear (not the destructor)
* just before the subsystem is removed.</p> * just before the subsystem is removed.</p>
*/ */
virtual void unbind () = 0; virtual void unbind ();
/** /**

View file

@ -1160,13 +1160,11 @@ fgUsage (bool verbose)
SGPropertyNode *locale = globals->get_locale(); SGPropertyNode *locale = globals->get_locale();
SGPropertyNode options_root; SGPropertyNode options_root;
SGPath opath( globals->get_fg_root() );
opath.append( "options.xml" );
cout << "" << endl; cout << "" << endl;
try { try {
readProperties(opath.c_str(), &options_root); fgLoadProps("options.xml", &options_root);
} catch (const sg_exception &ex) { } catch (const sg_exception &ex) {
cout << "Unable to read the help file." << endl; cout << "Unable to read the help file." << endl;
cout << "Make sure the file options.xml is located in the FlightGear base directory," << endl; cout << "Make sure the file options.xml is located in the FlightGear base directory," << endl;