modernize repository

This commit is contained in:
2024-10-27 08:45:49 +01:00
parent 32b110fca5
commit 076277bd60
37 changed files with 1389 additions and 1491 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"?>
<configuration>
<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>
</configuration>

View File

@@ -2,6 +2,6 @@
<configuration>
<appSettings>
<add key="toleranceOffset" value="1000"/>
<add key="TelerikWinFormsThemeName" value="Fluent" />
<add key="TelerikWinFormsThemeName" value="Windows11CompactTheme" />
</appSettings>
</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;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater;
namespace PJ64Savestater
{
public enum ControllerTypes : byte
{
Keyboard,
DirectInput
}
}

View File

@@ -1,18 +1,13 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater;
namespace PJ64Savestater
{
internal static class Globals
{
public static bool CompareTwoByteArrays(byte[] arr1, byte[] arr2)
{
if (arr2.Count() != arr1.Count())
if (arr2.Length != arr1.Length)
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])
return false;
@@ -21,4 +16,3 @@ namespace PJ64Savestater
return true;
}
}
}

View File

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

View File

@@ -1,11 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PJ64Savestater;
namespace PJ64Savestater
{
public enum InputKeys : byte
{
// Uses Index
@@ -41,4 +35,3 @@ namespace PJ64Savestater
Y, // Y 'Default: 0
Z // Z 'Default: 0
}
}

View File

@@ -1,18 +1,12 @@
using Newtonsoft.Json;
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 string ProfileCode { get; set; }
public Dictionary<string, InputControl> Controls { get; } = new Dictionary<string, InputControl>();
public string? ProfileCode { get; set; }
public Dictionary<string, InputControl> Controls { get; } = [];
private byte[] _ControllerInstanceGuid = Array.Empty<byte>();
@@ -30,7 +24,7 @@ namespace PJ64Savestater
{
get
{
if (_ControllerInstanceGuid.Count() == 0)
if (_ControllerInstanceGuid.Length == 0)
return default;
return new Guid(_ControllerInstanceGuid);
}
@@ -64,19 +58,19 @@ namespace PJ64Savestater
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();
serializer.TypeNameHandling = TypeNameHandling.Auto;
return serializer;
}
return new()
{
TypeNameHandling = TypeNameHandling.Auto
};
}
}

View File

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

View File

@@ -117,11 +117,8 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Button_StartListening" xml:space="preserve">
<value>Zuhören beginnen</value>
</data>
<data name="Button_StopListening" xml:space="preserve">
<value>Zuhören beenden</value>
<value>Stopp</value>
</data>
<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>

View File

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

View File

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

View File

