7 Commits

Author SHA1 Message Date
076277bd60 modernize repository 2024-10-27 08:45:49 +01:00
32b110fca5 simplyfy VisualThemeHelper 2023-01-12 16:04:25 +01:00
50be1b1441 update to single Telerik nuget packages 2023-01-12 16:04:11 +01:00
4057b9eb07 change version to v1.2.1 2022-06-19 10:55:14 +02:00
02be8ce5e4 fix reverse setting load and create savestate 2022-06-19 10:55:06 +02:00
7ac3f7a13d d 2022-06-09 13:52:31 +02:00
10ad6d19b7 remove unused Telerik libs 2022-06-09 11:42:18 +02:00
38 changed files with 1449 additions and 1507 deletions

13
Directory.Build.props Normal file
View File

@@ -0,0 +1,13 @@
<Project>
<PropertyGroup>
<LangVersion>latest</LangVersion>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
<NoWarn>1591</NoWarn>
<PackageLicenseExpression>MIT</PackageLicenseExpression>
<PackageProjectUrl>https://git.pilzinsel64.de/sm64-rom-manager/sm64-rom-manager</PackageProjectUrl>
<Authors>Pilzinsel64</Authors>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<packageSources> <packageSources>
<add key="Telerik UI for WinForms 2022.1.222.0" value="C:\Program Files (x86)\Progress\Telerik UI for WinForms R1 2022\Bin60\NuGet" /> <add key="Pilz" value="https://git.pilzinsel64.de/api/v4/projects/6/packages/nuget/index.json" />
</packageSources> </packageSources>
</configuration> </configuration>

View File

@@ -2,6 +2,6 @@
<configuration> <configuration>
<appSettings> <appSettings>
<add key="toleranceOffset" value="1000"/> <add key="toleranceOffset" value="1000"/>
<add key="TelerikWinFormsThemeName" value="Fluent" /> <add key="TelerikWinFormsThemeName" value="Windows11CompactTheme" />
</appSettings> </appSettings>
</configuration> </configuration>

View File

@@ -0,0 +1,23 @@
using Pilz.UI.Telerik.Symbols;
using System.Reflection;
using System.Runtime.CompilerServices;
namespace PJ64Savestater;
public static class AppGlobals
{
public static IRadSymbolFactory<AppSymbols> Symbols { get; } = new AppSymbolFactory();
private class AppSymbolFactory : RadSymbolFactory<AppSymbols>
{
public override Assembly GetImageResourceAssembly()
{
return Assembly.GetExecutingAssembly();
}
public override string GetImageRessourcePath(AppSymbols svgImage)
{
return $"{typeof(AppGlobals).Namespace}.Symbols.{svgImage}.svg";
}
}
}

View File

@@ -0,0 +1,11 @@
namespace PJ64Savestater;
public enum AppSymbols
{
browse_folder,
circled_play,
game_controller,
refresh,
save,
stop_cicled,
}

View File

@@ -1,14 +1,7 @@
using System; namespace PJ64Savestater;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater public enum ControllerTypes : byte
{ {
public enum ControllerTypes : byte
{
Keyboard, Keyboard,
DirectInput DirectInput
}
} }

View File

@@ -1,18 +1,13 @@
using System; namespace PJ64Savestater;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater internal static class Globals
{ {
internal static class Globals
{
public static bool CompareTwoByteArrays(byte[] arr1, byte[] arr2) public static bool CompareTwoByteArrays(byte[] arr1, byte[] arr2)
{ {
if (arr2.Count() != arr1.Count()) if (arr2.Length != arr1.Length)
return false; return false;
for (int i = 0, loopTo = arr1.Count() - 1; i <= loopTo; i++)
for (int i = 0, loopTo = arr1.Length - 1; i <= loopTo; i++)
{ {
if (arr1[i] != arr2[i]) if (arr1[i] != arr2[i])
return false; return false;
@@ -20,5 +15,4 @@ namespace PJ64Savestater
return true; return true;
} }
}
} }

View File

@@ -1,20 +1,14 @@
using System; namespace PJ64Savestater;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater public class InputControl
{ {
public class InputControl
{
public InputKeys? InputKey { get; set; } = null; public InputKeys? InputKey { get; set; } = null;
public int? KeyIndex { get; set; } = null; public int? KeyIndex { get; set; } = null;
public object Value { get; set; } = null; public object? Value { get; set; } = null;
public static bool operator ==(InputControl left, InputControl right) public static bool operator ==(InputControl left, InputControl right)
{ {
return left.InputKey == right.InputKey && left.KeyIndex == right.KeyIndex && ((left.Value == null && right.Value == null) || (left.Value != null && right.Value != null && left.Value.Equals(right.Value))); return left.InputKey == right.InputKey && left.KeyIndex == right.KeyIndex && (left.Value == null && right.Value == null || left.Value != null && right.Value != null && left.Value.Equals(right.Value));
} }
public static bool operator !=(InputControl left, InputControl right) public static bool operator !=(InputControl left, InputControl right)
@@ -22,22 +16,23 @@ namespace PJ64Savestater
return !(left == right); return !(left == right);
} }
public override bool Equals(object obj) public override bool Equals(object? obj)
{ {
var control = obj as InputControl; return obj is InputControl control
return control != null && && EqualityComparer<InputKeys?>.Default.Equals(InputKey, control.InputKey)
EqualityComparer<InputKeys?>.Default.Equals(InputKey, control.InputKey) && && EqualityComparer<int?>.Default.Equals(KeyIndex, control.KeyIndex)
EqualityComparer<int?>.Default.Equals(KeyIndex, control.KeyIndex) && && EqualityComparer<object>.Default.Equals(Value, control.Value);
EqualityComparer<object>.Default.Equals(Value, control.Value);
} }
public override int GetHashCode() public override int GetHashCode()
{ {
var hashCode = 2070896532; var hashCode = 2070896532;
if (InputKey != null)
hashCode = hashCode * -1521134295 + EqualityComparer<InputKeys?>.Default.GetHashCode(InputKey); hashCode = hashCode * -1521134295 + EqualityComparer<InputKeys?>.Default.GetHashCode(InputKey);
if (KeyIndex != null)
hashCode = hashCode * -1521134295 + EqualityComparer<int?>.Default.GetHashCode(KeyIndex); hashCode = hashCode * -1521134295 + EqualityComparer<int?>.Default.GetHashCode(KeyIndex);
if (Value != null)
hashCode = hashCode * -1521134295 + EqualityComparer<object>.Default.GetHashCode(Value); hashCode = hashCode * -1521134295 + EqualityComparer<object>.Default.GetHashCode(Value);
return hashCode; return hashCode;
} }
}
} }

View File

@@ -1,13 +1,7 @@
using System; namespace PJ64Savestater;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater public enum InputKeys : byte
{ {
public enum InputKeys : byte
{
// Uses Index // Uses Index
Buttons, // Button index 'Default: False Buttons, // Button index 'Default: False
@@ -40,5 +34,4 @@ namespace PJ64Savestater
X, // X 'Default: 0 X, // X 'Default: 0
Y, // Y 'Default: 0 Y, // Y 'Default: 0
Z // Z 'Default: 0 Z // Z 'Default: 0
}
} }

View File

