]> git.mxchange.org Git - flightgear.git/commitdiff
fgpanel: use same default fgdata path as fgfs
authorThorstenB <brehmt@gmail.com>
Wed, 25 Jan 2012 16:37:14 +0000 (17:37 +0100)
committerThorstenB <brehmt@gmail.com>
Wed, 25 Jan 2012 16:37:14 +0000 (17:37 +0100)
Use location configured at compile-time (Linux) or use run-time check (Mac)
(copied from fgfs/options.cxx).

utils/fgpanel/FGPanelApplication.cxx

index 568d171b1fab7d49a243964cf4622c539a20a8a2..3806f071ed3c79f1b603876f98b6bfd5b9442c05 100644 (file)
 #include <direct.h>
 #endif
 
+#ifdef __APPLE__
+#  include <CoreFoundation/CoreFoundation.h>
+#endif
+
 #include "FGGLApplication.hxx"
 #include "FGPanelApplication.hxx"
 #if defined (SG_MAC)
@@ -64,6 +68,48 @@ inline static string ParseArgs( int argc, char ** argv, const char * token )
   return ParseArgs( argc, argv, s );
 }
 
+
+// define default location of fgdata (use the same as for fgfs)
+#if defined(__CYGWIN__)
+inline static string platformDefaultRoot()
+{
+  return "../data";
+}
+
+#elif defined(_WIN32)
+inline static string platformDefaultRoot()
+{
+  return "..\\data";
+}
+#elif defined(__APPLE__)
+inline static string platformDefaultRoot()
+{
+  /*
+   The following code looks for the base package inside the application
+   bundle, in the standard Contents/Resources location.
+   */
+  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);
+  string root = CFStringGetCStringPtr(path, CFStringGetSystemEncoding());
+
+  CFRelease(resourcesUrl);
+  CFRelease(dataDir);
+  CFRelease(path);
+
+  return root;
+}
+#else
+inline static string platformDefaultRoot()
+{
+  return PKGLIBDIR;
+}
+#endif
+
 #include "FGPNGTextureLoader.hxx"
 #include "FGRGBTextureLoader.hxx"
 static FGPNGTextureLoader pngTextureLoader;
@@ -76,6 +122,8 @@ FGPanelApplication::FGPanelApplication( int argc, char ** argv ) :
   FGCroppedTexture::registerTextureLoader( "png", &pngTextureLoader );
   FGCroppedTexture::registerTextureLoader( "rgb", &rgbTextureLoader );
 
+  ApplicationProperties::root = platformDefaultRoot();
+
   string panelFilename;
   string fgRoot;