diff --git a/GUI.NET/Config/InputInfo.cs b/GUI.NET/Config/InputInfo.cs
index 299a1ddd..3eab70e5 100644
--- a/GUI.NET/Config/InputInfo.cs
+++ b/GUI.NET/Config/InputInfo.cs
@@ -27,89 +27,9 @@ namespace Mesen.GUI.Config
{
}
- public KeyMappings(int controllerIndex, int keySetIndex)
+ public KeyMappings Clone()
{
- if(controllerIndex == 0) {
- if(keySetIndex == 0) {
- A = InteropEmu.GetKeyCode("A");
- B = InteropEmu.GetKeyCode("S");
- Select = InteropEmu.GetKeyCode("Q");
- Start = InteropEmu.GetKeyCode("W");
- Up = InteropEmu.GetKeyCode("Up Arrow");
- Down = InteropEmu.GetKeyCode("Down Arrow");
- Left = InteropEmu.GetKeyCode("Left Arrow");
- Right = InteropEmu.GetKeyCode("Right Arrow");
-
- TurboA = InteropEmu.GetKeyCode("Z");
- TurboB = InteropEmu.GetKeyCode("X");
- } else if(keySetIndex == 1) {
- //XInput Default (Xbox controllers)
- A = InteropEmu.GetKeyCode("Pad1 A");
- B = InteropEmu.GetKeyCode("Pad1 X");
- Select = InteropEmu.GetKeyCode("Pad1 Back");
- Start = InteropEmu.GetKeyCode("Pad1 Start");
- Up = InteropEmu.GetKeyCode("Pad1 Up");
- Down = InteropEmu.GetKeyCode("Pad1 Down");
- Left = InteropEmu.GetKeyCode("Pad1 Left");
- Right = InteropEmu.GetKeyCode("Pad1 Right");
-
- TurboA = InteropEmu.GetKeyCode("Pad1 B");
- TurboB = InteropEmu.GetKeyCode("Pad1 Y");
- } else if(keySetIndex == 2) {
- //DirectInput Default (Used PS4 controller as a default)
- A = InteropEmu.GetKeyCode("Joy1 But2");
- B = InteropEmu.GetKeyCode("Joy1 But1");
- Select = InteropEmu.GetKeyCode("Joy1 But9");
- Start = InteropEmu.GetKeyCode("Joy1 But10");
- Up = InteropEmu.GetKeyCode("Joy1 DPad Up");
- Down = InteropEmu.GetKeyCode("Joy1 DPad Down");
- Left = InteropEmu.GetKeyCode("Joy1 DPad Left");
- Right = InteropEmu.GetKeyCode("Joy1 DPad Right");
-
- TurboA = InteropEmu.GetKeyCode("Joy1 But3");
- TurboB = InteropEmu.GetKeyCode("Joy1 But4");
- }
- } else if(controllerIndex == 1) {
- if(keySetIndex == 0) {
- A = InteropEmu.GetKeyCode("G");
- B = InteropEmu.GetKeyCode("H");
- Select = InteropEmu.GetKeyCode("T");
- Start = InteropEmu.GetKeyCode("Y");
- Up = InteropEmu.GetKeyCode("I");
- Down = InteropEmu.GetKeyCode("K");
- Left = InteropEmu.GetKeyCode("J");
- Right = InteropEmu.GetKeyCode("L");
-
- TurboA = InteropEmu.GetKeyCode("B");
- TurboB = InteropEmu.GetKeyCode("N");
- } else if(keySetIndex == 1) {
- //XInput Default (Xbox controllers)
- A = InteropEmu.GetKeyCode("Pad2 A");
- B = InteropEmu.GetKeyCode("Pad2 X");
- Select = InteropEmu.GetKeyCode("Pad2 Back");
- Start = InteropEmu.GetKeyCode("Pad2 Start");
- Up = InteropEmu.GetKeyCode("Pad2 Up");
- Down = InteropEmu.GetKeyCode("Pad2 Down");
- Left = InteropEmu.GetKeyCode("Pad2 Left");
- Right = InteropEmu.GetKeyCode("Pad2 Right");
-
- TurboA = InteropEmu.GetKeyCode("Pad2 B");
- TurboB = InteropEmu.GetKeyCode("Pad2 Y");
- } else if(keySetIndex == 2) {
- //DirectInput Default (Used PS4 controller as a default)
- A = InteropEmu.GetKeyCode("Joy2 But2");
- B = InteropEmu.GetKeyCode("Joy2 But1");
- Select = InteropEmu.GetKeyCode("Joy2 But9");
- Start = InteropEmu.GetKeyCode("Joy2 But10");
- Up = InteropEmu.GetKeyCode("Joy2 DPad Up");
- Down = InteropEmu.GetKeyCode("Joy2 DPad Down");
- Left = InteropEmu.GetKeyCode("Joy2 DPad Left");
- Right = InteropEmu.GetKeyCode("Joy2 DPad Right");
-
- TurboA = InteropEmu.GetKeyCode("Joy2 But3");
- TurboB = InteropEmu.GetKeyCode("Joy2 But4");
- }
- }
+ return (KeyMappings)this.MemberwiseClone();
}
public InteropEmu.KeyMapping ToInteropMapping()
@@ -174,14 +94,15 @@ namespace Mesen.GUI.Config
public void InitializeDefaults()
{
+ KeyPresets presets = new KeyPresets();
while(Controllers.Count < 4) {
var controllerInfo = new ControllerInfo();
controllerInfo.ControllerType = Controllers.Count <= 1 ? InteropEmu.ControllerType.StandardController : InteropEmu.ControllerType.None;
if(Controllers.Count <= 1) {
- controllerInfo.Keys.Add(new KeyMappings(Controllers.Count, 0));
- controllerInfo.Keys.Add(new KeyMappings(Controllers.Count, 1));
- controllerInfo.Keys.Add(new KeyMappings(Controllers.Count, 2));
+ controllerInfo.Keys.Add(Controllers.Count == 0 ? presets.ArrowLayout : presets.NestopiaLayout);
+ controllerInfo.Keys.Add(Controllers.Count == 0 ? presets.XboxLayout1 : presets.XboxLayout2);
+ controllerInfo.Keys.Add(Controllers.Count == 0 ? presets.Ps4Layout1 : presets.Ps4Layout2);
}
Controllers.Add(controllerInfo);
}
diff --git a/GUI.NET/Config/KeyPresets.cs b/GUI.NET/Config/KeyPresets.cs
new file mode 100644
index 00000000..5758fc9e
--- /dev/null
+++ b/GUI.NET/Config/KeyPresets.cs
@@ -0,0 +1,87 @@
+namespace Mesen.GUI.Config
+{
+ public class KeyPresets
+ {
+ KeyMappings _wasdLayout;
+ KeyMappings _arrowLayout;
+ KeyMappings _nestopiaLayout;
+ KeyMappings _fceuxLayout;
+ KeyMappings[] _xboxLayouts = new KeyMappings[2];
+ KeyMappings[] _ps4Layouts = new KeyMappings[2];
+ KeyMappings[] _snes30Layouts = new KeyMappings[2];
+
+ public KeyMappings WasdLayout { get { return _wasdLayout.Clone(); } }
+ public KeyMappings ArrowLayout { get { return _arrowLayout.Clone(); } }
+ public KeyMappings NestopiaLayout { get { return _nestopiaLayout.Clone(); } }
+ public KeyMappings FceuxLayout { get { return _fceuxLayout.Clone(); } }
+ public KeyMappings XboxLayout1 { get { return _xboxLayouts[0].Clone(); } }
+ public KeyMappings XboxLayout2 { get { return _xboxLayouts[1].Clone(); } }
+ public KeyMappings Ps4Layout1 { get { return _ps4Layouts[0].Clone(); } }
+ public KeyMappings Ps4Layout2 { get { return _ps4Layouts[1].Clone(); } }
+ public KeyMappings Snes30Layout1 { get { return _snes30Layouts[0].Clone(); } }
+ public KeyMappings Snes30Layout2 { get { return _snes30Layouts[1].Clone(); } }
+
+ public KeyPresets()
+ {
+ _wasdLayout = new KeyMappings() {
+ A = InteropEmu.GetKeyCode("K"), B = InteropEmu.GetKeyCode("J"),
+ TurboA = InteropEmu.GetKeyCode(","), TurboB = InteropEmu.GetKeyCode("M"),
+ Select = InteropEmu.GetKeyCode("U"), Start = InteropEmu.GetKeyCode("I"),
+ Up = InteropEmu.GetKeyCode("W"), Down = InteropEmu.GetKeyCode("S"),
+ Left = InteropEmu.GetKeyCode("A"), Right = InteropEmu.GetKeyCode("D")
+ };
+
+ _arrowLayout= new KeyMappings() {
+ A = InteropEmu.GetKeyCode("S"), B = InteropEmu.GetKeyCode("A"),
+ TurboA = InteropEmu.GetKeyCode("Z"), TurboB = InteropEmu.GetKeyCode("X"),
+ Select = InteropEmu.GetKeyCode("Q"), Start = InteropEmu.GetKeyCode("W"),
+ Up = InteropEmu.GetKeyCode("Up Arrow"), Down = InteropEmu.GetKeyCode("Down Arrow"),
+ Left = InteropEmu.GetKeyCode("Left Arrow"), Right = InteropEmu.GetKeyCode("Right Arrow")
+ };
+
+ _nestopiaLayout = new KeyMappings() {
+ A = InteropEmu.GetKeyCode("."), B = InteropEmu.GetKeyCode(","),
+ TurboA = InteropEmu.GetKeyCode("L"), TurboB = InteropEmu.GetKeyCode("K"),
+ Select = InteropEmu.GetKeyCode("Shift"), Start = InteropEmu.GetKeyCode("Enter"),
+ Up = InteropEmu.GetKeyCode("Up Arrow"), Down = InteropEmu.GetKeyCode("Down Arrow"),
+ Left = InteropEmu.GetKeyCode("Left Arrow"), Right = InteropEmu.GetKeyCode("Right Arrow")
+ };
+
+ _fceuxLayout = new KeyMappings() {
+ A = InteropEmu.GetKeyCode("F"), B = InteropEmu.GetKeyCode("D"),
+ TurboA = 0, TurboB = 0,
+ Select = InteropEmu.GetKeyCode("S"), Start = InteropEmu.GetKeyCode("Enter"),
+ Up = InteropEmu.GetKeyCode("Up Arrow"), Down = InteropEmu.GetKeyCode("Down Arrow"),
+ Left = InteropEmu.GetKeyCode("Left Arrow"), Right = InteropEmu.GetKeyCode("Right Arrow")
+ };
+
+ for(int i = 0; i < 2; i++) {
+ string prefix = "Pad" + (i+1).ToString() + " ";
+ _xboxLayouts[i] = new KeyMappings() {
+ A = InteropEmu.GetKeyCode(prefix + "A"), B = InteropEmu.GetKeyCode(prefix + "X"),
+ TurboA = InteropEmu.GetKeyCode(prefix + "B"), TurboB = InteropEmu.GetKeyCode(prefix + "Y"),
+ Select = InteropEmu.GetKeyCode(prefix + "Back"), Start = InteropEmu.GetKeyCode(prefix + "Start"),
+ Up = InteropEmu.GetKeyCode(prefix + "Up"), Down = InteropEmu.GetKeyCode(prefix + "Down"),
+ Left = InteropEmu.GetKeyCode(prefix + "Left"), Right = InteropEmu.GetKeyCode(prefix + "Right")
+ };
+
+ prefix = "Joy" + (i+1).ToString() + " ";
+ _ps4Layouts[i] = new KeyMappings() {
+ A = InteropEmu.GetKeyCode(prefix + "But2"), B = InteropEmu.GetKeyCode(prefix + "But1"),
+ TurboA = InteropEmu.GetKeyCode(prefix + "But3"), TurboB = InteropEmu.GetKeyCode(prefix + "But4"),
+ Select = InteropEmu.GetKeyCode(prefix + "But9"), Start = InteropEmu.GetKeyCode(prefix + "But10"),
+ Up = InteropEmu.GetKeyCode(prefix + "DPad Up"), Down = InteropEmu.GetKeyCode(prefix + "DPad Down"),
+ Left = InteropEmu.GetKeyCode(prefix + "DPad Left"), Right = InteropEmu.GetKeyCode(prefix + "DPad Right")
+ };
+
+ _snes30Layouts[i] = new KeyMappings() {
+ A = InteropEmu.GetKeyCode(prefix + "But2"), B = InteropEmu.GetKeyCode(prefix + "But5"),
+ TurboA = InteropEmu.GetKeyCode(prefix + "But1"), TurboB = InteropEmu.GetKeyCode(prefix + "But4"),
+ Select = InteropEmu.GetKeyCode(prefix + "But11"), Start = InteropEmu.GetKeyCode(prefix + "But12"),
+ Up = InteropEmu.GetKeyCode(prefix + "Y+"), Down = InteropEmu.GetKeyCode(prefix + "Y-"),
+ Left = InteropEmu.GetKeyCode(prefix + "X-"), Right = InteropEmu.GetKeyCode(prefix + "X+")
+ };
+ }
+ }
+ }
+}
diff --git a/GUI.NET/Dependencies/resources.fr.xml b/GUI.NET/Dependencies/resources.fr.xml
index 3965d829..acbec76c 100644
--- a/GUI.NET/Dependencies/resources.fr.xml
+++ b/GUI.NET/Dependencies/resources.fr.xml
@@ -177,7 +177,23 @@
Mappage #2
Mappage #3
Mappage #4
- Réinitialiser
+
+ Choisir un préréglage...
+ Clavier
+ Déplacement avec WSAD
+ Déplacement avec les flèches
+ Disposition par défaut de FCEUX
+ Disposition par défaut de Nestopia
+ Manette Xbox
+ Manette #1
+ Manette #2
+ Manette PS4
+ Manette #1
+ Manette #2
+ Manette SNES30
+ Manette #1
+ Manette #2
+
Effacer le mappage
OK
Annuler
diff --git a/GUI.NET/Dependencies/resources.ja.xml b/GUI.NET/Dependencies/resources.ja.xml
index 64d6a370..14982a8d 100644
--- a/GUI.NET/Dependencies/resources.ja.xml
+++ b/GUI.NET/Dependencies/resources.ja.xml
@@ -177,7 +177,23 @@
キーセット 2
キーセット 3
キーセット 4
- リセット
+
+ プリセットを選ぶ..
+ キーボード
+ WSADレイアウト
+ アローキーレイアウト
+ FCEUXのデフォルトレイアウト
+ Nestopiaのデフォルトレイアウト
+ Xboxコントローラ
+ コントローラ1
+ コントローラ2
+ PS4コントローラ
+ コントローラ1
+ コントローラ2
+ SFC30コントローラ
+ コントローラ1
+ コントローラ2
+
キーセットを削除
OK
キャンセル
diff --git a/GUI.NET/Forms/Config/ctrlStandardController.cs b/GUI.NET/Forms/Config/ctrlStandardController.cs
index 28e8e692..30695716 100644
--- a/GUI.NET/Forms/Config/ctrlStandardController.cs
+++ b/GUI.NET/Forms/Config/ctrlStandardController.cs
@@ -13,9 +13,21 @@ namespace Mesen.GUI.Forms.Config
{
public partial class ctrlStandardController : UserControl
{
+ public event EventHandler OnChange;
+
+ public enum MappedKeyType
+ {
+ None,
+ Keyboard,
+ Controller
+ }
+
public ctrlStandardController()
{
InitializeComponent();
+ if(LicenseManager.UsageMode != LicenseUsageMode.Designtime) {
+ Initialize(new KeyMappings());
+ }
}
private void InitButton(Button btn, UInt32 scanCode)
@@ -36,6 +48,22 @@ namespace Mesen.GUI.Forms.Config
InitButton(btnRight, mappings.Right);
InitButton(btnTurboA, mappings.TurboA);
InitButton(btnTurboB, mappings.TurboB);
+
+ this.OnChange?.Invoke(this, null);
+ }
+
+ public MappedKeyType GetKeyType()
+ {
+ KeyMappings mappings = GetKeyMappings();
+ MappedKeyType keyType = MappedKeyType.None;
+ if(mappings.A > 0xFFFF || mappings.B > 0xFFFF || mappings.Down > 0xFFFF || mappings.Left > 0xFFFF || mappings.Right > 0xFFFF || mappings.Select > 0xFFFF ||
+ mappings.Start > 0xFFFF || mappings.TurboA > 0xFFFF || mappings.TurboB > 0xFFFF || mappings.TurboSelect > 0xFFFF || mappings.TurboStart > 0xFFFF || mappings.Up > 0xFFFF) {
+ keyType = MappedKeyType.Controller;
+ } else if(mappings.A > 0 || mappings.B > 0 || mappings.Down > 0 || mappings.Left > 0 || mappings.Right > 0 || mappings.Select > 0 ||
+ mappings.Start > 0 || mappings.TurboA > 0 || mappings.TurboB > 0 || mappings.TurboSelect > 0 || mappings.TurboStart > 0 || mappings.Up > 0) {
+ keyType = MappedKeyType.Keyboard;
+ }
+ return keyType;
}
public void ClearKeys()
@@ -50,6 +78,8 @@ namespace Mesen.GUI.Forms.Config
InitButton(btnRight, 0);
InitButton(btnTurboA, 0);
InitButton(btnTurboB, 0);
+
+ this.OnChange?.Invoke(this, null);
}
private void btnMapping_Click(object sender, EventArgs e)
@@ -58,6 +88,8 @@ namespace Mesen.GUI.Forms.Config
frm.ShowDialog();
((Button)sender).Text = frm.BindedKeyName;
((Button)sender).Tag = frm.BindedKeyCode;
+
+ this.OnChange?.Invoke(this, null);
}
public KeyMappings GetKeyMappings()
diff --git a/GUI.NET/Forms/Config/frmControllerConfig.Designer.cs b/GUI.NET/Forms/Config/frmControllerConfig.Designer.cs
index 8bc912b7..c32b4f5e 100644
--- a/GUI.NET/Forms/Config/frmControllerConfig.Designer.cs
+++ b/GUI.NET/Forms/Config/frmControllerConfig.Designer.cs
@@ -27,6 +27,8 @@
///
private void InitializeComponent()
{
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmControllerConfig));
this.ctrlStandardController0 = new Mesen.GUI.Forms.Config.ctrlStandardController();
this.tabMain = new System.Windows.Forms.TabControl();
this.tpgSet1 = new System.Windows.Forms.TabPage();
@@ -36,15 +38,32 @@
this.ctrlStandardController2 = new Mesen.GUI.Forms.Config.ctrlStandardController();
this.tpgSet4 = new System.Windows.Forms.TabPage();
this.ctrlStandardController3 = new Mesen.GUI.Forms.Config.ctrlStandardController();
+ this.imageList = new System.Windows.Forms.ImageList(this.components);
this.btnClear = new System.Windows.Forms.Button();
- this.btnReset = new System.Windows.Forms.Button();
this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.btnSelectPreset = new System.Windows.Forms.Button();
this.trkTurboSpeed = new System.Windows.Forms.TrackBar();
this.lblTurboSpeed = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.lblTurboFast = new System.Windows.Forms.Label();
this.lblSlow = new System.Windows.Forms.Label();
+ this.mnuStripPreset = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.mnuKeyboard = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuWasdLayout = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuArrowLayout = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuFceuxLayout = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuNestopiaLayout = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
+ this.mnuXboxController = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuXboxLayout1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuXboxLayout2 = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuPs4Controller = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuPs4Layout1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuPs4Layout2 = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuSnes30Controller = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuSnes30Layout1 = new System.Windows.Forms.ToolStripMenuItem();
+ this.mnuSnes30Layout2 = new System.Windows.Forms.ToolStripMenuItem();
this.baseConfigPanel.SuspendLayout();
this.tabMain.SuspendLayout();
this.tpgSet1.SuspendLayout();
@@ -55,6 +74,7 @@
this.tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.trkTurboSpeed)).BeginInit();
this.panel1.SuspendLayout();
+ this.mnuStripPreset.SuspendLayout();
this.SuspendLayout();
//
// baseConfigPanel
@@ -70,8 +90,9 @@
this.ctrlStandardController0.Location = new System.Drawing.Point(0, 0);
this.ctrlStandardController0.Margin = new System.Windows.Forms.Padding(0);
this.ctrlStandardController0.Name = "ctrlStandardController0";
- this.ctrlStandardController0.Size = new System.Drawing.Size(585, 209);
+ this.ctrlStandardController0.Size = new System.Drawing.Size(585, 208);
this.ctrlStandardController0.TabIndex = 0;
+ this.ctrlStandardController0.OnChange += new System.EventHandler(this.ctrlStandardController_OnChange);
//
// tabMain
//
@@ -81,6 +102,7 @@
this.tabMain.Controls.Add(this.tpgSet3);
this.tabMain.Controls.Add(this.tpgSet4);
this.tabMain.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.tabMain.ImageList = this.imageList;
this.tabMain.Location = new System.Drawing.Point(3, 3);
this.tabMain.Name = "tabMain";
this.tabMain.SelectedIndex = 0;
@@ -90,9 +112,9 @@
// tpgSet1
//
this.tpgSet1.Controls.Add(this.ctrlStandardController0);
- this.tpgSet1.Location = new System.Drawing.Point(4, 22);
+ this.tpgSet1.Location = new System.Drawing.Point(4, 23);
this.tpgSet1.Name = "tpgSet1";
- this.tpgSet1.Size = new System.Drawing.Size(585, 209);
+ this.tpgSet1.Size = new System.Drawing.Size(585, 208);
this.tpgSet1.TabIndex = 0;
this.tpgSet1.Text = "Key Set #1";
this.tpgSet1.UseVisualStyleBackColor = true;
@@ -100,9 +122,9 @@
// tpgSet2
//
this.tpgSet2.Controls.Add(this.ctrlStandardController1);
- this.tpgSet2.Location = new System.Drawing.Point(4, 22);
+ this.tpgSet2.Location = new System.Drawing.Point(4, 23);
this.tpgSet2.Name = "tpgSet2";
- this.tpgSet2.Size = new System.Drawing.Size(585, 209);
+ this.tpgSet2.Size = new System.Drawing.Size(585, 208);
this.tpgSet2.TabIndex = 1;
this.tpgSet2.Text = "Key Set #2";
this.tpgSet2.UseVisualStyleBackColor = true;
@@ -113,15 +135,16 @@
this.ctrlStandardController1.Location = new System.Drawing.Point(0, 0);
this.ctrlStandardController1.Margin = new System.Windows.Forms.Padding(0);
this.ctrlStandardController1.Name = "ctrlStandardController1";
- this.ctrlStandardController1.Size = new System.Drawing.Size(585, 209);
+ this.ctrlStandardController1.Size = new System.Drawing.Size(585, 208);
this.ctrlStandardController1.TabIndex = 1;
+ this.ctrlStandardController1.OnChange += new System.EventHandler(this.ctrlStandardController_OnChange);
//
// tpgSet3
//
this.tpgSet3.Controls.Add(this.ctrlStandardController2);
- this.tpgSet3.Location = new System.Drawing.Point(4, 22);
+ this.tpgSet3.Location = new System.Drawing.Point(4, 23);
this.tpgSet3.Name = "tpgSet3";
- this.tpgSet3.Size = new System.Drawing.Size(585, 209);
+ this.tpgSet3.Size = new System.Drawing.Size(585, 208);
this.tpgSet3.TabIndex = 2;
this.tpgSet3.Text = "Key Set #3";
this.tpgSet3.UseVisualStyleBackColor = true;
@@ -132,15 +155,16 @@
this.ctrlStandardController2.Location = new System.Drawing.Point(0, 0);
this.ctrlStandardController2.Margin = new System.Windows.Forms.Padding(0);
this.ctrlStandardController2.Name = "ctrlStandardController2";
- this.ctrlStandardController2.Size = new System.Drawing.Size(585, 209);
+ this.ctrlStandardController2.Size = new System.Drawing.Size(585, 208);
this.ctrlStandardController2.TabIndex = 1;
+ this.ctrlStandardController2.OnChange += new System.EventHandler(this.ctrlStandardController_OnChange);
//
// tpgSet4
//
this.tpgSet4.Controls.Add(this.ctrlStandardController3);
- this.tpgSet4.Location = new System.Drawing.Point(4, 22);
+ this.tpgSet4.Location = new System.Drawing.Point(4, 23);
this.tpgSet4.Name = "tpgSet4";
- this.tpgSet4.Size = new System.Drawing.Size(585, 209);
+ this.tpgSet4.Size = new System.Drawing.Size(585, 208);
this.tpgSet4.TabIndex = 3;
this.tpgSet4.Text = "Key Set #4";
this.tpgSet4.UseVisualStyleBackColor = true;
@@ -151,35 +175,30 @@
this.ctrlStandardController3.Location = new System.Drawing.Point(0, 0);
this.ctrlStandardController3.Margin = new System.Windows.Forms.Padding(0);
this.ctrlStandardController3.Name = "ctrlStandardController3";
- this.ctrlStandardController3.Size = new System.Drawing.Size(585, 209);
+ this.ctrlStandardController3.Size = new System.Drawing.Size(585, 208);
this.ctrlStandardController3.TabIndex = 1;
+ this.ctrlStandardController3.OnChange += new System.EventHandler(this.ctrlStandardController_OnChange);
+ //
+ // imageList
+ //
+ this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
+ this.imageList.TransparentColor = System.Drawing.Color.Transparent;
+ this.imageList.Images.SetKeyName(0, "Keyboard");
+ this.imageList.Images.SetKeyName(1, "Controller");
//
// btnClear
//
this.btnClear.AutoSize = true;
- this.btnClear.Location = new System.Drawing.Point(118, 3);
+ this.btnClear.Location = new System.Drawing.Point(3, 3);
this.btnClear.Name = "btnClear";
- this.btnClear.Size = new System.Drawing.Size(109, 23);
+ this.btnClear.Size = new System.Drawing.Size(105, 23);
this.btnClear.TabIndex = 3;
this.btnClear.Text = "Clear Key Bindings";
this.btnClear.UseVisualStyleBackColor = true;
this.btnClear.Click += new System.EventHandler(this.btnClear_Click);
//
- // btnReset
- //
- this.btnReset.AutoSize = true;
- this.btnReset.Location = new System.Drawing.Point(3, 3);
- this.btnReset.Name = "btnReset";
- this.btnReset.Size = new System.Drawing.Size(109, 23);
- this.btnReset.TabIndex = 4;
- this.btnReset.Text = "Reset to Default";
- this.btnReset.UseVisualStyleBackColor = true;
- this.btnReset.Visible = false;
- this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
- //
// flowLayoutPanel2
//
- this.flowLayoutPanel2.Controls.Add(this.btnReset);
this.flowLayoutPanel2.Controls.Add(this.btnClear);
this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Left;
this.flowLayoutPanel2.Location = new System.Drawing.Point(0, 0);
@@ -194,6 +213,7 @@
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
+ this.tableLayoutPanel1.Controls.Add(this.btnSelectPreset, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.trkTurboSpeed, 2, 1);
this.tableLayoutPanel1.Controls.Add(this.lblTurboSpeed, 1, 1);
this.tableLayoutPanel1.Controls.Add(this.panel1, 2, 2);
@@ -209,6 +229,20 @@
this.tableLayoutPanel1.Size = new System.Drawing.Size(599, 288);
this.tableLayoutPanel1.TabIndex = 23;
//
+ // btnSelectPreset
+ //
+ this.btnSelectPreset.Anchor = System.Windows.Forms.AnchorStyles.Left;
+ this.btnSelectPreset.AutoSize = true;
+ this.btnSelectPreset.Image = ((System.Drawing.Image)(resources.GetObject("btnSelectPreset.Image")));
+ this.btnSelectPreset.Location = new System.Drawing.Point(3, 245);
+ this.btnSelectPreset.Name = "btnSelectPreset";
+ this.btnSelectPreset.Size = new System.Drawing.Size(105, 23);
+ this.btnSelectPreset.TabIndex = 4;
+ this.btnSelectPreset.Text = "Select Preset...";
+ this.btnSelectPreset.TextImageRelation = System.Windows.Forms.TextImageRelation.TextBeforeImage;
+ this.btnSelectPreset.UseVisualStyleBackColor = true;
+ this.btnSelectPreset.Click += new System.EventHandler(this.btnSelectPreset_Click);
+ //
// trkTurboSpeed
//
this.trkTurboSpeed.LargeChange = 2;
@@ -257,6 +291,130 @@
this.lblSlow.TabIndex = 0;
this.lblSlow.Text = "Slow";
//
+ // mnuStripPreset
+ //
+ this.mnuStripPreset.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuKeyboard,
+ this.toolStripMenuItem1,
+ this.mnuXboxController,
+ this.mnuPs4Controller,
+ this.mnuSnes30Controller});
+ this.mnuStripPreset.Name = "mnuStripPreset";
+ this.mnuStripPreset.Size = new System.Drawing.Size(170, 120);
+ //
+ // mnuKeyboard
+ //
+ this.mnuKeyboard.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuWasdLayout,
+ this.mnuArrowLayout,
+ this.mnuFceuxLayout,
+ this.mnuNestopiaLayout});
+ this.mnuKeyboard.Name = "mnuKeyboard";
+ this.mnuKeyboard.Size = new System.Drawing.Size(169, 22);
+ this.mnuKeyboard.Text = "Keyboard";
+ //
+ // mnuWasdLayout
+ //
+ this.mnuWasdLayout.Name = "mnuWasdLayout";
+ this.mnuWasdLayout.Size = new System.Drawing.Size(172, 22);
+ this.mnuWasdLayout.Text = "WASD Layout";
+ this.mnuWasdLayout.Click += new System.EventHandler(this.mnuWasdLayout_Click);
+ //
+ // mnuArrowLayout
+ //
+ this.mnuArrowLayout.Name = "mnuArrowLayout";
+ this.mnuArrowLayout.Size = new System.Drawing.Size(172, 22);
+ this.mnuArrowLayout.Text = "Arrow Keys Layout";
+ this.mnuArrowLayout.Click += new System.EventHandler(this.mnuArrowLayout_Click);
+ //
+ // mnuFceuxLayout
+ //
+ this.mnuFceuxLayout.Name = "mnuFceuxLayout";
+ this.mnuFceuxLayout.Size = new System.Drawing.Size(172, 22);
+ this.mnuFceuxLayout.Text = "FCEUX Default";
+ this.mnuFceuxLayout.Click += new System.EventHandler(this.mnuFceuxLayout_Click);
+ //
+ // mnuNestopiaLayout
+ //
+ this.mnuNestopiaLayout.Name = "mnuNestopiaLayout";
+ this.mnuNestopiaLayout.Size = new System.Drawing.Size(172, 22);
+ this.mnuNestopiaLayout.Text = "Nestopia Default";
+ this.mnuNestopiaLayout.Click += new System.EventHandler(this.mnuNestopiaLayout_Click);
+ //
+ // toolStripMenuItem1
+ //
+ this.toolStripMenuItem1.Name = "toolStripMenuItem1";
+ this.toolStripMenuItem1.Size = new System.Drawing.Size(166, 6);
+ //
+ // mnuXboxController
+ //
+ this.mnuXboxController.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuXboxLayout1,
+ this.mnuXboxLayout2});
+ this.mnuXboxController.Name = "mnuXboxController";
+ this.mnuXboxController.Size = new System.Drawing.Size(169, 22);
+ this.mnuXboxController.Text = "Xbox Controller";
+ //
+ // mnuXboxLayout1
+ //
+ this.mnuXboxLayout1.Name = "mnuXboxLayout1";
+ this.mnuXboxLayout1.Size = new System.Drawing.Size(143, 22);
+ this.mnuXboxLayout1.Text = "Controller #1";
+ this.mnuXboxLayout1.Click += new System.EventHandler(this.mnuXboxLayout1_Click);
+ //
+ // mnuXboxLayout2
+ //
+ this.mnuXboxLayout2.Name = "mnuXboxLayout2";
+ this.mnuXboxLayout2.Size = new System.Drawing.Size(143, 22);
+ this.mnuXboxLayout2.Text = "Controller #2";
+ this.mnuXboxLayout2.Click += new System.EventHandler(this.mnuXboxLayout2_Click);
+ //
+ // mnuPs4Controller
+ //
+ this.mnuPs4Controller.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuPs4Layout1,
+ this.mnuPs4Layout2});
+ this.mnuPs4Controller.Name = "mnuPs4Controller";
+ this.mnuPs4Controller.Size = new System.Drawing.Size(169, 22);
+ this.mnuPs4Controller.Text = "PS4 Controller";
+ //
+ // mnuPs4Layout1
+ //
+ this.mnuPs4Layout1.Name = "mnuPs4Layout1";
+ this.mnuPs4Layout1.Size = new System.Drawing.Size(152, 22);
+ this.mnuPs4Layout1.Text = "Controller #1";
+ this.mnuPs4Layout1.Click += new System.EventHandler(this.mnuPs4Layout1_Click);
+ //
+ // mnuPs4Layout2
+ //
+ this.mnuPs4Layout2.Name = "mnuPs4Layout2";
+ this.mnuPs4Layout2.Size = new System.Drawing.Size(152, 22);
+ this.mnuPs4Layout2.Text = "Controller #2";
+ this.mnuPs4Layout2.Click += new System.EventHandler(this.mnuPs4Layout2_Click);
+ //
+ // mnuSnes30Controller
+ //
+ this.mnuSnes30Controller.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.mnuSnes30Layout1,
+ this.mnuSnes30Layout2});
+ this.mnuSnes30Controller.Name = "mnuSnes30Controller";
+ this.mnuSnes30Controller.Size = new System.Drawing.Size(169, 22);
+ this.mnuSnes30Controller.Text = "SNES30 Controller";
+ //
+ // mnuSnes30Layout1
+ //
+ this.mnuSnes30Layout1.Name = "mnuSnes30Layout1";
+ this.mnuSnes30Layout1.Size = new System.Drawing.Size(152, 22);
+ this.mnuSnes30Layout1.Text = "Controller #1";
+ this.mnuSnes30Layout1.Click += new System.EventHandler(this.mnuSnes30Layout1_Click);
+ //
+ // mnuSnes30Layout2
+ //
+ this.mnuSnes30Layout2.Name = "mnuSnes30Layout2";
+ this.mnuSnes30Layout2.Size = new System.Drawing.Size(152, 22);
+ this.mnuSnes30Layout2.Text = "Controller #2";
+ this.mnuSnes30Layout2.Click += new System.EventHandler(this.mnuSnes30Layout2_Click);
+ //
// frmControllerConfig
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -281,6 +439,7 @@
((System.ComponentModel.ISupportInitialize)(this.trkTurboSpeed)).EndInit();
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
+ this.mnuStripPreset.ResumeLayout(false);
this.ResumeLayout(false);
}
@@ -289,7 +448,6 @@
private ctrlStandardController ctrlStandardController0;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2;
- private System.Windows.Forms.Button btnReset;
private System.Windows.Forms.Button btnClear;
private System.Windows.Forms.TabControl tabMain;
private System.Windows.Forms.TabPage tpgSet1;
@@ -305,5 +463,23 @@
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Label lblTurboFast;
private System.Windows.Forms.Label lblSlow;
+ private System.Windows.Forms.Button btnSelectPreset;
+ private System.Windows.Forms.ContextMenuStrip mnuStripPreset;
+ private System.Windows.Forms.ToolStripMenuItem mnuKeyboard;
+ private System.Windows.Forms.ToolStripMenuItem mnuWasdLayout;
+ private System.Windows.Forms.ToolStripMenuItem mnuArrowLayout;
+ private System.Windows.Forms.ToolStripMenuItem mnuFceuxLayout;
+ private System.Windows.Forms.ToolStripMenuItem mnuNestopiaLayout;
+ private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
+ private System.Windows.Forms.ToolStripMenuItem mnuXboxController;
+ private System.Windows.Forms.ToolStripMenuItem mnuXboxLayout1;
+ private System.Windows.Forms.ToolStripMenuItem mnuXboxLayout2;
+ private System.Windows.Forms.ToolStripMenuItem mnuSnes30Controller;
+ private System.Windows.Forms.ToolStripMenuItem mnuPs4Controller;
+ private System.Windows.Forms.ToolStripMenuItem mnuPs4Layout1;
+ private System.Windows.Forms.ToolStripMenuItem mnuPs4Layout2;
+ private System.Windows.Forms.ToolStripMenuItem mnuSnes30Layout1;
+ private System.Windows.Forms.ToolStripMenuItem mnuSnes30Layout2;
+ private System.Windows.Forms.ImageList imageList;
}
}
\ No newline at end of file
diff --git a/GUI.NET/Forms/Config/frmControllerConfig.cs b/GUI.NET/Forms/Config/frmControllerConfig.cs
index 8c0f1411..dca35cd4 100644
--- a/GUI.NET/Forms/Config/frmControllerConfig.cs
+++ b/GUI.NET/Forms/Config/frmControllerConfig.cs
@@ -13,6 +13,8 @@ namespace Mesen.GUI.Forms.Config
{
public partial class frmControllerConfig : BaseConfigForm
{
+ private KeyPresets _presets = new KeyPresets();
+
public frmControllerConfig(ControllerInfo controllerInfo)
{
InitializeComponent();
@@ -24,6 +26,31 @@ namespace Mesen.GUI.Forms.Config
ctrlStandardController1.Initialize(controllerInfo.Keys[1]);
ctrlStandardController2.Initialize(controllerInfo.Keys[2]);
ctrlStandardController3.Initialize(controllerInfo.Keys[3]);
+
+ ResourceHelper.ApplyResources(this, mnuStripPreset);
+ }
+
+ private ctrlStandardController GetControllerControl()
+ {
+ if(tabMain.SelectedTab == tpgSet1) {
+ return ctrlStandardController0;
+ } else if(tabMain.SelectedTab == tpgSet2) {
+ return ctrlStandardController1;
+ } else if(tabMain.SelectedTab == tpgSet3) {
+ return ctrlStandardController2;
+ } else if(tabMain.SelectedTab == tpgSet4) {
+ return ctrlStandardController3;
+ }
+
+ return ctrlStandardController0;
+ }
+
+ private void UpdateTabIcons()
+ {
+ tpgSet1.ImageIndex = (int)ctrlStandardController0.GetKeyType() - 1;
+ tpgSet2.ImageIndex = (int)ctrlStandardController1.GetKeyType() - 1;
+ tpgSet3.ImageIndex = (int)ctrlStandardController2.GetKeyType() - 1;
+ tpgSet4.ImageIndex = (int)ctrlStandardController3.GetKeyType() - 1;
}
protected override void UpdateConfig()
@@ -50,9 +77,64 @@ namespace Mesen.GUI.Forms.Config
}
}
- private void btnReset_Click(object sender, EventArgs e)
+ private void btnSelectPreset_Click(object sender, EventArgs e)
{
-
+ mnuStripPreset.Show(btnSelectPreset.PointToScreen(new Point(0, btnSelectPreset.Height-1)));
+ }
+
+ private void mnuWasdLayout_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.WasdLayout);
+ }
+
+ private void mnuArrowLayout_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.ArrowLayout);
+ }
+
+ private void mnuFceuxLayout_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.FceuxLayout);
+ }
+
+ private void mnuNestopiaLayout_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.NestopiaLayout);
+ }
+
+ private void mnuXboxLayout1_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.XboxLayout1);
+ }
+
+ private void mnuXboxLayout2_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.XboxLayout1);
+ }
+
+ private void mnuPs4Layout1_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.Ps4Layout1);
+ }
+
+ private void mnuPs4Layout2_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.Ps4Layout2);
+ }
+
+ private void mnuSnes30Layout1_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.Snes30Layout1);
+ }
+
+ private void mnuSnes30Layout2_Click(object sender, EventArgs e)
+ {
+ GetControllerControl().Initialize(_presets.Snes30Layout2);
+ }
+
+ private void ctrlStandardController_OnChange(object sender, EventArgs e)
+ {
+ UpdateTabIcons();
}
}
}
diff --git a/GUI.NET/Forms/Config/frmControllerConfig.resx b/GUI.NET/Forms/Config/frmControllerConfig.resx
index 8766f298..b44781d9 100644
--- a/GUI.NET/Forms/Config/frmControllerConfig.resx
+++ b/GUI.NET/Forms/Config/frmControllerConfig.resx
@@ -120,4 +120,65 @@
17, 17
+
+ 242, 17
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAK
+ CQAAAk1TRnQBSQFMAgEBAgEAATABAAEwAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo
+ AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA
+ AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5
+ AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA
+ AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm
+ AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM
+ AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA
+ ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz
+ AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ
+ AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM
+ AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA
+ AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA
+ AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ
+ AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/
+ AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA
+ AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm
+ ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ
+ Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz
+ AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA
+ AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM
+ AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM
+ ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM
+ Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA
+ AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM
+ AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ
+ AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz
+ AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm
+ AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw
+ AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAAQcO6wEHAbwO6wG8
+ IAAB6wHvAe0BkgbtAZIB7QGSAe0B7wLrBPEC8Ai8AesgAAHsAfcB9AGSAfME8gHzAZIB8wGSAfMB9wHs
+ AesOvAHrIAAB7AEHCPcB7wP3AQcB7AHrCP8C9ALzAfIB9AHrIAAB7AHxAe8B9AHvAfQB7wH0Ae8B9AHv
+ A/MB7wHsAesB9AF0ASsBdAnyAfQB6yAAAe0BvAzvAbwB7QHrAf8DKwLyAQcC7AEHA/IB9AHrIAABkgEH
+ Af8BBwH/AQcB/wEHAf8BBwH/AQcC/wEHAZIB6wH/AXQBKwF0AvMB7AHzAbwB7APzAfQB6yAAAZIB8QG8
+ AfEBvAHxAbwB8QG8AfEBvAHxArwB8QGSAesB/wXzAewB8wG8AewD8wH0AesgAAHwDvcB8AHrAf8F8wHs
+ AisBbgPzAfQB6yIAAf8B7AH/CwAB6wH/BPMBTAFSAlMBUgFMAvMB9AHrIwABBwG8Af8KAAHrBP8BmQFM
+ BCsBUgGTAf8B9AHrIwAB/wG8COwBBwH/AQABvATrAysBUgIrAVMBKwLrAbwsAAH/AQcB8AYAAUwDUgFM
+ ASsBUwFMMAAB9AGSBgABGgErAlIBTAErAVIBmTAAAf8B7AYAAf8CTAJSASsBTAH/OQAB/wGZAkwBmQH/
+ JAABQgFNAT4HAAE+AwABKAMAAUADAAEQAwABAQEAAQEFAAGAFwAD/0kAAccB/wYAAeMB/wYAAeABAQYA
+ Af8B8QH4AQcEAAH/AfkB+AEHBAAB/wH5AfgBBwQAAv8B/AEPBAAL
+
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAAAcAAAAGCAYAAAAPDoR2AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+ YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAAYdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuNWWFMmUA
+ AAArSURBVBhXY/j//z9OjFUQhkEARGLHUBUYEmBxJCNQJFAkwRwkif///zMAAD5AXaOzoq98AAAAAElF
+ TkSuQmCC
+
+
+
+ 107, 17
+
\ No newline at end of file
diff --git a/GUI.NET/GUI.NET.csproj b/GUI.NET/GUI.NET.csproj
index 876d50c8..8859fe3e 100644
--- a/GUI.NET/GUI.NET.csproj
+++ b/GUI.NET/GUI.NET.csproj
@@ -209,6 +209,7 @@
+