@@ -1,18 +1,12 @@
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq; using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater namespace PJ64Savestater;
public class InputProfile
{ {
public class InputProfile public string? ProfileCode { get; set; }
{ public Dictionary<string, InputControl> Controls { get; } = [];
public string ProfileCode { get; set; }
public Dictionary<string, InputControl> Controls { get; } = new Dictionary<string, InputControl>();
private byte[] _ControllerInstanceGuid = Array.Empty<byte>(); private byte[] _ControllerInstanceGuid = Array.Empty<byte>();
@@ -30,7 +24,7 @@ namespace PJ64Savestater
{ {
get get
{ {
if (_ControllerInstanceGuid.Count() == 0) if (_ControllerInstanceGuid.Length == 0)
return default; return default;
return new Guid(_ControllerInstanceGuid); return new Guid(_ControllerInstanceGuid);
} }
@@ -64,19 +58,19 @@ namespace PJ64Savestater
public void Save(string fileName) public void Save(string fileName)
{ {
File.WriteAllText(fileName, JObject.FromObject(this, GetJsonSerializer()).ToString()); File.WriteAllText(fileName, JsonConvert.SerializeObject(this, GetJsonSerializer()));
} }
public static InputProfile Load(string fileName) public static InputProfile? Load(string fileName)
{ {
return (InputProfile)JObject.Parse(File.ReadAllText(fileName)).ToObject(typeof(InputProfile), GetJsonSerializer()); return JsonConvert.DeserializeObject<InputProfile>(File.ReadAllText(fileName), GetJsonSerializer());
} }
private static JsonSerializer GetJsonSerializer() private static JsonSerializerSettings GetJsonSerializer()
{ {
var serializer = JsonSerializer.CreateDefault(); return new()
serializer.TypeNameHandling = TypeNameHandling.Auto; {
return serializer; TypeNameHandling = TypeNameHandling.Auto
} };
} }
} }

View File

@@ -61,7 +61,7 @@ namespace PJ64Savestater {
} }
/// <summary> /// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Start Listening ähnelt. /// Sucht eine lokalisierte Zeichenfolge, die Start ähnelt.
/// </summary> /// </summary>
internal static string Button_StartListening { internal static string Button_StartListening {
get { get {
@@ -70,7 +70,7 @@ namespace PJ64Savestater {
} }
/// <summary> /// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Stop Listening ähnelt. /// Sucht eine lokalisierte Zeichenfolge, die Stop ähnelt.
/// </summary> /// </summary>
internal static string Button_StopListening { internal static string Button_StopListening {
get { get {

View File

@@ -117,11 +117,8 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Button_StartListening" xml:space="preserve">
<value>Zuhören beginnen</value>
</data>
<data name="Button_StopListening" xml:space="preserve"> <data name="Button_StopListening" xml:space="preserve">
<value>Zuhören beenden</value> <value>Stopp</value>
</data> </data>
<data name="MsgBox_WrongProfileCode" xml:space="preserve"> <data name="MsgBox_WrongProfileCode" xml:space="preserve">
<value>Dieses Profil ist für ein anderes Program bzw. für einen anderen Verwendungszweck. Es kann demnach nicht geladen und verwendet werden.</value> <value>Dieses Profil ist für ein anderes Program bzw. für einen anderen Verwendungszweck. Es kann demnach nicht geladen und verwendet werden.</value>

View File

@@ -118,10 +118,10 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="Button_StartListening" xml:space="preserve"> <data name="Button_StartListening" xml:space="preserve">
<value>Start Listening</value> <value>Start</value>
</data> </data>
<data name="Button_StopListening" xml:space="preserve"> <data name="Button_StopListening" xml:space="preserve">
<value>Stop Listening</value> <value>Stop</value>
</data> </data>
<data name="MsgBox_WrongProfileCode" xml:space="preserve"> <data name="MsgBox_WrongProfileCode" xml:space="preserve">
<value>This input profile is for a different program. It can't be loaded.</value> <value>This input profile is for a different program. It can't be loaded.</value>

View File

@@ -28,143 +28,144 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); var resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.radLabel1 = new Telerik.WinControls.UI.RadLabel(); radLabel1 = new Telerik.WinControls.UI.RadLabel();
this.radDropDownList_Pads = new Telerik.WinControls.UI.RadDropDownList(); radDropDownList_Pads = new Telerik.WinControls.UI.RadDropDownList();
this.radButton_LoadPads = new Telerik.WinControls.UI.RadButton(); radButton_LoadPads = new Telerik.WinControls.UI.RadButton();
this.panel1 = new System.Windows.Forms.Panel(); radTextBox_LoadSavestate = new Telerik.WinControls.UI.RadTextBox();
this.radTextBox_LoadSavestate = new Telerik.WinControls.UI.RadTextBox(); radTextBox_CreateSavestate = new Telerik.WinControls.UI.RadTextBox();
this.radTextBox_CreateSavestate = new Telerik.WinControls.UI.RadTextBox(); radButton_LoadProfile = new Telerik.WinControls.UI.RadButton();
this.radButton_LoadProfile = new Telerik.WinControls.UI.RadButton(); radButton_SaveProfile = new Telerik.WinControls.UI.RadButton();
this.radButton_SaveProfile = new Telerik.WinControls.UI.RadButton(); radButton_StartStopListening = new Telerik.WinControls.UI.RadButton();
this.radButton_StartStopListening = new Telerik.WinControls.UI.RadButton(); radLabel3 = new Telerik.WinControls.UI.RadLabel();
this.radLabel3 = new Telerik.WinControls.UI.RadLabel(); radLabel2 = new Telerik.WinControls.UI.RadLabel();
this.radLabel2 = new Telerik.WinControls.UI.RadLabel(); tableLayoutPanel1 = new TableLayoutPanel();
((System.ComponentModel.ISupportInitialize)(this.radLabel1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radLabel1).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radDropDownList_Pads)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radDropDownList_Pads).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radButton_LoadPads)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radButton_LoadPads).BeginInit();
this.panel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)radTextBox_LoadSavestate).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radTextBox_LoadSavestate)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radTextBox_CreateSavestate).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radTextBox_CreateSavestate)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radButton_LoadProfile).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radButton_LoadProfile)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radButton_SaveProfile).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radButton_SaveProfile)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radButton_StartStopListening).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radButton_StartStopListening)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radLabel3).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radLabel3)).BeginInit(); ((System.ComponentModel.ISupportInitialize)radLabel2).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.radLabel2)).BeginInit(); tableLayoutPanel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this)).BeginInit(); ((System.ComponentModel.ISupportInitialize)this).BeginInit();
this.SuspendLayout(); SuspendLayout();
// //
// radLabel1 // radLabel1
// //
this.radLabel1.Image = global::PJ64Savestater.Properties.Resources.icons8_game_controller_16px; resources.ApplyResources(radLabel1, "radLabel1");
resources.ApplyResources(this.radLabel1, "radLabel1"); radLabel1.Name = "radLabel1";
this.radLabel1.Name = "radLabel1"; //
//
//
radLabel1.RootElement.MinSize = new Size(0, 24);
// //
// radDropDownList_Pads // radDropDownList_Pads
// //
this.radDropDownList_Pads.DropDownAnimationEnabled = true; resources.ApplyResources(radDropDownList_Pads, "radDropDownList_Pads");
this.radDropDownList_Pads.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList; tableLayoutPanel1.SetColumnSpan(radDropDownList_Pads, 2);
resources.ApplyResources(this.radDropDownList_Pads, "radDropDownList_Pads"); radDropDownList_Pads.DropDownStyle = Telerik.WinControls.RadDropDownStyle.DropDownList;
this.radDropDownList_Pads.Name = "radDropDownList_Pads"; radDropDownList_Pads.Name = "radDropDownList_Pads";
this.radDropDownList_Pads.SelectedIndexChanged += new Telerik.WinControls.UI.Data.PositionChangedEventHandler(this.radDropDownList1_SelectedIndexChanged); radDropDownList_Pads.SelectedIndexChanged += RadDropDownList1_SelectedIndexChanged;
// //
// radButton_LoadPads // radButton_LoadPads
// //
this.radButton_LoadPads.Image = global::PJ64Savestater.Properties.Resources.icons8_refresh_16px; resources.ApplyResources(radButton_LoadPads, "radButton_LoadPads");
resources.ApplyResources(this.radButton_LoadPads, "radButton_LoadPads"); radButton_LoadPads.Name = "radButton_LoadPads";
this.radButton_LoadPads.Name = "radButton_LoadPads"; radButton_LoadPads.Click += RadButton1_Click;
this.radButton_LoadPads.Click += new System.EventHandler(this.radButton1_Click);
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.Controls.Add(this.radTextBox_LoadSavestate);
this.panel1.Controls.Add(this.radTextBox_CreateSavestate);
this.panel1.Controls.Add(this.radButton_LoadProfile);
this.panel1.Controls.Add(this.radButton_SaveProfile);
this.panel1.Controls.Add(this.radButton_StartStopListening);
this.panel1.Controls.Add(this.radLabel3);
this.panel1.Controls.Add(this.radLabel2);
this.panel1.Controls.Add(this.radLabel1);
this.panel1.Controls.Add(this.radButton_LoadPads);
this.panel1.Controls.Add(this.radDropDownList_Pads);
resources.ApplyResources(this.panel1, "panel1");
this.panel1.Name = "panel1";
// //
// radTextBox_LoadSavestate // radTextBox_LoadSavestate
// //
resources.ApplyResources(this.radTextBox_LoadSavestate, "radTextBox_LoadSavestate"); resources.ApplyResources(radTextBox_LoadSavestate, "radTextBox_LoadSavestate");
this.radTextBox_LoadSavestate.Name = "radTextBox_LoadSavestate"; radTextBox_LoadSavestate.Name = "radTextBox_LoadSavestate";
this.radTextBox_LoadSavestate.TextChanged += new System.EventHandler(this.radTextBox2_TextChanged); radTextBox_LoadSavestate.TextChanged += RadTextBox2_TextChanged;
this.radTextBox_LoadSavestate.Click += new System.EventHandler(this.RadTextBox_Savestate_Clicked); radTextBox_LoadSavestate.Click += RadTextBox_Savestate_Clicked;
this.radTextBox_LoadSavestate.LostFocus += new System.EventHandler(this.RadTextBox_Savestate_LostFocus); radTextBox_LoadSavestate.LostFocus += RadTextBox_Savestate_LostFocus;
// //
// radTextBox_CreateSavestate // radTextBox_CreateSavestate
// //
resources.ApplyResources(this.radTextBox_CreateSavestate, "radTextBox_CreateSavestate"); resources.ApplyResources(radTextBox_CreateSavestate, "radTextBox_CreateSavestate");
this.radTextBox_CreateSavestate.Name = "radTextBox_CreateSavestate"; radTextBox_CreateSavestate.Name = "radTextBox_CreateSavestate";
this.radTextBox_CreateSavestate.TextChanged += new System.EventHandler(this.radTextBox1_TextChanged); radTextBox_CreateSavestate.TextChanged += RadTextBox1_TextChanged;
this.radTextBox_CreateSavestate.Click += new System.EventHandler(this.RadTextBox_Savestate_Clicked); radTextBox_CreateSavestate.Click += RadTextBox_Savestate_Clicked;
this.radTextBox_CreateSavestate.LostFocus += new System.EventHandler(this.RadTextBox_Savestate_LostFocus); radTextBox_CreateSavestate.LostFocus += RadTextBox_Savestate_LostFocus;
// //
// radButton_LoadProfile // radButton_LoadProfile
// //
this.radButton_LoadProfile.Image = global::PJ64Savestater.Properties.Resources.icons8_opened_folder_16px; resources.ApplyResources(radButton_LoadProfile, "radButton_LoadProfile");
resources.ApplyResources(this.radButton_LoadProfile, "radButton_LoadProfile"); radButton_LoadProfile.Name = "radButton_LoadProfile";
this.radButton_LoadProfile.Name = "radButton_LoadProfile"; radButton_LoadProfile.Click += RadButton4_Click;
this.radButton_LoadProfile.Click += new System.EventHandler(this.radButton4_Click);
// //
// radButton_SaveProfile // radButton_SaveProfile
// //
this.radButton_SaveProfile.Image = global::PJ64Savestater.Properties.Resources.icons8_save_16px; resources.ApplyResources(radButton_SaveProfile, "radButton_SaveProfile");
resources.ApplyResources(this.radButton_SaveProfile, "radButton_SaveProfile"); radButton_SaveProfile.Name = "radButton_SaveProfile";
this.radButton_SaveProfile.Name = "radButton_SaveProfile"; radButton_SaveProfile.Click += RadButton3_Click;
this.radButton_SaveProfile.Click += new System.EventHandler(this.radButton3_Click);
// //
// radButton_StartStopListening // radButton_StartStopListening
// //
this.radButton_StartStopListening.Image = global::PJ64Savestater.Properties.Resources.icons8_play_button_circled_16px; resources.ApplyResources(radButton_StartStopListening, "radButton_StartStopListening");
resources.ApplyResources(this.radButton_StartStopListening, "radButton_StartStopListening"); radButton_StartStopListening.Name = "radButton_StartStopListening";
this.radButton_StartStopListening.Name = "radButton_StartStopListening"; radButton_StartStopListening.Click += RadButton_StartStopListening_Click;
this.radButton_StartStopListening.Click += new System.EventHandler(this.radButton_StartStopListening_Click);
// //
// radLabel3 // radLabel3
// //
resources.ApplyResources(this.radLabel3, "radLabel3"); resources.ApplyResources(radLabel3, "radLabel3");
this.radLabel3.Name = "radLabel3"; radLabel3.Name = "radLabel3";
//
//
//
radLabel3.RootElement.MinSize = new Size(0, 24);
// //
// radLabel2 // radLabel2
// //
resources.ApplyResources(this.radLabel2, "radLabel2"); resources.ApplyResources(radLabel2, "radLabel2");
this.radLabel2.Name = "radLabel2"; radLabel2.Name = "radLabel2";
//
//
//
radLabel2.RootElement.MinSize = new Size(0, 24);
//
// tableLayoutPanel1
//
resources.ApplyResources(tableLayoutPanel1, "tableLayoutPanel1");
tableLayoutPanel1.Controls.Add(radButton_LoadPads, 3, 0);
tableLayoutPanel1.Controls.Add(radButton_StartStopListening, 4, 0);
tableLayoutPanel1.Controls.Add(radButton_SaveProfile, 4, 1);
tableLayoutPanel1.Controls.Add(radButton_LoadProfile, 4, 2);
tableLayoutPanel1.Controls.Add(radTextBox_LoadSavestate, 1, 2);
tableLayoutPanel1.Controls.Add(radLabel1, 0, 0);
tableLayoutPanel1.Controls.Add(radTextBox_CreateSavestate, 1, 1);
tableLayoutPanel1.Controls.Add(radLabel2, 0, 1);
tableLayoutPanel1.Controls.Add(radDropDownList_Pads, 1, 0);
tableLayoutPanel1.Controls.Add(radLabel3, 0, 2);
tableLayoutPanel1.Name = "tableLayoutPanel1";
// //
// MainForm // MainForm
// //
resources.ApplyResources(this, "$this"); resources.ApplyResources(this, "$this");
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
this.Controls.Add(this.panel1); Controls.Add(tableLayoutPanel1);
this.Name = "MainForm"; Name = "MainForm";
// FormClosing += MainForm_FormClosing;
// Shown += MainForm_Shown;
// ((System.ComponentModel.ISupportInitialize)radLabel1).EndInit();
this.RootElement.ApplyShapeToControl = true; ((System.ComponentModel.ISupportInitialize)radDropDownList_Pads).EndInit();
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); ((System.ComponentModel.ISupportInitialize)radButton_LoadPads).EndInit();
this.Shown += new System.EventHandler(this.MainForm_Shown); ((System.ComponentModel.ISupportInitialize)radTextBox_LoadSavestate).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radLabel1)).EndInit(); ((System.ComponentModel.ISupportInitialize)radTextBox_CreateSavestate).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radDropDownList_Pads)).EndInit(); ((System.ComponentModel.ISupportInitialize)radButton_LoadProfile).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radButton_LoadPads)).EndInit(); ((System.ComponentModel.ISupportInitialize)radButton_SaveProfile).EndInit();
this.panel1.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)radButton_StartStopListening).EndInit();
this.panel1.PerformLayout(); ((System.ComponentModel.ISupportInitialize)radLabel3).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radTextBox_LoadSavestate)).EndInit(); ((System.ComponentModel.ISupportInitialize)radLabel2).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radTextBox_CreateSavestate)).EndInit(); tableLayoutPanel1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.radButton_LoadProfile)).EndInit(); tableLayoutPanel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.radButton_SaveProfile)).EndInit(); ((System.ComponentModel.ISupportInitialize)this).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radButton_StartStopListening)).EndInit(); ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.radLabel3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.radLabel2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this)).EndInit();
this.ResumeLayout(false);
} }
#endregion #endregion
@@ -172,7 +173,6 @@
private Telerik.WinControls.UI.RadLabel radLabel1; private Telerik.WinControls.UI.RadLabel radLabel1;
private Telerik.WinControls.UI.RadDropDownList radDropDownList_Pads; private Telerik.WinControls.UI.RadDropDownList radDropDownList_Pads;
private Telerik.WinControls.UI.RadButton radButton_LoadPads; private Telerik.WinControls.UI.RadButton radButton_LoadPads;
private Panel panel1;
private Telerik.WinControls.UI.RadButton radButton_StartStopListening; private Telerik.WinControls.UI.RadButton radButton_StartStopListening;
private Telerik.WinControls.UI.RadLabel radLabel3; private Telerik.WinControls.UI.RadLabel radLabel3;
private Telerik.WinControls.UI.RadLabel radLabel2; private Telerik.WinControls.UI.RadLabel radLabel2;
@@ -180,5 +180,6 @@
private Telerik.WinControls.UI.RadButton radButton_SaveProfile; private Telerik.WinControls.UI.RadButton radButton_SaveProfile;
private Telerik.WinControls.UI.RadTextBox radTextBox_LoadSavestate; private Telerik.WinControls.UI.RadTextBox radTextBox_LoadSavestate;
private Telerik.WinControls.UI.RadTextBox radTextBox_CreateSavestate; private Telerik.WinControls.UI.RadTextBox radTextBox_CreateSavestate;
private TableLayoutPanel tableLayoutPanel1;
} }
} }

