Add commandline argument to OpenSpaceEngine to override scene file

Make scene file selectable in Launcher, using the configurationfile value as default
This commit is contained in:
Alexander Bock
2015-07-04 21:21:27 +02:00
parent 8fc343b57f
commit c375f18dac
3 changed files with 59 additions and 19 deletions

View File

@@ -115,11 +115,16 @@ MainWindow::MainWindow()
layout->addWidget(shortcutButton, 0, 1);
layout->setRowStretch(1, 10);
QLabel* configurationSelectionLabel = new QLabel("Configuration:");
layout->addWidget(configurationSelectionLabel, 2, 0);
_configurations = new QComboBox;
layout->addWidget(_configurations, 2, 1);
QLabel* sceneSelectionLabel = new QLabel("Scenes:");
layout->addWidget(sceneSelectionLabel, 2, 0);
layout->addWidget(sceneSelectionLabel, 3, 0);
_scenes = new QComboBox;
layout->addWidget(_scenes, 2, 1);
layout->addWidget(_scenes, 3, 1);
container->setLayout(layout);
}
@@ -192,27 +197,40 @@ void MainWindow::initialize() {
std::string configurationFile = _configurationFile;
bool found = openspace::OpenSpaceEngine::findConfiguration(configurationFile);
if (!found) {
LERRORC("MainWindow", "Could not find configuration file");
}
_configuration = new openspace::ConfigurationManager;
_configuration->loadFromFile(configurationFile);
QString modulesDirectory = QString::fromStdString(
absPath("${SCENE}")
);
// Load all available scenes
QString modulesDirectory = QString::fromStdString(absPath("${SCENE}"));
QDir d(modulesDirectory);
d.setFilter(QDir::Files);
QFileInfoList list = d.entryInfoList();
_scenes->addItem("Use Default");
for (const QFileInfo& i : list) {
_sceneFiles.insert(i.fileName(), i.absoluteFilePath());
_scenes->addItem(i.fileName());
QString file = i.fileName();
file = file.replace(".scene", "");
_sceneFiles.insert(file, i.absoluteFilePath());
_scenes->addItem(file);
}
_scenes->setCurrentText("default.scene");
_scenes->setCurrentText("Use Default");
_syncWidget->setSceneFiles(_sceneFiles);
// Load all available configuration files
QString configurationDirectory = QString::fromStdString(absPath("${SGCT}"));
d = QDir(configurationDirectory);
d.setFilter(QDir::Files);
list = d.entryInfoList();
_configurations->addItem("Use Default");
for (const QFileInfo& i : list) {
QString file = i.fileName();
file = file.replace(".xml", "");
_configurationFiles.insert(file, i.absoluteFilePath());
_configurations->addItem(file);
}
_configurations->setCurrentText("Use Default");
}
void MainWindow::shortcutButtonPressed() {
@@ -224,7 +242,15 @@ void MainWindow::syncButtonPressed() {
}
void MainWindow::startButtonPressed() {
QProcess::startDetached(OpenSpaceExecutable);
QString exec = OpenSpaceExecutable;
if (_sceneFiles.contains(_scenes->currentText()))
exec += " -scene \"" + _sceneFiles[_scenes->currentText()] + "\"";
if (_configurationFiles.contains(_configurations->currentText()))
exec += " -sgct \"" + _configurationFiles[_configurations->currentText()] + "\"";
LINFOC("MainWindow", "Executing: " << exec.toStdString());
QProcess::startDetached(exec);
}
void MainWindow::newsNetworkError() {

View File

@@ -63,9 +63,12 @@ private:
QTextEdit* _informationWidget;
QComboBox* _configurations;
QMap<QString, QString> _configurationFiles;
QComboBox* _scenes;
QMap<QString, QString> _sceneFiles;
ShortcutWidget* _shortcutWidget;
SyncWidget* _syncWidget;