Implement Software Keyboard GTK frontend (#1434)

* Implement SwKbd GUI

* Relocate UI handler to Emu Context from Config

Also create a common interface for UI handlers in the context and specialize for Gtk

Add basic input length validation in InputDialog

* Add Transfer Memory support to AppletCreator

Read Initial Text for SwKbd using Transfer Memory

* Improve InputDialog widget

Improve length validation
Has extra label to show validition info
Handle potential errors and log them

* Misc improvements

* Improve string validation
* Improve error handling
* Remove tuple in struct
* Address formatting nits

* Add proper Cancel functionality

Also handle GUI errors in UI handler

* Address jD's comments

* Fix _uiHandler init

* Address AcK's comments
This commit is contained in:
mageven 2020-08-03 07:00:58 +05:30 committed by GitHub
parent f0c91d9efb
commit c11855565e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 245 additions and 15 deletions

View file

@ -5,6 +5,7 @@ using LibHac.Ns;
using Ryujinx.Audio;
using Ryujinx.Common.Logging;
using Ryujinx.Configuration;
using Ryujinx.Configuration.System;
using Ryujinx.Debugger.Profiler;
using Ryujinx.Graphics.GAL;
using Ryujinx.Graphics.OpenGL;
@ -31,6 +32,7 @@ namespace Ryujinx.Ui
private static HLE.Switch _emulationContext;
private static GlRenderer _glWidget;
private static GtkHostUiHandler _uiHandler;
private static AutoResetEvent _deviceExitStatus = new AutoResetEvent(false);
@ -191,6 +193,8 @@ namespace Ryujinx.Ui
Task.Run(RefreshFirmwareLabel);
_statusBar.Hide();
_uiHandler = new GtkHostUiHandler(this);
}
private void MainWindow_WindowStateEvent(object o, WindowStateEventArgs args)
@ -318,7 +322,10 @@ namespace Ryujinx.Ui
{
_virtualFileSystem.Reload();
HLE.Switch instance = new HLE.Switch(_virtualFileSystem, _contentManager, InitializeRenderer(), InitializeAudioEngine());
HLE.Switch instance = new HLE.Switch(_virtualFileSystem, _contentManager, InitializeRenderer(), InitializeAudioEngine())
{
UiHandler = _uiHandler
};
instance.Initialize();