View File

@@ -1,32 +1,26 @@
using SharpDX.DirectInput; using Pilz.UI.Symbols;
using System; using SharpDX.DirectInput;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration; using System.Configuration;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls; using Telerik.WinControls;
using Telerik.WinControls.UI; using Telerik.WinControls.UI;
using Timer = System.Timers.Timer; using Timer = System.Timers.Timer;
namespace PJ64Savestater namespace PJ64Savestater;
public partial class MainForm : RadForm
{ {
public partial class MainForm : Telerik.WinControls.UI.RadForm
{
private const string FILTER_INPUTPROFILE = "Json files (*.json)|*.json"; private const string FILTER_INPUTPROFILE = "Json files (*.json)|*.json";
private const string PROFILE_CODE = "Project64 Savestater"; private const string PROFILE_CODE = "Project64 Savestater";
private const string DEFAULT_PROFILE_FILENAME = "Profile.json"; private const string DEFAULT_PROFILE_FILENAME = "Profile.json";
private Timer myTimer; private readonly int toleranceOffset = 1000;
private DirectInput DInput = new DirectInput(); private readonly Timer myTimer;
private DeviceInstance[] allDevices = Array.Empty<DeviceInstance>(); private readonly DirectInput dInput = new();
private Joystick curPad = null; private DeviceInstance[] allDevices = [];
private RadTextBox focuesTextBox = null; private Joystick? curPad = null;
private InputProfile curProfile = null; private RadTextBox? focuesTextBox = null;
private InputProfile? curProfile = null;
private bool enableActionExecution = false; private bool enableActionExecution = false;
private int toleranceOffset = 1000;
public MainForm() public MainForm()
{ {
@@ -37,6 +31,13 @@ namespace PJ64Savestater
// Init components // Init components
InitializeComponent(); InitializeComponent();
// Symbols
//radLabel1.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.game_controller, SymbolSize.Small);
radButton_LoadPads.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.refresh, SymbolSize.Small);
radButton_LoadProfile.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.browse_folder, SymbolSize.Small);
radButton_StartStopListening.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.circled_play, SymbolSize.Small);
radButton_SaveProfile.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.save, SymbolSize.Small);
// Init Timer // Init Timer
myTimer = new Timer(1) myTimer = new Timer(1)
{ {
@@ -49,7 +50,7 @@ namespace PJ64Savestater
private void LoadPads() private void LoadPads()
{ {
allDevices = DInput.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly).ToArray(); allDevices = [.. dInput.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly)];
radDropDownList_Pads.Items.Clear(); radDropDownList_Pads.Items.Clear();
foreach (DeviceInstance d in allDevices) foreach (DeviceInstance d in allDevices)
radDropDownList_Pads.Items.Add(d.InstanceName); radDropDownList_Pads.Items.Add(d.InstanceName);
@@ -57,13 +58,13 @@ namespace PJ64Savestater
private void SetCurrentPad(Guid guid) private void SetCurrentPad(Guid guid)
{ {
curPad = new Joystick(DInput, guid); curPad = new Joystick(dInput, guid);
foreach (DeviceObjectInstance doi in curPad.GetObjects(DeviceObjectTypeFlags.Axis)) foreach (DeviceObjectInstance doi in curPad.GetObjects(DeviceObjectTypeFlags.Axis))
curPad.GetObjectPropertiesById(doi.ObjectId).Range = new InputRange(-5000, 5000); curPad.GetObjectPropertiesById(doi.ObjectId).Range = new InputRange(-5000, 5000);
curPad.Properties.AxisMode = DeviceAxisMode.Absolute; curPad.Properties.AxisMode = DeviceAxisMode.Absolute;
curPad.SetCooperativeLevel(Handle, CooperativeLevel.NonExclusive | CooperativeLevel.Background); curPad.SetCooperativeLevel(Handle, CooperativeLevel.NonExclusive | CooperativeLevel.Background);
curPad.Acquire(); curPad.Acquire();
if (curProfile is object) if (curProfile is not null)
curProfile.ControllerInstanceGuid = guid; curProfile.ControllerInstanceGuid = guid;
} }
@@ -76,8 +77,9 @@ namespace PJ64Savestater
private void CheckForInput() private void CheckForInput()
{ {
if (curPad is object) if (curPad is null)
{ return;
var inputCodes = new List<string>(); var inputCodes = new List<string>();
var state = new JoystickState(); var state = new JoystickState();
bool success; bool success;
@@ -93,8 +95,8 @@ namespace PJ64Savestater
success = false; success = false;
} }
if (success) if (!success)
{ return;
for (int i = 0, loopTo = state.Buttons.Length - 1; i <= loopTo; i++) for (int i = 0, loopTo = state.Buttons.Length - 1; i <= loopTo; i++)
{ {
@@ -252,17 +254,18 @@ namespace PJ64Savestater
if (inputCodes.Any()) if (inputCodes.Any())
{ {
if (focuesTextBox is object) if (focuesTextBox is not null)
focuesTextBox.Text = inputCodes.Last(); focuesTextBox.Text = inputCodes.Last();
else if (enableActionExecution) else if (enableActionExecution)
CheckForActions(inputCodes.ToArray()); CheckForActions([.. inputCodes]);
}
}
} }
} }
private void CheckForActions(string[] inputCodes) private void CheckForActions(string[] inputCodes)
{ {
if (curProfile is null)
return;
foreach (var inputCode in inputCodes) foreach (var inputCode in inputCodes)
{ {
var inputControl = GetInputControlFromString(inputCode); var inputControl = GetInputControlFromString(inputCode);
@@ -284,7 +287,7 @@ namespace PJ64Savestater
private void SetAction(string actionCode, string inputCode) private void SetAction(string actionCode, string inputCode)
{ {
if (curProfile is object) if (curProfile is not null)
curProfile[actionCode] = GetInputControlFromString(inputCode); curProfile[actionCode] = GetInputControlFromString(inputCode);
} }
@@ -557,17 +560,21 @@ namespace PJ64Savestater
private void LoadProfile(string filePath) private void LoadProfile(string filePath)
{ {
var p = !string.IsNullOrEmpty(filePath) && System.IO.File.Exists(filePath) ? InputProfile.Load(filePath) : new InputProfile(PROFILE_CODE); var p = !string.IsNullOrEmpty(filePath) && File.Exists(filePath) ? InputProfile.Load(filePath) : new InputProfile(PROFILE_CODE);
if (p.ProfileCode == PROFILE_CODE) if (p is null || p.ProfileCode != PROFILE_CODE)
{ {
RadMessageBox.Show(this, LangRes.MsgBox_WrongProfileCode, LangRes.MsgBox_WrongProfileCode_Title, MessageBoxButtons.OK, RadMessageIcon.Exclamation);
return;
}
radTextBox_CreateSavestate.Text = GetStringFromInputControl(p[ActionCodes.CreateSavestate]); radTextBox_CreateSavestate.Text = GetStringFromInputControl(p[ActionCodes.CreateSavestate]);
radTextBox_LoadSavestate.Text = GetStringFromInputControl(p[ActionCodes.LoadSavestate]); radTextBox_LoadSavestate.Text = GetStringFromInputControl(p[ActionCodes.LoadSavestate]);
try try
{ {
var tguid = allDevices.FirstOrDefault(n => Globals.CompareTwoByteArrays(n.InstanceGuid.ToByteArray(), p.ControllerInstanceGuid.ToByteArray())); var tguid = allDevices.FirstOrDefault(n => Globals.CompareTwoByteArrays(n.InstanceGuid.ToByteArray(), p.ControllerInstanceGuid.ToByteArray()));
if (tguid is object) if (tguid is not null)
radDropDownList_Pads.SelectedIndex = Array.IndexOf(allDevices, tguid); radDropDownList_Pads.SelectedIndex = Array.IndexOf(allDevices, tguid);
} }
catch (Exception) catch (Exception)
@@ -576,9 +583,6 @@ namespace PJ64Savestater
curProfile = p; curProfile = p;
} }
else
RadMessageBox.Show(this, LangRes.MsgBox_WrongProfileCode, LangRes.MsgBox_WrongProfileCode_Title, MessageBoxButtons.OK, RadMessageIcon.Exclamation);
}
private void MyTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e) private void MyTimer_Elapsed(object? sender, System.Timers.ElapsedEventArgs e)
{ {
@@ -591,33 +595,37 @@ namespace PJ64Savestater
LoadProfile(GetDefaultProfileFilePath()); LoadProfile(GetDefaultProfileFilePath());
} }
private void radButton_StartStopListening_Click(object sender, EventArgs e) private void RadButton_StartStopListening_Click(object sender, EventArgs e)
{ {
if (enableActionExecution) if (enableActionExecution)
{ {
radButton_StartStopListening.Image = Properties.Resources.icons8_play_button_circled_16px; radButton_StartStopListening.SvgImage = radButton_StartStopListening.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.circled_play, SymbolSize.Small); ;
radButton_StartStopListening.Text = LangRes.Button_StartListening; radButton_StartStopListening.Text = LangRes.Button_StartListening;
enableActionExecution = false; enableActionExecution = false;
} }
else else
{ {
radButton_StartStopListening.Image = Properties.Resources.icons8_stop_squared_16px; radButton_StartStopListening.SvgImage = radButton_StartStopListening.SvgImage = AppGlobals.Symbols.GetSvgImage(AppSymbols.stop_cicled, SymbolSize.Small); ;
radButton_StartStopListening.Text = LangRes.Button_StopListening; radButton_StartStopListening.Text = LangRes.Button_StopListening;
enableActionExecution = true; enableActionExecution = true;
} }
} }
private void radButton3_Click(object sender, EventArgs e) private void RadButton3_Click(object sender, EventArgs e)
{ {
if (curProfile is null)
return;
var sfd_SaveInputProfile = new RadSaveFileDialog var sfd_SaveInputProfile = new RadSaveFileDialog
{ {
Filter = FILTER_INPUTPROFILE Filter = FILTER_INPUTPROFILE
}; };
if (sfd_SaveInputProfile.ShowDialog(this) == DialogResult.OK) if (sfd_SaveInputProfile.ShowDialog(this) == DialogResult.OK)
curProfile.Save(sfd_SaveInputProfile.FileName); curProfile.Save(sfd_SaveInputProfile.FileName);
} }
private void radButton4_Click(object sender, EventArgs e) private void RadButton4_Click(object sender, EventArgs e)
{ {
var ofd_SaveInputProfile = new RadOpenFileDialog var ofd_SaveInputProfile = new RadOpenFileDialog
{ {
@@ -627,22 +635,22 @@ namespace PJ64Savestater
LoadProfile(ofd_SaveInputProfile.FileName); LoadProfile(ofd_SaveInputProfile.FileName);
} }
private void radTextBox1_TextChanged(object sender, EventArgs e) private void RadTextBox1_TextChanged(object sender, EventArgs e)
{
SetAction(ActionCodes.LoadSavestate, ((RadTextBox)sender).Text);
}
private void radTextBox2_TextChanged(object sender, EventArgs e)
{ {
SetAction(ActionCodes.CreateSavestate, ((RadTextBox)sender).Text); SetAction(ActionCodes.CreateSavestate, ((RadTextBox)sender).Text);
} }
private void radButton1_Click(object sender, EventArgs e) private void RadTextBox2_TextChanged(object sender, EventArgs e)
{
SetAction(ActionCodes.LoadSavestate, ((RadTextBox)sender).Text);
}
private void RadButton1_Click(object sender, EventArgs e)
{ {
LoadPads(); LoadPads();
} }
private void radDropDownList1_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e) private void RadDropDownList1_SelectedIndexChanged(object sender, Telerik.WinControls.UI.Data.PositionChangedEventArgs e)
{ {
int index = radDropDownList_Pads.SelectedIndex; int index = radDropDownList_Pads.SelectedIndex;
if (index >= 0) if (index >= 0)
@@ -651,18 +659,17 @@ namespace PJ64Savestater
private void MainForm_FormClosing(object sender, FormClosingEventArgs e) private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{ {
curProfile.Save(GetDefaultProfileFilePath()); curProfile?.Save(GetDefaultProfileFilePath());
} }
private void RadTextBox_Savestate_Clicked(object sender, EventArgs e) private void RadTextBox_Savestate_Clicked(object sender, EventArgs e)
{ {
if (curPad is object && curProfile is object) if (curPad is not null && curProfile is not null && sender is RadTextBox rtb)
focuesTextBox = (RadTextBox)sender; focuesTextBox = rtb;
} }
private void RadTextBox_Savestate_LostFocus(object sender, EventArgs e) private void RadTextBox_Savestate_LostFocus(object sender, EventArgs e)
{ {
focuesTextBox = null; focuesTextBox = null;
} }
}
} }

View File

@@ -1,4 +1,64 @@
<root> <?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
@@ -57,30 +117,24 @@
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<data name="radLabel1.Text" xml:space="preserve">
<value>Kontroller:</value>
</data>
<data name="radButton_LoadProfile.Text" xml:space="preserve"> <data name="radButton_LoadProfile.Text" xml:space="preserve">
<value>Profil laden</value> <value>Profil laden</value>
</data> </data>
<data name="radButton_SaveProfile.Text" xml:space="preserve"> <data name="radButton_SaveProfile.Text" xml:space="preserve">
<value>Profil speichern</value> <value>Profil speichern</value>
</data> </data>
<data name="radButton_StartStopListening.Text" xml:space="preserve">
<value>Zuhöreren beginnen</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing"> <data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 18</value> <value>111, 18</value>
</data> </data>
<data name="radLabel3.Text" xml:space="preserve"> <data name="radLabel3.Text" xml:space="preserve">
<value>Speicherpunkt laden:</value> <value>Speicherpunkt laden</value>
</data> </data>
<data name="radLabel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="radLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>126, 18</value> <value>126, 18</value>
</data> </data>
<data name="radLabel2.Text" xml:space="preserve"> <data name="radLabel2.Text" xml:space="preserve">
<value>Speicherpunkt erstellen:</value> <value>Speicherpunkt erstellen</value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>

View File

@@ -1,4 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root> <root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true"> <xsd:element name="root" msdata:IsDataSet="true">
@@ -52,67 +112,43 @@
<value>2.0</value> <value>2.0</value>
</resheader> </resheader>
<resheader name="reader"> <resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<resheader name="writer"> <resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader> </resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="radLabel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="radLabel1.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 4</value> <value>3, 3</value>
</data>
<data name="radLabel1.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 24</value>
</data> </data>
<data name="radLabel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="radLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 18</value> <value>74, 24</value>
</data> </data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="radLabel1.TabIndex" type="System.Int32, mscorlib"> <data name="radLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value> <value>0</value>
</data> </data>
<data name="radLabel1.Text" xml:space="preserve"> <data name="radLabel1.Text" xml:space="preserve">
<value>Controller:</value> <value>Controller</value>
</data> </data>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="radLabel1.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms"> <data name="radLabel1.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value> <value>ImageBeforeText</value>
</data> </data>
<data name="&gt;&gt;radLabel1.Name" xml:space="preserve"> <data name="radDropDownList_Pads.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>radLabel1</value> <value>Top, Left, Right</value>
</data> </data>
<data name="&gt;&gt;radLabel1.Type" xml:space="preserve"> <data name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value> <value>5</value>
</data>
<data name="&gt;&gt;radLabel1.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radLabel1.ZOrder" xml:space="preserve">
<value>7</value>
</data>
<data name="radDropDownList_Pads.Location" type="System.Drawing.Point, System.Drawing">
<value>83, 3</value>
</data>
<data name="radDropDownList_Pads.Size" type="System.Drawing.Size, System.Drawing">
<value>290, 24</value>
</data>
<data name="radDropDownList_Pads.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="&gt;&gt;radDropDownList_Pads.Name" xml:space="preserve">
<value>radDropDownList_Pads</value>
</data>
<data name="&gt;&gt;radDropDownList_Pads.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadDropDownList, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
<data name="&gt;&gt;radDropDownList_Pads.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radDropDownList_Pads.ZOrder" xml:space="preserve">
<value>9</value>
</data> </data>
<data name="radButton_LoadPads.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="radButton_LoadPads.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value> <value>MiddleCenter</value>
</data> </data>
<data name="radButton_LoadPads.Location" type="System.Drawing.Point, System.Drawing"> <data name="radButton_LoadPads.Location" type="System.Drawing.Point, System.Drawing">
<value>379, 3</value> <value>352, 3</value>
</data> </data>
<data name="radButton_LoadPads.Size" type="System.Drawing.Size, System.Drawing"> <data name="radButton_LoadPads.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 24</value> <value>24, 24</value>
@@ -120,225 +156,162 @@
<data name="radButton_LoadPads.TabIndex" type="System.Int32, mscorlib"> <data name="radButton_LoadPads.TabIndex" type="System.Int32, mscorlib">
<value>2</value> <value>2</value>
</data> </data>
<data name="&gt;&gt;radButton_LoadPads.Name" xml:space="preserve"> <data name="radButton_StartStopListening.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>radButton_LoadPads</value> <value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;radButton_LoadPads.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
<data name="&gt;&gt;radButton_LoadPads.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radButton_LoadPads.ZOrder" xml:space="preserve">
<value>8</value>
</data>
<data name="radTextBox_LoadSavestate.Location" type="System.Drawing.Point, System.Drawing">
<value>149, 63</value>
</data>
<data name="radTextBox_LoadSavestate.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 24</value>
</data>
<data name="radTextBox_LoadSavestate.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="&gt;&gt;radTextBox_LoadSavestate.Name" xml:space="preserve">
<value>radTextBox_LoadSavestate</value>
</data>
<data name="&gt;&gt;radTextBox_LoadSavestate.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadTextBox, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
<data name="&gt;&gt;radTextBox_LoadSavestate.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radTextBox_LoadSavestate.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="radTextBox_CreateSavestate.Location" type="System.Drawing.Point, System.Drawing">
<value>149, 33</value>
</data>
<data name="radTextBox_CreateSavestate.Size" type="System.Drawing.Size, System.Drawing">
<value>85, 24</value>
</data>
<data name="radTextBox_CreateSavestate.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
<data name="&gt;&gt;radTextBox_CreateSavestate.Name" xml:space="preserve">
<value>radTextBox_CreateSavestate</value>
</data>
<data name="&gt;&gt;radTextBox_CreateSavestate.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadTextBox, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
<data name="&gt;&gt;radTextBox_CreateSavestate.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radTextBox_CreateSavestate.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="radButton_LoadProfile.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="radButton_LoadProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 63</value>
</data>
<data name="radButton_LoadProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 24</value>
</data>
<data name="radButton_LoadProfile.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="radButton_LoadProfile.Text" xml:space="preserve">
<value>Load Profile</value>
</data>
<data name="radButton_LoadProfile.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;radButton_LoadProfile.Name" xml:space="preserve">
<value>radButton_LoadProfile</value>
</data>
<data name="&gt;&gt;radButton_LoadProfile.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
<data name="&gt;&gt;radButton_LoadProfile.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radButton_LoadProfile.ZOrder" xml:space="preserve">
<value>2</value>
</data>
<data name="radButton_SaveProfile.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="radButton_SaveProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 33</value>
</data>
<data name="radButton_SaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 24</value>
</data>
<data name="radButton_SaveProfile.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="radButton_SaveProfile.Text" xml:space="preserve">
<value>Save Profile</value>
</data>
<data name="radButton_SaveProfile.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;radButton_SaveProfile.Name" xml:space="preserve">
<value>radButton_SaveProfile</value>
</data>
<data name="&gt;&gt;radButton_SaveProfile.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
<data name="&gt;&gt;radButton_SaveProfile.Parent" xml:space="preserve">
<value>panel1</value>
</data>
<data name="&gt;&gt;radButton_SaveProfile.ZOrder" xml:space="preserve">
<value>3</value>
</data> </data>
<data name="radButton_StartStopListening.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing"> <data name="radButton_StartStopListening.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value> <value>MiddleRight</value>
</data> </data>
<data name="radButton_StartStopListening.Location" type="System.Drawing.Point, System.Drawing"> <data name="radButton_StartStopListening.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 3</value> <value>382, 3</value>
</data> </data>
<data name="radButton_StartStopListening.Size" type="System.Drawing.Size, System.Drawing"> <data name="radButton_StartStopListening.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 24</value> <value>164, 24</value>
</data> </data>
<data name="radButton_StartStopListening.TabIndex" type="System.Int32, mscorlib"> <data name="radButton_StartStopListening.TabIndex" type="System.Int32, mscorlib">
<value>7</value> <value>7</value>
</data> </data>
<data name="radButton_StartStopListening.Text" xml:space="preserve"> <data name="radButton_StartStopListening.Text" xml:space="preserve">
<value>Start listening</value> <value>Start</value>
</data>
<data name="radButton_StartStopListening.TextAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data> </data>
<data name="radButton_StartStopListening.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms"> <data name="radButton_StartStopListening.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value> <value>ImageBeforeText</value>
</data> </data>
<data name="&gt;&gt;radButton_StartStopListening.Name" xml:space="preserve"> <data name="radButton_SaveProfile.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>radButton_StartStopListening</value> <value>Top, Left, Right</value>
</data> </data>
<data name="&gt;&gt;radButton_StartStopListening.Type" xml:space="preserve"> <data name="radButton_SaveProfile.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value> <value>MiddleRight</value>
</data> </data>
<data name="&gt;&gt;radButton_StartStopListening.Parent" xml:space="preserve"> <data name="radButton_SaveProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>panel1</value> <value>382, 33</value>
</data> </data>
<data name="&gt;&gt;radButton_StartStopListening.ZOrder" xml:space="preserve"> <data name="radButton_SaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>4</value> <value>164, 24</value>
</data> </data>
<data name="radLabel3.Location" type="System.Drawing.Point, System.Drawing"> <data name="radButton_SaveProfile.TabIndex" type="System.Int32, mscorlib">
<value>3, 66</value> <value>8</value>
</data> </data>
<data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing"> <data name="radButton_SaveProfile.Text" xml:space="preserve">
<value>83, 18</value> <value>Save profile</value>
</data> </data>
<data name="radLabel3.TabIndex" type="System.Int32, mscorlib"> <data name="radButton_SaveProfile.TextAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>6</value> <value>MiddleLeft</value>
</data> </data>
<data name="radLabel3.Text" xml:space="preserve"> <data name="radButton_SaveProfile.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>Load Savestate:</value> <value>ImageBeforeText</value>
</data> </data>
<data name="&gt;&gt;radLabel3.Name" xml:space="preserve"> <data name="radButton_LoadProfile.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>radLabel3</value> <value>Top, Left, Right</value>
</data> </data>
<data name="&gt;&gt;radLabel3.Type" xml:space="preserve"> <data name="radButton_LoadProfile.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value> <value>MiddleRight</value>
</data> </data>
<data name="&gt;&gt;radLabel3.Parent" xml:space="preserve"> <data name="radButton_LoadProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>panel1</value> <value>382, 63</value>
</data> </data>
<data name="&gt;&gt;radLabel3.ZOrder" xml:space="preserve"> <data name="radButton_LoadProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>5</value> <value>164, 24</value>
</data>
<data name="radButton_LoadProfile.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="radButton_LoadProfile.Text" xml:space="preserve">
<value>Load profile</value>
</data>
<data name="radButton_LoadProfile.TextAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="radButton_LoadProfile.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="radTextBox_LoadSavestate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="radTextBox_LoadSavestate.Location" type="System.Drawing.Point, System.Drawing">
<value>100, 63</value>
</data>
<data name="radTextBox_LoadSavestate.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 20</value>
</data>
<data name="radTextBox_LoadSavestate.TabIndex" type="System.Int32, mscorlib">
<value>10</value>
</data>
<data name="radTextBox_CreateSavestate.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="radTextBox_CreateSavestate.Location" type="System.Drawing.Point, System.Drawing">
<value>100, 33</value>
</data>
<data name="radTextBox_CreateSavestate.Size" type="System.Drawing.Size, System.Drawing">
<value>120, 20</value>
</data>
<data name="radTextBox_CreateSavestate.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data> </data>
<data name="radLabel2.Location" type="System.Drawing.Point, System.Drawing"> <data name="radLabel2.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 36</value> <value>3, 33</value>
</data>
<data name="radLabel2.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 24</value>
</data> </data>
<data name="radLabel2.Size" type="System.Drawing.Size, System.Drawing"> <data name="radLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>91, 18</value> <value>91, 24</value>
</data> </data>
<data name="radLabel2.TabIndex" type="System.Int32, mscorlib"> <data name="radLabel2.TabIndex" type="System.Int32, mscorlib">
<value>4</value> <value>4</value>
</data> </data>
<data name="radLabel2.Text" xml:space="preserve"> <data name="radLabel2.Text" xml:space="preserve">
<value>Create Savestate:</value> <value>Create savestate</value>
</data> </data>
<data name="&gt;&gt;radLabel2.Name" xml:space="preserve"> <data name="radLabel3.Location" type="System.Drawing.Point, System.Drawing">
<value>radLabel2</value> <value>3, 63</value>
</data> </data>
<data name="&gt;&gt;radLabel2.Type" xml:space="preserve"> <data name="radLabel3.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value> <value>0, 24</value>
</data> </data>
<data name="&gt;&gt;radLabel2.Parent" xml:space="preserve"> <data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>panel1</value> <value>83, 24</value>
</data> </data>
<data name="&gt;&gt;radLabel2.ZOrder" xml:space="preserve"> <data name="radLabel3.TabIndex" type="System.Int32, mscorlib">
<value>6</value> <value>6</value>
</data> </data>
<data name="panel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms"> <data name="radLabel3.Text" xml:space="preserve">
<value>Load savestate</value>
</data>
<data name="tableLayoutPanel1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value> <value>Fill</value>
</data> </data>
<data name="panel1.Location" type="System.Drawing.Point, System.Drawing"> <data name="tableLayoutPanel1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 0</value> <value>0, 0</value>
</data> </data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing"> <data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>549, 91</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<value>3</value> <value>3</value>
</data> </data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve"> <data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>panel1</value> <value>549, 90</value>
</data> </data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve"> <data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> <value>4</value>
</data> </data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve"> <data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<value>$this</value> <value>&lt;?xml version="1.0" encoding="utf-16"?&gt;&lt;TableLayoutSettings&gt;&lt;Controls&gt;&lt;Control Name="radButton_LoadPads" Row="0" RowSpan="1" Column="3" ColumnSpan="1" /&gt;&lt;Control Name="radButton_StartStopListening" Row="0" RowSpan="1" Column="4" ColumnSpan="1" /&gt;&lt;Control Name="radButton_SaveProfile" Row="1" RowSpan="1" Column="4" ColumnSpan="1" /&gt;&lt;Control Name="radButton_LoadProfile" Row="2" RowSpan="1" Column="4" ColumnSpan="1" /&gt;&lt;Control Name="radTextBox_LoadSavestate" Row="2" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="radLabel1" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="radTextBox_CreateSavestate" Row="1" RowSpan="1" Column="1" ColumnSpan="1" /&gt;&lt;Control Name="radLabel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;Control Name="radDropDownList_Pads" Row="0" RowSpan="1" Column="1" ColumnSpan="2" /&gt;&lt;Control Name="radLabel3" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /&gt;&lt;/Controls&gt;&lt;Columns Styles="AutoSize,0,Percent,30,Percent,30,AutoSize,0,Percent,40" /&gt;&lt;Rows Styles="AutoSize,0,AutoSize,0,AutoSize,0" /&gt;&lt;/TableLayoutSettings&gt;</value>
</data> </data>
<data name="&gt;&gt;panel1.ZOrder" xml:space="preserve"> <data name="radDropDownList_Pads.Location" type="System.Drawing.Point, System.Drawing">
<value>0</value> <value>100, 3</value>
</data> </data>
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <data name="radDropDownList_Pads.Size" type="System.Drawing.Size, System.Drawing">
<value>246, 20</value>
</data>
<data name="radDropDownList_Pads.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="$this.Localizable" type="System.Boolean, mscorlib">
<value>True</value> <value>True</value>
</metadata> </data>
<data name="$this.AutoScaleBaseSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.AutoScaleBaseSize" type="System.Drawing.Size, System.Drawing">
<value>7, 15</value> <value>7, 15</value>
</data> </data>
@@ -346,7 +319,7 @@
<value>7, 15</value> <value>7, 15</value>
</data> </data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing"> <data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>549, 91</value> <value>549, 90</value>
</data> </data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
@@ -2120,10 +2093,4 @@
<data name="$this.Text" xml:space="preserve"> <data name="$this.Text" xml:space="preserve">
<value>Project64 Savestater</value> <value>Project64 Savestater</value>
</data> </data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>MainForm</value>
</data>
<data name="&gt;&gt;$this.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadForm, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
</data>
</root> </root>

View File

@@ -0,0 +1,56 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<PublishSingleFile>true</PublishSingleFile>
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
<StartupObject>PJ64Savestater.Program</StartupObject>
<ApplicationIcon>icons8_data_backup.ico</ApplicationIcon>
<AssemblyName>Project64 Savestater</AssemblyName>
<Version>1.1.0.0</Version>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup>
<Content Include="icons8_data_backup.ico" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
<PackageReference Include="SharpDX.DirectInput" Version="4.2.0" />
<PackageReference Include="UI.for.WinForms.AllControls.Net60">
<Version>2022.1.222.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup>
<Compile Update="ActionCodes.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>ActionCodes.resx</DependentUpon>
</Compile>
<Compile Update="LangRes.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>LangRes.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="ActionCodes.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>ActionCodes.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="LangRes.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>LangRes.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<Target Name="CustomAfterBuild" AfterTargets="Build">
<Exec Command="echo Removing unused Telerik-Assemblies...&#xD;&#xA;echo on&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.Windows.Documents.*&#xD;&#xA;del $(OutDir)Telerik.Documents.*&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.WinControls.GridView.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.PdfViewer.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.PivotGrid.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadDiagram.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadDock.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadMap.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadMarkupEditor.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadSpreadsheet.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadWebCam.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RichTextEditor.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Scheduler.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.SpellChecker.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.SyntaxEditor.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.ChartView.dll&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Aqua.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Breeze.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Crystal*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Desert.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.HighContrastBlack.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Material.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Material*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Office*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Telerik*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.VisualStudio*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Windows*&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.Windows.MediaFoundation.dll&#xD;&#xA;del $(OutDir)Telerik.Windows.Zip.dll&#xD;&#xA;&#xD;&#xA;echo Successfully removed unused Telerik-Assemblies!" />
</Target>
</Project>

View File

@@ -1,32 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<OutputType>WinExe</OutputType> <OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework> <TargetFramework>net8.0-windows</TargetFramework>
<PublishSingleFile>true</PublishSingleFile>
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms> <UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<StartupObject>PJ64Savestater.Program</StartupObject>
<ApplicationIcon>icons8_data_backup.ico</ApplicationIcon> <ApplicationIcon>icons8_data_backup.ico</ApplicationIcon>
<AssemblyName>Project64 Savestater</AssemblyName> <AssemblyName>Project64 Savestater</AssemblyName>
<Authors>Pilzinsel64</Authors>
<PackageProjectUrl>https://pilzinsel64.de</PackageProjectUrl>
<RepositoryUrl>https://git.pilzinsel64.com/Pilzinsel64/project64-savestater</RepositoryUrl>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<Content Include="icons8_data_backup.ico" /> <Content Include="icons8_data_backup.ico" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <EmbeddedResource Include="Symbols\*.svg" />
<PackageReference Include="SharpDX.DirectInput" Version="4.2.0" />
<PackageReference Include="UI.for.WinForms.AllControls.Net60">
<Version>2022.1.222.0</Version>
</PackageReference>
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="Pilz" Version="2.2.0" />
<PackageReference Include="Pilz.UI.Telerik" Version="2.7.6" />
<PackageReference Include="SharpDX.DirectInput" Version="4.2.0" />
<PackageReference Include="UI.for.WinForms.Common" Version="2024.3.806" />
<PackageReference Include="UI.for.WinForms.Themes" Version="2024.3.806" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Update="ActionCodes.Designer.cs"> <Compile Update="ActionCodes.Designer.cs">
<DesignTime>True</DesignTime> <DesignTime>True</DesignTime>
@@ -39,6 +42,7 @@
<DependentUpon>LangRes.resx</DependentUpon> <DependentUpon>LangRes.resx</DependentUpon>
</Compile> </Compile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Update="ActionCodes.resx"> <EmbeddedResource Update="ActionCodes.resx">
<Generator>ResXFileCodeGenerator</Generator> <Generator>ResXFileCodeGenerator</Generator>
@@ -49,4 +53,9 @@
<LastGenOutput>LangRes.Designer.cs</LastGenOutput> <LastGenOutput>LangRes.Designer.cs</LastGenOutput>
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>
<Target Name="PostBuild" AfterTargets="PostBuildEvent">
<Exec Command="echo Removing unused Telerik-Assemblies...&#xD;&#xA;echo on&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.Windows.Documents.*&#xD;&#xA;del $(OutDir)Telerik.Documents.*&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.WinControls.GridView.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.PdfViewer.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.PivotGrid.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadDiagram.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadDock.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadMap.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadMarkupEditor.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadSpreadsheet.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RadWebCam.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.RichTextEditor.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Scheduler.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.SpellChecker.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.SyntaxEditor.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.ChartView.dll&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Aqua.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Breeze.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Crystal*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Desert.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.HighContrastBlack.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Material.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Material*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Office*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Telerik*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.VisualStudio*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Fluent*&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Windows7.dll&#xD;&#xA;del $(OutDir)Telerik.WinControls.Themes.Windows8.dll&#xD;&#xA;&#xD;&#xA;del $(OutDir)Telerik.Windows.MediaFoundation.dll&#xD;&#xA;del $(OutDir)Telerik.Windows.Zip.dll&#xD;&#xA;&#xD;&#xA;echo Successfully removed unused Telerik-Assemblies!" />
</Target>
</Project> </Project>

View File

@@ -1,13 +1,13 @@
using System; using Pilz;
using System.Collections.Generic; using Pilz.UI.Telerik.Theming;
using System.Linq; using Telerik.WinControls.Themes;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace PJ64Savestater [assembly: AssemblyAppVersion("1.3.0.0")]
namespace PJ64Savestater;
static class Program
{ {
static class Program
{
/// <summary> /// <summary>
/// Der Haupteinstiegspunkt für die Anwendung. /// Der Haupteinstiegspunkt für die Anwendung.
/// </summary> /// </summary>
@@ -16,9 +16,7 @@ namespace PJ64Savestater
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
VisualThemeHelper.SetVisualTheme(); ThemeHelper.ApplyApplicationTheme(ApplicationTheme.Auto, () => new Windows11CompactTheme(), () => new Windows11CompactDarkTheme());
//Application.SetDefaultFont(new Font(Control.DefaultFont.FontFamily, 8.25f)); // Kein Effekt?
Application.Run(new MainForm()); Application.Run(new MainForm());
} }
}
} }

View File

@@ -1,123 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace PJ64Savestater.Properties {
using System;
/// <summary>
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary>
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PJ64Savestater.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_game_controller_16px {
get {
object obj = ResourceManager.GetObject("icons8_game_controller_16px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_opened_folder_16px {
get {
object obj = ResourceManager.GetObject("icons8_opened_folder_16px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_play_button_circled_16px {
get {
object obj = ResourceManager.GetObject("icons8_play_button_circled_16px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_refresh_16px {
get {
object obj = ResourceManager.GetObject("icons8_refresh_16px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_save_16px {
get {
object obj = ResourceManager.GetObject("icons8_save_16px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
/// </summary>
internal static System.Drawing.Bitmap icons8_stop_squared_16px {
get {
object obj = ResourceManager.GetObject("icons8_stop_squared_16px", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@@ -1,139 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="icons8_game_controller_16px" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8_game_controller_16px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_opened_folder_16px" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8_opened_folder_16px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_play_button_circled_16px" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8_play_button_circled_16px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_refresh_16px" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8_refresh_16px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_save_16px" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8_save_16px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="icons8_stop_squared_16px" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\icons8_stop_squared_16px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@@ -1,26 +0,0 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Dieser Code wurde von einem Tool generiert.
// Laufzeitversion:4.0.30319.42000
//
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// der Code erneut generiert wird.
// </auto-generated>
//------------------------------------------------------------------------------
namespace PJ64Savestater.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
}
}

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 642 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 224 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 491 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 212 B

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32">
<linearGradient id="mNjxzwcyMtzXNB68eY5Bta" x1="-7.018" x2="39.387" y1="9.308" y2="33.533" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fac017" />
<stop offset=".909" stop-color="#e1ab2d" />
</linearGradient>
<path fill="url(#mNjxzwcyMtzXNB68eY5Bta)" d="M44.5,41h-41C2.119,41,1,39.881,1,38.5v-31C1,6.119,2.119,5,3.5,5h11.597c1.519,0,2.955,0.69,3.904,1.877L21.5,10h23c1.381,0,2.5,1.119,2.5,2.5v26C47,39.881,45.881,41,44.5,41z" />
<linearGradient id="mNjxzwcyMtzXNB68eY5Btb" x1="16.865" x2="44.965" y1="39.287" y2="39.792" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#e3a917" />
<stop offset=".464" stop-color="#d79c1e" />
</linearGradient>
<path fill="url(#mNjxzwcyMtzXNB68eY5Btb)" d="M1,37.875V38.5C1,39.881,2.119,41,3.5,41h41c1.381,0,2.5-1.119,2.5-2.5v-0.625H1z" />
<linearGradient id="mNjxzwcyMtzXNB68eY5Btc" x1="-4.879" x2="35.968" y1="12.764" y2="30.778" gradientUnits="userSpaceOnUse">
<stop offset=".34" stop-color="#ffefb2" />
<stop offset=".485" stop-color="#ffedad" />
<stop offset=".652" stop-color="#ffe99f" />
<stop offset=".828" stop-color="#fee289" />
<stop offset="1" stop-color="#fed86b" />
</linearGradient>
<path fill="url(#mNjxzwcyMtzXNB68eY5Btc)" d="M44.5,11h-23l-1.237,0.824C19.114,12.591,17.763,13,16.381,13H3.5C2.119,13,1,14.119,1,15.5v22C1,38.881,2.119,40,3.5,40h41c1.381,0,2.5-1.119,2.5-2.5v-24C47,12.119,45.881,11,44.5,11z" />
<radialGradient id="mNjxzwcyMtzXNB68eY5Btd" cx="37.836" cy="49.317" r="53.875" gradientUnits="userSpaceOnUse">
<stop offset=".199" stop-color="#fec832" />
<stop offset=".601" stop-color="#fcd667" />
<stop offset=".68" stop-color="#fdda75" />
<stop offset=".886" stop-color="#fee496" />
<stop offset="1" stop-color="#ffe8a2" />
</radialGradient>
<path fill="url(#mNjxzwcyMtzXNB68eY5Btd)" d="M44.5,40h-41C2.119,40,1,38.881,1,37.5v-21C1,15.119,2.119,14,3.5,14h13.256c1.382,0,2.733-0.409,3.883-1.176L21.875,12H44.5c1.381,0,2.5,1.119,2.5,2.5v23C47,38.881,45.881,40,44.5,40z" />
<linearGradient id="mNjxzwcyMtzXNB68eY5Bte" x1="18.104" x2="26.602" y1="18.535" y2="33.254" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#c78902" />
<stop offset="1" stop-color="#986700" />
</linearGradient>
<path fill="url(#mNjxzwcyMtzXNB68eY5Bte)" d="M26.5,15c-4.687,0-8.5,3.813-8.5,8.5c0,1.984,0.688,3.807,1.832,5.254l-6.539,6.539c-0.391,0.391-0.391,1.023,0,1.414C13.488,36.902,13.744,37,14,37s0.512-0.098,0.707-0.293l6.539-6.539C22.693,31.312,24.516,32,26.5,32c4.687,0,8.5-3.813,8.5-8.5S31.187,15,26.5,15z M26.5,30c-3.584,0-6.5-2.916-6.5-6.5s2.916-6.5,6.5-6.5s6.5,2.916,6.5,6.5S30.084,30,26.5,30z" />
</svg>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32">
<linearGradient id="0eGa_O6wc7iivkGvOXxima" x1="9.858" x2="38.142" y1="9.858" y2="38.142" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#33bef0" />
<stop offset="1" stop-color="#0a85d9" />
</linearGradient>
<path fill="url(#0eGa_O6wc7iivkGvOXxima)" d="M44,24c0,11.045-8.955,20-20,20S4,35.045,4,24S12.955,4,24,4S44,12.955,44,24z" />
<path d="M33.352,22.44l-11.436-7.624c-0.577-0.385-1.314-0.421-1.925-0.093C19.38,15.05,19,15.683,19,16.376v15.248c0,0.693,0.38,1.327,0.991,1.654c0.278,0.149,0.581,0.222,0.884,0.222c0.364,0,0.726-0.106,1.04-0.315l11.436-7.624c0.523-0.349,0.835-0.932,0.835-1.56C34.187,23.372,33.874,22.789,33.352,22.44z" opacity=".05" />
<path d="M21.681,15.237l10.79,7.194c0.689,0.495,1.153,0.938,1.153,1.513c0,0.575-0.224,0.976-0.715,1.334c-0.371,0.27-11.045,7.364-11.045,7.364c-0.901,0.604-2.364,0.476-2.364-1.499V16.744C19.5,14.739,21.084,14.839,21.681,15.237z" opacity=".07" />
<path fill="#fff" d="M20,31.568V16.433c0-0.743,0.828-1.187,1.447-0.774l11.352,7.568c0.553,0.368,0.553,1.18,0,1.549l-11.352,7.568C20.828,32.755,20,32.312,20,31.568z" />
</svg>

View File

@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32">
<path fill="#0076d7" d="M33,9l7,2V8c0-0.552-0.448-1-1-1h-5c-0.552,0-1,0.448-1,1V9z" />
<path fill="#0076d7" d="M15,9l-7,2V8c0-0.552,0.448-1,1-1h5c0.552,0,1,0.448,1,1V9z" />
<linearGradient id="SIPKtYzRchNK3_~v0cnjAa" x1="4.914" x2="42.537" y1="9.822" y2="36.631" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#8795a1" />
<stop offset="1" stop-color="#6d7882" />
</linearGradient>
<path fill="url(#SIPKtYzRchNK3_~v0cnjAa)" d="M45.379,13.573c-0.229-1.601-1.392-2.903-2.96-3.301C38.922,9.384,32.166,8,24,8C15.833,8,9.078,9.384,5.581,10.272c-1.568,0.398-2.73,1.7-2.96,3.301C2.041,17.623,1,25.393,1,29c0,4.971,4.029,9,9,9c4.282,0,7.859-2.993,8.769-7h10.461c0.911,4.007,4.487,7,8.769,7c4.971,0,9-4.029,9-9C47,25.393,45.959,17.622,45.379,13.573z" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAb" cx="37" cy="17" r="3" gradientUnits="userSpaceOnUse">
<stop offset="0" />
<stop offset="1" stop-opacity="0" />
</radialGradient>
<circle cx="37" cy="17" r="3" fill="url(#SIPKtYzRchNK3_~v0cnjAb)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAc" cx="37" cy="25" r="3" gradientUnits="userSpaceOnUse">
<stop offset="0" />
<stop offset="1" stop-opacity="0" />
</radialGradient>
<circle cx="37" cy="25" r="3" fill="url(#SIPKtYzRchNK3_~v0cnjAc)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAd" cx="33" cy="21" r="3" gradientUnits="userSpaceOnUse">
<stop offset="0" />
<stop offset="1" stop-opacity="0" />
</radialGradient>
<circle cx="33" cy="21" r="3" fill="url(#SIPKtYzRchNK3_~v0cnjAd)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAe" cx="41" cy="21" r="3" gradientUnits="userSpaceOnUse">
<stop offset="0" />
<stop offset="1" stop-opacity="0" />
</radialGradient>
<circle cx="41" cy="21" r="3" fill="url(#SIPKtYzRchNK3_~v0cnjAe)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAf" cx="39.665" cy="19.583" r="3.956" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#46c3f0" />
<stop offset="1" stop-color="#15a2eb" />
</radialGradient>
<circle cx="41" cy="21" r="2" fill="url(#SIPKtYzRchNK3_~v0cnjAf)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAg" cx="31.576" cy="19.602" r="3.984" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fee100" />
<stop offset="1" stop-color="#f7a511" />
</radialGradient>
<circle cx="33" cy="21" r="2" fill="url(#SIPKtYzRchNK3_~v0cnjAg)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAh" cx="35.577" cy="15.602" r="3.984" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#ff80a9" />
<stop offset="1" stop-color="#ff3b78" />
</radialGradient>
<circle cx="37" cy="17" r="2" fill="url(#SIPKtYzRchNK3_~v0cnjAh)" />
<radialGradient id="SIPKtYzRchNK3_~v0cnjAi" cx="35.7" cy="23.504" r="4.048" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#1ad674" />
<stop offset=".485" stop-color="#13c266" />
<stop offset="1" stop-color="#0aa854" />
</radialGradient>
<circle cx="37" cy="25" r="2" fill="url(#SIPKtYzRchNK3_~v0cnjAi)" />
<path d="M17,19h-2v-2c0-1.105-0.895-2-2-2h-1c-1.105,0-2,0.895-2,2v2H8c-1.105,0-2,0.895-2,2v1c0,1.105,0.895,2,2,2h2v2c0,1.105,0.895,2,2,2h1c1.105,0,2-0.895,2-2v-2h2c1.105,0,2-0.895,2-2v-1C19,19.895,18.105,19,17,19z" opacity=".05" />
<path d="M17,19.5h-2.5V17c0-0.828-0.672-1.5-1.5-1.5h-1c-0.828,0-1.5,0.672-1.5,1.5v2.5H8c-0.828,0-1.5,0.672-1.5,1.5v1c0,0.828,0.672,1.5,1.5,1.5h2.5V26c0,0.828,0.672,1.5,1.5,1.5h1c0.828,0,1.5-0.672,1.5-1.5v-2.5H17c0.828,0,1.5-0.672,1.5-1.5v-1C18.5,20.172,17.828,19.5,17,19.5z" opacity=".07" />
<path fill="#fff" d="M12,16h1c0.552,0,1,0.448,1,1v9c0,0.552-0.448,1-1,1h-1c-0.552,0-1-0.448-1-1v-9C11,16.448,11.448,16,12,16z" />
<path fill="#fff" d="M18,21v1c0,0.552-0.448,1-1,1H8c-0.552,0-1-0.448-1-1v-1c0-0.552,0.448-1,1-1h9C17.552,20,18,20.448,18,21z" />
</svg>

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32">
<linearGradient id="I93pW93qJSUhtSDIz1RZKa" x1="-248" x2="-238" y1="-234" y2="-234" gradientTransform="rotate(180 -112 -112)" gradientUnits="userSpaceOnUse">
<stop offset=".266" stop-color="#199ae0" />
<stop offset=".582" stop-color="#1898de" />
<stop offset=".745" stop-color="#1590d6" />
<stop offset=".873" stop-color="#1083c9" />
<stop offset=".982" stop-color="#0870b7" />
<stop offset="1" stop-color="#076cb3" />
</linearGradient>
<path fill="url(#I93pW93qJSUhtSDIz1RZKa)" d="M14,13h9c0.552,0,1-0.448,1-1V8c0-0.552-0.448-1-1-1h-9V13z" />
<linearGradient id="I93pW93qJSUhtSDIz1RZKb" x1="3.924" x2="17.001" y1="8.199" y2="41.867" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#32bdef" />
<stop offset="1" stop-color="#1ea2e4" />
</linearGradient>
<path fill="url(#I93pW93qJSUhtSDIz1RZKb)" d="M18.19,32H14V7l-4.828,4.828C8.421,12.579,8,13.596,8,14.657V32H3.81c-0.72,0-1.08,0.87-0.571,1.379l6.701,6.701c0.586,0.586,1.536,0.586,2.121,0l6.701-6.701C19.271,32.87,18.91,32,18.19,32z" />
<linearGradient id="I93pW93qJSUhtSDIz1RZKc" x1="-365" x2="-355" y1="-231.472" y2="-231.472" gradientTransform="translate(389 269.472)" gradientUnits="userSpaceOnUse">
<stop offset=".266" stop-color="#199ae0" />
<stop offset=".582" stop-color="#1898de" />
<stop offset=".745" stop-color="#1590d6" />
<stop offset=".873" stop-color="#1083c9" />
<stop offset=".982" stop-color="#0870b7" />
<stop offset="1" stop-color="#076cb3" />
</linearGradient>
<path fill="url(#I93pW93qJSUhtSDIz1RZKc)" d="M34,35h-9c-0.552,0-1,0.448-1,1v4c0,0.552,0.448,1,1,1h9V35z" />
<linearGradient id="I93pW93qJSUhtSDIz1RZKd" x1="32.313" x2="44" y1="7.663" y2="40.775" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#32bdef" />
<stop offset="1" stop-color="#1ea2e4" />
</linearGradient>
<path fill="url(#I93pW93qJSUhtSDIz1RZKd)" d="M29.81,16H34v25l4.828-4.828c0.75-0.75,1.172-1.768,1.172-2.828V16h4.19c0.72,0,1.08-0.87,0.571-1.379L38.061,7.92c-0.586-0.586-1.536-0.586-2.121,0l-6.701,6.701C28.729,15.13,29.09,16,29.81,16z" />
</svg>

View File

@@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32">
<linearGradient id="RYATVpJlDntEW8LOcPQLra" x1="5.715" x2="40.857" y1="40.37" y2="5.229" gradientTransform="matrix(1 0 0 -1 0 48)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#32bdef" />
<stop offset="1" stop-color="#1ea2e4" />
</linearGradient>
<path fill="url(#RYATVpJlDntEW8LOcPQLra)" d="M36.2,6H8C6.9,6,6,6.9,6,8v32c0,1.1,0.9,2,2,2h32c1.1,0,2-0.9,2-2V11.8c0-0.5-0.2-1-0.6-1.4l-3.8-3.8C37.2,6.2,36.7,6,36.2,6z" />
<path d="M36,6H14v10c0,1.7,1.3,3,3,3h16c1.7,0,3-1.3,3-3V6z" opacity=".05" />
<path fill="#1fa4e6" d="M33,19H13c-1.1,0-2-0.9-2-2V6h24v11C35,18.1,34.1,19,33,19z" />
<path d="M33,18.5H17c-1.4,0-2.5-1.1-2.5-2.5V6h21v10C35.5,17.4,34.4,18.5,33,18.5z" opacity=".07" />
<radialGradient id="RYATVpJlDntEW8LOcPQLrb" cx="17.573" cy="45.392" r="23.87" gradientTransform="matrix(1 0 0 -1 0 48)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fafafb" />
<stop offset=".523" stop-color="#e2e4e7" />
<stop offset="1" stop-color="#c8cdd1" />
</radialGradient>
<path fill="url(#RYATVpJlDntEW8LOcPQLrb)" d="M15,6v10c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2V6H15z" />
<rect width="4" height="8" x="27" y="8" fill="#177cad" />
<linearGradient id="RYATVpJlDntEW8LOcPQLrc" x1="38.003" x2="40.027" y1="9.997" y2="7.973" gradientTransform="matrix(1 0 0 -1 0 48)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#0d61a9" />
<stop offset="1" stop-color="#16528c" />
</linearGradient>
<rect width="2" height="2" x="38" y="38" fill="url(#RYATVpJlDntEW8LOcPQLrc)" />
<linearGradient id="RYATVpJlDntEW8LOcPQLrd" x1="8.003" x2="10.027" y1="9.997" y2="7.973" gradientTransform="matrix(1 0 0 -1 0 48)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#0d61a9" />
<stop offset="1" stop-color="#16528c" />
</linearGradient>
<rect width="2" height="2" x="8" y="38" fill="url(#RYATVpJlDntEW8LOcPQLrd)" />
<linearGradient id="RYATVpJlDntEW8LOcPQLre" x1="13.83" x2="34.965" y1="23.83" y2="44.965" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#fff" />
<stop offset=".242" stop-color="#f2f2f2" />
<stop offset="1" stop-color="#ccc" />
</linearGradient>
<path fill="url(#RYATVpJlDntEW8LOcPQLre)" d="M34,42H14c-1.1,0-2-0.9-2-2V28c0-1.1,0.9-2,2-2h20c1.1,0,2,0.9,2,2v12C36,41.1,35.1,42,34,42z" />
</svg>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" width="32" height="32">
<linearGradient id="zk_8CP1xbybYRoGWRkHdxa" x1="9.858" x2="38.142" y1="304.142" y2="275.858" gradientTransform="matrix(1 0 0 -1 0 314)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#36b0ed" />
<stop offset="1" stop-color="#1771d2" />
</linearGradient>
<path fill="url(#zk_8CP1xbybYRoGWRkHdxa)" d="M44,24c0,11.045-8.955,20-20,20S4,35.045,4,24S12.955,4,24,4S44,12.955,44,24z" />
<path fill="#fff" d="M31,32H17c-0.552,0-1-0.448-1-1V17c0-0.552,0.448-1,1-1h14c0.552,0,1,0.448,1,1v14C32,31.552,31.552,32,31,32z" />
<path fill="#151515" d="M31,16c0.552,0,1,0.448,1,1v14c0,0.552-0.448,1-1,1H17c-0.552,0-1-0.448-1-1V17c0-0.552,0.448-1,1-1 H31 M31,15H17c-1.103,0-2,0.897-2,2v14c0,1.103,0.897,2,2,2h14c1.103,0,2-0.897,2-2V17C33,15.897,32.103,15,31,15L31,15z" opacity=".05" />
<path fill="#151515" d="M31,16c0.552,0,1,0.448,1,1v14c0,0.552-0.448,1-1,1H17c-0.552,0-1-0.448-1-1V17c0-0.552,0.448-1,1-1 H31 M31,15.5H17c-0.827,0-1.5,0.673-1.5,1.5v14c0,0.827,0.673,1.5,1.5,1.5h14c0.827,0,1.5-0.673,1.5-1.5V17 C32.5,16.173,31.827,15.5,31,15.5L31,15.5z" opacity=".05" />
</svg>

View File

@@ -1,44 +0,0 @@
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Telerik.WinControls;
namespace PJ64Savestater
{
internal static class VisualThemeHelper
{
private const string THEMENAME_FLUENT = "Fluent";
private const string THEMENAME_FLUENTDARK = "FluentDark";
public static void SetVisualTheme()
{
RadThemeComponentBase? setTheme = null;
var curVers = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion", false);
if (Convert.ToString(curVers?.GetValue("ProductName", "-"))?.StartsWith("Windows 1") ?? false)
{
var keyPersonalize = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize", false);
int useapptheme = Convert.ToInt32(keyPersonalize?.GetValue("AppsUseLightTheme", 1));
switch (useapptheme)
{
case 0:
setTheme = new Telerik.WinControls.Themes.FluentDarkTheme();
break;
case 1:
setTheme = new Telerik.WinControls.Themes.FluentTheme();
break;
}
}
if (setTheme is null)
setTheme = new Telerik.WinControls.Themes.FluentTheme();
// Set theme
ThemeResolutionService.ApplicationThemeName = setTheme.ThemeName;
}
}
}