summaryrefslogtreecommitdiffstats
path: root/gui/mainwindow.cpp
diff options
context:
space:
mode:
authorAndrew <forkk@forkk.net>2013-04-22 17:15:18 -0500
committerAndrew <forkk@forkk.net>2013-04-22 17:15:18 -0500
commit1626fa013c86dc9f30254f57b3518211f6d0c65a (patch)
tree7f5a1b09916f55587c282ff7ffb51d792ceefd08 /gui/mainwindow.cpp
parentff3078b3a652316eef760386f665d152cbeb8db9 (diff)
downloadMultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.gz
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.lz
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.tar.xz
MultiMC-1626fa013c86dc9f30254f57b3518211f6d0c65a.zip
Implement instance creation.
Diffstat (limited to 'gui/mainwindow.cpp')
-rw-r--r--gui/mainwindow.cpp45
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()