X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FInput%2Ffgjs.cxx;h=59effd534ddf7cd080160ef3fe41eb7fd79f3b94;hb=76020894600c4d20f958f3d402419dc0fce78b74;hp=918d9df5d3232c7d39b6e9cf883459cfd19d14bb;hpb=14885374de79779e3f642f6ecb39d4723836166a;p=flightgear.git diff --git a/src/Input/fgjs.cxx b/src/Input/fgjs.cxx index 918d9df5d..59effd534 100644 --- a/src/Input/fgjs.cxx +++ b/src/Input/fgjs.cxx @@ -28,8 +28,8 @@ #include -#ifdef _MSC_VER -#include +#ifdef _WIN32 +# include #endif #include @@ -58,6 +58,11 @@ using std::string; #include "jsinput.h" +#ifdef __APPLE__ +# include +#endif + +using simgear::PropertyList; bool confirmAnswer() { char answer; @@ -81,6 +86,8 @@ int main( int argc, char *argv[] ) { cout << "Usage:" << endl; cout << " --help\t\t\tShow this help" << endl; exit(0); + } else if (strncmp("--fg-root=", argv[i], 10) == 0) { + // used later } else { cout << "Unknown option \"" << argv[i] << "\"" << endl; exit(0); @@ -130,12 +137,12 @@ int main( int argc, char *argv[] ) { SGPropertyNode *templatetree = new SGPropertyNode(); try { readProperties(templatefile.str().c_str(), templatetree); - } catch (sg_io_exception e) { + } catch (sg_io_exception & e) { cout << e.getFormattedMessage (); } - vector axes = templatetree->getChildren("axis"); - for(vector::iterator iter = axes.begin(); iter != axes.end(); iter++) { + PropertyList axes = templatetree->getChildren("axis"); + for(PropertyList::iterator iter = axes.begin(); iter != axes.end(); ++iter) { cout << "Move the control you wish to use for " << (*iter)->getStringValue("desc") << " " << (*iter)->getStringValue("direction") << endl; cout << "Pressing a button skips this axis" << endl; @@ -152,18 +159,18 @@ int main( int argc, char *argv[] ) { ->getDeadBand(jsi->getInputAxis())); axis->setDoubleValue("binding/factor", jsi->getInputAxisPositive() ? 1.0 : -1.0); } else { - iter--; + --iter; } } else { cout << "Skipping control" << endl; if ( ! confirmAnswer() ) - iter--; + --iter; } cout << endl; } - vector buttons = templatetree->getChildren("button"); - for(vector::iterator iter = buttons.begin(); iter != buttons.end(); iter++) { + PropertyList buttons = templatetree->getChildren("button"); + for(PropertyList::iterator iter = buttons.begin(); iter != buttons.end(); ++iter) { cout << "Press the button you wish to use for " << (*iter)->getStringValue("desc") << endl; cout << "Moving a joystick axis skips this button" << endl; fflush( stdout ); @@ -176,12 +183,12 @@ int main( int argc, char *argv[] ) { SGPropertyNode *button = jstree[ jsi->getInputJoystick() ]->getChild("button", jsi->getInputButton(), true); copyProperties(*iter, button); } else { - iter--; + --iter; } } else { cout << "Skipping control" << endl; if (! confirmAnswer()) - iter--; + --iter; } cout << endl; } @@ -197,7 +204,7 @@ int main( int argc, char *argv[] ) { jstree[i]->setStringValue("name", jss->getJoystick(i)->getName()); writeProperties(xfs[i], jstree[i], true); - } catch (sg_io_exception e) { + } catch (sg_io_exception & e) { cout << e.getFormattedMessage (); } xfs[i].close(); @@ -209,6 +216,7 @@ int main( int argc, char *argv[] ) { delete jsi; delete[] xfs; delete jss; + delete[] jstree; return 1; } @@ -230,12 +238,12 @@ static string fgScanForOption( const string& option, int argc, char **argv ) { free_hostname = true; } - SG_LOG(SG_GENERAL, SG_INFO, "Scanning command line for: " << option ); + SG_LOG(SG_INPUT, SG_INFO, "Scanning command line for: " << option ); int len = option.length(); while ( i < argc ) { - SG_LOG( SG_GENERAL, SG_DEBUG, "argv[" << i << "] = " << argv[i] ); + SG_LOG( SG_INPUT, SG_DEBUG, "argv[" << i << "] = " << argv[i] ); string arg = argv[i]; if ( arg.find( option ) == 0 ) { @@ -256,7 +264,7 @@ static string fgScanForOption( const string& option, const string& path ) { return ""; } - SG_LOG( SG_GENERAL, SG_INFO, "Scanning " << path << " for: " << option ); + SG_LOG( SG_INPUT, SG_INFO, "Scanning " << path << " for: " << option ); int len = option.length(); @@ -335,28 +343,26 @@ string getFGRoot ( int argc, char **argv ) { // find fg-root any other way. if ( root.empty() ) { #if defined( __CYGWIN__ ) - root = "/FlightGear"; -#elif defined( WIN32 ) - root = "\\FlightGear"; -#elif defined(OSX_BUNDLE) - /* the following code looks for the base package directly inside - the application bundle. This can be changed fairly easily by - fiddling with the code below. And yes, I know it's ugly and verbose. + root = "../data"; +#elif defined( _WIN32 ) + root = "..\\data"; +#elif defined(__APPLE__) + /* + The following code looks for the base package inside the application + bundle, in the standard Contents/Resources location. */ - CFBundleRef appBundle = CFBundleGetMainBundle(); - CFURLRef appUrl = CFBundleCopyBundleURL(appBundle); - CFRelease(appBundle); - // look for a 'data' subdir directly inside the bundle : is there - // a better place? maybe in Resources? I don't know ... - CFURLRef dataDir = CFURLCreateCopyAppendingPathComponent(NULL, appUrl, CFSTR("data"), true); + CFURLRef resourcesUrl = CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()); + + // look for a 'data' subdir + CFURLRef dataDir = CFURLCreateCopyAppendingPathComponent(NULL, resourcesUrl, CFSTR("data"), true); // now convert down to a path, and the a c-string CFStringRef path = CFURLCopyFileSystemPath(dataDir, kCFURLPOSIXPathStyle); root = CFStringGetCStringPtr(path, CFStringGetSystemEncoding()); // tidy up. - CFRelease(appBundle); + CFRelease(resourcesUrl); CFRelease(dataDir); CFRelease(path); #else