]> git.mxchange.org Git - flightgear.git/commitdiff
GUI ‘restore defaults’ support.
authorJames Turner <zakalawe@mac.com>
Sun, 8 Mar 2015 00:40:22 +0000 (00:40 +0000)
committerJames Turner <zakalawe@mac.com>
Sun, 8 Mar 2015 00:42:39 +0000 (00:42 +0000)
- Hold ‘alt’ on launch to restore defaults, including launcher prefs.

src/GUI/QtLauncher.cxx
src/Main/fg_init.cxx
src/Navaids/NavDataCache.cxx
src/Navaids/NavDataCache.hxx

index 2d1f167ebde1bdf3ee7ba636df5620a47fb29e93..27fd59c20cacdda428712522cf5c004684cca7be 100644 (file)
@@ -81,7 +81,7 @@ const int AircraftVariantDescriptionRole = Qt::UserRole + 200;
 
 void initNavCache()
 {
-    NavDataCache* cache = NavDataCache::instance();
+    NavDataCache* cache = NavDataCache::createInstance();
     if (cache->isRebuildRequired()) {
         QProgressDialog rebuildProgress("Initialising navigation data, this may take several minutes",
                                        QString() /* cancel text */,
@@ -1102,6 +1102,18 @@ void QtLauncher::initApp(int argc, char** argv)
         // avoid double Apple menu and other weirdness if both Qt and OSG
         // try to initialise various Cocoa structures.
         flightgear::WindowBuilder::setPoseAsStandaloneApp(false);
+
+        Qt::KeyboardModifiers mods = app->queryKeyboardModifiers();
+        if (mods & Qt::AltModifier) {
+            qWarning() << "Alt pressed during launch";
+
+            // wipe out our settings
+            QSettings settings;
+            settings.clear();
+
+
+            Options::sharedInstance()->addOption("restore-defaults", "");
+        }
     }
 }
 
index 41568a42b340e051fb9f8a1c14d3137a0e8be3a0..c18e2d75de07eaaaaddd4c109aa9cc9a70669696 100644 (file)
@@ -590,17 +590,22 @@ int fgInitAircraft(bool reinit)
 bool
 fgInitNav ()
 {
-  flightgear::NavDataCache* cache = flightgear::NavDataCache::instance();
-  static bool doingRebuild = false;
-  if (doingRebuild || cache->isRebuildRequired()) {
-    doingRebuild = true;
-    bool finished = cache->rebuild();
-    if (!finished) {
-      // sleep to give the rebuild thread more time
-      SGTimeStamp::sleepForMSec(50);
-      return false;
+    flightgear::NavDataCache* cache = flightgear::NavDataCache::instance();
+    static bool doingRebuild = false;
+
+    if (!cache) {
+        cache = flightgear::NavDataCache::createInstance();
+        doingRebuild = cache->isRebuildRequired();
+    }
+
+    if (doingRebuild) {
+        bool finished = cache->rebuild();
+        if (!finished) {
+            // sleep to give the rebuild thread more time
+            SGTimeStamp::sleepForMSec(50);
+            return false;
+        }
     }
-  }
 
     // depend on when the NavCache was initialised, scenery paths may not
     // have been setup. This is a safe place to consistently check the value,
index 18666d4d59563df742724ecc6ac25985c98b11f6..1a5b696ab36635515b2357625f413ac249653006 100644 (file)
@@ -1121,20 +1121,22 @@ NavDataCache::NavDataCache()
   d->airwayDatPath = SGPath(globals->get_fg_root());
   d->airwayDatPath.append("Navaids/awy.dat.gz");
 }
-    
+
 NavDataCache::~NavDataCache()
 {
   assert(static_instance == this);
   static_instance = NULL;
   d.reset();
 }
+
+NavDataCache* NavDataCache::createInstance()
+{
+    static_instance = new NavDataCache;
+    return static_instance;
+}
     
 NavDataCache* NavDataCache::instance()
 {
-  if (!static_instance) {
-    static_instance = new NavDataCache;
-  }
-  
   return static_instance;
 }
   
index bf87c2423dd6c426065ceb5237e71f0873158c3d..47220d073bcb5280f5ce30e8e357d7b603cc9e24 100644 (file)
@@ -58,6 +58,9 @@ public:
 // singleton accessor
     static NavDataCache* instance();
 
+// static creator
+    static NavDataCache* createInstance();
+
     SGPath path() const;
     
   /**