ISOProperties: Don't block when opening default INI in text editor

The purpose of blocking is to reload user INIs after they
have been edited. However, ISOProperties never reloads
default INIs, because they aren't meant to be edited.
Blocking on default INIs is thus useless, and it's
rather annoying for games that have two default INIs,
because it makes it impossible to see both at once.
This commit is contained in:
JosJuice 2015-04-25 22:15:48 +02:00
parent 645aa5af8b
commit db1d81ebf8
2 changed files with 18 additions and 11 deletions

View File

@ -1180,7 +1180,7 @@ bool CISOProperties::SaveGameConfig()
return success; return success;
} }
void CISOProperties::LaunchExternalEditor(const std::string& filename) void CISOProperties::LaunchExternalEditor(const std::string& filename, bool wait_until_closed)
{ {
#ifdef __APPLE__ #ifdef __APPLE__
// wxTheMimeTypesManager is not yet implemented for wxCocoa // wxTheMimeTypesManager is not yet implemented for wxCocoa
@ -1203,18 +1203,25 @@ void CISOProperties::LaunchExternalEditor(const std::string& filename)
if (OpenCommand.IsEmpty()) if (OpenCommand.IsEmpty())
{ {
WxUtils::ShowErrorDialog(_("Couldn't find open command for extension 'ini'!")); WxUtils::ShowErrorDialog(_("Couldn't find open command for extension 'ini'!"));
return;
} }
long result;
if (wait_until_closed)
result = wxExecute(OpenCommand, wxEXEC_SYNC);
else else
result = wxExecute(OpenCommand);
if (result == -1)
{ {
if (wxExecute(OpenCommand, wxEXEC_SYNC) == -1) WxUtils::ShowErrorDialog(_("wxExecute returned -1 on application run!"));
WxUtils::ShowErrorDialog(_("wxExecute returned -1 on application run!")); return;
} }
if (wait_until_closed)
bRefreshList = true; // Just in case
#endif #endif
bRefreshList = true; // Just in case
// Once we're done with the ini edit, give the focus back to Dolphin
SetFocus();
} }
void CISOProperties::OnEditConfig(wxCommandEvent& WXUNUSED (event)) void CISOProperties::OnEditConfig(wxCommandEvent& WXUNUSED (event))
@ -1226,7 +1233,7 @@ void CISOProperties::OnEditConfig(wxCommandEvent& WXUNUSED (event))
std::fstream blankFile(GameIniFileLocal, std::ios::out); std::fstream blankFile(GameIniFileLocal, std::ios::out);
blankFile.close(); blankFile.close();
} }
LaunchExternalEditor(GameIniFileLocal); LaunchExternalEditor(GameIniFileLocal, true);
GameIniLocal.Load(GameIniFileLocal); GameIniLocal.Load(GameIniFileLocal);
LoadGameConfig(); LoadGameConfig();
} }
@ -1283,7 +1290,7 @@ void CISOProperties::OnShowDefaultConfig(wxCommandEvent& WXUNUSED (event))
{ {
std::string path = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename; std::string path = File::GetSysDirectory() + GAMESETTINGS_DIR DIR_SEP + filename;
if (File::Exists(path)) if (File::Exists(path))
LaunchExternalEditor(path); LaunchExternalEditor(path, false);
} }
} }

View File

@ -195,7 +195,7 @@ private:
IDM_BNRSAVEAS IDM_BNRSAVEAS
}; };
void LaunchExternalEditor(const std::string& filename); void LaunchExternalEditor(const std::string& filename, bool wait_until_closed);
void CreateGUIControls(bool); void CreateGUIControls(bool);
void OnClose(wxCloseEvent& event); void OnClose(wxCloseEvent& event);