From e7a7a30e19df85e8bd938ff8dd3e62820e178a08 Mon Sep 17 00:00:00 2001
From: PT_Dreamer <josemanuelbarros@gmail.com>
Date: Tue, 21 Aug 2012 14:41:53 +0100
Subject: [PATCH] GCS-Created new command line option to allow choosing the
 config file to use. This is a last resort option to mac problems displaying
 the initial dialog.

---
 ground/openpilotgcs/src/app/main.cpp          |  4 +-
 .../src/plugins/coreplugin/mainwindow.cpp     | 52 ++++++++++++++-----
 2 files changed, 41 insertions(+), 15 deletions(-)

diff --git a/ground/openpilotgcs/src/app/main.cpp b/ground/openpilotgcs/src/app/main.cpp
index c3de16c74..f276f60a2 100644
--- a/ground/openpilotgcs/src/app/main.cpp
+++ b/ground/openpilotgcs/src/app/main.cpp
@@ -59,8 +59,8 @@ static const char *fixedOptionsC =
 "    -client             Attempt to connect to already running instance\n"
 "    -clean-config       Delete all existing configuration settings\n"
 "    -exit-after-config  Exit GCS after manipulating configuration settings\n"
-"    -D key=value        Override configuration settings e.g: -D General/OverrideLanguage=de\n";
-
+"    -D key=value        Override configuration settings e.g: -D General/OverrideLanguage=de\n"
+"    -config=value       Default configuration file to load if settings file is empty\n";
 static const char *HELP_OPTION1 = "-h";
 static const char *HELP_OPTION2 = "-help";
 static const char *HELP_OPTION3 = "/h";
diff --git a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp
index 7f2cf4e44..bc7d79dab 100644
--- a/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp
+++ b/ground/openpilotgcs/src/plugins/coreplugin/mainwindow.cpp
@@ -269,26 +269,52 @@ void MainWindow::extensionsInitialized()
 
     QSettings* qs = m_settings;
     QSettings * settings;
+    QString commandLine;
     if ( ! qs->allKeys().count() ){
-        importSettings * dialog=new importSettings(this);
+        foreach(QString str,qApp->arguments())
+        {
+            if(str.contains("config"))
+            {
+                qDebug()<<"ass";
+                commandLine=str.split("=").at(1);
+                qDebug()<<commandLine;
+            }
+        }
         QDir directory(QCoreApplication::applicationDirPath());
 #ifdef Q_OS_MAC
-        directory.cdUp();
-        directory.cd("Resources");
+            directory.cdUp();
+            directory.cd("Resources");
 #else
-        directory.cdUp();
-        directory.cd("share");
-        directory.cd("openpilotgcs");
+            directory.cdUp();
+            directory.cd("share");
+            directory.cd("openpilotgcs");
 #endif
-        directory.cd("default_configurations");
+            directory.cd("default_configurations");
 
-        qDebug() << "Looking for default config files in: " + directory.absolutePath();
-        dialog->loadFiles(directory.absolutePath());
-        dialog->exec();
-        settings=new QSettings(dialog->choosenConfig(), XmlConfig::XmlSettingsFormat);
+            qDebug() << "Looking for default config files in: " + directory.absolutePath();
+        bool showDialog=true;
+        QString filename;
+        if(!commandLine.isEmpty())
+        {
+            if(QFile::exists(directory.absolutePath()+QDir::separator()+commandLine))
+            {
+                filename=directory.absolutePath()+QDir::separator()+commandLine;
+                qDebug()<<"Load configuration from command line";
+                settings=new QSettings(filename, XmlConfig::XmlSettingsFormat);
+                showDialog=false;
+            }
+        }
+        if(showDialog)
+        {
+            importSettings * dialog=new importSettings(this);
+            dialog->loadFiles(directory.absolutePath());
+            dialog->exec();
+            filename=dialog->choosenConfig();
+            settings=new QSettings(filename, XmlConfig::XmlSettingsFormat);
+            delete dialog;
+        }
         qs=settings;
-        qDebug() << "Load default config from resource "<<dialog->choosenConfig();
-        delete dialog;
+        qDebug() << "Load default config from resource "<<filename;
     }
     qs->beginGroup("General");
     loadStyleSheet(qs->value("StyleSheet","none").toString());