diff options
author | Andrew <forkk@forkk.net> | 2013-04-22 17:15:18 -0500 |
---|---|---|
committer | Andrew <forkk@forkk.net> | 2013-04-22 17:15:18 -0500 |
commit | 1626fa013c86dc9f30254f57b3518211f6d0c65a (patch) | |
tree | 7f5a1b09916f55587c282ff7ffb51d792ceefd08 /gui/mainwindow.cpp | |
parent | ff3078b3a652316eef760386f665d152cbeb8db9 (diff) | |
download | PrismLauncher-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.gz PrismLauncher-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.bz2 PrismLauncher-1626fa013c86dc9f30254f57b3518211f6d0c65a.zip |
Implement instance creation.
Diffstat (limited to 'gui/mainwindow.cpp')
-rw-r--r-- | gui/mainwindow.cpp | 45 |
1 files changed, 44 insertions, 1 deletions
diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 7761afe8..7f05c745 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -147,7 +147,50 @@ void MainWindow::instanceActivated ( QModelIndex index ) void MainWindow::on_actionAddInstance_triggered() { NewInstanceDialog *newInstDlg = new NewInstanceDialog ( this ); - newInstDlg->exec(); + if (newInstDlg->exec()) + { + Instance *newInstance = NULL; + + QString instDirName = DirNameFromString(newInstDlg->instName()); + QString instDir = PathCombine(globalSettings->get("InstanceDir").toString(), + instDirName); + + InstanceLoader::InstTypeError error = InstanceLoader::get(). + createInstance(newInstance, newInstDlg->selectedType(), instDir); + + if (error == InstanceLoader::NoError) + { + newInstance->setName(newInstDlg->instName()); + instList.add(InstancePtr(newInstance)); + } + else + { + QString errorMsg = QString("Failed to create instance %1: "). + arg(instDirName); + + switch (error) + { + case InstanceLoader::TypeNotRegistered: + errorMsg += "Instance type not found."; + break; + + case InstanceLoader::InstExists: + errorMsg += "An instance with the given directory name already exists."; + break; + + case InstanceLoader::CantCreateDir: + errorMsg += "Failed to create the instance directory."; + break; + + default: + errorMsg += QString("Unknown instance loader error %1"). + arg(error); + break; + } + + QMessageBox::warning(this, "Error", errorMsg); + } + } } void MainWindow::on_actionChangeInstGroup_triggered() |