@@ -1,32 +1,26 @@
using SharpDX.DirectInput;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using Pilz.UI.Symbols;
using SharpDX.DirectInput;
using System.Configuration;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;
using Telerik.WinControls.UI;
using Timer = System.Timers.Timer;
namespace PJ64Savestater
{
public partial class MainForm : Telerik.WinControls.UI.RadForm
namespace PJ64Savestater;
public partial class MainForm : RadForm
{
private const string FILTER_INPUTPROFILE = "Json files (*.json)|*.json";
private const string PROFILE_CODE = "Project64 Savestater";
private const string DEFAULT_PROFILE_FILENAME = "Profile.json";
private Timer myTimer;
private DirectInput DInput = new DirectInput();
private DeviceInstance[] allDevices = Array.Empty<DeviceInstance>();
private Joystick curPad = null;
private RadTextBox focuesTextBox = null;
private InputProfile curProfile = null;
private readonly int toleranceOffset = 1000;
private readonly Timer myTimer;
private readonly DirectInput dInput = new();
private DeviceInstance[] allDevices = [];
private Joystick? curPad = null;
private RadTextBox? focuesTextBox = null;
private InputProfile? curProfile = null;
private bool enableActionExecution = false;
private int toleranceOffset = 1000;
public MainForm()
{
@@ -37,6 +31,13 @@ namespace PJ64Savestater
// Init components
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
myTimer = new Timer(1)
{
@@ -49,7 +50,7 @@ namespace PJ64Savestater
private void LoadPads()
{
allDevices = DInput.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly).ToArray();
allDevices = [.. dInput.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly)];
radDropDownList_Pads.Items.Clear();
foreach (DeviceInstance d in allDevices)
radDropDownList_Pads.Items.Add(d.InstanceName);
@@ -57,13 +58,13 @@ namespace PJ64Savestater
private void SetCurrentPad(Guid guid)
{
curPad = new Joystick(DInput, guid);
curPad = new Joystick(dInput, guid);
foreach (DeviceObjectInstance doi in curPad.GetObjects(DeviceObjectTypeFlags.Axis))
curPad.GetObjectPropertiesById(doi.ObjectId).Range = new InputRange(-5000, 5000);
curPad.Properties.AxisMode = DeviceAxisMode.Absolute;
curPad.SetCooperativeLevel(Handle, CooperativeLevel.NonExclusive | CooperativeLevel.Background);
curPad.Acquire();
if (curProfile is object)
if (curProfile is not null)
curProfile.ControllerInstanceGuid = guid;
}
@@ -76,8 +77,9 @@ namespace PJ64Savestater
private void CheckForInput()
{
if (curPad is object)
{
if (curPad is null)
return;
var inputCodes = new List<string>();
var state = new JoystickState();
bool success;
@@ -93,8 +95,8 @@ namespace PJ64Savestater
success = false;
}
if (success)
{
if (!success)
return;
for (int i = 0, loopTo = state.Buttons.Length - 1; i <= loopTo; i++)
{
@@ -252,17 +254,18 @@ namespace PJ64Savestater
if (inputCodes.Any())
{
if (focuesTextBox is object)
if (focuesTextBox is not null)
focuesTextBox.Text = inputCodes.Last();
else if (enableActionExecution)
CheckForActions(inputCodes.ToArray());
}
}
CheckForActions([.. inputCodes]);
}
}
private void CheckForActions(string[] inputCodes)
{
if (curProfile is null)
return;
foreach (var inputCode in inputCodes)
{
var inputControl = GetInputControlFromString(inputCode);
@@ -284,7 +287,7 @@ namespace PJ64Savestater
private void SetAction(string actionCode, string inputCode)
{
if (curProfile is object)
if (curProfile is not null)
curProfile[actionCode] = GetInputControlFromString(inputCode);
}
@@ -557,17 +560,21 @@ namespace PJ64Savestater
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_LoadSavestate.Text = GetStringFromInputControl(p[ActionCodes.LoadSavestate]);
try
{
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);
}
catch (Exception)
@@ -576,9 +583,6 @@ namespace PJ64Savestater
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)
{
@@ -591,33 +595,37 @@ namespace PJ64Savestater
LoadProfile(GetDefaultProfileFilePath());
}
private void radButton_StartStopListening_Click(object sender, EventArgs e)
private void RadButton_StartStopListening_Click(object sender, EventArgs e)
{
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;
enableActionExecution = false;
}
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;
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
{
Filter = FILTER_INPUTPROFILE
};
if (sfd_SaveInputProfile.ShowDialog(this) == DialogResult.OK)
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
{
@@ -627,22 +635,22 @@ namespace PJ64Savestater
LoadProfile(ofd_SaveInputProfile.FileName);
}
private void radTextBox1_TextChanged(object sender, EventArgs e)
private void RadTextBox1_TextChanged(object sender, EventArgs e)
{
SetAction(ActionCodes.CreateSavestate, ((RadTextBox)sender).Text);
}
private void radTextBox2_TextChanged(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)
private void RadButton1_Click(object sender, EventArgs e)
{
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;
if (index >= 0)
@@ -651,13 +659,13 @@ namespace PJ64Savestater
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
curProfile.Save(GetDefaultProfileFilePath());
curProfile?.Save(GetDefaultProfileFilePath());
}
private void RadTextBox_Savestate_Clicked(object sender, EventArgs e)
{
if (curPad is object && curProfile is object)
focuesTextBox = (RadTextBox)sender;
if (curPad is not null && curProfile is not null && sender is RadTextBox rtb)
focuesTextBox = rtb;
}
private void RadTextBox_Savestate_LostFocus(object sender, EventArgs e)
@@ -665,4 +673,3 @@ namespace PJ64Savestater
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:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
@@ -57,30 +117,24 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="radLabel1.Text" xml:space="preserve">
<value>Kontroller:</value>
</data>
<data name="radButton_LoadProfile.Text" xml:space="preserve">
<value>Profil laden</value>
</data>
<data name="radButton_SaveProfile.Text" xml:space="preserve">
<value>Profil speichern</value>
</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" />
<data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>111, 18</value>
</data>
<data name="radLabel3.Text" xml:space="preserve">
<value>Speicherpunkt laden:</value>
<value>Speicherpunkt laden</value>
</data>
<data name="radLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>126, 18</value>
</data>
<data name="radLabel2.Text" xml:space="preserve">
<value>Speicherpunkt erstellen:</value>
<value>Speicherpunkt erstellen</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>

View File

@@ -1,4 +1,64 @@
<?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">
@@ -52,67 +112,43 @@
<value>2.0</value>
</resheader>
<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 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>
<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">
<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 name="radLabel1.Size" type="System.Drawing.Size, System.Drawing">
<value>74, 18</value>
<value>74, 24</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="radLabel1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
</data>
<data name="radLabel1.Text" xml:space="preserve">
<value>Controller:</value>
<value>Controller</value>
</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">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;radLabel1.Name" xml:space="preserve">
<value>radLabel1</value>
<data name="radDropDownList_Pads.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;radLabel1.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</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 name="tableLayoutPanel1.ColumnCount" type="System.Int32, mscorlib">
<value>5</value>
</data>
<data name="radButton_LoadPads.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
</data>
<data name="radButton_LoadPads.Location" type="System.Drawing.Point, System.Drawing">
<value>379, 3</value>
<value>352, 3</value>
</data>
<data name="radButton_LoadPads.Size" type="System.Drawing.Size, System.Drawing">
<value>24, 24</value>
@@ -120,225 +156,162 @@
<data name="radButton_LoadPads.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
</data>
<data name="&gt;&gt;radButton_LoadPads.Name" xml:space="preserve">
<value>radButton_LoadPads</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 name="radButton_StartStopListening.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="radButton_StartStopListening.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleCenter</value>
<value>MiddleRight</value>
</data>
<data name="radButton_StartStopListening.Location" type="System.Drawing.Point, System.Drawing">
<value>409, 3</value>
<value>382, 3</value>
</data>
<data name="radButton_StartStopListening.Size" type="System.Drawing.Size, System.Drawing">
<value>137, 24</value>
<value>164, 24</value>
</data>
<data name="radButton_StartStopListening.TabIndex" type="System.Int32, mscorlib">
<value>7</value>
</data>
<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 name="radButton_StartStopListening.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;radButton_StartStopListening.Name" xml:space="preserve">
<value>radButton_StartStopListening</value>
<data name="radButton_SaveProfile.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;radButton_StartStopListening.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadButton, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
<data name="radButton_SaveProfile.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleRight</value>
</data>
<data name="&gt;&gt;radButton_StartStopListening.Parent" xml:space="preserve">
<value>panel1</value>
<data name="radButton_SaveProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>382, 33</value>
</data>
<data name="&gt;&gt;radButton_StartStopListening.ZOrder" xml:space="preserve">
<value>4</value>
<data name="radButton_SaveProfile.Size" type="System.Drawing.Size, System.Drawing">
<value>164, 24</value>
</data>
<data name="radLabel3.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 66</value>
<data name="radButton_SaveProfile.TabIndex" type="System.Int32, mscorlib">
<value>8</value>
</data>
<data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 18</value>
<data name="radButton_SaveProfile.Text" xml:space="preserve">
<value>Save profile</value>
</data>
<data name="radLabel3.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
<data name="radButton_SaveProfile.TextAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleLeft</value>
</data>
<data name="radLabel3.Text" xml:space="preserve">
<value>Load Savestate:</value>
<data name="radButton_SaveProfile.TextImageRelation" type="System.Windows.Forms.TextImageRelation, System.Windows.Forms">
<value>ImageBeforeText</value>
</data>
<data name="&gt;&gt;radLabel3.Name" xml:space="preserve">
<value>radLabel3</value>
<data name="radButton_LoadProfile.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="&gt;&gt;radLabel3.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
<data name="radButton_LoadProfile.ImageAlignment" type="System.Drawing.ContentAlignment, System.Drawing">
<value>MiddleRight</value>
</data>
<data name="&gt;&gt;radLabel3.Parent" xml:space="preserve">
<value>panel1</value>
<data name="radButton_LoadProfile.Location" type="System.Drawing.Point, System.Drawing">
<value>382, 63</value>
</data>
<data name="&gt;&gt;radLabel3.ZOrder" xml:space="preserve">
<value>5</value>
<data name="radButton_LoadProfile.Size" type="System.Drawing.Size, System.Drawing">
<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 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 name="radLabel2.Size" type="System.Drawing.Size, System.Drawing">
<value>91, 18</value>
<value>91, 24</value>
</data>
<data name="radLabel2.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="radLabel2.Text" xml:space="preserve">
<value>Create Savestate:</value>
<value>Create savestate</value>
</data>
<data name="&gt;&gt;radLabel2.Name" xml:space="preserve">
<value>radLabel2</value>
<data name="radLabel3.Location" type="System.Drawing.Point, System.Drawing">
<value>3, 63</value>
</data>
<data name="&gt;&gt;radLabel2.Type" xml:space="preserve">
<value>Telerik.WinControls.UI.RadLabel, Telerik.WinControls.UI, Culture=neutral, PublicKeyToken=5bb2a467cbec794e</value>
<data name="radLabel3.MinimumSize" type="System.Drawing.Size, System.Drawing">
<value>0, 24</value>
</data>
<data name="&gt;&gt;radLabel2.Parent" xml:space="preserve">
<value>panel1</value>
<data name="radLabel3.Size" type="System.Drawing.Size, System.Drawing">
<value>83, 24</value>
</data>
<data name="&gt;&gt;radLabel2.ZOrder" xml:space="preserve">
<data name="radLabel3.TabIndex" type="System.Int32, mscorlib">
<value>6</value>
</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>
</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>
</data>
<data name="panel1.Size" type="System.Drawing.Size, System.Drawing">
<value>549, 91</value>
</data>
<data name="panel1.TabIndex" type="System.Int32, mscorlib">
<data name="tableLayoutPanel1.RowCount" type="System.Int32, mscorlib">
<value>3</value>
</data>
<data name="&gt;&gt;panel1.Name" xml:space="preserve">
<value>panel1</value>
<data name="tableLayoutPanel1.Size" type="System.Drawing.Size, System.Drawing">
<value>549, 90</value>
</data>
<data name="&gt;&gt;panel1.Type" xml:space="preserve">
<value>System.Windows.Forms.Panel, System.Windows.Forms, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
<data name="tableLayoutPanel1.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
</data>
<data name="&gt;&gt;panel1.Parent" xml:space="preserve">
<value>$this</value>
<data name="tableLayoutPanel1.LayoutSettings" type="System.Windows.Forms.TableLayoutSettings, System.Windows.Forms">
<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 name="&gt;&gt;panel1.ZOrder" xml:space="preserve">
<value>0</value>
<data name="radDropDownList_Pads.Location" type="System.Drawing.Point, System.Drawing">
<value>100, 3</value>
</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>
</metadata>
</data>
<data name="$this.AutoScaleBaseSize" type="System.Drawing.Size, System.Drawing">
<value>7, 15</value>
</data>
@@ -346,7 +319,7 @@
<value>7, 15</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>549, 91</value>
<value>549, 90</value>
</data>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
@@ -2120,10 +2093,4 @@
<data name="$this.Text" xml:space="preserve">
<value>Project64 Savestater</value>
</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>

View File

@@ -1,36 +1,35 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<PublishSingleFile>true</PublishSingleFile>
<IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
<TargetFramework>net8.0-windows</TargetFramework>
<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.2.1.0</Version>
<Company></Company>
<Authors>Pilzinsel64</Authors>
<PackageProjectUrl>https://pilzinsel64.de</PackageProjectUrl>
<RepositoryUrl>https://gitlab.com/Pilzinsel64/project64-savestater</RepositoryUrl>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<DebugType>embedded</DebugType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<DebugType>embedded</DebugType>
<RepositoryUrl>https://git.pilzinsel64.com/Pilzinsel64/project64-savestater</RepositoryUrl>
</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.Common" Version="2022.3.1109" />
<PackageReference Include="UI.for.WinForms.Themes" Version="2022.3.1109" />
<EmbeddedResource Include="Symbols\*.svg" />
</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>
<Compile Update="ActionCodes.Designer.cs">
<DesignTime>True</DesignTime>
@@ -43,6 +42,7 @@
<DependentUpon>LangRes.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="ActionCodes.resx">
<Generator>ResXFileCodeGenerator</Generator>
@@ -53,7 +53,9 @@
<LastGenOutput>LangRes.Designer.cs</LastGenOutput>
</EmbeddedResource>
</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.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!" />
<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>

View File

@@ -1,11 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Pilz;
using Pilz.UI.Telerik.Theming;
using Telerik.WinControls.Themes;
[assembly: AssemblyAppVersion("1.3.0.0")]
namespace PJ64Savestater;
namespace PJ64Savestater
{
static class Program
{
/// <summary>
@@ -16,9 +16,7 @@ namespace PJ64Savestater
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
VisualThemeHelper.SetVisualTheme();
//Application.SetDefaultFont(new Font(Control.DefaultFont.FontFamily, 8.25f)); // Kein Effekt?
ThemeHelper.ApplyApplicationTheme(ApplicationTheme.Auto, () => new Windows11CompactTheme(), () => new Windows11CompactDarkTheme());
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,25 +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
{
public static void SetVisualTheme()
{
RadThemeComponentBase? setTheme = null;
if (!WindowsSettings.AppsUseLightTheme)
setTheme = new Telerik.WinControls.Themes.FluentDarkTheme();
setTheme ??= new Telerik.WinControls.Themes.FluentTheme();
// Set theme
ThemeResolutionService.ApplicationThemeName = setTheme.ThemeName;
}
}
}