Basic impl of Error Applet (#1551)

This commit is contained in:
Ac_K 2020-09-28 00:00:38 +02:00 committed by GitHub
parent f89b754abb
commit 4f65043ad7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 303 additions and 0 deletions

View file

@ -128,5 +128,56 @@ namespace Ryujinx.Ui
device.UserChannelPersistence.ExecuteProgram(kind, value);
MainWindow.GlWidget?.Exit();
}
public bool DisplayErrorAppletDialog(string title, string message, string[] buttons)
{
ManualResetEvent dialogCloseEvent = new ManualResetEvent(false);
bool showDetails = false;
Application.Invoke(delegate
{
try
{
ErrorAppletDialog msgDialog = new ErrorAppletDialog(_parent, DialogFlags.DestroyWithParent, MessageType.Error, buttons)
{
Title = title,
Text = message,
UseMarkup = true,
WindowPosition = WindowPosition.CenterAlways
};
msgDialog.SetDefaultSize(400, 0);
msgDialog.Response += (object o, ResponseArgs args) =>
{
if (buttons != null)
{
if (buttons.Length > 1)
{
if (args.ResponseId != (ResponseType)(buttons.Length - 1))
{
showDetails = true;
}
}
}
dialogCloseEvent.Set();
msgDialog?.Dispose();
};
msgDialog.Show();
}
catch (Exception e)
{
Logger.Error?.Print(LogClass.Application, $"Error displaying ErrorApplet Dialog: {e}");
dialogCloseEvent.Set();
}
});
dialogCloseEvent.WaitOne();
return showDetails;
}
}
}