From 454ef62ee6c8a76981c24e1405aa502f18ad149d Mon Sep 17 00:00:00 2001 From: Xpl0itR Date: Mon, 10 Jun 2019 01:27:22 +0100 Subject: [PATCH] Added Control Settings one day done feature :P --- Ryujinx/Configuration.cs | 5 +- Ryujinx/GUI/ControlSettings.cs | 246 +++++++++ Ryujinx/GUI/ControlSettings.glade | 850 +++++++++++++++++++++++++++++ Ryujinx/GUI/GeneralSettings.cs | 42 +- Ryujinx/GUI/GeneralSettings.glade | 10 +- Ryujinx/GUI/MainMenu.cs | 11 +- Ryujinx/GUI/MainMenu.glade | 4 + Ryujinx/GUI/assets/ryujinxIcon.png | Bin 3132 -> 53785 bytes Ryujinx/Ryujinx.csproj | 1 + Ryujinx/Ui/NpadKeyboard.cs | 4 +- 10 files changed, 1143 insertions(+), 30 deletions(-) create mode 100644 Ryujinx/GUI/ControlSettings.cs create mode 100644 Ryujinx/GUI/ControlSettings.glade diff --git a/Ryujinx/Configuration.cs b/Ryujinx/Configuration.cs index 9f2a08d0bf..444ac468bd 100644 --- a/Ryujinx/Configuration.cs +++ b/Ryujinx/Configuration.cs @@ -138,12 +138,12 @@ namespace Ryujinx /// /// Enable or disable keyboard support (Independent from controllers binding) /// - public bool EnableKeyboard { get; private set; } + public bool EnableKeyboard { get; set; } /// /// Keyboard control bindings /// - public NpadKeyboard KeyboardControls { get; private set; } + public NpadKeyboard KeyboardControls { get; set; } /// /// Controller control bindings @@ -211,6 +211,7 @@ namespace Ryujinx } GeneralSettings.ConfigureSettings(Instance); + ControlSettings.ConfigureControls(Instance); Logger.AddTarget(new AsyncLogTargetWrapper( new ConsoleLogTarget(), diff --git a/Ryujinx/GUI/ControlSettings.cs b/Ryujinx/GUI/ControlSettings.cs new file mode 100644 index 0000000000..9f0790115f --- /dev/null +++ b/Ryujinx/GUI/ControlSettings.cs @@ -0,0 +1,246 @@ +using Gtk; +using GUI = Gtk.Builder.ObjectAttribute; +using Ryujinx.UI.Input; +using System; +using System.Reflection; +using System.Collections.Generic; + +namespace Ryujinx +{ + public class ControlSettings : Window + { + private HLE.Switch device { get; set; } + + internal static Configuration SwitchConfig { get; private set; } + + [GUI] Window CSWin; + [GUI] CheckButton EnableKeyboard; + [GUI] Image ControllerImage; + + [GUI] ToggleButton LStickUp1; + [GUI] ToggleButton LStickDown1; + [GUI] ToggleButton LStickLeft1; + [GUI] ToggleButton LStickRight1; + [GUI] ToggleButton LStickButton1; + [GUI] ToggleButton DpadUp1; + [GUI] ToggleButton DpadDown1; + [GUI] ToggleButton DpadLeft1; + [GUI] ToggleButton DpadRight1; + [GUI] ToggleButton Minus1; + [GUI] ToggleButton L1; + [GUI] ToggleButton ZL1; + [GUI] ToggleButton RStickUp1; + [GUI] ToggleButton RStickDown1; + [GUI] ToggleButton RStickLeft1; + [GUI] ToggleButton RStickRight1; + [GUI] ToggleButton RStickButton1; + [GUI] ToggleButton A1; + [GUI] ToggleButton B1; + [GUI] ToggleButton X1; + [GUI] ToggleButton Y1; + [GUI] ToggleButton Plus1; + [GUI] ToggleButton R1; + [GUI] ToggleButton ZR1; + + public static void ConfigureControls(Configuration Instance) { SwitchConfig = Instance; } + + public ControlSettings(HLE.Switch _device) : this(new Builder("Ryujinx.GUI.ControlSettings.glade"), _device) { } + + private ControlSettings(Builder builder, HLE.Switch _device) : base(builder.GetObject("CSWin").Handle) + { + device = _device; + + builder.Autoconnect(this); + + CSWin.Icon = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.GUI.assets.ryujinxIcon.png"); + ControllerImage.Pixbuf = new Gdk.Pixbuf(Assembly.GetExecutingAssembly(), "Ryujinx.GUI.assets.ryujinxIcon.png", 500, 500); + + LStickUp1.Toggled += (o, args) => Button_Pressed(o, args, LStickUp1); + LStickDown1.Toggled += (o, args) => Button_Pressed(o, args, LStickDown1); + LStickLeft1.Toggled += (o, args) => Button_Pressed(o, args, LStickLeft1); + LStickRight1.Toggled += (o, args) => Button_Pressed(o, args, LStickRight1); + LStickButton1.Toggled += (o, args) => Button_Pressed(o, args, LStickButton1); + DpadUp1.Toggled += (o, args) => Button_Pressed(o, args, DpadUp1); + DpadDown1.Toggled += (o, args) => Button_Pressed(o, args, DpadDown1); + DpadLeft1.Toggled += (o, args) => Button_Pressed(o, args, DpadLeft1); + DpadRight1.Toggled += (o, args) => Button_Pressed(o, args, DpadRight1); + Minus1.Toggled += (o, args) => Button_Pressed(o, args, Minus1); + L1.Toggled += (o, args) => Button_Pressed(o, args, L1); + ZL1.Toggled += (o, args) => Button_Pressed(o, args, ZL1); + RStickUp1.Toggled += (o, args) => Button_Pressed(o, args, RStickUp1); + RStickDown1.Toggled += (o, args) => Button_Pressed(o, args, RStickDown1); + RStickLeft1.Toggled += (o, args) => Button_Pressed(o, args, RStickLeft1); + RStickRight1.Toggled += (o, args) => Button_Pressed(o, args, RStickRight1); + RStickButton1.Toggled += (o, args) => Button_Pressed(o, args, RStickButton1); + A1.Toggled += (o, args) => Button_Pressed(o, args, A1); + B1.Toggled += (o, args) => Button_Pressed(o, args, B1); + X1.Toggled += (o, args) => Button_Pressed(o, args, X1); + Y1.Toggled += (o, args) => Button_Pressed(o, args, Y1); + Plus1.Toggled += (o, args) => Button_Pressed(o, args, Plus1); + R1.Toggled += (o, args) => Button_Pressed(o, args, R1); + ZR1.Toggled += (o, args) => Button_Pressed(o, args, ZR1); + + if (SwitchConfig.EnableKeyboard) { EnableKeyboard.Click(); } + LStickUp1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickUp.ToString(); + LStickDown1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickDown.ToString(); + LStickLeft1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickLeft.ToString(); + LStickRight1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickRight.ToString(); + LStickButton1.Label = SwitchConfig.KeyboardControls.LeftJoycon.StickButton.ToString(); + DpadUp1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadUp.ToString(); + DpadDown1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadDown.ToString(); + DpadLeft1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadLeft.ToString(); + DpadRight1.Label = SwitchConfig.KeyboardControls.LeftJoycon.DPadRight.ToString(); + Minus1.Label = SwitchConfig.KeyboardControls.LeftJoycon.ButtonMinus.ToString(); + L1.Label = SwitchConfig.KeyboardControls.LeftJoycon.ButtonL.ToString(); + ZL1.Label = SwitchConfig.KeyboardControls.LeftJoycon.ButtonZl.ToString(); + RStickUp1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickUp.ToString(); + RStickDown1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickDown.ToString(); + RStickLeft1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickLeft.ToString(); + RStickRight1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickRight.ToString(); + RStickButton1.Label = SwitchConfig.KeyboardControls.RightJoycon.StickButton.ToString(); + A1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonA.ToString(); + B1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonB.ToString(); + X1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonX.ToString(); + Y1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonY.ToString(); + Plus1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonPlus.ToString(); + R1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonR.ToString(); + ZR1.Label = SwitchConfig.KeyboardControls.RightJoycon.ButtonZr.ToString(); + } + + //Events + private void Button_Pressed(object button, EventArgs args, ToggleButton Button) + { + KeyPressEvent += On_KeyPress; + + void On_KeyPress(object obj , KeyPressEventArgs KeyPressed) + { + string key = KeyPressed.Event.Key.ToString(); + + if (GdkToTKInput.ContainsKey(key)) { Button.Label = GdkToTKInput[key]; } + else { Button.Label = "A"; } + + Button.SetStateFlags(0, true); + KeyPressEvent -= On_KeyPress; + } + } + + private void SaveToggle_Activated(object obj, EventArgs args) + { + if (EnableKeyboard.Active) { SwitchConfig.EnableKeyboard = true; } + + SwitchConfig.KeyboardControls.LeftJoycon = new NpadKeyboardLeft() + { + StickUp = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), LStickUp1.Label), + StickDown = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), LStickDown1.Label), + StickLeft = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), LStickLeft1.Label), + StickRight = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), LStickRight1.Label), + StickButton = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), LStickButton1.Label), + DPadUp = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), DpadUp1.Label), + DPadDown = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), DpadDown1.Label), + DPadLeft = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), DpadLeft1.Label), + DPadRight = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), DpadRight1.Label), + ButtonMinus = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), Minus1.Label), + ButtonL = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), L1.Label), + ButtonZl = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), ZL1.Label), + }; + + SwitchConfig.KeyboardControls.RightJoycon = new NpadKeyboardRight() + { + StickUp = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), RStickUp1.Label), + StickDown = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), RStickDown1.Label), + StickLeft = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), RStickLeft1.Label), + StickRight = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), RStickRight1.Label), + StickButton = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), RStickButton1.Label), + ButtonA = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), A1.Label), + ButtonB = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), B1.Label), + ButtonX = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), X1.Label), + ButtonY = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), Y1.Label), + ButtonPlus = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), Plus1.Label), + ButtonR = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), R1.Label), + ButtonZr = (OpenTK.Input.Key)Enum.Parse(typeof(OpenTK.Input.Key), ZR1.Label), + }; + + Configuration.SaveConfig(SwitchConfig, System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.json")); + Configuration.Configure(device, SwitchConfig); + + Destroy(); + } + + private void CloseToggle_Activated(object obj, EventArgs args) + { + Destroy(); + } + + public readonly Dictionary GdkToTKInput = new Dictionary() + { + {"A", "A"}, + {"B", "B"}, + {"C", "C"}, + {"D", "D"}, + {"E", "E"}, + {"F", "F"}, + {"G", "G"}, + {"H", "H"}, + {"I", "I"}, + {"J", "J"}, + {"K", "K"}, + {"L", "L"}, + {"M", "M"}, + {"N", "N"}, + {"O", "O"}, + {"P", "P"}, + {"Q", "Q"}, + {"R", "R"}, + {"S", "S"}, + {"T", "T"}, + {"U", "U"}, + {"V", "V"}, + {"W", "W"}, + {"X", "X"}, + {"Y", "Y"}, + {"Z", "Z"}, + {"a", "A"}, + {"b", "B"}, + {"c", "C"}, + {"d", "D"}, + {"e", "E"}, + {"f", "F"}, + {"g", "G"}, + {"h", "H"}, + {"i", "I"}, + {"j", "J"}, + {"k", "K"}, + {"l", "L"}, + {"m", "M"}, + {"n", "N"}, + {"o", "O"}, + {"p", "P"}, + {"q", "Q"}, + {"r", "R"}, + {"s", "S"}, + {"t", "T"}, + {"u", "U"}, + {"v", "V"}, + {"w", "W"}, + {"x", "X"}, + {"y", "Y"}, + {"z", "Z"}, + {"Key_0", "Number0"}, + {"Key_1", "Number1"}, + {"Key_2", "Number2"}, + {"Key_3", "Number3"}, + {"Key_4", "Number4"}, + {"Key_5", "Number5"}, + {"Key_6", "Number6"}, + {"Key_7", "Number7"}, + {"Key_8", "Number8"}, + {"Key_9", "Number9"}, + {"equal", "Plus"}, + {"minus", "Minus"}, + {"uparrow", "Up"}, + {"downarrow", "Down"}, + {"leftarrow", "Left"}, + {"rightarrow", "Right"}, + }; + } +} diff --git a/Ryujinx/GUI/ControlSettings.glade b/Ryujinx/GUI/ControlSettings.glade new file mode 100644 index 0000000000..b296a2f731 --- /dev/null +++ b/Ryujinx/GUI/ControlSettings.glade @@ -0,0 +1,850 @@ + + + + + + False + Ryujinx - Control Settings + True + dialog + + + + + + False + vertical + 2 + + + False + end + + + Save + True + True + True + + + + False + True + 0 + + + + + Close + True + True + True + + + + False + True + 1 + + + + + False + False + 1 + + + + + True + True + + + True + False + vertical + + + Enable Keyboard Support + True + True + False + True + + + False + False + 10 + 0 + + + + + True + False + + + False + True + 1 + + + + + True + False + + + True + False + 2 + 5 + + + True + False + LStick Up + + + 0 + 0 + + + + + True + False + LStick Down + + + 0 + 1 + + + + + True + False + LStick Left + + + 0 + 2 + + + + + True + False + LStick Right + + + 0 + 3 + + + + + True + False + LStick Button + + + 0 + 4 + + + + + True + False + Dpad Up + + + 0 + 5 + + + + + True + False + Dpad Down + + + 0 + 6 + + + + + True + False + Dpad Left + + + 0 + 7 + + + + + True + False + Dpad Right + + + 0 + 8 + + + + + True + False + - + + + 0 + 9 + + + + + True + False + L + + + 0 + 10 + + + + + True + False + ZL + + + 0 + 11 + + + + + True + False + ZR + + + 2 + 11 + + + + + True + False + R + + + 2 + 10 + + + + + True + False + + + + + 2 + 9 + + + + + True + False + Y + + + 2 + 8 + + + + + True + False + X + + + 2 + 7 + + + + + True + False + B + + + 2 + 6 + + + + + True + False + A + + + 2 + 5 + + + + + True + False + RStick Button + + + 2 + 4 + + + + + True + False + RStick Right + + + 2 + 3 + + + + + True + False + RStick Left + + + 2 + 2 + + + + + True + False + RStick Down + + + 2 + 1 + + + + + True + False + RStick Up + + + 2 + 0 + + + + + + True + True + True + + + 1 + 0 + + + + + + True + True + True + + + 1 + 1 + + + + + + True + True + True + + + 1 + 2 + + + + + + True + True + True + + + 1 + 3 + + + + + + True + True + True + + + 1 + 4 + + + + + + True + True + True + + + 1 + 5 + + + + + + True + True + True + + + 1 + 6 + + + + + + True + True + True + + + 1 + 7 + + + + + + True + True + True + + + 1 + 8 + + + + + + True + True + True + + + 1 + 9 + + + + + + True + True + True + + + 1 + 10 + + + + + + True + True + True + + + 1 + 11 + + + + + + True + True + True + + + 3 + 0 + + + + + + True + True + True + + + 3 + 1 + + + + + + True + True + True + + + 3 + 2 + + + + + + True + True + True + + + 3 + 3 + + + + + + True + True + True + + + 3 + 4 + + + + + + True + True + True + + + 3 + 5 + + + + + + True + True + True + + + 3 + 6 + + + + + + True + True + True + + + 3 + 7 + + + + + + True + True + True + + + 3 + 8 + + + + + + True + True + True + + + 3 + 9 + + + + + + True + True + True + + + 3 + 10 + + + + + + True + True + True + + + 3 + 11 + + + + + False + True + 10 + 0 + + + + + True + False + + + True + True + 1 + + + + + False + True + 2 + + + + + + + True + False + Controller 1 + + + False + + + + + True + False + Multiple controllers are not yet supported + + + 1 + True + + + + + True + False + Controller 2 + + + 1 + False + + + + + True + False + Multiple controllers are not yet supported + + + 2 + + + + + True + False + Controller 3 + + + 2 + False + + + + + True + False + Multiple controllers are not yet supported + + + 3 + + + + + True + False + Controller 4 + + + 3 + False + + + + + True + False + Multiple controllers are not yet supported + + + 4 + + + + + True + False + Controller 5 + + + 4 + False + + + + + True + False + Multiple controllers are not yet supported + + + 5 + + + + + True + False + Controller 6 + + + 5 + False + + + + + True + False + Multiple controllers are not yet supported + + + 6 + + + + + True + False + Controller 7 + + + 6 + False + + + + + True + False + Multiple controllers are not yet supported + + + 7 + + + + + True + False + Controller 8 + + + 7 + False + + + + + True + True + 0 + + + + + + diff --git a/Ryujinx/GUI/GeneralSettings.cs b/Ryujinx/GUI/GeneralSettings.cs index e3d16483df..92cf24cf88 100644 --- a/Ryujinx/GUI/GeneralSettings.cs +++ b/Ryujinx/GUI/GeneralSettings.cs @@ -13,7 +13,6 @@ namespace Ryujinx internal static Configuration SwitchConfig { get; private set; } - //UI Controls [GUI] Window GSWin; [GUI] CheckButton ErrorLogToggle; [GUI] CheckButton WarningLogToggle; @@ -28,6 +27,7 @@ namespace Ryujinx [GUI] CheckButton FSICToggle; [GUI] CheckButton AggrToggle; [GUI] CheckButton IgnoreToggle; + [GUI] CheckButton DirectKeyboardAccess; [GUI] ComboBoxText SystemLanguageSelect; [GUI] CheckButton CustThemeToggle; [GUI] Entry CustThemeDir; @@ -58,6 +58,7 @@ namespace Ryujinx if (SwitchConfig.EnableFsIntegrityChecks) { FSICToggle.Click(); } if (SwitchConfig.EnableAggressiveCpuOpts) { AggrToggle.Click(); } if (SwitchConfig.IgnoreMissingServices) { IgnoreToggle.Click(); } + if (SwitchConfig.EnableKeyboard) { DirectKeyboardAccess.Click(); } if (SwitchConfig.EnableCustomTheme) { CustThemeToggle.Click(); } SystemLanguageSelect.SetActiveId(SwitchConfig.SystemLanguage.ToString()); @@ -73,27 +74,23 @@ namespace Ryujinx if (CustThemeToggle.Active == false) { CustThemeDir.Sensitive = false; } else { CustThemeDir.Sensitive = true; } } - private void CloseToggle_Activated(object obj, EventArgs args) - { - Destroy(); - } - private void SaveToggle_Activated(object obj, EventArgs args) { - if (ErrorLogToggle.Active) { SwitchConfig.LoggingEnableError = true; } - if (WarningLogToggle.Active) { SwitchConfig.LoggingEnableWarn = true; } - if (InfoLogToggle.Active) { SwitchConfig.LoggingEnableInfo = true; } - if (StubLogToggle.Active) { SwitchConfig.LoggingEnableStub = true; } - if (DebugLogToggle.Active) { SwitchConfig.LoggingEnableDebug = true; } - if (FileLogToggle.Active) { SwitchConfig.EnableFileLog = true; } - if (DockedModeToggle.Active) { SwitchConfig.DockedMode = true; } - if (DiscordToggle.Active) { SwitchConfig.EnableDiscordIntergration = true; } - if (VSyncToggle.Active) { SwitchConfig.EnableVsync = true; } - if (MultiSchedToggle.Active) { SwitchConfig.EnableMulticoreScheduling = true; } - if (FSICToggle.Active) { SwitchConfig.EnableFsIntegrityChecks = true; } - if (AggrToggle.Active) { SwitchConfig.EnableAggressiveCpuOpts = true; } - if (IgnoreToggle.Active) { SwitchConfig.IgnoreMissingServices = true; } - if (CustThemeToggle.Active) { SwitchConfig.EnableCustomTheme = true; } + if (ErrorLogToggle.Active) { SwitchConfig.LoggingEnableError = true; } + if (WarningLogToggle.Active) { SwitchConfig.LoggingEnableWarn = true; } + if (InfoLogToggle.Active) { SwitchConfig.LoggingEnableInfo = true; } + if (StubLogToggle.Active) { SwitchConfig.LoggingEnableStub = true; } + if (DebugLogToggle.Active) { SwitchConfig.LoggingEnableDebug = true; } + if (FileLogToggle.Active) { SwitchConfig.EnableFileLog = true; } + if (DockedModeToggle.Active) { SwitchConfig.DockedMode = true; } + if (DiscordToggle.Active) { SwitchConfig.EnableDiscordIntergration = true; } + if (VSyncToggle.Active) { SwitchConfig.EnableVsync = true; } + if (MultiSchedToggle.Active) { SwitchConfig.EnableMulticoreScheduling = true; } + if (FSICToggle.Active) { SwitchConfig.EnableFsIntegrityChecks = true; } + if (AggrToggle.Active) { SwitchConfig.EnableAggressiveCpuOpts = true; } + if (IgnoreToggle.Active) { SwitchConfig.IgnoreMissingServices = true; } + if (DirectKeyboardAccess.Active) { SwitchConfig.EnableKeyboard = true; } + if (CustThemeToggle.Active) { SwitchConfig.EnableCustomTheme = true; } SwitchConfig.SystemLanguage = (SystemLanguage)Enum.Parse(typeof(SystemLanguage), SystemLanguageSelect.ActiveId); SwitchConfig.CustomThemePath = CustThemeDir.Buffer.Text; @@ -105,5 +102,10 @@ namespace Ryujinx Destroy(); } + + private void CloseToggle_Activated(object obj, EventArgs args) + { + Destroy(); + } } } diff --git a/Ryujinx/GUI/GeneralSettings.glade b/Ryujinx/GUI/GeneralSettings.glade index ca4c4d6da6..8203e3a1ca 100644 --- a/Ryujinx/GUI/GeneralSettings.glade +++ b/Ryujinx/GUI/GeneralSettings.glade @@ -4,6 +4,7 @@ False + Ryujinx - General Settings True dialog @@ -236,6 +237,7 @@ True False + end System Language: @@ -273,10 +275,12 @@ - + + Direct Keyboard Access True - False - gtk-discard + True + False + True 1 diff --git a/Ryujinx/GUI/MainMenu.cs b/Ryujinx/GUI/MainMenu.cs index 141efebdb9..1a6800f7e2 100644 --- a/Ryujinx/GUI/MainMenu.cs +++ b/Ryujinx/GUI/MainMenu.cs @@ -31,10 +31,8 @@ namespace Ryujinx private static ListStore TableStore { get; set; } - //UI Controls [GUI] Window MainWin; [GUI] MenuItem NFC; - [GUI] MenuItem ControlSettingsMenu; [GUI] TreeView GameTable; [GUI] ScrolledWindow GameTableWindow; [GUI] GLArea GLScreen; @@ -102,7 +100,6 @@ namespace Ryujinx GLScreen.Hide(); NFC.Sensitive = false; - ControlSettingsMenu.Sensitive = false; GameTable.AppendColumn("Icon", new CellRendererPixbuf(), "pixbuf", 0); GameTable.AppendColumn("Game", new CellRendererText(), "text", 1); @@ -327,6 +324,14 @@ namespace Ryujinx GSWin.Show(); } + private void Control_Settings_Pressed(object o, EventArgs args) + { + var CSWin = new ControlSettings(device); + gtkapp.Register(GLib.Cancellable.Current); + gtkapp.AddWindow(CSWin); + CSWin.Show(); + } + private void NFC_Pressed(object o, EventArgs args) { FileChooserDialog fc = new FileChooserDialog("Choose the file to open", this, FileChooserAction.Open, "Cancel", ResponseType.Cancel, "Open", ResponseType.Accept); diff --git a/Ryujinx/GUI/MainMenu.glade b/Ryujinx/GUI/MainMenu.glade index 47665c4f98..ddece64b5e 100644 --- a/Ryujinx/GUI/MainMenu.glade +++ b/Ryujinx/GUI/MainMenu.glade @@ -7,6 +7,9 @@ Ryujinx 1280 750 + + + True @@ -88,6 +91,7 @@ False Control Settings True + diff --git a/Ryujinx/GUI/assets/ryujinxIcon.png b/Ryujinx/GUI/assets/ryujinxIcon.png index 17716fb3e432c4dcd3833476268a50c3a4f6c009..2fc7b0174c4c6b7a56c985b62d7c2a4f3924e938 100644 GIT binary patch literal 53785 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 + diff --git a/Ryujinx/Ui/NpadKeyboard.cs b/Ryujinx/Ui/NpadKeyboard.cs index 79d6330c61..ac739c0867 100644 --- a/Ryujinx/Ui/NpadKeyboard.cs +++ b/Ryujinx/Ui/NpadKeyboard.cs @@ -45,12 +45,12 @@ namespace Ryujinx.UI.Input /// /// Left JoyCon Keyboard Bindings /// - public NpadKeyboardLeft LeftJoycon { get; private set; } + public NpadKeyboardLeft LeftJoycon { get; set; } /// /// Right JoyCon Keyboard Bindings /// - public NpadKeyboardRight RightJoycon { get; private set; } + public NpadKeyboardRight RightJoycon { get; set; } /// /// Hotkey Keyboard Bindings