Implement instance creation.

This commit is contained in:
Andrew
2013-04-22 17:15:18 -05:00
parent ff3078b3a6
commit 1626fa013c
6 changed files with 109 additions and 5 deletions

View File

@ -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()

View File

@ -74,6 +74,8 @@ void NewInstanceDialog::updateSelectedType()
{
if (!m_selectedType->versionList()->isLoaded())
loadVersionList();
setSelectedVersion(m_selectedType->versionList()->getLatestStable());
}
}
@ -112,6 +114,27 @@ void NewInstanceDialog::loadVersionList()
setSelectedVersion(m_selectedType->versionList()->getLatestStable());
}
QString NewInstanceDialog::instName() const
{
return ui->instNameTextBox->text();
}
QString NewInstanceDialog::iconKey() const
{
// TODO: Implement icon stuff.
return "default";
}
const InstanceTypeInterface *NewInstanceDialog::selectedType() const
{
return m_selectedType;
}
const InstVersion *NewInstanceDialog::selectedVersion() const
{
return m_selectedVersion;
}
void NewInstanceDialog::on_btnChangeVersion_clicked()
{
if (m_selectedType)

View File

@ -41,6 +41,11 @@ public:
void loadVersionList();
QString instName() const;
QString iconKey() const;
const InstanceTypeInterface *selectedType() const;
const InstVersion *selectedVersion() const;
private slots:
void on_btnChangeVersion_clicked();