mirror of https://github.com/PCSX2/pcsx2.git
gui: Fix/improve plugin/BIOS error dialog handling
If the user encounters a plugin/BIOS error and the plugin/BIOS dialog is already open, make the dialog switch to the panel that corresponds with the error. Also, fix the open dialog detection and provide a slightly different messagebox if the plugin/BIOS dialog is already open - for these cases it won't say "Click Ok to go to the x configuration panel" anymore.
This commit is contained in:
parent
0b42db11bd
commit
f9ea013b60
|
@ -60,17 +60,21 @@ DEFINE_EVENT_TYPE( pxEvt_ThreadTaskTimeout_SysExec );
|
|||
ScopedPtr<AppConfig> g_Conf;
|
||||
|
||||
template<typename DialogType>
|
||||
int AppOpenModalDialog( wxWindow* parent=NULL )
|
||||
int AppOpenModalDialog( wxString panel_name, wxWindow* parent=NULL )
|
||||
{
|
||||
if( wxWindow* window = wxFindWindowByName( L"Dialog:" + DialogType::GetNameStatic() ) )
|
||||
{
|
||||
window->SetFocus();
|
||||
if( wxDialog* dialog = wxDynamicCast( window, wxDialog ) )
|
||||
{
|
||||
// Switch to the requested panel.
|
||||
wxCommandEvent evt(pxEvt_SetSettingsPage);
|
||||
evt.SetString(panel_name);
|
||||
dialog->GetEventHandler()->ProcessEvent(evt);
|
||||
|
||||
// It's legal to call ShowModal on a non-modal dialog, therefore making
|
||||
// it modal in nature for the needs of whatever other thread of action wants
|
||||
// to block against it:
|
||||
|
||||
if( !dialog->IsModal() )
|
||||
{
|
||||
int result = dialog->ShowModal();
|
||||
|
@ -87,19 +91,23 @@ int AppOpenModalDialog( wxWindow* parent=NULL )
|
|||
|
||||
static bool HandlePluginError( BaseException& ex )
|
||||
{
|
||||
if( !pxDialogExists( L"CoreSettings" ) )
|
||||
if (!pxDialogExists(L"Dialog:" + Dialogs::ComponentsConfigDialog::GetNameStatic()))
|
||||
{
|
||||
if( !Msgbox::OkCancel( ex.FormatDisplayMessage() +
|
||||
_("\n\nPress Ok to go to the Plugin Configuration Panel.")
|
||||
) )
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Msgbox::Alert(ex.FormatDisplayMessage());
|
||||
}
|
||||
|
||||
g_Conf->ComponentsTabName = L"Plugins";
|
||||
|
||||
// TODO: Send a message to the panel to select the failed plugin.
|
||||
|
||||
return AppOpenModalDialog<Dialogs::ComponentsConfigDialog>() != wxID_CANCEL;
|
||||
return AppOpenModalDialog<Dialogs::ComponentsConfigDialog>(L"Plugins") != wxID_CANCEL;
|
||||
}
|
||||
|
||||
class PluginErrorEvent : public pxExceptionEvent
|
||||
|
@ -188,16 +196,20 @@ protected:
|
|||
|
||||
static bool HandleBIOSError(BaseException& ex)
|
||||
{
|
||||
if (!pxDialogExists(L"CoreSettings"))
|
||||
if (!pxDialogExists(L"Dialog:" + Dialogs::ComponentsConfigDialog::GetNameStatic()))
|
||||
{
|
||||
if (!Msgbox::OkCancel(ex.FormatDisplayMessage() + L"\n\n" + BIOS_GetMsg_Required()
|
||||
+ L"\n\n" + _("Press Ok to go to the BIOS Configuration Panel."), _("PS2 BIOS Error")))
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Msgbox::Alert(ex.FormatDisplayMessage() + L"\n\n" + BIOS_GetMsg_Required(), _("PS2 BIOS Error"));
|
||||
}
|
||||
|
||||
g_Conf->ComponentsTabName = L"BIOS";
|
||||
|
||||
return AppOpenModalDialog<Dialogs::ComponentsConfigDialog>() != wxID_CANCEL;
|
||||
return AppOpenModalDialog<Dialogs::ComponentsConfigDialog>(L"BIOS") != wxID_CANCEL;
|
||||
}
|
||||
|
||||
void BIOSLoadErrorEvent::InvokeEvent()
|
||||
|
|
Loading…
Reference in New Issue