Show a warning if the instance path contains a '!'

The checks and warnings happen the time MMC loads (via QLOG_INFO), the time the GUI starts (via a dialog) and when the user changes the instance path via the settings window.
This commit is contained in:
Loetkolben
2014-07-27 15:50:03 +02:00
committed by Jan Dalheimer
parent e5b393318f
commit c0254d9a75
7 changed files with 116 additions and 52 deletions

View File

@ -1533,3 +1533,21 @@ void MainWindow::checkSetDefaultJava()
MMC->settings()->set("JavaPath", QString("java"));
}
}
void MainWindow::checkInstancePathForProblems()
{
QString instanceFolder = MMC->settings()->get("InstanceDir").toString();
if (checkProblemticPathJava(QDir(instanceFolder)))
{
QMessageBox warning;
warning.setText(tr(
"Your instance folder contains \'!\' and this is known to cause Java problems!"));
warning.setInformativeText(
tr("You have now three options: <br/>"
" - ignore this warning <br/>"
" - change the instance dir in the settings <br/>"
" - move this installation of MultiMC5 to a different folder"));
warning.setDefaultButton(QMessageBox::Ok);
warning.exec();
}
}

View File

@ -52,6 +52,7 @@ public:
void checkSetDefaultJava();
void checkMigrateLegacyAssets();
void checkInstancePathForProblems();
private
slots:

View File

@ -112,16 +112,37 @@ void MultiMCPage::on_ftbBrowseBtn_clicked()
void MultiMCPage::on_instDirBrowseBtn_clicked()
{
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Instance Directory"),
ui->instDirTextBox->text());
QString cooked_dir = NormalizePath(raw_dir);
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Instance Directory"),
ui->instDirTextBox->text());
QString cooked_dir = NormalizePath(raw_dir);
// do not allow current dir - it's dirty. Do not allow dirs that don't exist
if (!cooked_dir.isEmpty() && QDir(cooked_dir).exists())
{
ui->instDirTextBox->setText(cooked_dir);
if (checkProblemticPathJava(QDir(cooked_dir)))
{
QMessageBox warning;
warning.setText(tr("You're trying to specify an instance folder which\'s path "
"contains at least one \'!\'. "
"Java is known to cause problems if that is the case, your "
"instances (probably) won't start!"));
warning.setInformativeText(
tr("Do you really want to use this path? "
"Selecting \"No\" will close this and not alter your instance path."));
warning.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
int result = warning.exec();
if (result == QMessageBox::Yes)
{
ui->instDirTextBox->setText(cooked_dir);
}
}
else
{
ui->instDirTextBox->setText(cooked_dir);
}
}
}
void MultiMCPage::on_iconsDirBrowseBtn_clicked()
{
QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Icons Directory"),