mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-04-24 23:57:12 -05:00
Rewrite settings handling; enhance some user experiences (#3193)
- Settings now stored as json next to exe - Settings now exposes all legality checking setttings that can be changed - Slot hovering now can play cries in MGDB/PKMDB/etc, not just the main boxes. - Enhanced hover text for mystery gifts and encounters that have movesets - Show recently loaded save files in ctrl-f browser - Toggle auto-load savefile setting to be none/detect-latest/last-loaded - Custom extensions & extra backup paths can now be configured directly in the json settings - Settings editor now uses propertygrid & tabs.
This commit is contained in:
parent
aaa69eac15
commit
0d45075d4b
|
|
@ -23,7 +23,7 @@ public SavePreview(SaveFile sav, List<INamedFolderPath> paths)
|
|||
var meta = sav.Metadata;
|
||||
var dir = meta.FileFolder;
|
||||
const string notFound = "???";
|
||||
var parent = dir == null ? notFound : paths.Find(z => dir.StartsWith(z.Path))?.DisplayText ?? notFound;
|
||||
var parent = dir == null ? notFound : paths.Find(z => dir.StartsWith(z.Path))?.DisplayText ?? new DirectoryInfo(dir).Name;
|
||||
|
||||
Save = sav;
|
||||
Folder = parent;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ namespace PKHeX.Core
|
|||
/// <summary>
|
||||
/// Interface that exposes a Moveset for the object.
|
||||
/// </summary>
|
||||
internal interface IMoveset
|
||||
public interface IMoveset
|
||||
{
|
||||
IReadOnlyList<int> Moves { get; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ public static class ParseSettings
|
|||
/// <summary>
|
||||
/// Setting to specify if an analysis should permit data sourced from the physical cartridge era of GameBoy games.
|
||||
/// </summary>
|
||||
/// <remarks>If false, indicates to use Virtual Console rules (which are transferable to Gen7+)</remarks>
|
||||
public static bool AllowGBCartEra { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -22,13 +23,13 @@ public static class ParseSettings
|
|||
/// </summary>
|
||||
public static bool AllowGen1Tradeback { get; set; } = true;
|
||||
|
||||
public static Severity NicknamedTrade { get; set; } = Severity.Invalid;
|
||||
public static Severity NicknamedMysteryGift { get; set; } = Severity.Fishy;
|
||||
public static Severity RNGFrameNotFound { get; set; } = Severity.Fishy;
|
||||
public static Severity Gen7TransferStarPID { get; set; } = Severity.Fishy;
|
||||
public static Severity Gen8MemoryLocationTextVariable { get; set; } = Severity.Fishy;
|
||||
public static Severity Gen8TransferTrackerNotPresent { get; set; } = Severity.Fishy;
|
||||
public static Severity NicknamedAnotherSpecies { get; set; } = Severity.Fishy;
|
||||
public static Severity NicknamedTrade { get; private set; } = Severity.Invalid;
|
||||
public static Severity NicknamedMysteryGift { get; private set; } = Severity.Fishy;
|
||||
public static Severity RNGFrameNotFound { get; private set; } = Severity.Fishy;
|
||||
public static Severity Gen7TransferStarPID { get; private set; } = Severity.Fishy;
|
||||
public static Severity Gen8MemoryLocationTextVariable { get; private set; } = Severity.Fishy;
|
||||
public static Severity Gen8TransferTrackerNotPresent { get; private set; } = Severity.Fishy;
|
||||
public static Severity NicknamedAnotherSpecies { get; private set; } = Severity.Fishy;
|
||||
|
||||
public static IReadOnlyList<string> MoveStrings = Util.GetMovesList(GameLanguage.DefaultLanguage);
|
||||
public static IReadOnlyList<string> SpeciesStrings = Util.GetSpeciesList(GameLanguage.DefaultLanguage);
|
||||
|
|
@ -79,5 +80,32 @@ public static bool InitFromSaveFileData(SaveFile sav)
|
|||
bool vc = !sav.State.Exportable || (sav.Metadata.FileName?.EndsWith("dat") ?? false); // default to true for non-exportable
|
||||
return AllowGBCartEra = !vc; // physical cart selected
|
||||
}
|
||||
|
||||
public static void InitFromSettings(IParseSettings settings)
|
||||
{
|
||||
CheckWordFilter = settings.CheckWordFilter;
|
||||
AllowGen1Tradeback = settings.AllowGen1Tradeback;
|
||||
NicknamedTrade = settings.NicknamedTrade;
|
||||
NicknamedMysteryGift = settings.NicknamedMysteryGift;
|
||||
RNGFrameNotFound = settings.RNGFrameNotFound;
|
||||
Gen7TransferStarPID = settings.Gen7TransferStarPID;
|
||||
Gen8MemoryLocationTextVariable = settings.Gen8MemoryLocationTextVariable;
|
||||
Gen8TransferTrackerNotPresent = settings.Gen8TransferTrackerNotPresent;
|
||||
NicknamedAnotherSpecies = settings.NicknamedAnotherSpecies;
|
||||
}
|
||||
}
|
||||
|
||||
public interface IParseSettings
|
||||
{
|
||||
bool CheckWordFilter { get; }
|
||||
bool AllowGen1Tradeback { get; }
|
||||
|
||||
Severity NicknamedTrade { get; }
|
||||
Severity NicknamedMysteryGift { get; }
|
||||
Severity RNGFrameNotFound { get; }
|
||||
Severity Gen7TransferStarPID { get; }
|
||||
Severity Gen8MemoryLocationTextVariable { get; }
|
||||
Severity Gen8TransferTrackerNotPresent { get; }
|
||||
Severity NicknamedAnotherSpecies { get; }
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ private static void AddLinesPKM(MysteryGift gift, IBasicStrings strings, ICollec
|
|||
var id = gift.Generation < 7 ? $"{gift.TID:D5}/{gift.SID:D5}" : $"[{gift.TrainerSID7:D4}]{gift.TrainerID7:D6}";
|
||||
|
||||
var first =
|
||||
$"{strings.Species[gift.Species]} @ {strings.Item[gift.HeldItem]} --- "
|
||||
$"{strings.Species[gift.Species]} @ {strings.Item[gift.HeldItem >= 0 ? gift.HeldItem : 0]} --- "
|
||||
+ (gift.IsEgg ? strings.EggName : $"{gift.OT_Name} - {id}");
|
||||
result.Add(first);
|
||||
result.Add(string.Join(" / ", gift.Moves.Select(z => strings.Move[z])));
|
||||
|
|
|
|||
|
|
@ -13,12 +13,12 @@ public sealed class SCBlockCompare
|
|||
private readonly Dictionary<uint, string> KeyNames;
|
||||
private string GetKeyName(uint key) => KeyNames.TryGetValue(key, out var val) ? val : $"{key:X8}";
|
||||
|
||||
public SCBlockCompare(SCBlockAccessor s1, SCBlockAccessor s2)
|
||||
public SCBlockCompare(SCBlockAccessor s1, SCBlockAccessor s2, IEnumerable<string> extraKeyNames)
|
||||
{
|
||||
var b1 = s1.BlockInfo;
|
||||
var b2 = s2.BlockInfo;
|
||||
KeyNames = GetKeyNames(s1, b1, b2);
|
||||
SCBlockMetadata.AddExtraKeyNames(KeyNames);
|
||||
SCBlockMetadata.AddExtraKeyNames(KeyNames, extraKeyNames);
|
||||
|
||||
var hs1 = new HashSet<uint>(b1.Select(z => z.Key));
|
||||
var hs2 = new HashSet<uint>(b2.Select(z => z.Key));
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
namespace PKHeX.Core
|
||||
|
|
@ -19,13 +18,13 @@ public sealed class SCBlockMetadata
|
|||
/// <summary>
|
||||
/// Creates a new instance of <see cref="SCBlockMetadata"/> by loading properties and constants declared via reflection.
|
||||
/// </summary>
|
||||
public SCBlockMetadata(SCBlockAccessor accessor)
|
||||
public SCBlockMetadata(SCBlockAccessor accessor, IEnumerable<string> extraKeyNames)
|
||||
{
|
||||
var aType = accessor.GetType();
|
||||
|
||||
BlockList = aType.GetAllPropertiesOfType<SaveBlock>(accessor);
|
||||
ValueList = aType.GetAllConstantsOfType<uint>();
|
||||
AddExtraKeyNames(ValueList);
|
||||
AddExtraKeyNames(ValueList, extraKeyNames);
|
||||
Accessor = accessor;
|
||||
}
|
||||
|
||||
|
|
@ -41,21 +40,6 @@ public IEnumerable<ComboItem> GetSortedBlockKeyList()
|
|||
return list;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads names from an external file to the requested <see cref="names"/> list.
|
||||
/// </summary>
|
||||
/// <remarks>Tab separated text file expected.</remarks>
|
||||
/// <param name="names">Currently loaded list of block names</param>
|
||||
/// <param name="extra">Side-loaded list of block names to add to the <see cref="names"/> list.</param>
|
||||
public static void AddExtraKeyNames(IDictionary<uint, string> names, string extra = "SCBlocks.txt")
|
||||
{
|
||||
if (!File.Exists(extra))
|
||||
return;
|
||||
|
||||
var lines = File.ReadLines(extra);
|
||||
AddExtraKeyNames(names, lines);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Loads names from an external file to the requested <see cref="names"/> list.
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
namespace PKHeX.Core
|
||||
{
|
||||
[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Module | AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Constructor | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Interface | AttributeTargets.Parameter | AttributeTargets.Delegate | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter)]
|
||||
public sealed class LocalizedDescriptionAttribute : DescriptionAttribute
|
||||
{
|
||||
public static IReadOnlyDictionary<string, string> Localizer { private get; set; } = new Dictionary<string, string>();
|
||||
|
||||
public readonly string Fallback;
|
||||
public readonly string Key;
|
||||
|
||||
public LocalizedDescriptionAttribute(string fallback, [CallerMemberName] string? key = null)
|
||||
{
|
||||
Key = $"LocalizedDescription.{key!}";
|
||||
Fallback = fallback;
|
||||
}
|
||||
|
||||
public override string Description => Localizer.TryGetValue(Key, out var result) ? result : Fallback;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,16 +1,15 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using PKHeX.Core;
|
||||
using Exception = System.Exception;
|
||||
|
||||
namespace PKHeX.WinForms
|
||||
{
|
||||
/// <summary>
|
||||
/// Drawing Configuration for painting and updating controls
|
||||
/// </summary>
|
||||
[Serializable]
|
||||
public sealed class DrawConfig : IDisposable
|
||||
{
|
||||
private const string PKM = "Pokémon Editor";
|
||||
|
|
@ -92,6 +91,7 @@ public bool GetMarkingColor(int markval, out Color c)
|
|||
public Color GetText(bool highlight) => highlight ? TextHighlighted : TextColor;
|
||||
public Color GetBackground(bool legal, bool highlight) => highlight ? BackHighlighted : (legal ? BackLegal : BackColor);
|
||||
|
||||
[NonSerialized]
|
||||
public readonly BrushSet Brushes = new();
|
||||
|
||||
public void LoadBrushes()
|
||||
|
|
@ -120,50 +120,6 @@ public override string ToString()
|
|||
}
|
||||
return string.Join("\n", lines);
|
||||
}
|
||||
|
||||
public static DrawConfig GetConfig(string data)
|
||||
{
|
||||
var config = new DrawConfig();
|
||||
if (string.IsNullOrWhiteSpace(data))
|
||||
return config;
|
||||
|
||||
var lines = data.Split('\n');
|
||||
foreach (var l in lines)
|
||||
config.ApplyLine(l);
|
||||
|
||||
return config;
|
||||
}
|
||||
|
||||
private void ApplyLine(string l)
|
||||
{
|
||||
var t = typeof(DrawConfig);
|
||||
var split = l.Split('\t');
|
||||
var name = split[0];
|
||||
var value = split[1];
|
||||
|
||||
try
|
||||
{
|
||||
var pi = t.GetProperty(name);
|
||||
if (pi == null)
|
||||
throw new ArgumentNullException(name);
|
||||
if (pi.PropertyType == typeof(Color))
|
||||
{
|
||||
var color = Color.FromArgb(int.Parse(value));
|
||||
pi.SetValue(this, color);
|
||||
}
|
||||
else
|
||||
{
|
||||
pi.SetValue(this, value);
|
||||
}
|
||||
}
|
||||
#pragma warning disable CA1031 // Do not catch general exception types
|
||||
catch (Exception e)
|
||||
#pragma warning restore CA1031 // Do not catch general exception types
|
||||
{
|
||||
Debug.WriteLine($"Failed to write {name} to {value}!");
|
||||
Debug.WriteLine(e.Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class BrushSet : IDisposable
|
||||
|
|
|
|||
|
|
@ -10,12 +10,12 @@ public sealed class CryPlayer
|
|||
{
|
||||
private readonly SoundPlayer Sounds = new();
|
||||
|
||||
public void PlayCry(PKM pk)
|
||||
public void PlayCry(ISpeciesForm pk, int format)
|
||||
{
|
||||
if (pk.Species == 0)
|
||||
return;
|
||||
|
||||
string path = GetCryPath(pk, Main.CryPath);
|
||||
string path = GetCryPath(pk, Main.CryPath, format);
|
||||
if (!File.Exists(path))
|
||||
return;
|
||||
|
||||
|
|
@ -28,22 +28,22 @@ public void PlayCry(PKM pk)
|
|||
|
||||
public void Stop() => Sounds.Stop();
|
||||
|
||||
private static string GetCryPath(PKM pk, string cryFolder)
|
||||
private static string GetCryPath(ISpeciesForm pk, string cryFolder, int format)
|
||||
{
|
||||
var name = GetCryFileName(pk);
|
||||
var name = GetCryFileName(pk, format);
|
||||
var path = Path.Combine(cryFolder, $"{name}.wav");
|
||||
if (!File.Exists(path))
|
||||
path = Path.Combine(cryFolder, $"{pk.Species}.wav");
|
||||
return path;
|
||||
}
|
||||
|
||||
private static string GetCryFileName(PKM pk)
|
||||
private static string GetCryFileName(ISpeciesForm pk, int format)
|
||||
{
|
||||
if (pk.Species == (int)Species.Urshifu && pk.Form == 1) // same sprite for both forms, but different cries
|
||||
return "892-1";
|
||||
|
||||
// don't grab sprite of pkm, no gender specific cries
|
||||
var res = SpriteName.GetResourceStringSprite(pk.Species, pk.Form, 0, 0, pk.Format);
|
||||
var res = SpriteName.GetResourceStringSprite(pk.Species, pk.Form, 0, 0, format);
|
||||
return res.Replace('_', '-') // people like - instead of _ file names ;)
|
||||
.Substring(1); // skip leading underscore
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
using System.Windows.Forms;
|
||||
using PKHeX.Core;
|
||||
using PKHeX.Drawing;
|
||||
using PKHeX.WinForms.Properties;
|
||||
|
||||
namespace PKHeX.WinForms.Controls
|
||||
{
|
||||
|
|
@ -56,10 +55,7 @@ public void Start(PictureBox pb, SlotTrackerImage lastSlot)
|
|||
bg = ImageUtil.LayerImage(orig, bg, 0, 0);
|
||||
pb.BackgroundImage = LastSlot.CurrentBackground = bg;
|
||||
|
||||
if (Settings.Default.HoverSlotShowText)
|
||||
Preview.Show(pb, pk);
|
||||
if (Settings.Default.HoverSlotPlayCry)
|
||||
CryPlayer.PlayCry(pk);
|
||||
Preview.Show(pb, pk);
|
||||
}
|
||||
|
||||
public void Stop()
|
||||
|
|
@ -74,7 +70,6 @@ public void Stop()
|
|||
LastSlot = null;
|
||||
}
|
||||
Preview.Clear();
|
||||
CryPlayer.Stop();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using PKHeX.Core;
|
||||
using PKHeX.WinForms.Properties;
|
||||
|
||||
using static PKHeX.Core.LegalityCheckStrings;
|
||||
|
||||
|
|
@ -11,6 +11,7 @@ namespace PKHeX.WinForms.Controls
|
|||
public sealed class SummaryPreviewer
|
||||
{
|
||||
private readonly ToolTip ShowSet = new() { InitialDelay = 200, IsBalloon = false, AutoPopDelay = 32_767 };
|
||||
private readonly CryPlayer Cry = new();
|
||||
|
||||
public void Show(Control pb, PKM pk)
|
||||
{
|
||||
|
|
@ -19,11 +20,18 @@ public void Show(Control pb, PKM pk)
|
|||
Clear();
|
||||
return;
|
||||
}
|
||||
var text = ShowdownParsing.GetLocalizedPreviewText(pk, Settings.Default.Language);
|
||||
var la = new LegalityAnalysis(pk);
|
||||
var result = new List<string>{ text, string.Empty };
|
||||
LegalityFormatting.AddEncounterInfo(la, result);
|
||||
ShowSet.SetToolTip(pb, string.Join(Environment.NewLine, result));
|
||||
|
||||
if (Main.Settings.Hover.HoverSlotShowText)
|
||||
{
|
||||
var text = ShowdownParsing.GetLocalizedPreviewText(pk, Main.Settings.Startup.Language);
|
||||
var la = new LegalityAnalysis(pk);
|
||||
var result = new List<string> { text, string.Empty };
|
||||
LegalityFormatting.AddEncounterInfo(la, result);
|
||||
ShowSet.SetToolTip(pb, string.Join(Environment.NewLine, result));
|
||||
}
|
||||
|
||||
if (Main.Settings.Hover.HoverSlotPlayCry)
|
||||
Cry.PlayCry(pk, pk.Format);
|
||||
}
|
||||
|
||||
public void Show(Control pb, IEncounterInfo enc)
|
||||
|
|
@ -34,16 +42,37 @@ public void Show(Control pb, IEncounterInfo enc)
|
|||
return;
|
||||
}
|
||||
|
||||
if (Main.Settings.Hover.HoverSlotShowText)
|
||||
{
|
||||
var lines = GetTextLines(enc);
|
||||
var text = string.Join(Environment.NewLine, lines);
|
||||
ShowSet.SetToolTip(pb, text);
|
||||
}
|
||||
|
||||
if (Main.Settings.Hover.HoverSlotPlayCry)
|
||||
Cry.PlayCry(enc, enc.Generation);
|
||||
}
|
||||
|
||||
private static IEnumerable<string> GetTextLines(IEncounterInfo enc)
|
||||
{
|
||||
var lines = new List<string>();
|
||||
var str = GameInfo.Strings.Species;
|
||||
var name = (uint)enc.Species < str.Count ? str[enc.Species] : enc.Species.ToString();
|
||||
var name = (uint) enc.Species < str.Count ? str[enc.Species] : enc.Species.ToString();
|
||||
var EncounterName = $"{(enc is IEncounterable ie ? ie.LongName : "Special")} ({name})";
|
||||
lines.Add(string.Format(L_FEncounterType_0, EncounterName));
|
||||
if (enc is MysteryGift mg)
|
||||
lines.Add(mg.CardHeader);
|
||||
{
|
||||
lines.AddRange(mg.GetDescription());
|
||||
}
|
||||
else if (enc is IMoveset m)
|
||||
{
|
||||
var nonzero = m.Moves.Where(z => z != 0).ToList();
|
||||
if (nonzero.Count != 0)
|
||||
lines.Add(string.Join(" / ", nonzero.Select(z => GameInfo.Strings.Move[z])));
|
||||
}
|
||||
|
||||
var el = enc as ILocation;
|
||||
var loc = el?.GetEncounterLocation(enc.Generation, (int)enc.Version);
|
||||
var loc = el?.GetEncounterLocation(enc.Generation, (int) enc.Version);
|
||||
if (!string.IsNullOrEmpty(loc))
|
||||
lines.Add(string.Format(L_F0_1, "Location", loc));
|
||||
lines.Add(string.Format(L_F0_1, nameof(GameVersion), enc.Version));
|
||||
|
|
@ -61,11 +90,13 @@ public void Show(Control pb, IEncounterInfo enc)
|
|||
lines.AddRange(raw.Split(',', '}', '{'));
|
||||
}
|
||||
#endif
|
||||
|
||||
var text = string.Join(Environment.NewLine, lines);
|
||||
ShowSet.SetToolTip(pb, text);
|
||||
return lines;
|
||||
}
|
||||
|
||||
public void Clear() => ShowSet.RemoveAll();
|
||||
public void Clear()
|
||||
{
|
||||
ShowSet.RemoveAll();
|
||||
Cry.Stop();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
using System.Globalization;
|
||||
|
|
@ -15,7 +14,6 @@
|
|||
using PKHeX.Core;
|
||||
using PKHeX.Drawing;
|
||||
using PKHeX.WinForms.Controls;
|
||||
using PKHeX.WinForms.Properties;
|
||||
using static PKHeX.Core.MessageStrings;
|
||||
|
||||
namespace PKHeX.WinForms
|
||||
|
|
@ -94,13 +92,15 @@ private set
|
|||
public static readonly string WorkingDirectory = Application.StartupPath;
|
||||
public static readonly string DatabasePath = Path.Combine(WorkingDirectory, "pkmdb");
|
||||
public static readonly string MGDatabasePath = Path.Combine(WorkingDirectory, "mgdb");
|
||||
public static readonly string ConfigPath = Path.Combine(WorkingDirectory, "cfg.json");
|
||||
public static readonly string BackupPath = Path.Combine(WorkingDirectory, "bak");
|
||||
public static readonly string CryPath = Path.Combine(WorkingDirectory, "sounds");
|
||||
public static readonly string SAVPaths = Path.Combine(WorkingDirectory, "savpaths.txt");
|
||||
private static readonly string TemplatePath = Path.Combine(WorkingDirectory, "template");
|
||||
private static readonly string PluginPath = Path.Combine(WorkingDirectory, "plugins");
|
||||
private const string ThreadPath = "https://projectpokemon.org/pkhex/";
|
||||
|
||||
public static readonly PKHeXSettings Settings = PKHeXSettings.GetSettings(ConfigPath);
|
||||
|
||||
#endregion
|
||||
|
||||
#region //// MAIN MENU FUNCTIONS ////
|
||||
|
|
@ -112,32 +112,16 @@ private static void FormLoadInitialSettings(string[] args, out bool showChangelo
|
|||
HaX = args.Any(x => string.Equals(x.Trim('-'), nameof(HaX), StringComparison.CurrentCultureIgnoreCase))
|
||||
|| Path.GetFileNameWithoutExtension(Process.GetCurrentProcess().MainModule!.FileName!).EndsWith(nameof(HaX));
|
||||
|
||||
try
|
||||
{
|
||||
ConfigUtil.CheckConfig();
|
||||
FormLoadConfig(out BAKprompt, out showChangelog);
|
||||
HaX |= Settings.Default.ForceHaXOnLaunch;
|
||||
}
|
||||
catch (ConfigurationErrorsException e)
|
||||
{
|
||||
// Delete the settings if they exist
|
||||
var settingsFilename = (e.InnerException as ConfigurationErrorsException)?.Filename;
|
||||
if (settingsFilename != null && !string.IsNullOrEmpty(settingsFilename) && File.Exists(settingsFilename))
|
||||
DeleteConfig(settingsFilename);
|
||||
else
|
||||
WinFormsUtil.Error(MsgSettingsLoadFail, e);
|
||||
}
|
||||
FormLoadConfig(out BAKprompt, out showChangelog);
|
||||
HaX |= Settings.Startup.ForceHaXOnLaunch;
|
||||
|
||||
var exts = Path.Combine(WorkingDirectory, "savexts.txt");
|
||||
if (File.Exists(exts))
|
||||
WinFormsUtil.AddSaveFileExtensions(File.ReadLines(exts));
|
||||
WinFormsUtil.AddSaveFileExtensions(Settings.Backup.OtherSaveFileExtensions);
|
||||
}
|
||||
|
||||
private static void FormLoadCustomBackupPaths()
|
||||
{
|
||||
SaveFinder.CustomBackupPaths.Clear();
|
||||
if (File.Exists(SAVPaths)) // custom user paths
|
||||
SaveFinder.CustomBackupPaths.AddRange(File.ReadAllLines(SAVPaths).Where(Directory.Exists));
|
||||
SaveFinder.CustomBackupPaths.AddRange(Settings.Backup.OtherBackupPaths.Where(Directory.Exists));
|
||||
}
|
||||
|
||||
private void FormLoadAddEvents()
|
||||
|
|
@ -184,12 +168,25 @@ private void FormLoadInitialFiles(string[] args)
|
|||
try
|
||||
#endif
|
||||
{
|
||||
var startup = Settings.Startup;
|
||||
string path = string.Empty;
|
||||
SaveFile? sav = null;
|
||||
if (Settings.Default.DetectSaveOnStartup && !SaveFinder.DetectSaveFile(out path, out sav))
|
||||
if (startup.AutoLoadSaveOnStartup == AutoLoadSetting.RecentBackup)
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(path))
|
||||
WinFormsUtil.Error(path); // `path` contains the error message
|
||||
if (!SaveFinder.DetectSaveFile(out path, out sav))
|
||||
{
|
||||
if (!string.IsNullOrWhiteSpace(path))
|
||||
WinFormsUtil.Error(path); // `path` contains the error message
|
||||
}
|
||||
}
|
||||
else if (startup.AutoLoadSaveOnStartup == AutoLoadSetting.LastLoaded)
|
||||
{
|
||||
if (startup.RecentlyLoaded.Count != 0)
|
||||
{
|
||||
path = startup.RecentlyLoaded[0];
|
||||
if (File.Exists(path))
|
||||
sav = SaveUtil.GetVariantSAV(path);
|
||||
}
|
||||
}
|
||||
|
||||
bool savLoaded = false;
|
||||
|
|
@ -198,7 +195,7 @@ private void FormLoadInitialFiles(string[] args)
|
|||
savLoaded = OpenSAV(sav, path);
|
||||
}
|
||||
if (!savLoaded)
|
||||
LoadBlankSaveFile(Settings.Default.DefaultSaveVersion);
|
||||
LoadBlankSaveFile(startup.DefaultSaveVersion);
|
||||
}
|
||||
#if !DEBUG
|
||||
catch (Exception ex)
|
||||
|
|
@ -261,43 +258,37 @@ private static void FormLoadConfig(out bool BAKprompt, out bool showChangelog)
|
|||
BAKprompt = false;
|
||||
showChangelog = false;
|
||||
|
||||
var Settings = Properties.Settings.Default;
|
||||
|
||||
// Version Check
|
||||
if (Settings.Version.Length > 0) // already run on system
|
||||
if (Settings.Startup.Version.Length > 0) // already run on system
|
||||
{
|
||||
bool parsed = Version.TryParse(Settings.Version, out var lastrev);
|
||||
bool parsed = Version.TryParse(Settings.Startup.Version, out var lastrev);
|
||||
showChangelog = parsed && lastrev < CurrentProgramVersion;
|
||||
if (showChangelog) // user just updated from a prior version
|
||||
{
|
||||
Settings.Upgrade(); // copy previous version's settings, if available.
|
||||
}
|
||||
}
|
||||
Settings.Version = CurrentProgramVersion.ToString(); // set current ver so this doesn't happen until the user updates next time
|
||||
Settings.Startup.Version = CurrentProgramVersion.ToString(); // set current ver so this doesn't happen until the user updates next time
|
||||
|
||||
// BAK Prompt
|
||||
if (!Settings.BAKPrompt)
|
||||
BAKprompt = Settings.BAKPrompt = true;
|
||||
if (!Settings.Backup.BAKPrompt)
|
||||
BAKprompt = Settings.Backup.BAKPrompt = true;
|
||||
}
|
||||
|
||||
public static DrawConfig Draw { get; private set; } = new();
|
||||
|
||||
private void FormInitializeSecond()
|
||||
{
|
||||
var settings = Settings.Default;
|
||||
Draw = C_SAV.M.Hover.Draw = PKME_Tabs.Draw = DrawConfig.GetConfig(settings.Draw);
|
||||
var settings = Settings;
|
||||
Draw = C_SAV.M.Hover.Draw = PKME_Tabs.Draw = settings.Draw;
|
||||
ReloadProgramSettings(settings);
|
||||
CB_MainLanguage.Items.AddRange(main_langlist);
|
||||
PB_Legal.Visible = !HaX;
|
||||
PKMConverter.AllowIncompatibleConversion = C_SAV.HaX = PKME_Tabs.HaX = HaX;
|
||||
WinFormsUtil.DetectSaveFileOnFileOpen = settings.DetectSaveOnStartup;
|
||||
WinFormsUtil.DetectSaveFileOnFileOpen = settings.Startup.TryDetectRecentSave;
|
||||
|
||||
#if DEBUG
|
||||
DevUtil.AddControl(Menu_Tools);
|
||||
#endif
|
||||
|
||||
// Select Language
|
||||
CB_MainLanguage.SelectedIndex = GameLanguage.GetLanguageIndex(settings.Language);
|
||||
CB_MainLanguage.SelectedIndex = GameLanguage.GetLanguageIndex(settings.Startup.Language);
|
||||
}
|
||||
|
||||
private void FormLoadPlugins()
|
||||
|
|
@ -311,17 +302,6 @@ private void FormLoadPlugins()
|
|||
p.Initialize(C_SAV, PKME_Tabs, menuStrip1, CurrentProgramVersion);
|
||||
}
|
||||
|
||||
private static void DeleteConfig(string settingsFilename)
|
||||
{
|
||||
var dr = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MsgSettingsResetCorrupt, MsgSettingsResetPrompt);
|
||||
if (dr == DialogResult.Yes)
|
||||
{
|
||||
File.Delete(settingsFilename);
|
||||
WinFormsUtil.Alert(MsgSettingsResetSuccess, MsgProgramRestart);
|
||||
}
|
||||
Process.GetCurrentProcess().Kill();
|
||||
}
|
||||
|
||||
// Main Menu Strip UI Functions
|
||||
private void MainMenuOpen(object sender, EventArgs e)
|
||||
{
|
||||
|
|
@ -400,19 +380,19 @@ private void MainMenuMysteryDB(object sender, EventArgs e)
|
|||
|
||||
private void MainMenuSettings(object sender, EventArgs e)
|
||||
{
|
||||
var settings = Settings.Default;
|
||||
var ver = settings.DefaultSaveVersion; // check if it changes
|
||||
using var form = new SettingsEditor(settings, nameof(settings.BAKPrompt), nameof(settings.ForceHaXOnLaunch));
|
||||
var settings = Settings;
|
||||
var ver = Settings.Startup.DefaultSaveVersion; // check if it changes
|
||||
using var form = new SettingsEditor(settings);
|
||||
form.ShowDialog();
|
||||
|
||||
// Reload text (if OT details hidden)
|
||||
Text = GetProgramTitle(C_SAV.SAV);
|
||||
// Update final settings
|
||||
ReloadProgramSettings(Settings.Default);
|
||||
ReloadProgramSettings(Settings);
|
||||
|
||||
if (ver != settings.DefaultSaveVersion) // changed by user
|
||||
if (ver != Settings.Startup.DefaultSaveVersion) // changed by user
|
||||
{
|
||||
LoadBlankSaveFile(settings.DefaultSaveVersion);
|
||||
LoadBlankSaveFile(Settings.Startup.DefaultSaveVersion);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -421,23 +401,22 @@ private void MainMenuSettings(object sender, EventArgs e)
|
|||
C_SAV.ReloadSlots();
|
||||
}
|
||||
|
||||
private void ReloadProgramSettings(Settings settings)
|
||||
private void ReloadProgramSettings(PKHeXSettings settings)
|
||||
{
|
||||
Draw.LoadBrushes();
|
||||
PKME_Tabs.Unicode = Unicode = settings.Unicode;
|
||||
PKME_Tabs.Unicode = Unicode = settings.Display.Unicode;
|
||||
PKME_Tabs.UpdateUnicode(GenderSymbols);
|
||||
SpriteName.AllowShinySprite = settings.ShinySprites;
|
||||
SaveFile.SetUpdateDex = settings.SetUpdateDex ? PKMImportSetting.Update : PKMImportSetting.Skip;
|
||||
SaveFile.SetUpdatePKM = settings.SetUpdatePKM ? PKMImportSetting.Update : PKMImportSetting.Skip;
|
||||
C_SAV.ModifyPKM = PKME_Tabs.ModifyPKM = settings.SetUpdatePKM;
|
||||
CommonEdits.ShowdownSetIVMarkings = settings.ApplyMarkings;
|
||||
CommonEdits.ShowdownSetBehaviorNature = settings.ApplyNature;
|
||||
C_SAV.FlagIllegal = settings.FlagIllegal;
|
||||
C_SAV.M.Hover.GlowHover = settings.HoverSlotGlowEdges;
|
||||
SpriteBuilder.ShowEggSpriteAsItem = settings.ShowEggSpriteAsHeldItem;
|
||||
ParseSettings.AllowGen1Tradeback = settings.AllowGen1Tradeback;
|
||||
ParseSettings.Gen8TransferTrackerNotPresent = settings.FlagMissingTracker ? Severity.Invalid : Severity.Fishy;
|
||||
PKME_Tabs.HideSecretValues = C_SAV.HideSecretDetails = settings.HideSecretDetails;
|
||||
SpriteName.AllowShinySprite = settings.Display.ShinySprites;
|
||||
SaveFile.SetUpdateDex = settings.SlotWrite.SetUpdateDex ? PKMImportSetting.Update : PKMImportSetting.Skip;
|
||||
SaveFile.SetUpdatePKM = settings.SlotWrite.SetUpdatePKM ? PKMImportSetting.Update : PKMImportSetting.Skip;
|
||||
C_SAV.ModifyPKM = PKME_Tabs.ModifyPKM = settings.SlotWrite.SetUpdatePKM;
|
||||
CommonEdits.ShowdownSetIVMarkings = settings.Import.ApplyMarkings;
|
||||
CommonEdits.ShowdownSetBehaviorNature = settings.Import.ApplyNature;
|
||||
C_SAV.FlagIllegal = settings.Display.FlagIllegal;
|
||||
C_SAV.M.Hover.GlowHover = settings.Hover.HoverSlotGlowEdges;
|
||||
SpriteBuilder.ShowEggSpriteAsItem = settings.Display.ShowEggSpriteAsHeldItem;
|
||||
ParseSettings.InitFromSettings(settings.Legality);
|
||||
PKME_Tabs.HideSecretValues = C_SAV.HideSecretDetails = settings.Privacy.HideSecretDetails;
|
||||
}
|
||||
|
||||
private void MainMenuBoxLoad(object sender, EventArgs e)
|
||||
|
|
@ -741,7 +720,7 @@ private bool OpenSAV(SaveFile? sav, string path)
|
|||
if (!SanityCheckSAV(ref sav))
|
||||
return true;
|
||||
|
||||
if (C_SAV.SAV.State.Edited && Settings.Default.ModifyUnset)
|
||||
if (C_SAV.SAV.State.Edited && Settings.SlotWrite.ModifyUnset)
|
||||
{
|
||||
var prompt = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MsgProgramCloseUnsaved, MsgProgramSaveFileConfirm);
|
||||
if (prompt != DialogResult.Yes)
|
||||
|
|
@ -771,7 +750,8 @@ private bool OpenSAV(SaveFile? sav, string path)
|
|||
Menu_ShowdownExportParty.Visible = sav.HasParty;
|
||||
Menu_ShowdownExportCurrentBox.Visible = sav.HasBox;
|
||||
|
||||
if (Settings.Default.PlaySoundSAVLoad)
|
||||
Settings.Startup.LoadSaveFile(path);
|
||||
if (Settings.Sounds.PlaySoundSAVLoad)
|
||||
SystemSounds.Asterisk.Play();
|
||||
return true;
|
||||
}
|
||||
|
|
@ -836,7 +816,7 @@ private static string GetProgramTitle(SaveFile sav)
|
|||
if (sav is ISaveFileRevision rev)
|
||||
title = title.Insert(title.Length - 2, rev.SaveRevisionString);
|
||||
var ver = GameInfo.GetVersionName(sav.Version);
|
||||
if (Settings.Default.HideSAVDetails)
|
||||
if (Settings.Privacy.HideSAVDetails)
|
||||
return title + $"[{ver}]";
|
||||
if (!sav.State.Exportable) // Blank save file
|
||||
return title + $"{sav.Metadata.FileName} [{sav.OT} ({ver})]";
|
||||
|
|
@ -845,7 +825,7 @@ private static string GetProgramTitle(SaveFile sav)
|
|||
|
||||
private static bool TryBackupExportCheck(SaveFile sav, string path)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(path) || !Settings.Default.BAKEnabled) // not actual save
|
||||
if (string.IsNullOrWhiteSpace(path) || !Settings.Backup.BAKEnabled) // not actual save
|
||||
return false;
|
||||
|
||||
// If backup folder exists, save a backup.
|
||||
|
|
@ -925,7 +905,7 @@ private void ChangeMainLanguage(object sender, EventArgs e)
|
|||
CurrentLanguage = GameLanguage.Language2Char(CB_MainLanguage.SelectedIndex);
|
||||
|
||||
// Set the culture (makes it easy to pass language to other forms)
|
||||
Settings.Default.Language = CurrentLanguage;
|
||||
Settings.Startup.Language = CurrentLanguage;
|
||||
Thread.CurrentThread.CurrentCulture = new CultureInfo(CurrentLanguage.Substring(0, 2));
|
||||
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
|
||||
|
||||
|
|
@ -933,6 +913,7 @@ private void ChangeMainLanguage(object sender, EventArgs e)
|
|||
|
||||
LocalizeUtil.InitializeStrings(CurrentLanguage, C_SAV.SAV, HaX);
|
||||
WinFormsUtil.TranslateInterface(this, CurrentLanguage); // Translate the UI to language.
|
||||
LocalizedDescriptionAttribute.Localizer = WinFormsTranslator.GetDictionary(CurrentLanguage);
|
||||
if (C_SAV.SAV is not FakeSaveFile)
|
||||
{
|
||||
var pk = PKME_Tabs.CurrentPKM.Clone();
|
||||
|
|
@ -1045,14 +1026,14 @@ private void ShowLegality(object sender, EventArgs e, PKM pk)
|
|||
if (dr == DialogResult.Yes)
|
||||
WinFormsUtil.SetClipboardText(report);
|
||||
}
|
||||
else if (Settings.Default.IgnoreLegalPopup && la.Valid)
|
||||
else if (Settings.Display.IgnoreLegalPopup && la.Valid)
|
||||
{
|
||||
if (Settings.Default.PlaySoundLegalityCheck)
|
||||
if (Settings.Sounds.PlaySoundLegalityCheck)
|
||||
SystemSounds.Asterisk.Play();
|
||||
}
|
||||
else
|
||||
{
|
||||
WinFormsUtil.Alert(Settings.Default.PlaySoundLegalityCheck, report);
|
||||
WinFormsUtil.Alert(Settings.Sounds.PlaySoundLegalityCheck, report);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1186,24 +1167,7 @@ private void Main_FormClosing(object sender, FormClosingEventArgs e)
|
|||
}
|
||||
}
|
||||
|
||||
SaveSettings();
|
||||
}
|
||||
|
||||
private static void SaveSettings()
|
||||
{
|
||||
try
|
||||
{
|
||||
var settings = Settings.Default;
|
||||
settings.Draw = Draw.ToString();
|
||||
settings.Save();
|
||||
}
|
||||
#pragma warning disable CA1031 // Do not catch general exception types
|
||||
catch (Exception x)
|
||||
// Config might be corrupted, or their dotnet runtime is insufficient (<4.6?)
|
||||
#pragma warning restore CA1031 // Do not catch general exception types
|
||||
{
|
||||
File.WriteAllLines("config error.txt", new[] {x.ToString()});
|
||||
}
|
||||
PKHeXSettings.SaveSettings(ConfigPath, Settings);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
|
|
|||
|
|
@ -46,12 +46,12 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\PKHeX.Core\PKHeX.Core.csproj" />
|
||||
<ProjectReference Include="..\PKHeX.Drawing\PKHeX.Drawing.csproj" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<Reference Include="System.Configuration" />
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\PKHeX.Core\PKHeX.Core.csproj" />
|
||||
<ProjectReference Include="..\PKHeX.Drawing\PKHeX.Drawing.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -60,11 +60,6 @@
|
|||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Update="Properties\Settings.Designer.cs">
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
@ -80,11 +75,10 @@
|
|||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Update="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'net5.0-windows'">
|
||||
<PackageReference Include="System.Text.Json">
|
||||
<Version>5.0.2</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
281
PKHeX.WinForms/Properties/PKHeXSettings.cs
Normal file
281
PKHeX.WinForms/Properties/PKHeXSettings.cs
Normal file
|
|
@ -0,0 +1,281 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using Newtonsoft.Json;
|
||||
using PKHeX.Core;
|
||||
|
||||
namespace PKHeX.WinForms
|
||||
{
|
||||
[Serializable]
|
||||
public sealed class PKHeXSettings
|
||||
{
|
||||
public StartupSettings Startup { get; set; } = new();
|
||||
public BackupSettings Backup { get; set; } = new();
|
||||
|
||||
// General
|
||||
public LegalitySettings Legality { get; set; } = new();
|
||||
public SetImportSettings Import { get; set; } = new();
|
||||
public SlotWriteSettings SlotWrite { get; set; } = new();
|
||||
public PrivacySettings Privacy { get; set; } = new();
|
||||
|
||||
// UI Tweaks
|
||||
public DisplaySettings Display { get; set; } = new();
|
||||
public SoundSettings Sounds { get; set; } = new();
|
||||
public HoverSettings Hover { get; set; } = new();
|
||||
|
||||
// GUI Specific
|
||||
public DrawConfig Draw { get; set; } = new();
|
||||
public AdvancedSettings Advanced { get; set; } = new();
|
||||
|
||||
public static PKHeXSettings GetSettings(string configPath)
|
||||
{
|
||||
if (!File.Exists(configPath))
|
||||
return new PKHeXSettings();
|
||||
|
||||
try
|
||||
{
|
||||
var lines = File.ReadAllText(configPath);
|
||||
return JsonConvert.DeserializeObject<PKHeXSettings>(lines) ?? new PKHeXSettings();
|
||||
}
|
||||
#pragma warning disable CA1031 // Do not catch general exception types
|
||||
catch (Exception x)
|
||||
#pragma warning restore CA1031 // Do not catch general exception types
|
||||
{
|
||||
DumpConfigError(x);
|
||||
return new PKHeXSettings();
|
||||
}
|
||||
}
|
||||
|
||||
public static void SaveSettings(string configPath, PKHeXSettings cfg)
|
||||
{
|
||||
try
|
||||
{
|
||||
var settings = new JsonSerializerSettings
|
||||
{
|
||||
Formatting = Formatting.Indented,
|
||||
DefaultValueHandling = DefaultValueHandling.Populate,
|
||||
NullValueHandling = NullValueHandling.Ignore,
|
||||
};
|
||||
var text = JsonConvert.SerializeObject(cfg, settings);
|
||||
File.WriteAllText(configPath, text);
|
||||
}
|
||||
#pragma warning disable CA1031 // Do not catch general exception types
|
||||
catch (Exception x)
|
||||
#pragma warning restore CA1031 // Do not catch general exception types
|
||||
{
|
||||
DumpConfigError(x);
|
||||
}
|
||||
}
|
||||
|
||||
private static void DumpConfigError(Exception x)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.WriteAllLines("config error.txt", new[] { x.ToString() });
|
||||
}
|
||||
#pragma warning disable CA1031 // Do not catch general exception types
|
||||
catch (Exception)
|
||||
#pragma warning restore CA1031 // Do not catch general exception types
|
||||
{
|
||||
Debug.WriteLine(x); // ???
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class BackupSettings
|
||||
{
|
||||
[LocalizedDescription("Automatic Backups of Save Files are copied to the backup folder when true.")]
|
||||
public bool BAKEnabled { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Tracks if the \"Create Backup\" prompt has been issued to the user.")]
|
||||
public bool BAKPrompt { get; set; }
|
||||
|
||||
#pragma warning disable CA1819 // Properties should not return arrays
|
||||
[LocalizedDescription("List of extra locations to look for Save Files.")]
|
||||
public string[] OtherBackupPaths { get; set; } = Array.Empty<string>();
|
||||
|
||||
[LocalizedDescription("Save File file-extensions (no period) that the program should also recognize.")]
|
||||
public string[] OtherSaveFileExtensions { get; set; } = Array.Empty<string>();
|
||||
#pragma warning restore CA1819 // Properties should not return arrays
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class StartupSettings
|
||||
{
|
||||
[Browsable(false)]
|
||||
[LocalizedDescription("Last version that the program was run with.")]
|
||||
public string Version { get; set; } = string.Empty;
|
||||
|
||||
[LocalizedDescription("Force HaX mode on Program Launch")]
|
||||
public bool ForceHaXOnLaunch { get; set; }
|
||||
|
||||
[LocalizedDescription("Automatically locates the most recently saved Save File when opening a new file.")]
|
||||
public bool TryDetectRecentSave { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Automatically Detect Save File on Program Startup")]
|
||||
public AutoLoadSetting AutoLoadSaveOnStartup { get; set; } = AutoLoadSetting.RecentBackup;
|
||||
|
||||
public List<string> RecentlyLoaded = new(MaxRecentCount);
|
||||
|
||||
// Don't let invalid values slip into the startup version.
|
||||
private GameVersion _defaultSaveVersion = GameVersion.SW;
|
||||
private string _language = GameLanguage.DefaultLanguage;
|
||||
|
||||
[Browsable(false)]
|
||||
public string Language
|
||||
{
|
||||
get => _language;
|
||||
set
|
||||
{
|
||||
if (GameLanguage.GetLanguageIndex(value) == -1)
|
||||
return;
|
||||
_language = value;
|
||||
}
|
||||
}
|
||||
|
||||
[Browsable(false)]
|
||||
public GameVersion DefaultSaveVersion
|
||||
{
|
||||
get => _defaultSaveVersion;
|
||||
set
|
||||
{
|
||||
if (!value.IsValidSavedVersion())
|
||||
return;
|
||||
_defaultSaveVersion = value;
|
||||
}
|
||||
}
|
||||
|
||||
private const int MaxRecentCount = 10;
|
||||
|
||||
public void LoadSaveFile(string path)
|
||||
{
|
||||
var recent = RecentlyLoaded;
|
||||
if (!recent.Remove(path))
|
||||
return;
|
||||
if (recent.Count >= MaxRecentCount)
|
||||
recent.RemoveAt(recent.Count - 1);
|
||||
recent.Insert(0, path);
|
||||
}
|
||||
}
|
||||
|
||||
public enum AutoLoadSetting
|
||||
{
|
||||
Disabled,
|
||||
RecentBackup,
|
||||
LastLoaded,
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class LegalitySettings : IParseSettings
|
||||
{
|
||||
[LocalizedDescription("Checks player given Nicknames and Trainer Names for profanity. Bad words will be flagged using the 3DS console's regex lists.")]
|
||||
public bool CheckWordFilter { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("GB: Allow Generation 2 tradeback learnsets for PK1 formats. Disable when checking RBY Metagame rules.")]
|
||||
public bool AllowGen1Tradeback { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.")]
|
||||
public Severity NicknamedTrade { get; set; } = Severity.Invalid;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.")]
|
||||
public Severity NicknamedMysteryGift { get; set; } = Severity.Fishy;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.")]
|
||||
public Severity RNGFrameNotFound { get; set; } = Severity.Fishy;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.")]
|
||||
public Severity Gen7TransferStarPID { get; set; } = Severity.Fishy;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.")]
|
||||
public Severity Gen8MemoryLocationTextVariable { get; set; } = Severity.Fishy;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if the HOME Tracker is Missing")]
|
||||
public Severity Gen8TransferTrackerNotPresent { get; set; } = Severity.Fishy;
|
||||
|
||||
[LocalizedDescription("Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.")]
|
||||
public Severity NicknamedAnotherSpecies { get; set; } = Severity.Fishy;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class AdvancedSettings
|
||||
{
|
||||
[LocalizedDescription("Path to a dump of block hash-names. If file does not exist, only names defined within the program's code will be loaded.")]
|
||||
public string PathBlockKeyListSWSH { get; set; } = "SCBlocks.txt";
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class HoverSettings
|
||||
{
|
||||
[LocalizedDescription("Show PKM Slot ToolTip on Hover")]
|
||||
public bool HoverSlotShowText { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Play PKM Slot Cry on Hover")]
|
||||
public bool HoverSlotPlayCry { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Show a Glow effect around the PKM on Hover")]
|
||||
public bool HoverSlotGlowEdges { get; set; } = true;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class SoundSettings
|
||||
{
|
||||
[LocalizedDescription("Play Sound when loading a new Save File")]
|
||||
public bool PlaySoundSAVLoad { get; set; } = true;
|
||||
[LocalizedDescription("Play Sound when popping up Legality Report")]
|
||||
public bool PlaySoundLegalityCheck { get; set; } = true;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class SetImportSettings
|
||||
{
|
||||
[LocalizedDescription("Apply StatNature to Nature on Import")]
|
||||
public bool ApplyNature { get; set; } = true;
|
||||
[LocalizedDescription("Apply Markings on Import")]
|
||||
public bool ApplyMarkings { get; set; } = true;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class SlotWriteSettings
|
||||
{
|
||||
[LocalizedDescription("Automatically modify the Save File's Pokédex when injecting a PKM.")]
|
||||
public bool SetUpdateDex { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Automatically adapt the PKM Info to the Save File (Handler, Format)")]
|
||||
public bool SetUpdatePKM { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("When enabled and closing/loading a save file, the program will alert if the current save file has been modified without saving.")]
|
||||
public bool ModifyUnset { get; set; } = true;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class DisplaySettings
|
||||
{
|
||||
[LocalizedDescription("Show Unicode gender symbol characters, or ASCII when disabled.")]
|
||||
public bool Unicode { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Show fanmade shiny sprites when the PKM is shiny.")]
|
||||
public bool ShinySprites { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Show an Egg Sprite As Held Item rather than hiding the PKM")]
|
||||
public bool ShowEggSpriteAsHeldItem { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Don't show the Legality popup if Legal!")]
|
||||
public bool IgnoreLegalPopup { get; set; } = true;
|
||||
|
||||
[LocalizedDescription("Flag Illegal Slots in Save File")]
|
||||
public bool FlagIllegal { get; set; } = true;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public sealed class PrivacySettings
|
||||
{
|
||||
[LocalizedDescription("Hide Save File Details in Program Title")]
|
||||
public bool HideSAVDetails { get; set; }
|
||||
|
||||
[LocalizedDescription("Hide Secret Details in Editors")]
|
||||
public bool HideSecretDetails { get; set; }
|
||||
}
|
||||
}
|
||||
350
PKHeX.WinForms/Properties/Settings.Designer.cs
generated
350
PKHeX.WinForms/Properties/Settings.Designer.cs
generated
|
|
@ -1,350 +0,0 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace PKHeX.WinForms.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.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;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string Language {
|
||||
get {
|
||||
return ((string)(this["Language"]));
|
||||
}
|
||||
set {
|
||||
this["Language"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string Version {
|
||||
get {
|
||||
return ((string)(this["Version"]));
|
||||
}
|
||||
set {
|
||||
this["Version"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool Unicode {
|
||||
get {
|
||||
return ((bool)(this["Unicode"]));
|
||||
}
|
||||
set {
|
||||
this["Unicode"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool SetUpdateDex {
|
||||
get {
|
||||
return ((bool)(this["SetUpdateDex"]));
|
||||
}
|
||||
set {
|
||||
this["SetUpdateDex"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool SetUpdatePKM {
|
||||
get {
|
||||
return ((bool)(this["SetUpdatePKM"]));
|
||||
}
|
||||
set {
|
||||
this["SetUpdatePKM"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool BAKPrompt {
|
||||
get {
|
||||
return ((bool)(this["BAKPrompt"]));
|
||||
}
|
||||
set {
|
||||
this["BAKPrompt"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool FlagIllegal {
|
||||
get {
|
||||
return ((bool)(this["FlagIllegal"]));
|
||||
}
|
||||
set {
|
||||
this["FlagIllegal"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool ModifyUnset {
|
||||
get {
|
||||
return ((bool)(this["ModifyUnset"]));
|
||||
}
|
||||
set {
|
||||
this["ModifyUnset"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ShinySprites {
|
||||
get {
|
||||
return ((bool)(this["ShinySprites"]));
|
||||
}
|
||||
set {
|
||||
this["ShinySprites"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ApplyMarkings {
|
||||
get {
|
||||
return ((bool)(this["ApplyMarkings"]));
|
||||
}
|
||||
set {
|
||||
this["ApplyMarkings"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool HoverSlotShowText {
|
||||
get {
|
||||
return ((bool)(this["HoverSlotShowText"]));
|
||||
}
|
||||
set {
|
||||
this["HoverSlotShowText"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool HoverSlotPlayCry {
|
||||
get {
|
||||
return ((bool)(this["HoverSlotPlayCry"]));
|
||||
}
|
||||
set {
|
||||
this["HoverSlotPlayCry"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool HoverSlotGlowEdges {
|
||||
get {
|
||||
return ((bool)(this["HoverSlotGlowEdges"]));
|
||||
}
|
||||
set {
|
||||
this["HoverSlotGlowEdges"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool HideSAVDetails {
|
||||
get {
|
||||
return ((bool)(this["HideSAVDetails"]));
|
||||
}
|
||||
set {
|
||||
this["HideSAVDetails"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool ShowEggSpriteAsHeldItem {
|
||||
get {
|
||||
return ((bool)(this["ShowEggSpriteAsHeldItem"]));
|
||||
}
|
||||
set {
|
||||
this["ShowEggSpriteAsHeldItem"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool HideSecretDetails {
|
||||
get {
|
||||
return ((bool)(this["HideSecretDetails"]));
|
||||
}
|
||||
set {
|
||||
this["HideSecretDetails"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("SW")]
|
||||
public global::PKHeX.Core.GameVersion DefaultSaveVersion {
|
||||
get {
|
||||
return ((global::PKHeX.Core.GameVersion)(this["DefaultSaveVersion"]));
|
||||
}
|
||||
set {
|
||||
this["DefaultSaveVersion"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool DetectSaveOnStartup {
|
||||
get {
|
||||
return ((bool)(this["DetectSaveOnStartup"]));
|
||||
}
|
||||
set {
|
||||
this["DetectSaveOnStartup"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool BAKEnabled {
|
||||
get {
|
||||
return ((bool)(this["BAKEnabled"]));
|
||||
}
|
||||
set {
|
||||
this["BAKEnabled"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool AllowGen1Tradeback {
|
||||
get {
|
||||
return ((bool)(this["AllowGen1Tradeback"]));
|
||||
}
|
||||
set {
|
||||
this["AllowGen1Tradeback"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool ForceHaXOnLaunch {
|
||||
get {
|
||||
return ((bool)(this["ForceHaXOnLaunch"]));
|
||||
}
|
||||
set {
|
||||
this["ForceHaXOnLaunch"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool IgnoreLegalPopup {
|
||||
get {
|
||||
return ((bool)(this["IgnoreLegalPopup"]));
|
||||
}
|
||||
set {
|
||||
this["IgnoreLegalPopup"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string Draw {
|
||||
get {
|
||||
return ((string)(this["Draw"]));
|
||||
}
|
||||
set {
|
||||
this["Draw"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool PlaySoundSAVLoad {
|
||||
get {
|
||||
return ((bool)(this["PlaySoundSAVLoad"]));
|
||||
}
|
||||
set {
|
||||
this["PlaySoundSAVLoad"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool PlaySoundLegalityCheck {
|
||||
get {
|
||||
return ((bool)(this["PlaySoundLegalityCheck"]));
|
||||
}
|
||||
set {
|
||||
this["PlaySoundLegalityCheck"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool FlagMissingTracker {
|
||||
get {
|
||||
return ((bool)(this["FlagMissingTracker"]));
|
||||
}
|
||||
set {
|
||||
this["FlagMissingTracker"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool ApplyNature {
|
||||
get {
|
||||
return ((bool)(this["ApplyNature"]));
|
||||
}
|
||||
set {
|
||||
this["ApplyNature"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,87 +0,0 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="PKHeX.WinForms.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="Language" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Version" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="Unicode" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="SetUpdateDex" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="SetUpdatePKM" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="BAKPrompt" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="FlagIllegal" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ModifyUnset" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ShinySprites" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ApplyMarkings" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="HoverSlotShowText" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="HoverSlotPlayCry" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="HoverSlotGlowEdges" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="HideSAVDetails" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ShowEggSpriteAsHeldItem" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="HideSecretDetails" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="DefaultSaveVersion" Type="PKHeX.Core.GameVersion" Scope="User">
|
||||
<Value Profile="(Default)">SW</Value>
|
||||
</Setting>
|
||||
<Setting Name="DetectSaveOnStartup" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="BAKEnabled" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="AllowGen1Tradeback" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="ForceHaXOnLaunch" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="IgnoreLegalPopup" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="Draw" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="PlaySoundSAVLoad" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="PlaySoundLegalityCheck" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="FlagMissingTracker" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="ApplyNature" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"profiles": {
|
||||
"PKHeX.WinForms": {
|
||||
"commandName": "Project"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=Abbrechen
|
|||
ErrorWindow.B_Continue=Fortfahren
|
||||
ErrorWindow.B_CopyToClipboard=In Zwischenablage kopieren
|
||||
ErrorWindow.L_ProvideInfo=Bitte sende diese Information, wenn du den Fehler meldest:
|
||||
LocalizedDescription.AllowGen1Tradeback=AllowGen1Tradeback
|
||||
LocalizedDescription.ApplyMarkings=Apply Markings on Import
|
||||
LocalizedDescription.ApplyNature=Apply StatNature to Nature on Import
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=Automatic Save File Backups Enabled
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=Flag Illegal Slots in Save File
|
||||
LocalizedDescription.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=Hide Save File Details in Program Title
|
||||
LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors
|
||||
LocalizedDescription.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
LocalizedDescription.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
LocalizedDescription.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
LocalizedDescription.ModifyUnset=Notify Unset Changes
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=Play Sound when popping up Legality Report
|
||||
LocalizedDescription.PlaySoundSAVLoad=Play Sound when loading a new Save File
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=Ändern Pokédex
|
||||
LocalizedDescription.SetUpdatePKM=Ändern PKM Info
|
||||
LocalizedDescription.ShinySprites=Shiny Sprites
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=Unicode
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=Block Data
|
||||
Main.B_CellsStickers=Cells/Stickers
|
||||
Main.B_CGearSkin=C-Gear Skin
|
||||
|
|
@ -527,14 +559,12 @@ SAV_HallOfFame.Label_Species=Spezies:
|
|||
SAV_HallOfFame.Label_TID=TID:
|
||||
SAV_HallOfFame7.B_Cancel=Cancel
|
||||
SAV_HallOfFame7.B_Close=Save
|
||||
SAV_HallOfFame7.CHK_Flag=Flag
|
||||
SAV_HallOfFame7.L_C1=PKM 1:
|
||||
SAV_HallOfFame7.L_C2=PKM 2:
|
||||
SAV_HallOfFame7.L_C3=PKM 3:
|
||||
SAV_HallOfFame7.L_C4=PKM 4:
|
||||
SAV_HallOfFame7.L_C5=PKM 5:
|
||||
SAV_HallOfFame7.L_C6=PKM 6:
|
||||
SAV_HallOfFame7.L_Count=Count:
|
||||
SAV_HallOfFame7.L_EC=Starter EC:
|
||||
SAV_HallOfFame7.L_F1=PKM 1:
|
||||
SAV_HallOfFame7.L_F2=PKM 2:
|
||||
|
|
@ -1391,33 +1421,6 @@ SAV_ZygardeCell.B_GiveAll=Collect All
|
|||
SAV_ZygardeCell.B_Save=Save
|
||||
SAV_ZygardeCell.L_Cells=Stored:
|
||||
SAV_ZygardeCell.L_Collected=Collected:
|
||||
SettingsEditor.AllowGen1Tradeback=AllowGen1Tradeback
|
||||
SettingsEditor.ApplyMarkings=Apply Markings on Import
|
||||
SettingsEditor.ApplyNature=Apply StatNature to Nature on Import
|
||||
SettingsEditor.B_Reset=Reset All
|
||||
SettingsEditor.BAKEnabled=Automatic Save File Backups Enabled
|
||||
SettingsEditor.DetectSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
SettingsEditor.FlagIllegal=Flag Illegal Slots in Save File
|
||||
SettingsEditor.FlagMissingTracker=Flag as Illegal if HOME Tracker is Missing
|
||||
SettingsEditor.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
SettingsEditor.HideSAVDetails=Hide Save File Details in Program Title
|
||||
SettingsEditor.HideSecretDetails=Hide Secret Details in Editors
|
||||
SettingsEditor.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
SettingsEditor.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
SettingsEditor.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
SettingsEditor.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
SettingsEditor.L_Blank=Blank Save Version:
|
||||
SettingsEditor.ModifyUnset=Notify Unset Changes
|
||||
SettingsEditor.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
SettingsEditor.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
SettingsEditor.SetUpdateDex=Ändern Pokédex
|
||||
SettingsEditor.SetUpdatePKM=Ändern PKM Info
|
||||
SettingsEditor.ShinySprites=Shiny Sprites
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
SettingsEditor.Tab_Bool=Toggles
|
||||
SettingsEditor.Tab_Color=Colors
|
||||
SettingsEditor.Unicode=Unicode
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=Alle
|
||||
SuperTrainingEditor.B_Cancel=Abbrechen
|
||||
SuperTrainingEditor.B_None=Nichts
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=Abort
|
|||
ErrorWindow.B_Continue=Continue
|
||||
ErrorWindow.B_CopyToClipboard=Copy to Clipboard
|
||||
ErrorWindow.L_ProvideInfo=Please provide this information when reporting this error:
|
||||
LocalizedDescription.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnsets
|
||||
LocalizedDescription.ApplyMarkings=Apply Markings on Import
|
||||
LocalizedDescription.ApplyNature=Apply StatNature to Nature on Import
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=Automatic Save File Backups Enabled
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=Flag Illegal Slots in Save File
|
||||
LocalizedDescription.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=Hide Save File Details in Program Title
|
||||
LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors
|
||||
LocalizedDescription.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
LocalizedDescription.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
LocalizedDescription.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
LocalizedDescription.ModifyUnset=Notify Unset Changes
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=Play Sound when popping up Legality Report
|
||||
LocalizedDescription.PlaySoundSAVLoad=Play Sound when loading a new Save File
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=Modify Pokédex
|
||||
LocalizedDescription.SetUpdatePKM=Modify PKM Info
|
||||
LocalizedDescription.ShinySprites=Shiny Sprites
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=Unicode
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=Block Data
|
||||
Main.B_CellsStickers=Cells/Stickers
|
||||
Main.B_CGearSkin=C-Gear Skin
|
||||
|
|
@ -523,14 +555,12 @@ SAV_HallOfFame.Label_Species=Species:
|
|||
SAV_HallOfFame.Label_TID=TID:
|
||||
SAV_HallOfFame7.B_Cancel=Cancel
|
||||
SAV_HallOfFame7.B_Close=Save
|
||||
SAV_HallOfFame7.CHK_Flag=Flag
|
||||
SAV_HallOfFame7.L_C1=PKM 1:
|
||||
SAV_HallOfFame7.L_C2=PKM 2:
|
||||
SAV_HallOfFame7.L_C3=PKM 3:
|
||||
SAV_HallOfFame7.L_C4=PKM 4:
|
||||
SAV_HallOfFame7.L_C5=PKM 5:
|
||||
SAV_HallOfFame7.L_C6=PKM 6:
|
||||
SAV_HallOfFame7.L_Count=Count:
|
||||
SAV_HallOfFame7.L_EC=Starter EC:
|
||||
SAV_HallOfFame7.L_F1=PKM 1:
|
||||
SAV_HallOfFame7.L_F2=PKM 2:
|
||||
|
|
@ -1387,33 +1417,6 @@ SAV_ZygardeCell.B_GiveAll=Collect All
|
|||
SAV_ZygardeCell.B_Save=Save
|
||||
SAV_ZygardeCell.L_Cells=Stored:
|
||||
SAV_ZygardeCell.L_Collected=Collected:
|
||||
SettingsEditor.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnsets
|
||||
SettingsEditor.ApplyMarkings=Apply Markings on Import
|
||||
SettingsEditor.ApplyNature=Apply StatNature to Nature on Import
|
||||
SettingsEditor.B_Reset=Reset All
|
||||
SettingsEditor.BAKEnabled=Automatic Save File Backups Enabled
|
||||
SettingsEditor.DetectSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
SettingsEditor.FlagIllegal=Flag Illegal Slots in Save File
|
||||
SettingsEditor.FlagMissingTracker=Flag as Illegal if HOME Tracker is Missing
|
||||
SettingsEditor.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
SettingsEditor.HideSAVDetails=Hide Save File Details in Program Title
|
||||
SettingsEditor.HideSecretDetails=Hide Secret Details in Editors
|
||||
SettingsEditor.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
SettingsEditor.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
SettingsEditor.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
SettingsEditor.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
SettingsEditor.L_Blank=Blank Save Version:
|
||||
SettingsEditor.ModifyUnset=Notify Unset Changes
|
||||
SettingsEditor.PlaySoundLegalityCheck=Play Sound when popping up Legality Report
|
||||
SettingsEditor.PlaySoundSAVLoad=Play Sound when loading a new Save File
|
||||
SettingsEditor.SetUpdateDex=Modify Pokédex
|
||||
SettingsEditor.SetUpdatePKM=Modify PKM Info
|
||||
SettingsEditor.ShinySprites=Shiny Sprites
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
SettingsEditor.Tab_Bool=Toggles
|
||||
SettingsEditor.Tab_Color=Colors
|
||||
SettingsEditor.Unicode=Unicode
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=Give All
|
||||
SuperTrainingEditor.B_Cancel=Cancel
|
||||
SuperTrainingEditor.B_None=Remove All
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=Abortar
|
|||
ErrorWindow.B_Continue=Continuar
|
||||
ErrorWindow.B_CopyToClipboard=Copiar al portapapeles
|
||||
ErrorWindow.L_ProvideInfo=Por favor, proporcione esta información cuando reporte el fallo:
|
||||
LocalizedDescription.AllowGen1Tradeback=GB: Permitir intercambio de movimientos desde la Generación 2.
|
||||
LocalizedDescription.ApplyMarkings=Aplicar marcadores al importar
|
||||
LocalizedDescription.ApplyNature=Aplicar StatNature a la naturaleza al importar
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=Respaldo Automático de archivos de guardado habilitado
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=Marca ilegal
|
||||
LocalizedDescription.ForceHaXOnLaunch=Forzar el modo HaX al Inicio de Programa
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=Ocultar detalles de partidas guardadas en el título del programa
|
||||
LocalizedDescription.HideSecretDetails=Ocultar detalles secretos en los editores
|
||||
LocalizedDescription.HoverSlotGlowEdges=Mostrar brillo PKM al pasar el ratón
|
||||
LocalizedDescription.HoverSlotPlayCry=Reproducir grito PKM al pasar el ratón
|
||||
LocalizedDescription.HoverSlotShowText=Mostrar info. PKM al pasar el ratón
|
||||
LocalizedDescription.IgnoreLegalPopup=¡No mostrar ventana si es Legal!
|
||||
LocalizedDescription.ModifyUnset=Notificar cambios no hechos
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=Reproducir sonido en la validación de Legalidad
|
||||
LocalizedDescription.PlaySoundSAVLoad=Reproducir sonido al cargar archivo de guardado
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=Modificar Pokédex
|
||||
LocalizedDescription.SetUpdatePKM=Modificar info PKM
|
||||
LocalizedDescription.ShinySprites=Sprites variocolor
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=Mostrar sprite de huevo como objeto equipado
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=Unicode
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=Datos Bloque
|
||||
Main.B_CellsStickers=Células/Stickers
|
||||
Main.B_CGearSkin=C-Gear
|
||||
|
|
@ -523,14 +555,12 @@ SAV_HallOfFame.Label_Species=Especie:
|
|||
SAV_HallOfFame.Label_TID=ID:
|
||||
SAV_HallOfFame7.B_Cancel=Cancelar
|
||||
SAV_HallOfFame7.B_Close=Guardar
|
||||
SAV_HallOfFame7.CHK_Flag=Marca
|
||||
SAV_HallOfFame7.L_C1=PKM 1:
|
||||
SAV_HallOfFame7.L_C2=PKM 2:
|
||||
SAV_HallOfFame7.L_C3=PKM 3:
|
||||
SAV_HallOfFame7.L_C4=PKM 4:
|
||||
SAV_HallOfFame7.L_C5=PKM 5:
|
||||
SAV_HallOfFame7.L_C6=PKM 6:
|
||||
SAV_HallOfFame7.L_Count=Cuenta:
|
||||
SAV_HallOfFame7.L_EC=CE Inicial:
|
||||
SAV_HallOfFame7.L_F1=PKM 1:
|
||||
SAV_HallOfFame7.L_F2=PKM 2:
|
||||
|
|
@ -1387,33 +1417,6 @@ SAV_ZygardeCell.B_GiveAll=Dar Todo
|
|||
SAV_ZygardeCell.B_Save=Guardar
|
||||
SAV_ZygardeCell.L_Cells=Almacenado:
|
||||
SAV_ZygardeCell.L_Collected=Coleccionado:
|
||||
SettingsEditor.AllowGen1Tradeback=GB: Permitir intercambio de movimientos desde la Generación 2.
|
||||
SettingsEditor.ApplyMarkings=Aplicar marcadores al importar
|
||||
SettingsEditor.ApplyNature=Aplicar StatNature a la naturaleza al importar
|
||||
SettingsEditor.B_Reset=Reiniciar Todo
|
||||
SettingsEditor.BAKEnabled=Respaldo Automático de archivos de guardado habilitado
|
||||
SettingsEditor.DetectSaveOnStartup=Detectar automáticamente el archivo de guardado al inicio del programa
|
||||
SettingsEditor.FlagIllegal=Marca ilegal
|
||||
SettingsEditor.FlagMissingTracker=Marcar ilegal si el rastreador HOME falta
|
||||
SettingsEditor.ForceHaXOnLaunch=Forzar el modo HaX al Inicio de Programa
|
||||
SettingsEditor.HideSAVDetails=Ocultar detalles de partidas guardadas en el título del programa
|
||||
SettingsEditor.HideSecretDetails=Ocultar detalles secretos en los editores
|
||||
SettingsEditor.HoverSlotGlowEdges=Mostrar brillo PKM al pasar el ratón
|
||||
SettingsEditor.HoverSlotPlayCry=Reproducir grito PKM al pasar el ratón
|
||||
SettingsEditor.HoverSlotShowText=Mostrar info. PKM al pasar el ratón
|
||||
SettingsEditor.IgnoreLegalPopup=¡No mostrar ventana si es Legal!
|
||||
SettingsEditor.L_Blank=Versión por defecto:
|
||||
SettingsEditor.ModifyUnset=Notificar cambios no hechos
|
||||
SettingsEditor.PlaySoundLegalityCheck=Reproducir sonido en la validación de Legalidad
|
||||
SettingsEditor.PlaySoundSAVLoad=Reproducir sonido al cargar archivo de guardado
|
||||
SettingsEditor.SetUpdateDex=Modificar Pokédex
|
||||
SettingsEditor.SetUpdatePKM=Modificar info PKM
|
||||
SettingsEditor.ShinySprites=Sprites variocolor
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=Mostrar sprite de huevo como objeto equipado
|
||||
SettingsEditor.Tab_Bool=Opciones
|
||||
SettingsEditor.Tab_Color=Colores
|
||||
SettingsEditor.Unicode=Unicode
|
||||
SettingsEditor.UseLargeSprites=Usar siempre Sprites Grandes (Juegos Pasados)
|
||||
SuperTrainingEditor.B_All=Dar todos
|
||||
SuperTrainingEditor.B_Cancel=Cancelar
|
||||
SuperTrainingEditor.B_None=Quitar todos
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=Abandonner
|
|||
ErrorWindow.B_Continue=Continuer
|
||||
ErrorWindow.B_CopyToClipboard=Copier dans le presse-papier
|
||||
ErrorWindow.L_ProvideInfo=Veuillez fournir les informations suivantes dans votre rapport d'erreur :
|
||||
LocalizedDescription.AllowGen1Tradeback=GB: Permettre les movepools de revenants de la Gén. 2
|
||||
LocalizedDescription.ApplyMarkings=Appliquer des marques de l'import
|
||||
LocalizedDescription.ApplyNature=Appliquer StatNature à la nature lors de l'import
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=Automatic Save File Backups Enabled
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=Marquer les Pokémon illégaux dans la sauvegarde
|
||||
LocalizedDescription.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=Cacher les détails de la sauvegarde
|
||||
LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors
|
||||
LocalizedDescription.HoverSlotGlowEdges=Faire briller le Pokémon au survol
|
||||
LocalizedDescription.HoverSlotPlayCry=Jouer le cri du Pokémon au survol
|
||||
LocalizedDescription.HoverSlotShowText=Montrer le résumé du Pokémon au survol
|
||||
LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
LocalizedDescription.ModifyUnset=Notifier en cas de changements non sauvegardés
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
LocalizedDescription.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=Modifier Infos Pokédex
|
||||
LocalizedDescription.SetUpdatePKM=Modifier Infos Pokémon
|
||||
LocalizedDescription.ShinySprites=Sprites Chromatiques
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=Montrer le sprite de l'Œuf en tant qu'objet tenu
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=Unicode
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=Block Data
|
||||
Main.B_CellsStickers=Cells/Stickers
|
||||
Main.B_CGearSkin=Fonds C-Gear
|
||||
|
|
@ -527,14 +559,12 @@ SAV_HallOfFame.Label_Species=Species:
|
|||
SAV_HallOfFame.Label_TID=TID:
|
||||
SAV_HallOfFame7.B_Cancel=Cancel
|
||||
SAV_HallOfFame7.B_Close=Save
|
||||
SAV_HallOfFame7.CHK_Flag=Flag
|
||||
SAV_HallOfFame7.L_C1=PKM 1:
|
||||
SAV_HallOfFame7.L_C2=PKM 2:
|
||||
SAV_HallOfFame7.L_C3=PKM 3:
|
||||
SAV_HallOfFame7.L_C4=PKM 4:
|
||||
SAV_HallOfFame7.L_C5=PKM 5:
|
||||
SAV_HallOfFame7.L_C6=PKM 6:
|
||||
SAV_HallOfFame7.L_Count=Count:
|
||||
SAV_HallOfFame7.L_EC=Starter EC:
|
||||
SAV_HallOfFame7.L_F1=PKM 1:
|
||||
SAV_HallOfFame7.L_F2=PKM 2:
|
||||
|
|
@ -1391,33 +1421,6 @@ SAV_ZygardeCell.B_GiveAll=Tout obtenir
|
|||
SAV_ZygardeCell.B_Save=Sauvegarder
|
||||
SAV_ZygardeCell.L_Cells=Conservé :
|
||||
SAV_ZygardeCell.L_Collected=Obtenu :
|
||||
SettingsEditor.AllowGen1Tradeback=GB: Permettre les movepools de revenants de la Gén. 2
|
||||
SettingsEditor.ApplyMarkings=Appliquer des marques de l'import
|
||||
SettingsEditor.ApplyNature=Appliquer StatNature à la nature lors de l'import
|
||||
SettingsEditor.B_Reset=Reset All
|
||||
SettingsEditor.BAKEnabled=Automatic Save File Backups Enabled
|
||||
SettingsEditor.DetectSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
SettingsEditor.FlagIllegal=Marquer les Pokémon illégaux dans la sauvegarde
|
||||
SettingsEditor.FlagMissingTracker=Flag as Illegal if HOME Tracker is Missing
|
||||
SettingsEditor.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
SettingsEditor.HideSAVDetails=Cacher les détails de la sauvegarde
|
||||
SettingsEditor.HideSecretDetails=Hide Secret Details in Editors
|
||||
SettingsEditor.HoverSlotGlowEdges=Faire briller le Pokémon au survol
|
||||
SettingsEditor.HoverSlotPlayCry=Jouer le cri du Pokémon au survol
|
||||
SettingsEditor.HoverSlotShowText=Montrer le résumé du Pokémon au survol
|
||||
SettingsEditor.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
SettingsEditor.L_Blank=Blank Save Version:
|
||||
SettingsEditor.ModifyUnset=Notifier en cas de changements non sauvegardés
|
||||
SettingsEditor.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
SettingsEditor.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
SettingsEditor.SetUpdateDex=Modifier Infos Pokédex
|
||||
SettingsEditor.SetUpdatePKM=Modifier Infos Pokémon
|
||||
SettingsEditor.ShinySprites=Sprites Chromatiques
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=Montrer le sprite de l'Œuf en tant qu'objet tenu
|
||||
SettingsEditor.Tab_Bool=Toggles
|
||||
SettingsEditor.Tab_Color=Colors
|
||||
SettingsEditor.Unicode=Unicode
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=Tout donner
|
||||
SuperTrainingEditor.B_Cancel=Annuler
|
||||
SuperTrainingEditor.B_None=Tout retirer
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=Abort
|
|||
ErrorWindow.B_Continue=Continue
|
||||
ErrorWindow.B_CopyToClipboard=Copy to Clipboard
|
||||
ErrorWindow.L_ProvideInfo=Please provide this information when reporting this error:
|
||||
LocalizedDescription.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnsets
|
||||
LocalizedDescription.ApplyMarkings=Apply Markings on Import
|
||||
LocalizedDescription.ApplyNature=Apply StatNature to Nature on Import
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=Automatic Save File Backups Enabled
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=Flag Illegal Slots in Save File
|
||||
LocalizedDescription.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=Hide Save File Details in Program Title
|
||||
LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors
|
||||
LocalizedDescription.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
LocalizedDescription.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
LocalizedDescription.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
LocalizedDescription.ModifyUnset=Notify Unset Changes
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
LocalizedDescription.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=Modify Pokédex
|
||||
LocalizedDescription.SetUpdatePKM=Modify PKM Info
|
||||
LocalizedDescription.ShinySprites=Shiny Sprites
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=Unicode
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=Block Data
|
||||
Main.B_CellsStickers=Cells/Stickers
|
||||
Main.B_CGearSkin=C-Gear Skin
|
||||
|
|
@ -527,14 +559,12 @@ SAV_HallOfFame.Label_Species=Species:
|
|||
SAV_HallOfFame.Label_TID=TID:
|
||||
SAV_HallOfFame7.B_Cancel=Cancel
|
||||
SAV_HallOfFame7.B_Close=Save
|
||||
SAV_HallOfFame7.CHK_Flag=Flag
|
||||
SAV_HallOfFame7.L_C1=PKM 1:
|
||||
SAV_HallOfFame7.L_C2=PKM 2:
|
||||
SAV_HallOfFame7.L_C3=PKM 3:
|
||||
SAV_HallOfFame7.L_C4=PKM 4:
|
||||
SAV_HallOfFame7.L_C5=PKM 5:
|
||||
SAV_HallOfFame7.L_C6=PKM 6:
|
||||
SAV_HallOfFame7.L_Count=Count:
|
||||
SAV_HallOfFame7.L_EC=Starter EC:
|
||||
SAV_HallOfFame7.L_F1=PKM 1:
|
||||
SAV_HallOfFame7.L_F2=PKM 2:
|
||||
|
|
@ -1397,33 +1427,6 @@ SAV_ZygardeCell.B_GiveAll=Collect All
|
|||
SAV_ZygardeCell.B_Save=Save
|
||||
SAV_ZygardeCell.L_Cells=Stored:
|
||||
SAV_ZygardeCell.L_Collected=Collected:
|
||||
SettingsEditor.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnsets
|
||||
SettingsEditor.ApplyMarkings=Apply Markings on Import
|
||||
SettingsEditor.ApplyNature=Apply StatNature to Nature on Import
|
||||
SettingsEditor.B_Reset=Reset All
|
||||
SettingsEditor.BAKEnabled=Automatic Save File Backups Enabled
|
||||
SettingsEditor.DetectSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
SettingsEditor.FlagIllegal=Flag Illegal Slots in Save File
|
||||
SettingsEditor.FlagMissingTracker=Flag as Illegal if HOME Tracker is Missing
|
||||
SettingsEditor.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
SettingsEditor.HideSAVDetails=Hide Save File Details in Program Title
|
||||
SettingsEditor.HideSecretDetails=Hide Secret Details in Editors
|
||||
SettingsEditor.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
SettingsEditor.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
SettingsEditor.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
SettingsEditor.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
SettingsEditor.L_Blank=Blank Save Version:
|
||||
SettingsEditor.ModifyUnset=Notify Unset Changes
|
||||
SettingsEditor.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
SettingsEditor.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
SettingsEditor.SetUpdateDex=Modify Pokédex
|
||||
SettingsEditor.SetUpdatePKM=Modify PKM Info
|
||||
SettingsEditor.ShinySprites=Shiny Sprites
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
SettingsEditor.Tab_Bool=Toggles
|
||||
SettingsEditor.Tab_Color=Colors
|
||||
SettingsEditor.Unicode=Unicode
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=Give All
|
||||
SuperTrainingEditor.B_Cancel=Cancel
|
||||
SuperTrainingEditor.B_None=Remove All
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=キャンセル
|
|||
ErrorWindow.B_Continue=続ける
|
||||
ErrorWindow.B_CopyToClipboard=クリップボードにコピー
|
||||
ErrorWindow.L_ProvideInfo=Please provide this information when reporting this error:
|
||||
LocalizedDescription.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnsets
|
||||
LocalizedDescription.ApplyMarkings=Apply Markings on Import
|
||||
LocalizedDescription.ApplyNature=Apply StatNature to Nature on Import
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=Automatic Save File Backups Enabled
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=不整合を表示
|
||||
LocalizedDescription.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=Hide Save File Details in Program Title
|
||||
LocalizedDescription.HideSecretDetails=Hide Secret Details in Editors
|
||||
LocalizedDescription.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
LocalizedDescription.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
LocalizedDescription.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
LocalizedDescription.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
LocalizedDescription.ModifyUnset=Notify Unset Changes
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
LocalizedDescription.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=ポケモン図鑑に反映
|
||||
LocalizedDescription.SetUpdatePKM=PKM情報の変更
|
||||
LocalizedDescription.ShinySprites=色違いアイコン
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=Unicode
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=Block Data
|
||||
Main.B_CellsStickers=ヌシール/セル
|
||||
Main.B_CGearSkin=Cギア スキン
|
||||
|
|
@ -527,14 +559,12 @@ SAV_HallOfFame.Label_Species=ポケモン
|
|||
SAV_HallOfFame.Label_TID=ID:
|
||||
SAV_HallOfFame7.B_Cancel=キャンセルl
|
||||
SAV_HallOfFame7.B_Close=保存
|
||||
SAV_HallOfFame7.CHK_Flag=フラグ
|
||||
SAV_HallOfFame7.L_C1=1:
|
||||
SAV_HallOfFame7.L_C2=2:
|
||||
SAV_HallOfFame7.L_C3=3:
|
||||
SAV_HallOfFame7.L_C4=4:
|
||||
SAV_HallOfFame7.L_C5=5:
|
||||
SAV_HallOfFame7.L_C6=6:
|
||||
SAV_HallOfFame7.L_Count=回数:
|
||||
SAV_HallOfFame7.L_EC=暗号化定数:
|
||||
SAV_HallOfFame7.L_F1=1:
|
||||
SAV_HallOfFame7.L_F2=2:
|
||||
|
|
@ -1391,33 +1421,6 @@ SAV_ZygardeCell.B_GiveAll=全て取得
|
|||
SAV_ZygardeCell.B_Save=保存
|
||||
SAV_ZygardeCell.L_Cells=キューブ内
|
||||
SAV_ZygardeCell.L_Collected=回収
|
||||
SettingsEditor.AllowGen1Tradeback=GB: Allow Generation 2 tradeback learnsets
|
||||
SettingsEditor.ApplyMarkings=Apply Markings on Import
|
||||
SettingsEditor.ApplyNature=Apply StatNature to Nature on Import
|
||||
SettingsEditor.B_Reset=Reset All
|
||||
SettingsEditor.BAKEnabled=Automatic Save File Backups Enabled
|
||||
SettingsEditor.DetectSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
SettingsEditor.FlagIllegal=不整合を表示
|
||||
SettingsEditor.FlagMissingTracker=Flag as Illegal if HOME Tracker is Missing
|
||||
SettingsEditor.ForceHaXOnLaunch=Force HaX mode on Program Launch
|
||||
SettingsEditor.HideSAVDetails=Hide Save File Details in Program Title
|
||||
SettingsEditor.HideSecretDetails=Hide Secret Details in Editors
|
||||
SettingsEditor.HoverSlotGlowEdges=Show PKM Glow on Hover
|
||||
SettingsEditor.HoverSlotPlayCry=Play PKM Slot Cry on Hover
|
||||
SettingsEditor.HoverSlotShowText=Show PKM Slot ToolTip on Hover
|
||||
SettingsEditor.IgnoreLegalPopup=Don't show popup if Legal!
|
||||
SettingsEditor.L_Blank=Blank Save Version:
|
||||
SettingsEditor.ModifyUnset=Notify Unset Changes
|
||||
SettingsEditor.PlaySoundLegalityCheck=PlaySoundLegalityCheck
|
||||
SettingsEditor.PlaySoundSAVLoad=PlaySoundSAVLoad
|
||||
SettingsEditor.SetUpdateDex=ポケモン図鑑に反映
|
||||
SettingsEditor.SetUpdatePKM=PKM情報の変更
|
||||
SettingsEditor.ShinySprites=色違いアイコン
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=Show Egg Sprite As Held Item
|
||||
SettingsEditor.Tab_Bool=Toggles
|
||||
SettingsEditor.Tab_Color=Colors
|
||||
SettingsEditor.Unicode=Unicode
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=全て取得
|
||||
SuperTrainingEditor.B_Cancel=キャンセル
|
||||
SuperTrainingEditor.B_None=全て消去
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=중단
|
|||
ErrorWindow.B_Continue=계속
|
||||
ErrorWindow.B_CopyToClipboard=클립보드에 복사
|
||||
ErrorWindow.L_ProvideInfo=오류를 보고할 때 이 정보를 제공해 주세요:
|
||||
LocalizedDescription.AllowGen1Tradeback=GB: 2세대에서 옮겨온 1세대 기술 허용
|
||||
LocalizedDescription.ApplyMarkings=가져오기 시 마킹하기
|
||||
LocalizedDescription.ApplyNature=임포트시 자연에 StatNature 적용
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=세이브 파일 자동 백업 사용
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=세이브 파일에서 적법하지 않은 포켓몬 표시
|
||||
LocalizedDescription.ForceHaXOnLaunch=프로그램 시작 시 HaX 모드 강제 사용
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=프로그램 제목에서 세이브 파일 상세 정보 숨기기
|
||||
LocalizedDescription.HideSecretDetails=편집 시 비밀 정보 숨기기
|
||||
LocalizedDescription.HoverSlotGlowEdges=마우스 오버 시 포켓몬 빛내기
|
||||
LocalizedDescription.HoverSlotPlayCry=마우스 오버 시 포켓몬 울음소리 재생
|
||||
LocalizedDescription.HoverSlotShowText=마우스 오버 시 포켓몬 툴팁 표시
|
||||
LocalizedDescription.IgnoreLegalPopup=적법한 포켓몬일 경우 팝업 표시 안 함
|
||||
LocalizedDescription.ModifyUnset=적용하지 않은 변경 사항 알림
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=적법성 검사 창을 띄울 때 소리로 알림
|
||||
LocalizedDescription.PlaySoundSAVLoad=새 세이브 파일을 불러올 때 소리로 알림
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=포켓몬 도감 자동 수정
|
||||
LocalizedDescription.SetUpdatePKM=포켓몬 정보 자동 수정
|
||||
LocalizedDescription.ShinySprites=이로치 스프라이트 사용
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=알 스프라이트를 지닌 물건에 표시
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=유니코드 사용
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=블록 데이터
|
||||
Main.B_CellsStickers=셀/스티커
|
||||
Main.B_CGearSkin=C기어 스킨
|
||||
|
|
@ -523,14 +555,12 @@ SAV_HallOfFame.Label_Species=종류:
|
|||
SAV_HallOfFame.Label_TID=TID:
|
||||
SAV_HallOfFame7.B_Cancel=취소
|
||||
SAV_HallOfFame7.B_Close=저장
|
||||
SAV_HallOfFame7.CHK_Flag=플래그
|
||||
SAV_HallOfFame7.L_C1=포켓몬 1:
|
||||
SAV_HallOfFame7.L_C2=포켓몬 2:
|
||||
SAV_HallOfFame7.L_C3=포켓몬 3:
|
||||
SAV_HallOfFame7.L_C4=포켓몬 4:
|
||||
SAV_HallOfFame7.L_C5=포켓몬 5:
|
||||
SAV_HallOfFame7.L_C6=포켓몬 6:
|
||||
SAV_HallOfFame7.L_Count=Count:
|
||||
SAV_HallOfFame7.L_EC=스타팅 EC:
|
||||
SAV_HallOfFame7.L_F1=포켓몬 1:
|
||||
SAV_HallOfFame7.L_F2=포켓몬 2:
|
||||
|
|
@ -1387,33 +1417,6 @@ SAV_ZygardeCell.B_GiveAll=모두 모으기
|
|||
SAV_ZygardeCell.B_Save=저장
|
||||
SAV_ZygardeCell.L_Cells=보관됨:
|
||||
SAV_ZygardeCell.L_Collected=회수함:
|
||||
SettingsEditor.AllowGen1Tradeback=GB: 2세대에서 옮겨온 1세대 기술 허용
|
||||
SettingsEditor.ApplyMarkings=가져오기 시 마킹하기
|
||||
SettingsEditor.ApplyNature=임포트시 자연에 StatNature 적용
|
||||
SettingsEditor.B_Reset=초기화
|
||||
SettingsEditor.BAKEnabled=세이브 파일 자동 백업 사용
|
||||
SettingsEditor.DetectSaveOnStartup=프로그램 시작 시 세이브 파일 자동 감지
|
||||
SettingsEditor.FlagIllegal=세이브 파일에서 적법하지 않은 포켓몬 표시
|
||||
SettingsEditor.FlagMissingTracker=Flag as Illegal if HOME Tracker is Missing
|
||||
SettingsEditor.ForceHaXOnLaunch=프로그램 시작 시 HaX 모드 강제 사용
|
||||
SettingsEditor.HideSAVDetails=프로그램 제목에서 세이브 파일 상세 정보 숨기기
|
||||
SettingsEditor.HideSecretDetails=편집 시 비밀 정보 숨기기
|
||||
SettingsEditor.HoverSlotGlowEdges=마우스 오버 시 포켓몬 빛내기
|
||||
SettingsEditor.HoverSlotPlayCry=마우스 오버 시 포켓몬 울음소리 재생
|
||||
SettingsEditor.HoverSlotShowText=마우스 오버 시 포켓몬 툴팁 표시
|
||||
SettingsEditor.IgnoreLegalPopup=적법한 포켓몬일 경우 팝업 표시 안 함
|
||||
SettingsEditor.L_Blank=빈 세이브 버전:
|
||||
SettingsEditor.ModifyUnset=적용하지 않은 변경 사항 알림
|
||||
SettingsEditor.PlaySoundLegalityCheck=적법성 검사 창을 띄울 때 소리로 알림
|
||||
SettingsEditor.PlaySoundSAVLoad=새 세이브 파일을 불러올 때 소리로 알림
|
||||
SettingsEditor.SetUpdateDex=포켓몬 도감 자동 수정
|
||||
SettingsEditor.SetUpdatePKM=포켓몬 정보 자동 수정
|
||||
SettingsEditor.ShinySprites=이로치 스프라이트 사용
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=알 스프라이트를 지닌 물건에 표시
|
||||
SettingsEditor.Tab_Bool=토글
|
||||
SettingsEditor.Tab_Color=색상
|
||||
SettingsEditor.Unicode=유니코드 사용
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=모두 주기
|
||||
SuperTrainingEditor.B_Cancel=취소
|
||||
SuperTrainingEditor.B_None=모두 제거
|
||||
|
|
|
|||
|
|
@ -72,6 +72,38 @@ ErrorWindow.B_Abort=终止
|
|||
ErrorWindow.B_Continue=继续
|
||||
ErrorWindow.B_CopyToClipboard=复制到剪切板
|
||||
ErrorWindow.L_ProvideInfo=提交错误报告时请提供以下信息:
|
||||
LocalizedDescription.AllowGen1Tradeback=GB 允许二代传回的招式组合
|
||||
LocalizedDescription.ApplyMarkings=导入时标记
|
||||
LocalizedDescription.ApplyNature=在导入时将StatNature应用于自然
|
||||
LocalizedDescription.AutoLoadSaveOnStartup=Automatically Detect Save File on Program Startup
|
||||
LocalizedDescription.BAKEnabled=自动保存文件备份已启用
|
||||
LocalizedDescription.BAKPrompt=Tracks if the "Create Backup" prompt has been issued to the user.
|
||||
LocalizedDescription.FlagIllegal=标记不合法
|
||||
LocalizedDescription.ForceHaXOnLaunch=程序启动时强制HaX模式
|
||||
LocalizedDescription.Gen7TransferStarPID=Severity to flag a Legality Check if Pokémon from Gen1/2 has a Star Shiny PID.
|
||||
LocalizedDescription.Gen8MemoryLocationTextVariable=Severity to flag a Legality Check if a Gen8 Location Memory text variable is present.
|
||||
LocalizedDescription.Gen8TransferTrackerNotPresent=Severity to flag a Legality Check if the HOME Tracker is Missing
|
||||
LocalizedDescription.HideSAVDetails=隐藏程序标题中的保存文件详细信息
|
||||
LocalizedDescription.HideSecretDetails=在编辑器中隐藏秘密细节
|
||||
LocalizedDescription.HoverSlotGlowEdges=在悬停时显示PKM Glow
|
||||
LocalizedDescription.HoverSlotPlayCry=在悬停时播放PKM Slot Cry
|
||||
LocalizedDescription.HoverSlotShowText=在悬停上显示PKM Slot ToolTip
|
||||
LocalizedDescription.IgnoreLegalPopup=如果合法不显示弹窗!
|
||||
LocalizedDescription.ModifyUnset=未保存修改提醒
|
||||
LocalizedDescription.NicknamedAnotherSpecies=Severity to flag a Legality Check if Pokémon has a Nickname matching another Species.
|
||||
LocalizedDescription.NicknamedMysteryGift=Severity to flag a Legality Check if it is a nicknamed Mystery Gift the player cannot normally nickname.
|
||||
LocalizedDescription.NicknamedTrade=Severity to flag a Legality Check if it is a nicknamed In-Game Trade the player cannot normally nickname.
|
||||
LocalizedDescription.OtherBackupPaths=List of extra locations to look for Save Files.
|
||||
LocalizedDescription.PlaySoundLegalityCheck=弹窗合法性报告时播放声音
|
||||
LocalizedDescription.PlaySoundSAVLoad=读取新档时播放声音
|
||||
LocalizedDescription.RNGFrameNotFound=Severity to flag a Legality Check if the RNG Frame Checking logic does not find a match.
|
||||
LocalizedDescription.SetUpdateDex=修改图鉴
|
||||
LocalizedDescription.SetUpdatePKM=修改宝可梦
|
||||
LocalizedDescription.ShinySprites=异色图标
|
||||
LocalizedDescription.ShowEggSpriteAsHeldItem=将蛋作为持有物品展示
|
||||
LocalizedDescription.TryDetectRecentSave=Automatically locates the most recently saved Save File when opening a new file.
|
||||
LocalizedDescription.Unicode=统一
|
||||
LocalizedDescription.Version=Last version that the program was run with.
|
||||
Main.B_Blocks=数据块
|
||||
Main.B_CellsStickers=细胞/贴纸
|
||||
Main.B_CGearSkin=C装置皮肤
|
||||
|
|
@ -523,14 +555,12 @@ SAV_HallOfFame.Label_Species=种类:
|
|||
SAV_HallOfFame.Label_TID=表ID:
|
||||
SAV_HallOfFame7.B_Cancel=取消
|
||||
SAV_HallOfFame7.B_Close=保存
|
||||
SAV_HallOfFame7.CHK_Flag=旗标
|
||||
SAV_HallOfFame7.L_C1=精灵1:
|
||||
SAV_HallOfFame7.L_C2=精灵2:
|
||||
SAV_HallOfFame7.L_C3=精灵3:
|
||||
SAV_HallOfFame7.L_C4=精灵4:
|
||||
SAV_HallOfFame7.L_C5=精灵5:
|
||||
SAV_HallOfFame7.L_C6=精灵6:
|
||||
SAV_HallOfFame7.L_Count=数量:
|
||||
SAV_HallOfFame7.L_EC=御三家加密常数:
|
||||
SAV_HallOfFame7.L_F1=精灵1:
|
||||
SAV_HallOfFame7.L_F2=精灵2:
|
||||
|
|
@ -1387,33 +1417,6 @@ SAV_ZygardeCell.B_GiveAll=全部收集
|
|||
SAV_ZygardeCell.B_Save=保存
|
||||
SAV_ZygardeCell.L_Cells=储存了:
|
||||
SAV_ZygardeCell.L_Collected=收集了:
|
||||
SettingsEditor.AllowGen1Tradeback=GB 允许二代传回的招式组合
|
||||
SettingsEditor.ApplyMarkings=导入时标记
|
||||
SettingsEditor.ApplyNature=在导入时将StatNature应用于自然
|
||||
SettingsEditor.B_Reset=重置
|
||||
SettingsEditor.BAKEnabled=自动保存文件备份已启用
|
||||
SettingsEditor.DetectSaveOnStartup=在程序启动时自动检测保存文件
|
||||
SettingsEditor.FlagIllegal=标记不合法
|
||||
SettingsEditor.FlagMissingTracker=HOME追踪丢失标记为非法
|
||||
SettingsEditor.ForceHaXOnLaunch=程序启动时强制HaX模式
|
||||
SettingsEditor.HideSAVDetails=隐藏程序标题中的保存文件详细信息
|
||||
SettingsEditor.HideSecretDetails=在编辑器中隐藏秘密细节
|
||||
SettingsEditor.HoverSlotGlowEdges=在悬停时显示PKM Glow
|
||||
SettingsEditor.HoverSlotPlayCry=在悬停时播放PKM Slot Cry
|
||||
SettingsEditor.HoverSlotShowText=在悬停上显示PKM Slot ToolTip
|
||||
SettingsEditor.IgnoreLegalPopup=如果合法不显示弹窗!
|
||||
SettingsEditor.L_Blank=空白保存版本:
|
||||
SettingsEditor.ModifyUnset=未保存修改提醒
|
||||
SettingsEditor.PlaySoundLegalityCheck=弹窗合法性报告时播放声音
|
||||
SettingsEditor.PlaySoundSAVLoad=读取新档时播放声音
|
||||
SettingsEditor.SetUpdateDex=修改图鉴
|
||||
SettingsEditor.SetUpdatePKM=修改宝可梦
|
||||
SettingsEditor.ShinySprites=异色图标
|
||||
SettingsEditor.ShowEggSpriteAsHeldItem=将蛋作为持有物品展示
|
||||
SettingsEditor.Tab_Bool=切换
|
||||
SettingsEditor.Tab_Color=颜色
|
||||
SettingsEditor.Unicode=统一
|
||||
SettingsEditor.UseLargeSprites=Always Use Large Sprites (Past Games)
|
||||
SuperTrainingEditor.B_All=获得全部
|
||||
SuperTrainingEditor.B_Cancel=取消
|
||||
SuperTrainingEditor.B_None=全部清除
|
||||
|
|
|
|||
|
|
@ -1,27 +0,0 @@
|
|||
using System.Diagnostics;
|
||||
|
||||
namespace PKHeX.WinForms.Properties
|
||||
{
|
||||
// This class allows you to handle specific events on the settings class:
|
||||
// The SettingChanging event is raised before a setting's value is changed.
|
||||
// The PropertyChanged event is raised after a setting's value is changed.
|
||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
||||
// The SettingsSaving event is raised before the setting values are saved.
|
||||
internal sealed partial class Settings
|
||||
{
|
||||
private Settings()
|
||||
{
|
||||
SettingChanging += SettingChangingEventHandler;
|
||||
SettingsSaving += SettingsSavingEventHandler;
|
||||
}
|
||||
|
||||
private static void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
||||
Debug.WriteLine($"Changed setting: {e.SettingName}");
|
||||
// Add code to handle the SettingChangingEvent event here.
|
||||
}
|
||||
|
||||
private static void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
||||
Debug.WriteLine("Saving settings...");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -67,7 +67,7 @@ public SAV_Database(PKMEditor f1, SAVEditor saveditor)
|
|||
};
|
||||
|
||||
slot.ContextMenuStrip = mnu;
|
||||
if (Settings.Default.HoverSlotShowText)
|
||||
if (Main.Settings.Hover.HoverSlotShowText)
|
||||
slot.MouseEnter += (o, args) => ShowHoverTextForSlot(slot, args);
|
||||
}
|
||||
|
||||
|
|
@ -319,8 +319,7 @@ private void GenerateDBReport(object sender, EventArgs e)
|
|||
private void LoadDatabase()
|
||||
{
|
||||
var otherPaths = new List<string>{Main.BackupPath};
|
||||
if (File.Exists(Main.SAVPaths))
|
||||
otherPaths.AddRange(File.ReadLines(Main.SAVPaths).Where(Directory.Exists));
|
||||
otherPaths.AddRange(Main.Settings.Backup.OtherBackupPaths.Where(Directory.Exists));
|
||||
|
||||
RawDB = LoadPKMSaves(DatabasePath, SAV, otherPaths);
|
||||
|
||||
|
|
@ -555,10 +554,11 @@ private async void B_Search_Click(object sender, EventArgs e)
|
|||
var search = SearchDatabase();
|
||||
|
||||
bool legalSearch = Menu_SearchLegal.Checked ^ Menu_SearchIllegal.Checked;
|
||||
if (legalSearch && WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MsgDBSearchLegalityWordfilter) == DialogResult.No)
|
||||
bool wordFilter = ParseSettings.CheckWordFilter;
|
||||
if (wordFilter && legalSearch && WinFormsUtil.Prompt(MessageBoxButtons.YesNo, MsgDBSearchLegalityWordfilter) == DialogResult.No)
|
||||
ParseSettings.CheckWordFilter = false;
|
||||
var results = await Task.Run(() => search.ToList()).ConfigureAwait(true);
|
||||
ParseSettings.CheckWordFilter = true;
|
||||
ParseSettings.CheckWordFilter = wordFilter;
|
||||
|
||||
if (results.Count == 0)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ public SAV_Encounters(PKMEditor f1)
|
|||
ClickView(sender, e);
|
||||
};
|
||||
slot.ContextMenuStrip = mnu;
|
||||
if (Settings.Default.HoverSlotShowText)
|
||||
if (Main.Settings.Hover.HoverSlotShowText)
|
||||
slot.MouseEnter += (o, args) => ShowHoverTextForSlot(slot, args);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,7 +31,12 @@ public SAV_FolderList(Action<SaveFile> openSaveFile)
|
|||
dgDataRecent.ContextMenuStrip = GetContextMenu(dgDataRecent);
|
||||
dgDataBackup.ContextMenuStrip = GetContextMenu(dgDataBackup);
|
||||
|
||||
var recent = SaveFinder.GetSaveFiles(drives, false, Paths.Select(z => z.Path).Where(z => z != Main.BackupPath));
|
||||
var extra = Paths.Select(z => z.Path).Where(z => z != Main.BackupPath).Distinct();
|
||||
var recent = SaveFinder.GetSaveFiles(drives, false, extra).ToList();
|
||||
var loaded = Main.Settings.Startup.RecentlyLoaded
|
||||
.Where(z => recent.All(x => x.Metadata.FilePath != z))
|
||||
.Where(File.Exists).Select(SaveUtil.GetVariantSAV).Where(z => z is not null);
|
||||
recent.AddRange(loaded!);
|
||||
Recent = PopulateData(dgDataRecent, recent);
|
||||
var backup = SaveFinder.GetSaveFiles(drives, false, Main.BackupPath);
|
||||
Backup = PopulateData(dgDataBackup, backup);
|
||||
|
|
@ -65,7 +70,6 @@ public SAV_FolderList(Action<SaveFile> openSaveFile)
|
|||
// Preprogrammed folders
|
||||
foreach (var loc in Paths)
|
||||
AddButton(loc.DisplayText, loc.Path);
|
||||
AddCustomizeButton();
|
||||
|
||||
dgDataRecent.DoubleBuffered(true);
|
||||
dgDataBackup.DoubleBuffered(true);
|
||||
|
|
@ -104,27 +108,9 @@ private void AddButton(string name, string path)
|
|||
Close();
|
||||
};
|
||||
FLP_Buttons.Controls.Add(button);
|
||||
}
|
||||
|
||||
private void AddCustomizeButton()
|
||||
{
|
||||
const string name = "Customize";
|
||||
Button button = GetCustomButton(name);
|
||||
button.Click += (s, e) =>
|
||||
{
|
||||
var loc = Main.SAVPaths;
|
||||
if (!File.Exists(loc))
|
||||
{
|
||||
var custom = Paths.Where(z => z.Custom).ToList();
|
||||
if (custom.Count == 0)
|
||||
Paths.Add(new CustomFolderPath("DISPLAY_TEXT", "FOLDER_PATH", true));
|
||||
var lines = custom.Select(z => ((CustomFolderPath)z).ToString());
|
||||
File.WriteAllLines(loc, lines);
|
||||
}
|
||||
Process.Start(loc);
|
||||
Close();
|
||||
};
|
||||
FLP_Buttons.Controls.Add(button);
|
||||
var hover = new ToolTip {AutoPopDelay = 30_000};
|
||||
button.MouseHover += (s, e) => hover.Show(path, button);
|
||||
}
|
||||
|
||||
private static Button GetCustomButton(string name)
|
||||
|
|
@ -139,11 +125,7 @@ private static Button GetCustomButton(string name)
|
|||
|
||||
private static IEnumerable<CustomFolderPath> GetUserPaths()
|
||||
{
|
||||
string loc = Main.SAVPaths;
|
||||
if (!File.Exists(loc))
|
||||
return Enumerable.Empty<CustomFolderPath>();
|
||||
|
||||
var lines = File.ReadLines(loc);
|
||||
var lines = Main.Settings.Backup.OtherBackupPaths;
|
||||
return lines.Select(z => z.Split('\t'))
|
||||
.Where(a => a.Length == 2)
|
||||
.Select(x => new CustomFolderPath(x, true));
|
||||
|
|
|
|||
|
|
@ -61,8 +61,7 @@ public SAV_MysteryGiftDB(PKMEditor tabs, SAVEditor sav)
|
|||
};
|
||||
|
||||
slot.ContextMenuStrip = mnu;
|
||||
if (Settings.Default.HoverSlotShowText)
|
||||
slot.MouseEnter += (o, args) => ShowHoverTextForSlot(slot, args);
|
||||
slot.MouseEnter += (o, args) => ShowHoverTextForSlot(slot, args);
|
||||
}
|
||||
|
||||
Counter = L_Count.Text;
|
||||
|
|
|
|||
|
|
@ -24,7 +24,9 @@ public SAV_BlockDump8(SaveFile sav)
|
|||
|
||||
PG_BlockView.Size = RTB_Hex.Size;
|
||||
|
||||
Metadata = new SCBlockMetadata(SAV.Blocks);
|
||||
// Get an external source of names if available.
|
||||
var extra = GetExtraKeyNames();
|
||||
Metadata = new SCBlockMetadata(SAV.Blocks, extra);
|
||||
|
||||
CB_Key.InitializeBinding();
|
||||
CB_Key.DataSource = Metadata.GetSortedBlockKeyList().ToArray();
|
||||
|
|
@ -43,6 +45,12 @@ public SAV_BlockDump8(SaveFile sav)
|
|||
CB_Key.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
private static IEnumerable<string> GetExtraKeyNames()
|
||||
{
|
||||
var extra = Main.Settings.Advanced.PathBlockKeyListSWSH;
|
||||
return File.Exists(extra) ? File.ReadLines(extra) : Array.Empty<string>();
|
||||
}
|
||||
|
||||
private void CB_Key_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
var key = (uint)WinFormsUtil.GetIndex(CB_Key);
|
||||
|
|
@ -206,7 +214,9 @@ private void CompareSaves()
|
|||
if (s2 is not SAV8SWSH w2)
|
||||
return;
|
||||
|
||||
var compare = new SCBlockCompare(w1.Blocks, w2.Blocks);
|
||||
// Get an external source of names if available.
|
||||
var extra = GetExtraKeyNames();
|
||||
var compare = new SCBlockCompare(w1.Blocks, w2.Blocks, extra);
|
||||
richTextBox1.Lines = compare.Summary().ToArray();
|
||||
}
|
||||
|
||||
|
|
|
|||
57
PKHeX.WinForms/Subforms/SettingsEditor.Designer.cs
generated
57
PKHeX.WinForms/Subforms/SettingsEditor.Designer.cs
generated
|
|
@ -32,15 +32,8 @@ private void InitializeComponent()
|
|||
this.L_Blank = new System.Windows.Forms.Label();
|
||||
this.CB_Blank = new System.Windows.Forms.ComboBox();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.Tab_Bool = new System.Windows.Forms.TabPage();
|
||||
this.FLP_Settings = new System.Windows.Forms.FlowLayoutPanel();
|
||||
this.Tab_Color = new System.Windows.Forms.TabPage();
|
||||
this.PG_Color = new System.Windows.Forms.PropertyGrid();
|
||||
this.B_Reset = new System.Windows.Forms.Button();
|
||||
this.FLP_Blank.SuspendLayout();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.Tab_Bool.SuspendLayout();
|
||||
this.Tab_Color.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// FLP_Blank
|
||||
|
|
@ -74,54 +67,14 @@ private void InitializeComponent()
|
|||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Controls.Add(this.Tab_Bool);
|
||||
this.tabControl1.Controls.Add(this.Tab_Color);
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 27);
|
||||
this.tabControl1.Multiline = true;
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(334, 284);
|
||||
this.tabControl1.TabIndex = 3;
|
||||
//
|
||||
// Tab_Bool
|
||||
//
|
||||
this.Tab_Bool.Controls.Add(this.FLP_Settings);
|
||||
this.Tab_Bool.Location = new System.Drawing.Point(4, 22);
|
||||
this.Tab_Bool.Name = "Tab_Bool";
|
||||
this.Tab_Bool.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.Tab_Bool.Size = new System.Drawing.Size(326, 258);
|
||||
this.Tab_Bool.TabIndex = 0;
|
||||
this.Tab_Bool.Text = "Toggles";
|
||||
this.Tab_Bool.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// FLP_Settings
|
||||
//
|
||||
this.FLP_Settings.AutoScroll = true;
|
||||
this.FLP_Settings.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.FLP_Settings.Location = new System.Drawing.Point(3, 3);
|
||||
this.FLP_Settings.Name = "FLP_Settings";
|
||||
this.FLP_Settings.Size = new System.Drawing.Size(320, 252);
|
||||
this.FLP_Settings.TabIndex = 3;
|
||||
//
|
||||
// Tab_Color
|
||||
//
|
||||
this.Tab_Color.Controls.Add(this.PG_Color);
|
||||
this.Tab_Color.Location = new System.Drawing.Point(4, 22);
|
||||
this.Tab_Color.Name = "Tab_Color";
|
||||
this.Tab_Color.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.Tab_Color.Size = new System.Drawing.Size(326, 258);
|
||||
this.Tab_Color.TabIndex = 1;
|
||||
this.Tab_Color.Text = "Colors";
|
||||
this.Tab_Color.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// PG_Color
|
||||
//
|
||||
this.PG_Color.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.PG_Color.Location = new System.Drawing.Point(3, 3);
|
||||
this.PG_Color.Name = "PG_Color";
|
||||
this.PG_Color.Size = new System.Drawing.Size(320, 252);
|
||||
this.PG_Color.TabIndex = 0;
|
||||
//
|
||||
// B_Reset
|
||||
//
|
||||
this.B_Reset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
|
|
@ -148,13 +101,9 @@ private void InitializeComponent()
|
|||
this.Name = "SettingsEditor";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "Settings";
|
||||
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SettingsEditor_FormClosing);
|
||||
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SettingsEditor_KeyDown);
|
||||
this.FLP_Blank.ResumeLayout(false);
|
||||
this.FLP_Blank.PerformLayout();
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.Tab_Bool.ResumeLayout(false);
|
||||
this.Tab_Color.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
|
@ -165,10 +114,6 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.Label L_Blank;
|
||||
private System.Windows.Forms.ComboBox CB_Blank;
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage Tab_Bool;
|
||||
private System.Windows.Forms.FlowLayoutPanel FLP_Settings;
|
||||
private System.Windows.Forms.TabPage Tab_Color;
|
||||
private System.Windows.Forms.PropertyGrid PG_Color;
|
||||
private System.Windows.Forms.Button B_Reset;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,38 +1,26 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
using PKHeX.Core;
|
||||
using PKHeX.WinForms.Properties;
|
||||
|
||||
namespace PKHeX.WinForms
|
||||
{
|
||||
public partial class SettingsEditor : Form
|
||||
{
|
||||
public SettingsEditor(object? obj, params string[] blacklist)
|
||||
public SettingsEditor(object obj)
|
||||
{
|
||||
InitializeComponent();
|
||||
SettingsObject = obj ?? Settings.Default;
|
||||
LoadSettings(blacklist);
|
||||
LoadSettings(obj);
|
||||
|
||||
WinFormsUtil.TranslateInterface(this, Main.CurrentLanguage);
|
||||
// reorder checkboxes
|
||||
var checkboxes = FLP_Settings.Controls.OfType<CheckBox>().OrderBy(z => z.Text).ToList();
|
||||
var ctr = 0;
|
||||
foreach (var c in checkboxes)
|
||||
FLP_Settings.Controls.SetChildIndex(c, ctr++);
|
||||
|
||||
if (obj is Settings s)
|
||||
if (obj is PKHeXSettings s)
|
||||
{
|
||||
var noSelectVersions = new[] {GameVersion.GO};
|
||||
CB_Blank.InitializeBinding();
|
||||
CB_Blank.DataSource = GameInfo.VersionDataSource.Where(z => !noSelectVersions.Contains((GameVersion)z.Value)).ToList();
|
||||
CB_Blank.SelectedValue = (int) s.DefaultSaveVersion;
|
||||
CB_Blank.SelectedValueChanged += (_, __) => s.DefaultSaveVersion = (GameVersion)WinFormsUtil.GetIndex(CB_Blank);
|
||||
CB_Blank.SelectedValue = (int) s.Startup.DefaultSaveVersion;
|
||||
CB_Blank.SelectedValueChanged += (_, __) => s.Startup.DefaultSaveVersion = (GameVersion)WinFormsUtil.GetIndex(CB_Blank);
|
||||
B_Reset.Click += (x, e) => DeleteSettings();
|
||||
}
|
||||
else
|
||||
|
|
@ -41,54 +29,26 @@ public SettingsEditor(object? obj, params string[] blacklist)
|
|||
B_Reset.Visible = false;
|
||||
}
|
||||
|
||||
PG_Color.SelectedObject = Main.Draw;
|
||||
this.CenterToForm(FindForm());
|
||||
}
|
||||
|
||||
private void SettingsEditor_FormClosing(object sender, FormClosingEventArgs e) => SaveSettings();
|
||||
|
||||
private readonly object SettingsObject;
|
||||
|
||||
private void LoadSettings(IReadOnlyList<string> blacklist)
|
||||
private void LoadSettings(object obj)
|
||||
{
|
||||
var type = SettingsObject.GetType();
|
||||
var type = obj.GetType();
|
||||
var props = ReflectUtil.GetPropertiesCanWritePublicDeclared(type);
|
||||
if (ModifierKeys != Keys.Control)
|
||||
props = props.Except(blacklist);
|
||||
foreach (var p in props)
|
||||
{
|
||||
var state = ReflectUtil.GetValue(Settings.Default, p);
|
||||
switch (state)
|
||||
{
|
||||
case bool b:
|
||||
var chk = GetCheckBox(p, b);
|
||||
FLP_Settings.Controls.Add(chk);
|
||||
FLP_Settings.SetFlowBreak(chk, true);
|
||||
if (blacklist.Contains(p))
|
||||
chk.ForeColor = Color.Red;
|
||||
continue;
|
||||
}
|
||||
var state = ReflectUtil.GetValue(obj, p);
|
||||
if (state is null)
|
||||
continue;
|
||||
|
||||
var tab = new TabPage(p);
|
||||
var pg = new PropertyGrid { SelectedObject = state, Dock = DockStyle.Fill };
|
||||
tab.Controls.Add(pg);
|
||||
tabControl1.TabPages.Add(tab);
|
||||
}
|
||||
}
|
||||
|
||||
private void SaveSettings()
|
||||
{
|
||||
foreach (var s in FLP_Settings.Controls.OfType<Control>())
|
||||
ReflectUtil.SetValue(SettingsObject, s.Name, GetValue(s));
|
||||
}
|
||||
|
||||
private static CheckBox GetCheckBox(string name, bool state) => new()
|
||||
{
|
||||
Name = name, Checked = state, Text = name,
|
||||
AutoSize = true,
|
||||
};
|
||||
|
||||
private static object GetValue(IDisposable control) => control switch
|
||||
{
|
||||
CheckBox cb => cb.Checked,
|
||||
_ => throw new Exception(nameof(control)),
|
||||
};
|
||||
|
||||
private void SettingsEditor_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.W && ModifierKeys == Keys.Control)
|
||||
|
|
@ -102,7 +62,7 @@ private static void DeleteSettings()
|
|||
var dr = WinFormsUtil.Prompt(MessageBoxButtons.YesNo, "Resetting settings requires the program to exit.", MessageStrings.MsgContinue);
|
||||
if (dr != DialogResult.Yes)
|
||||
return;
|
||||
var path = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal).FilePath;
|
||||
var path = Main.ConfigPath;
|
||||
if (File.Exists(path))
|
||||
File.Delete(path);
|
||||
System.Diagnostics.Process.Start(Application.ExecutablePath);
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
using System.Configuration;
|
||||
using System.IO;
|
||||
|
||||
namespace PKHeX.WinForms
|
||||
{
|
||||
public static class ConfigUtil
|
||||
{
|
||||
public static bool CheckConfig()
|
||||
{
|
||||
try
|
||||
{
|
||||
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
|
||||
return true;
|
||||
}
|
||||
catch (ConfigurationErrorsException e)
|
||||
{
|
||||
var path = (e.InnerException as ConfigurationErrorsException)?.Filename;
|
||||
if (path != null && File.Exists(path))
|
||||
File.Delete(path);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -46,12 +46,17 @@ private static ToolStripMenuItem GetTranslationUpdater()
|
|||
|
||||
private static void UpdateTranslations()
|
||||
{
|
||||
WinFormsTranslator.SetRemovalMode(false); // add mode
|
||||
// add mode
|
||||
WinFormsTranslator.SetRemovalMode(false);
|
||||
WinFormsTranslator.LoadSettings<PKHeXSettings>(DefaultLanguage);
|
||||
WinFormsTranslator.LoadAllForms(LoadBanlist); // populate with every possible control
|
||||
WinFormsTranslator.UpdateAll(DefaultLanguage, Languages); // propagate to others
|
||||
WinFormsTranslator.DumpAll(Banlist); // dump current to file
|
||||
|
||||
// de-populate
|
||||
WinFormsTranslator.SetRemovalMode(); // remove used keys, don't add any
|
||||
WinFormsTranslator.LoadAllForms(LoadBanlist); // de-populate
|
||||
WinFormsTranslator.LoadSettings<PKHeXSettings>(DefaultLanguage, false);
|
||||
WinFormsTranslator.LoadAllForms(LoadBanlist);
|
||||
WinFormsTranslator.RemoveAll(DefaultLanguage, PurgeBanlist); // remove all lines from above generated files that still remain
|
||||
|
||||
// Move translated files from the debug exe loc to their project location
|
||||
|
|
@ -93,7 +98,6 @@ private static void UpdateTranslations()
|
|||
"Main.L_Potential", // ★☆☆☆ IV judge evaluation
|
||||
"SAV_HoneyTree.L_Tree0", // dynamic, don't bother
|
||||
"SAV_Misc3.BTN_Symbol", // symbols should stay as their current character
|
||||
"SettingsEditor.BAKPrompt", // internal setting
|
||||
"SAV_GameSelect.L_Prompt", // prompt text (dynamic)
|
||||
"SAV_BlockDump8.L_BlockName", // Block name (dynamic)
|
||||
};
|
||||
|
|
|
|||
|
|
@ -16,6 +16,8 @@ public static class WinFormsTranslator
|
|||
private static string GetTranslationFileNameInternal(string lang) => $"lang_{lang}";
|
||||
private static string GetTranslationFileNameExternal(string lang) => $"lang_{lang}.txt";
|
||||
|
||||
public static IReadOnlyDictionary<string, string> GetDictionary(string lang) => GetContext(lang).Lookup;
|
||||
|
||||
private static TranslationContext GetContext(string lang)
|
||||
{
|
||||
if (Context.TryGetValue(lang, out var context))
|
||||
|
|
@ -93,7 +95,7 @@ private static IEnumerable<object> GetTranslatableControls(Control f)
|
|||
yield return obj;
|
||||
}
|
||||
|
||||
if (z is ListControl || z is TextBoxBase || z is LinkLabel || z is NumericUpDown || z is ContainerControl)
|
||||
if (z is ListControl or TextBoxBase or LinkLabel or NumericUpDown or ContainerControl)
|
||||
break; // undesirable to modify, ignore
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(z.Text))
|
||||
|
|
@ -209,6 +211,34 @@ public static void RemoveAll(string defaultLanguage, params string[] banlist)
|
|||
File.WriteAllLines(fn, result);
|
||||
}
|
||||
}
|
||||
|
||||
public static void LoadSettings<T>(string defaultLanguage, bool add = true)
|
||||
{
|
||||
var context = (Dictionary<string, string>)Context[defaultLanguage].Lookup;
|
||||
var props = typeof(T).GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
|
||||
foreach (var prop in props)
|
||||
{
|
||||
var p = prop.PropertyType.GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance);
|
||||
foreach (var x in p)
|
||||
{
|
||||
var individual = (LocalizedDescriptionAttribute[])x.GetCustomAttributes(typeof(LocalizedDescriptionAttribute), false);
|
||||
foreach (var v in individual)
|
||||
{
|
||||
var hasKey = context.ContainsKey(v.Key);
|
||||
if (add)
|
||||
{
|
||||
if (!hasKey)
|
||||
context.Add(v.Key, v.Fallback);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (hasKey)
|
||||
context.Remove(v.Key);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class TranslationContext
|
||||
|
|
@ -217,6 +247,7 @@ public sealed class TranslationContext
|
|||
public bool RemoveUsedKeys { private get; set; }
|
||||
public const char Separator = '=';
|
||||
private readonly Dictionary<string, string> Translation = new();
|
||||
public IReadOnlyDictionary<string, string> Lookup => Translation;
|
||||
|
||||
public TranslationContext(IEnumerable<string> content, char separator = Separator)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user