mirror of
https://github.com/kwsch/PKHeX.git
synced 2026-09-08 13:25:32 -05:00
Merge branch 'master' of https://github.com/kwsch/PKHeX
This commit is contained in:
10
PKHeX.sln
10
PKHeX.sln
@@ -11,14 +11,24 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{7C0598C9
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
ClickOnce-Debug|x86 = ClickOnce-Debug|x86
|
||||
ClickOnce-Release|x86 = ClickOnce-Release|x86
|
||||
Debug|x86 = Debug|x86
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.ClickOnce-Debug|x86.ActiveCfg = ClickOnce-Debug|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.ClickOnce-Debug|x86.Build.0 = ClickOnce-Debug|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.ClickOnce-Release|x86.ActiveCfg = ClickOnce-Release|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.ClickOnce-Release|x86.Build.0 = ClickOnce-Release|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.Debug|x86.Build.0 = Debug|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.Release|x86.ActiveCfg = Release|x86
|
||||
{B4EFF030-C75A-49F9-A4BC-738D1B61C4AF}.Release|x86.Build.0 = Release|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.ClickOnce-Debug|x86.ActiveCfg = Debug|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.ClickOnce-Debug|x86.Build.0 = Debug|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.ClickOnce-Release|x86.ActiveCfg = Release|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.ClickOnce-Release|x86.Build.0 = Release|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.Debug|x86.Build.0 = Debug|x86
|
||||
{8E2499BC-C11A-4809-8737-66D35A625425}.Release|x86.ActiveCfg = Release|x86
|
||||
|
||||
@@ -367,6 +367,10 @@ private LegalityCheck verifyRibbons()
|
||||
if (!Encounter.Valid)
|
||||
return new LegalityCheck(Severity.Valid, "Skipped Ribbon check due to other check being invalid.");
|
||||
|
||||
var TrainNames = ReflectUtil.getPropertiesStartWithPrefix(pk6.GetType(), "SuperTrain").ToArray();
|
||||
if (TrainNames.Count(MissionName => ReflectUtil.GetValue(pk6, MissionName) as bool? == true) == 30 ^ pk6.SecretSuperTrainingComplete)
|
||||
return new LegalityCheck(Severity.Invalid, "Super Training complete flag mismatch.");
|
||||
|
||||
List<string> missingRibbons = new List<string>();
|
||||
List<string> invalidRibbons = new List<string>();
|
||||
|
||||
@@ -385,9 +389,8 @@ private LegalityCheck verifyRibbons()
|
||||
if (DistNames.Select(MissionName => ReflectUtil.GetValue(pk6, MissionName)).Any(Flag => Flag as bool? == true))
|
||||
return new LegalityCheck(Severity.Invalid, "Distribution Super Training missions on Egg.");
|
||||
|
||||
var TrainNames = ReflectUtil.getPropertiesStartWithPrefix(pk6.GetType(), "SuperTrain");
|
||||
if (TrainNames.Select(MissionName => ReflectUtil.GetValue(pk6, MissionName)).Any(Flag => Flag as bool? == true))
|
||||
return new LegalityCheck(Severity.Fishy, "Super Training missions on Egg.");
|
||||
return new LegalityCheck(Severity.Invalid, "Super Training missions on Egg.");
|
||||
|
||||
return new LegalityCheck();
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using PKHeX.Misc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Drawing;
|
||||
@@ -142,7 +143,17 @@ public Main()
|
||||
}
|
||||
if (!SAV.Exportable) // No SAV loaded from exe args
|
||||
{
|
||||
string path = SaveUtil.detectSaveFile();
|
||||
string path = null;
|
||||
try
|
||||
{
|
||||
path = SaveUtil.detectSaveFile();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Todo: translate this
|
||||
ErrorWindow.ShowErrorDialog("An error occurred while attempting to auto-load your save file.", ex, true);
|
||||
}
|
||||
|
||||
if (path != null && File.Exists(path))
|
||||
openQuick(path, force: true);
|
||||
else
|
||||
@@ -204,7 +215,7 @@ public Main()
|
||||
|
||||
#region Path Variables
|
||||
|
||||
public static string WorkingDirectory => Environment.CurrentDirectory;
|
||||
public static string WorkingDirectory => Util.IsClickonceDeployed ? Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PKHeX") : Environment.CurrentDirectory;
|
||||
public static string DatabasePath => Path.Combine(WorkingDirectory, "db");
|
||||
public static string WC6DatabasePath => Path.Combine(WorkingDirectory, "wc6");
|
||||
private static string BackupPath => Path.Combine(WorkingDirectory, "bak");
|
||||
@@ -576,10 +587,10 @@ private void openQuick(string path, bool force = false)
|
||||
else
|
||||
{
|
||||
byte[] input; try { input = File.ReadAllBytes(path); }
|
||||
catch (Exception e) { Util.Error("File is in use by another program!", path, e.ToString()); return; }
|
||||
catch (Exception e) { Util.Error("Unable to load file. It could be in use by another program.\nPath: " + path, e); return; }
|
||||
|
||||
try { openFile(input, path, ext); }
|
||||
catch (Exception e) { Util.Error("Unable to load file.", e.ToString()); }
|
||||
catch (Exception e) { Util.Error("Unable to load file.\nPath: " + path, e); }
|
||||
}
|
||||
}
|
||||
private void openFile(byte[] input, string path, string ext)
|
||||
@@ -1106,6 +1117,10 @@ private void changeMainLanguage(object sender, EventArgs e)
|
||||
FLP_PKMEditors.Location = new Point((Tab_OTMisc.Width - FLP_PKMEditors.Width)/2, FLP_PKMEditors.Location.Y);
|
||||
populateFields(pk); // put data back in form
|
||||
fieldsInitialized |= alreadyInit;
|
||||
|
||||
// Set the culture (makes it easy to pass language to other forms)
|
||||
Thread.CurrentThread.CurrentCulture = new CultureInfo(lang_val[CB_MainLanguage.SelectedIndex]);
|
||||
Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture;
|
||||
}
|
||||
private void InitializeStrings()
|
||||
{
|
||||
@@ -2779,7 +2794,7 @@ private void dragout_MouseDown(object sender, MouseEventArgs e)
|
||||
DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||
}
|
||||
catch (Exception x)
|
||||
{ Util.Error("Drag & Drop Error", x.ToString()); }
|
||||
{ Util.Error("Drag & Drop Error", x); }
|
||||
Cursor = DragInfo.Cursor = DefaultCursor;
|
||||
File.Delete(newfile);
|
||||
}
|
||||
@@ -2835,7 +2850,7 @@ private void clickExportSAVBAK(object sender, EventArgs e)
|
||||
|
||||
try { Directory.CreateDirectory(BackupPath); Util.Alert("Backup folder created!",
|
||||
$"If you wish to no longer automatically back up save files, delete the \"{BackupPath}\" folder."); }
|
||||
catch { Util.Error($"Unable to create backup folder @ {BackupPath}"); }
|
||||
catch(Exception ex) { Util.Error($"Unable to create backup folder @ {BackupPath}", ex); }
|
||||
}
|
||||
private void clickExportSAV(object sender, EventArgs e)
|
||||
{
|
||||
@@ -3767,7 +3782,7 @@ private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
||||
}
|
||||
catch (Exception x)
|
||||
{
|
||||
Util.Error("Drag & Drop Error:", x.ToString());
|
||||
Util.Error("Drag & Drop Error", x);
|
||||
}
|
||||
notifyBoxViewerRefresh();
|
||||
DragInfo.Reset();
|
||||
|
||||
134
PKHeX/Misc/ErrorWindow.Designer.cs
generated
Normal file
134
PKHeX/Misc/ErrorWindow.Designer.cs
generated
Normal file
@@ -0,0 +1,134 @@
|
||||
namespace PKHeX.Misc
|
||||
{
|
||||
partial class ErrorWindow
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ErrorWindow));
|
||||
this.T_ExceptionDetails = new System.Windows.Forms.TextBox();
|
||||
this.L_Message = new System.Windows.Forms.Label();
|
||||
this.L_ProvideInfo = new System.Windows.Forms.Label();
|
||||
this.B_CopyToClipboard = new System.Windows.Forms.Button();
|
||||
this.B_Abort = new System.Windows.Forms.Button();
|
||||
this.B_Continue = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// T_ExceptionDetails
|
||||
//
|
||||
this.T_ExceptionDetails.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
|
||||
| System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.T_ExceptionDetails.Location = new System.Drawing.Point(12, 52);
|
||||
this.T_ExceptionDetails.Multiline = true;
|
||||
this.T_ExceptionDetails.Name = "T_ExceptionDetails";
|
||||
this.T_ExceptionDetails.ReadOnly = true;
|
||||
this.T_ExceptionDetails.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
|
||||
this.T_ExceptionDetails.Size = new System.Drawing.Size(474, 143);
|
||||
this.T_ExceptionDetails.TabIndex = 0;
|
||||
//
|
||||
// L_Message
|
||||
//
|
||||
this.L_Message.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.L_Message.Location = new System.Drawing.Point(9, 9);
|
||||
this.L_Message.Name = "L_Message";
|
||||
this.L_Message.Size = new System.Drawing.Size(477, 27);
|
||||
this.L_Message.TabIndex = 1;
|
||||
this.L_Message.Text = "An unknown error has occurred.";
|
||||
//
|
||||
// L_ProvideInfo
|
||||
//
|
||||
this.L_ProvideInfo.AutoSize = true;
|
||||
this.L_ProvideInfo.Location = new System.Drawing.Point(9, 36);
|
||||
this.L_ProvideInfo.Name = "L_ProvideInfo";
|
||||
this.L_ProvideInfo.Size = new System.Drawing.Size(269, 13);
|
||||
this.L_ProvideInfo.TabIndex = 2;
|
||||
this.L_ProvideInfo.Text = "Please provide this information when reporting this error:";
|
||||
//
|
||||
// B_CopyToClipboard
|
||||
//
|
||||
this.B_CopyToClipboard.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||
this.B_CopyToClipboard.Location = new System.Drawing.Point(12, 201);
|
||||
this.B_CopyToClipboard.Name = "B_CopyToClipboard";
|
||||
this.B_CopyToClipboard.Size = new System.Drawing.Size(164, 23);
|
||||
this.B_CopyToClipboard.TabIndex = 3;
|
||||
this.B_CopyToClipboard.Text = "Copy to Clipboard";
|
||||
this.B_CopyToClipboard.UseVisualStyleBackColor = true;
|
||||
this.B_CopyToClipboard.Click += new System.EventHandler(this.btnCopyToClipboard_Click);
|
||||
//
|
||||
// B_Abort
|
||||
//
|
||||
this.B_Abort.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.B_Abort.Location = new System.Drawing.Point(411, 201);
|
||||
this.B_Abort.Name = "B_Abort";
|
||||
this.B_Abort.Size = new System.Drawing.Size(75, 23);
|
||||
this.B_Abort.TabIndex = 4;
|
||||
this.B_Abort.Text = "Abort";
|
||||
this.B_Abort.UseVisualStyleBackColor = true;
|
||||
this.B_Abort.Click += new System.EventHandler(this.B_Abort_Click);
|
||||
//
|
||||
// B_Continue
|
||||
//
|
||||
this.B_Continue.Location = new System.Drawing.Point(330, 201);
|
||||
this.B_Continue.Name = "B_Continue";
|
||||
this.B_Continue.Size = new System.Drawing.Size(75, 23);
|
||||
this.B_Continue.TabIndex = 5;
|
||||
this.B_Continue.Text = "Continue";
|
||||
this.B_Continue.UseVisualStyleBackColor = true;
|
||||
this.B_Continue.Click += new System.EventHandler(this.B_Continue_Click);
|
||||
//
|
||||
// ErrorWindow
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(498, 236);
|
||||
this.Controls.Add(this.B_Continue);
|
||||
this.Controls.Add(this.B_Abort);
|
||||
this.Controls.Add(this.B_CopyToClipboard);
|
||||
this.Controls.Add(this.L_ProvideInfo);
|
||||
this.Controls.Add(this.L_Message);
|
||||
this.Controls.Add(this.T_ExceptionDetails);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "ErrorWindow";
|
||||
this.Text = "Error";
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox T_ExceptionDetails;
|
||||
private System.Windows.Forms.Label L_Message;
|
||||
private System.Windows.Forms.Label L_ProvideInfo;
|
||||
private System.Windows.Forms.Button B_CopyToClipboard;
|
||||
private System.Windows.Forms.Button B_Abort;
|
||||
private System.Windows.Forms.Button B_Continue;
|
||||
}
|
||||
}
|
||||
138
PKHeX/Misc/ErrorWindow.cs
Normal file
138
PKHeX/Misc/ErrorWindow.cs
Normal file
@@ -0,0 +1,138 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PKHeX.Misc
|
||||
{
|
||||
public partial class ErrorWindow : Form
|
||||
{
|
||||
public static DialogResult ShowErrorDialog(string friendlyMessage, Exception ex, bool allowContinue)
|
||||
{
|
||||
var lang = System.Threading.Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName;
|
||||
var dialog = new ErrorWindow(lang);
|
||||
dialog.ShowContinue = allowContinue;
|
||||
dialog.Message = friendlyMessage;
|
||||
dialog.Error = ex;
|
||||
|
||||
var dialogResult = dialog.ShowDialog();
|
||||
if (dialogResult == DialogResult.Abort)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
return dialogResult;
|
||||
}
|
||||
|
||||
public ErrorWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public ErrorWindow(string lang) : this()
|
||||
{
|
||||
Util.TranslateInterface(this, lang);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets whether or not the "Continue" button is visible.
|
||||
/// </summary>
|
||||
/// <remarks>For UI exceptions, continuing could be safe.
|
||||
/// For application exceptions, continuing is not possible, so the button should not be shown.</remarks>
|
||||
public bool ShowContinue
|
||||
{
|
||||
get
|
||||
{
|
||||
return B_Continue.Visible;
|
||||
}
|
||||
set
|
||||
{
|
||||
B_Continue.Visible = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Friendly, context-specific method shown to the user.
|
||||
/// </summary>
|
||||
/// <remarks>This property is intended to be a user-friendly context-specific message about what went wrong.
|
||||
/// For example: "An error occurred while attempting to automatically load the save file."</remarks>
|
||||
public string Message
|
||||
{
|
||||
get
|
||||
{
|
||||
return L_Message.Text;
|
||||
}
|
||||
set
|
||||
{
|
||||
L_Message.Text = value;
|
||||
}
|
||||
}
|
||||
|
||||
public Exception Error
|
||||
{
|
||||
get
|
||||
{
|
||||
return _error;
|
||||
}
|
||||
set
|
||||
{
|
||||
_error = value;
|
||||
UpdateExceptionDetailsMessage();
|
||||
}
|
||||
}
|
||||
private Exception _error;
|
||||
|
||||
private void UpdateExceptionDetailsMessage()
|
||||
{
|
||||
var details = new StringBuilder();
|
||||
details.AppendLine("Exception Details:");
|
||||
details.AppendLine(Error.ToString());
|
||||
details.AppendLine();
|
||||
|
||||
details.AppendLine("Loaded Assemblies:");
|
||||
details.AppendLine("--------------------");
|
||||
try
|
||||
{
|
||||
foreach (var item in AppDomain.CurrentDomain.GetAssemblies())
|
||||
{
|
||||
details.AppendLine(item.FullName);
|
||||
details.AppendLine(item.Location);
|
||||
details.AppendLine();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
details.AppendLine("An error occurred while listing the Loaded Assemblies:");
|
||||
details.AppendLine(ex.ToString());
|
||||
}
|
||||
details.AppendLine("--------------------");
|
||||
|
||||
// Include message in case it contains important information, like a file path.
|
||||
details.AppendLine("User Message:");
|
||||
details.AppendLine(Message);
|
||||
|
||||
T_ExceptionDetails.Text = details.ToString();
|
||||
}
|
||||
|
||||
private void btnCopyToClipboard_Click(object sender, EventArgs e)
|
||||
{
|
||||
Clipboard.SetText(T_ExceptionDetails.Text);
|
||||
}
|
||||
|
||||
private void B_Continue_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
|
||||
private void B_Abort_Click(object sender, EventArgs e)
|
||||
{
|
||||
DialogResult = DialogResult.Abort;
|
||||
Close();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
216
PKHeX/Misc/ErrorWindow.resx
Normal file
216
PKHeX/Misc/ErrorWindow.resx
Normal file
@@ -0,0 +1,216 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAE
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAIyMjAQAAAAALCwsPJiYmJysrKycqKionKSkpJykpKScpKSknKioqJyoq
|
||||
KicrKysnJycnJw0ODQ8AAAAAJiYmAQAAAABpaWlHq6ur17+/v+6+vr7svr6+7b6+vu2+vr7tvr6+7b6+
|
||||
vu2+vr7tvr6+7L+/v+6rq6vXampqSAAAAAAoKSgXvr++3eLi4v/g4OD94eHh/+Hh4f/i4uL/4uLi/+Li
|
||||
4v/i4uL/4eHh/+Dh4P/g4OD94uLi/7+/v90sLCwXfn5+PNna2frg4OD/39/f/uHh4f7h4eH+39/f/uDg
|
||||
4P7g4OD+39/f/uHh4f7h4OH+39/f/t/g3//a2tr6g4ODPoOCgz7X19f64+Pj/+Li4v7k5OT/4+Tj//Ly
|
||||
8v/19fX/9PT0//T09P/k5OT/5OTk/+Pj4/7j4+P/19jX+4qLikCDhIM+2tra++Xl5f/k5eT+5OTk//Lz
|
||||
8v+urq7/RUVF/z4+Pv+Zmpn/8fHx/+Xm5f/k5eT+5eXl/9ra2vyLi4tAhYWFPuXm5vvx8vP/7+/w/v//
|
||||
//+sra3/AgIC/15eXv9tbG3/BQUF/4yMjP//////7+/w/vHy8//l5ub8jY2NQC4uLD5LS0f7UFBL/09P
|
||||
Sv5YWVP/FBUS/29wcP///////////5SUlP8PDw//U1NO/1BQS/5PT0r/S0tH/DIyMEAAAAs+AAAM+wAA
|
||||
Dv8AAA/+AwMS/wAAAP+UlJX///////////+3t7n/AAAA/wAAD/8BAQ/+AAAO/wAADPwCAg5ABARSPgoK
|
||||
k/sNDab/DQ2o/hAQvP8CAmj/IiIW/7Kzrv/Cw8D/NDQm/wAATf8QELz/DQ2q/gwMp/8LC5T8Dg5bQAUF
|
||||
Xj4KCpz7DQ2u/w0NsP4NDbX/Dw+//wUFYf8CAhL/AwMP/wMDTf8ODrj/Dg64/w0NsP4MDK7/Cwud/A8P
|
||||
aEEGBmU9DAyl+w4Otf8ODrf+Dw+6/xAQvv8TE8v/EhK+/xAQvP8TE8v/EBDA/w8Puf8PD7f+Dg61/w0N
|
||||
pvsREW9ACAhtQA8PsfsTE77/ExO//xQUwP8UFML/FBTD/xUVyP8WFsn/FRXE/xQUw/8UFMH/ExO//xMT
|
||||
vv8QELL7ERF3QxkZdCgXF771ExPH/xUVyPwVFcn9FhbL/RcXzP0XF8z9FxfM/RcXy/0XF8v9FhbJ/RUV
|
||||
yPwTE8f/Fxe+9RkZdykAAAAAIyOtghsbx/8ZGcj+GRnJ/xoayf8aGsn/GhrK/xoayv8aGsn/GhrJ/xkZ
|
||||
yf8ZGcj+GxvH/yMjrYQAAAAAAADHAQAAAAAzM51FLCyscCoqrGwqKqxtKSmsbSoqrG0qKqxtKSmsbSoq
|
||||
rG0qKqxsLCyscDMznUUAAAAAAAAAAP//AADAAwAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
|
||||
AACAAQAAgAEAAIABAACAAQAAgAEAAP//AAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKysrCR0dHSMWFhY3GBgYORgYGDkYGBg5GBgYORgY
|
||||
GDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5GBgYORgYGDkYGBg5FxcXNx4e
|
||||
HiQuLi4JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIARYWFis7OzuVkJCQ2ampqeqqqqrsqqqq7Kqq
|
||||
quyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqqquyqqqrsqqqq7Kqq
|
||||
quypqanqkZGR2j09PZcXFxcsUFBQAQAAAAAAAAAAAAAAAAAAAAASEhIuhISEytvb2/7W1tb/19fX/9jY
|
||||
2P/Y2Nj/2NjY/9jY2P/Y2Nj/2NjY/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Y2Nj/2NjY/9jY
|
||||
2P/Y2Nj/2NjY/9fX1//W1tb/29vb/oeHh8sTExMvAAAAAAAAAAAAAAAAPDw8DGtra6zZ2dn/2dnZ/9ra
|
||||
2v/b29v/29vb/9vb2//c3Nz/3Nzc/9zc3P/c3Nz/3d3d/93d3f/d3d3/3d3d/93d3f/d3d3/3Nzc/9zc
|
||||
3P/c3Nz/3Nzc/9vb2//b29v/29vb/9ra2v/Z2dn/2dnZ/21tba5DQ0MNAAAAAAAAAAAiIiIx1NXU9tna
|
||||
2f/c3Nz/3d3d/93e3f/e3t7/3t7e/9/f3//f39//39/f/9/g3//g4OD/4ODg/+Dg4P/g4OD/4ODg/+Dg
|
||||
4P/g4OD/39/f/9/f3//f39//3t/e/97e3v/d3t3/3d3d/9zc3P/Z2tn/1dXV9icnJzMAAAAAAAAAAFhZ
|
||||
WFzf4N//3Nzc/97e3v/f39//39/f/9/g3//g4OD/4ODg/+Hh4f/h4eH/4eHh/+Li4v/i4uL/4uLi/+Li
|
||||
4v/i4uL/4uLi/+Hi4f/h4eH/4eHh/+Dg4P/g4OD/3+Df/9/f3//f39//3t7e/9zc3P/f39//XV1dXQAA
|
||||
AAAAAAAAZmZmZdvc2//e3t7/3+Df/+Dg4P/g4eD/4eHh/+Hi4f/i4uL/4uPi/+Pj4//j4+P/5OTk/+Tk
|
||||
5P/k5OT/5OTk/+Tk5P/k5OT/4+Pj/+Pj4//j4+P/4uLi/+Li4v/h4eH/4eHh/+Dg4P/f4N//3t7e/9vb
|
||||
2/9wcHBoAAAAAAAAAABoaGhl3d3d/9/f3//h4eH/4eLh/+Li4v/j4+P/4+Pj/+Tk5P/k5OT/5eXl/+Xl
|
||||
5f/l5uX/5ubm/+bm5v/m5ub/5ubm/+bm5v/l5eX/5eXl/+Tk5P/k5OT/4+Pj/+Pj4//i4uL/4uLi/+Hh
|
||||
4f/f39//3N3c/3Nzc2kAAAAAAAAAAGhoaGXe3t7/4ODg/+Li4v/j4+P/4+Pj/+Tk5P/l5eX/5eXl/+bm
|
||||
5v/m5+b/5+fn/+fn5//n6Of/6Ojo/+jo6P/o6Oj/5+fn/+fn5//n5+f/5ubm/+Xl5f/l5eX/5OTk/+Pk
|
||||
4//j4+P/4uLi/+Dg4P/e3t7/c3NzaQAAAAAAAAAAaGhoZd/g3//i4uL/5OTk/+Tl5P/l5eX/5ebl/+bn
|
||||
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
|
||||
wf8REcL/EhLC/xISw/8SEsP/EhLC/xERwv8REcH/ERHA/xERvv8QEL3/EBC7/xAQuv8QELj/Dw+3/w8P
|
||||
tf8ODrD/DAyq/xMTZWsAAAAAAAAAAAcHWmUODrD/EBC2/xERuv8REbz/ERG9/xISvv8SEr//EhLA/xMT
|
||||
wf8TE8P/ExPD/xMTxP8TE8X/FBTF/xQUxf8UFMX/ExPE/xMTxP8TE8P/ExPC/xISwf8SEr//EhK+/xER
|
||||
vf8REbz/ERG6/xAQtv8ODrD/FBRpawAAAAAAAAAACAhcYxAQtf8SErv/ExO+/xQUwP8UFMD/FBTB/xUV
|
||||
wv8VFcP/FRXE/xUVxf8WFsb/FhbG/xYWx/8WFsf/FhbH/xYWx/8WFsf/FhbG/xYWxf8VFcT/FRXD/xUV
|
||||
wv8UFMH/FBTB/xQUwP8TE77/EhK7/xAQtf8TE2hoAAAAAAAAAAAQEFNUFRXC/xMTv/8UFMP/FRXE/xUV
|
||||
xP8VFcX/FRXG/xYWx/8WFsf/FhbI/xYWyf8XF8n/FxfK/xcXyv8XF8r/FxfK/xcXyf8XF8n/FhbI/xYW
|
||||
yP8WFsf/FhbG/xUVxf8VFcT/FRXE/xQUw/8TE7//FRXB/xAQV1UAAAAAAAAAAA0NPxkjI8byFBTD/xUV
|
||||
x/8WFsj/FxfJ/xcXyf8XF8r/FxfK/xcXy/8YGMz/GBjM/xgYzP8YGM3/GBjN/xgYzf8YGM3/GBjM/xgY
|
||||
zP8YGMz/GBjL/xcXy/8XF8r/FxfJ/xcXyf8WFsj/FRXH/xQUw/8jI8f0Dg5GGwAAAAAAAAAAFhZxAiUl
|
||||
eIUZGcr/FBTI/xUVyv8WFsv/FhbM/xYWzP8WFsz/FhbN/xcXzf8XF83/FxfN/xcXzv8XF87/FxfO/xcX
|
||||
zv8XF87/FxfN/xcXzf8WFs3/FhbM/xYWzP8WFsz/FhbL/xUVyv8UFMj/GBjJ/yYmeogWFnYCAAAAAAAA
|
||||
AAAAAAAAGBh1BzMzk50kJNP+FxfK/xgYzP8YGMz/GBjN/xgYzf8YGM3/GBjN/xgYzf8ZGc7/GRnO/xkZ
|
||||
zv8ZGc7/GRnO/xkZzv8YGM3/GBjN/xgYzf8YGM3/GBjN/xgYzP8YGMz/FxfK/yMj0v4zM5WfFBRkBwAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAHBx7Ay0tdkg3N5emMTGpxSwsp8gsLKfILCynyCwsp8gsLKfILCynyCws
|
||||
p8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyCwsp8gsLKfILCynyDExqcU2NpenLi54Shsb
|
||||
ewMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////8AAAD+AAAAfAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AA
|
||||
AAPAAAADwAAAA8AAAAPAAAAD4AAAB/gAAB//////
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -58,12 +58,42 @@
|
||||
<PropertyGroup>
|
||||
<StartupObject>PKHeX.Program</StartupObject>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ClickOnce-Debug|x86'">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<OutputPath>bin\x86\ClickOnce-Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;CLICKONCE</DefineConstants>
|
||||
<DebugType>full</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<LangVersion>6</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'ClickOnce-Release|x86'">
|
||||
<DefineConstants>CLICKONCE</DefineConstants>
|
||||
<OutputPath>bin\x86\ClickOnce-Release\</OutputPath>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<LangVersion>6</LangVersion>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(Configuration)|$(Platform)' == 'ClickOnce-Debug|x86'">
|
||||
<Reference Include="System.Deployment" />
|
||||
</ItemGroup>
|
||||
<ItemGroup Condition="'$(Configuration)|$(Platform)' == 'ClickOnce-Release|x86'">
|
||||
<Reference Include="System.Deployment" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Legality\Analysis.cs" />
|
||||
@@ -93,6 +123,12 @@
|
||||
<Compile Include="MainWindow\MainPK3.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Misc\ErrorWindow.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Misc\ErrorWindow.Designer.cs">
|
||||
<DependentUpon>ErrorWindow.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="MysteryGifts\MysteryGift.cs" />
|
||||
<Compile Include="MysteryGifts\PL6.cs" />
|
||||
<Compile Include="PersonalInfo\PersonalInfo.cs" />
|
||||
@@ -329,6 +365,7 @@
|
||||
<Compile Include="Util\ByteUtil.cs" />
|
||||
<Compile Include="Util\DataUtil.cs" />
|
||||
<Compile Include="Util\DateUtil.cs" />
|
||||
<Compile Include="Util\DeployUtil.cs" />
|
||||
<Compile Include="Util\FormUtil.cs" />
|
||||
<Compile Include="Util\ImageUtil.cs" />
|
||||
<Compile Include="Util\NetUtil.cs" />
|
||||
@@ -336,6 +373,9 @@
|
||||
<Compile Include="Util\RandUtil.cs" />
|
||||
<Compile Include="Util\ReflectUtil.cs" />
|
||||
<Compile Include="Util\StringUtil.cs" />
|
||||
<EmbeddedResource Include="Misc\ErrorWindow.resx">
|
||||
<DependentUpon>ErrorWindow.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Misc\QR.resx">
|
||||
<DependentUpon>QR.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
|
||||
@@ -574,7 +574,7 @@ private static void setPKXFont()
|
||||
AddFontMemResourceEx(fontPtr, (uint)Resources.pgldings_normalregular.Length, IntPtr.Zero, ref dummy);
|
||||
Marshal.FreeCoTaskMem(fontPtr);
|
||||
}
|
||||
catch { Util.Error("Unable to add ingame font."); }
|
||||
catch (Exception ex) { Util.Error("Unable to add ingame font.", ex); }
|
||||
}
|
||||
|
||||
// Personal.dat
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
using System;
|
||||
using PKHeX.Misc;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace PKHeX
|
||||
@@ -11,9 +14,72 @@ internal static class Program
|
||||
[STAThread]
|
||||
private static void Main()
|
||||
{
|
||||
// Add the event handler for handling UI thread exceptions to the event.
|
||||
Application.ThreadException += new ThreadExceptionEventHandler(UIThreadException);
|
||||
|
||||
// Set the unhandled exception mode to force all Windows Forms errors to go through our handler.
|
||||
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
|
||||
|
||||
// Add the event handler for handling non-UI thread exceptions to the event.
|
||||
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
|
||||
|
||||
// Run the application
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Main());
|
||||
}
|
||||
|
||||
// Handle the UI exceptions by showing a dialog box, and asking the user whether or not they wish to abort execution.
|
||||
private static void UIThreadException(object sender, ThreadExceptionEventArgs t)
|
||||
{
|
||||
DialogResult result = DialogResult.Cancel;
|
||||
try
|
||||
{
|
||||
// Todo: make this translatable
|
||||
ErrorWindow.ShowErrorDialog("An unhandled exception has occurred.\nYou can continue running PKHeX, but please report this error.", t.Exception, true);
|
||||
}
|
||||
catch
|
||||
{
|
||||
try
|
||||
{
|
||||
// Todo: make this translatable
|
||||
MessageBox.Show("A fatal error has occurred in PKHeX, and the details could not be displayed. Please report this to the author.", "PKHeX Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
||||
// Exits the program when the user clicks Abort.
|
||||
if (result == DialogResult.Abort)
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
// Handle the UI exceptions by showing a dialog box, and asking the user whether
|
||||
// or not they wish to abort execution.
|
||||
// NOTE: This exception cannot be kept from terminating the application - it can only
|
||||
// log the event, and inform the user about it.
|
||||
private static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var ex = (Exception)e.ExceptionObject;
|
||||
// Todo: make this translatable
|
||||
ErrorWindow.ShowErrorDialog("An unhandled exception has occurred.\nPKHeX must now close.", ex, false);
|
||||
}
|
||||
catch
|
||||
{
|
||||
try
|
||||
{
|
||||
// Todo: make this translatable
|
||||
MessageBox.Show("A fatal non-UI error has occurred in PKHeX, and the details could not be displayed. Please report this to the author.", "PKHeX Error", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
||||
}
|
||||
finally
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -776,7 +776,7 @@ http://projectpokemon.org/forums/showthread.php?36986
|
||||
- Added: Cleaner 'delete' command to batch editor (set species to 0 to clear data).
|
||||
- Added: Specifying output folder when modifying a folder in the Batch Editor. Thanks \!
|
||||
|
||||
08/22/16 - New Update:
|
||||
08/22/16 - New Update: (53700)
|
||||
- Changed: Drag&Drop now replaces the cursor with the sprite to better simulate moving a Pokémon.
|
||||
- Added: FBI homebrew save file detection. Thanks poutros!
|
||||
- Fixed: Program now indicates the type of blank save file loaded if none is detected on startup.
|
||||
@@ -788,4 +788,38 @@ http://projectpokemon.org/forums/showthread.php?36986
|
||||
- Fixed: Legality indication persists when loading a save file.
|
||||
- Fixed: Hyperspace Fury legality. Thanks RanEncounter!
|
||||
- Changed: Batch Editor improvements for PID/EC writing. Thanks JSS & Pokegeo!
|
||||
- Changed: Updated Spanish and Chinese translation. Thanks ajtudela & easyworld!
|
||||
- Changed: Updated Spanish and Chinese translation. Thanks ajtudela & easyworld!
|
||||
|
||||
09/18/16 - New Update:
|
||||
- Added: Gen 1 & 2 support. Thanks SciresM, and all those who tested!
|
||||
- Added: Gen 1<->2 conversion. Thanks SciresM!
|
||||
- Added: Super Secret Training Completed flag. Thanks SciresM!
|
||||
- Added: Program will now check for updates when the program starts. If an update is available, a URL label will appear.
|
||||
- Added: Mystery Gift event database browser. Currently only views wc6, can be loaded to tabs! Hotkey is CTRL-G.
|
||||
- Added: Gen 4 & 5 Pokedex form flags will be set when the Pokémon is set to the save file.
|
||||
- Added: Hall of Fame time in Trainer editor. Thanks ricksee!
|
||||
- Added: Gen 1/2/3 Met Location and Item strings for Spanish and Chinese games. Thanks ajtudela & easyworld!
|
||||
- Added: Spiky Eared Pichu sprite.
|
||||
- Added: MetDate/EggMetDate property setting in the Batch Editor (refer to FAQ, yyyyMMdd format). Thanks AvantGourd!
|
||||
- Added: Box Viewer popup for easier box management. Doubleclick the "Box" tab. To open more than one, hold Shift while double clicking.
|
||||
- Fixed: Non-box drag&drop slots will set the cursor to the slot's sprite while dragging, just like Box Slots.
|
||||
- Fixed: O-Power editing saving will now save back to the save file.
|
||||
- Fixed: Improved save detection for gen4/5 games, including saves that were just (re)started.
|
||||
- Fixed: Gen4 ribbon editor give-all no longer throws an exception.
|
||||
- Fixed: Changed event constants from signed to unsigned. Thanks evandixon!
|
||||
- Fixed: Changing Unown's form as a pk3 will now update the PID. Thanks NinFanBoyFTW!
|
||||
- Fixed: EncounterType dropdown now appears at the correct time. Thanks JSS!
|
||||
- Fixed: HM07/HM08 inventory editing for gen4/5. Thanks msbhvn & Liger0!
|
||||
- Fixed: Setting gen4 HGSS balls corrected. Thanks theSLAYER!
|
||||
- Fixed: Gen3 inventory editor give-all disabled, as Bag is too small to give all items for a given pouch. Thanks Liger0!
|
||||
- Fixed: Gen1/2/3 sub-editors erasing changes made to box Pokémon. Thanks SciresM, MichiS97!
|
||||
- Fixed: Tangled Feet Rayquaza in Gen3. Thanks Delta Blast Burn!
|
||||
- Legality: Level 20 Gallade is now recognized as legal. Thanks Rohul1997!
|
||||
- Legality: Gen4 starters disallowed from having Gen3/4 balls. Thanks /u/Subject21_J
|
||||
- Legality: Added Super Training legality checks. Thanks sora10pls!
|
||||
- Changed: Inventory Editing now uses prettier sprites for each tab.
|
||||
- Changed: Showdown Set parsing updated to account for user error when manually typing a set instead of exporting from Showdown as intended.
|
||||
- Changed: Backed up save file names are now easier on the eye. Gen 1-5 saves will use played time, Gen 6 use the last saved datetime.
|
||||
- Changed: First 3 tabs of PKM editor (left side) redesigned to fit and collapse controls for all the different games that are supported.
|
||||
- Changed: Tabs with no controls visible will be hidden. Example: Hiding Box Tab with ORAS Demo save loaded.
|
||||
- Changed: Met locations are now top-sorted with the locations available to the Origin Game.
|
||||
@@ -345,4 +345,14 @@ Tab_Residence = Herkunft
|
||||
- **Please leave the {0} in your line. The OT name will show instead.
|
||||
--
|
||||
L_Arguments = Deaktiviert ; Nie verlassen ; OT ; Letzte Gen. ; Erinnerungen mit ; Pokémon ; Area ; Item(s) ; Move ; Location
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Please provide this information when reporting this error:
|
||||
B_CopyToClipboard = Copy to Clipboard
|
||||
B_Continue = Continue
|
||||
B_Abort = Abort
|
||||
! End
|
||||
@@ -873,4 +873,14 @@ B_Import = Import
|
||||
B_Output = Export
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Please provide this information when reporting this error:
|
||||
B_CopyToClipboard = Copy to Clipboard
|
||||
B_Continue = Continue
|
||||
B_Abort = Abort
|
||||
! End
|
||||
@@ -947,3 +947,13 @@ B_ExportCGB = Exportar .cgb
|
||||
B_Cancel = Cancelar
|
||||
B_Save = Guardar
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Por favor, proporciona esta información cuando reportes este fallo:
|
||||
B_CopyToClipboard = Copiar al portapapeles
|
||||
B_Continue = Continuar
|
||||
B_Abort = Abortar
|
||||
! End
|
||||
|
||||
@@ -362,4 +362,14 @@ L_Country = Pays
|
||||
- **Please leave the {0} in your line. The OT name will show instead.
|
||||
--
|
||||
L_Arguments = Onglet désactivé ; Toujours avec ; DO ; Génération précédente - ; Souvenirs avec ; Pokémon ; Zone ; Objet(s) ; Attaque ; Emplacement
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Erreur
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Veuillez fournir les informations suivantes dans votre rapport d'erreur :
|
||||
B_CopyToClipboard = Copier dans le presse-papier
|
||||
B_Continue = Continuer
|
||||
B_Abort = Abandonner
|
||||
! End
|
||||
@@ -798,4 +798,14 @@ B_Import = Import
|
||||
B_Output = Export
|
||||
B_Cancel = Cancel
|
||||
B_Save = Save
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Please provide this information when reporting this error:
|
||||
B_CopyToClipboard = Copy to Clipboard
|
||||
B_Continue = Continue
|
||||
B_Abort = Abort
|
||||
! End
|
||||
@@ -360,4 +360,14 @@ L_Region = 地域
|
||||
L_Country = 国
|
||||
--
|
||||
L_Arguments = 使用禁止 ; 左はありませんでした ; OT ; 前回のゲーム ; との思い出 ; ポケモン ; エリア ; 項目 ; わざ ; 場所 ;
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Please provide this information when reporting this error:
|
||||
B_CopyToClipboard = Copy to Clipboard
|
||||
B_Continue = Continue
|
||||
B_Abort = Abort
|
||||
! End
|
||||
@@ -798,4 +798,14 @@ B_Import = 넣기
|
||||
B_Output = 빼내기
|
||||
B_Cancel = 취소
|
||||
B_Save = 저장
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Please provide this information when reporting this error:
|
||||
B_CopyToClipboard = Copy to Clipboard
|
||||
B_Continue = Continue
|
||||
B_Abort = Abort
|
||||
! End
|
||||
@@ -1,6 +1,5 @@
|
||||
If you are having issues viewing certain symbols/text: Options -> Toggle Font.
|
||||
|
||||
|
||||
// Main Window
|
||||
|
||||
CTRL-O: Open
|
||||
@@ -10,6 +9,7 @@ CTRL-B: Export BAK
|
||||
CTRL-Q: Quit
|
||||
|
||||
CTRL-D: Open Database
|
||||
CTRL-G: Open Mystery Gift Database
|
||||
CTRL-R: Open Box Report
|
||||
CTRL-P: Open About PKHeX
|
||||
CTRL-T: Import Showdown Set
|
||||
@@ -41,17 +41,16 @@ Click on the OT label to set relevant details to that of the save file.
|
||||
Drop WC6/PGF/PCD/PGT to convert to PK6 in the main tabs.
|
||||
- Hold CTRL to open the Wonder Card interface when opening a WC6.
|
||||
|
||||
// Party / Battle Box
|
||||
- Double click to export team to Showdown set format.
|
||||
|
||||
// Save File
|
||||
|
||||
Click on the Save File path (above Boxes): Auto-detect/Reload save.
|
||||
- Shift skips SaveDataFiler
|
||||
Doubleclick on the SAV Tab: Auto-detect/Reload latest save.
|
||||
|
||||
// Boxes
|
||||
|
||||
Control-Click Box Tab: Sort Boxes.
|
||||
Control-Click Box Tab: Sort Current Box contents.
|
||||
Control-Shift-Click Box Tab: Sort All Boxes.
|
||||
Alt-Click Box Tab: Delete Current Box contents.
|
||||
Alt-Shift-Click Box Tab: Delete All Boxes.
|
||||
|
||||
Control-Drag a Box Slot to Copy-Overwrite
|
||||
Alt-Drag a Box Slot to Delete-Overwrite
|
||||
@@ -61,17 +60,20 @@ Control-Click a slot to load slot to tabs.
|
||||
Shift-Click a slot to set tabs to slot.
|
||||
Alt-Click a slot to delete the data in slot.
|
||||
|
||||
Doubleclick on the Party or Battle Box label to export Showdown/Smogon Set (Team) to Clipboard.
|
||||
Doubleclick the Box tab to open up a new Box Viewer. Only one is allowed at a time, unless you hold shift when doubleclicking.
|
||||
- Note: Having multiple instances of the same box open and making changes to that box will not re-sync the box sprites until the box is reloaded.
|
||||
|
||||
// Party / Battle Box
|
||||
Doubleclick on the Party or Battle Box label to export Showdown/Smogon Set (Team) to Clipboard.
|
||||
|
||||
// Misc Editors
|
||||
|
||||
INVENTORY:
|
||||
- Alt-Click loading a pouch will give all items with quantity x995. *1 for TMHM/Key.
|
||||
- Holding ALT when clicking Give All will clear all items for that pouch.
|
||||
|
||||
POKEPUFF:
|
||||
- Control Click the All Button to give un-exceptional Pokepuffs.
|
||||
- Control Click the Sort Button to sort in reverse.
|
||||
|
||||
WONDERCARD:
|
||||
MYSTERY GIFT:
|
||||
- Alt-Click QR to import from QR image.
|
||||
@@ -1 +1 @@
|
||||
20160830
|
||||
20160918
|
||||
@@ -798,4 +798,14 @@ B_Import = 导入
|
||||
B_Output = 导出
|
||||
B_Cancel = 取消
|
||||
B_Save = 保存
|
||||
! End
|
||||
! -----------------------------------------------------
|
||||
- DO NOT CHANGE THIS SECTION.
|
||||
! ErrorWindow = Error
|
||||
- Change stuff below this line, not above.
|
||||
-------------------------------------------------------
|
||||
L_ProvideInfo = Please provide this information when reporting this error:
|
||||
B_CopyToClipboard = Copy to Clipboard
|
||||
B_Continue = Continue
|
||||
B_Abort = Abort
|
||||
! End
|
||||
@@ -46,7 +46,7 @@ private void B_ImportPNG_Click(object sender, EventArgs e)
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Util.Error(ex.Message);
|
||||
Util.Error("An unexpected error has occurred.", ex);
|
||||
}
|
||||
}
|
||||
private void B_ExportPNG_Click(object sender, EventArgs e)
|
||||
|
||||
@@ -199,7 +199,7 @@ private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
||||
}
|
||||
catch (Exception x)
|
||||
{
|
||||
Util.Error("Drag & Drop Error:", x.ToString());
|
||||
Util.Error("Drag & Drop Error", x);
|
||||
}
|
||||
parent.notifyBoxViewerRefresh();
|
||||
DragInfo.Reset();
|
||||
|
||||
@@ -324,7 +324,7 @@ private void diffSaves()
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Util.Error(e.ToString());
|
||||
Util.Error("An unexpected error has occurred.", e);
|
||||
Console.Write(e);
|
||||
}
|
||||
TB_IsSet.Text = tbIsSet;
|
||||
@@ -344,7 +344,7 @@ private void diffSaves()
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Util.Error(e.ToString());
|
||||
Util.Error("An unexpected error has occurred.", e);
|
||||
Console.Write(e);
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ private void viewGiftData(MysteryGift g)
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Util.Error("Loading of data failed... is this really a Wonder Card?", e.ToString());
|
||||
Util.Error("Loading of data failed... is this really a Wonder Card?", e);
|
||||
RTB.Clear();
|
||||
}
|
||||
}
|
||||
@@ -390,8 +390,8 @@ private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e)
|
||||
File.WriteAllBytes(newfile, card.Data);
|
||||
DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||
}
|
||||
catch (ArgumentException x)
|
||||
{ Util.Error("Drag & Drop Error:", x.ToString()); }
|
||||
catch (Exception x)
|
||||
{ Util.Error("Drag & Drop Error", x); }
|
||||
File.Delete(newfile);
|
||||
wc_slot = -1;
|
||||
}
|
||||
|
||||
22
PKHeX/Util/DeployUtil.cs
Normal file
22
PKHeX/Util/DeployUtil.cs
Normal file
@@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace PKHeX
|
||||
{
|
||||
public partial class Util
|
||||
{
|
||||
public static bool IsClickonceDeployed
|
||||
{
|
||||
get
|
||||
{
|
||||
#if CLICKONCE
|
||||
return System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed;
|
||||
#else
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using PKHeX.Misc;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
@@ -9,7 +10,7 @@ namespace PKHeX
|
||||
{
|
||||
public partial class Util
|
||||
{
|
||||
// Form Translation
|
||||
#region Form Translation
|
||||
internal static void TranslateInterface(Control form, string lang)
|
||||
{
|
||||
// Check to see if a the translation file exists in the same folder as the executable
|
||||
@@ -113,20 +114,40 @@ internal static void CenterToForm(Control child, Control parent)
|
||||
int y = parent.Location.Y + (parent.Height - child.Height) / 2;
|
||||
child.Location = new Point(Math.Max(x, 0), Math.Max(y, 0));
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Message Displays
|
||||
#region Message Displays
|
||||
/// <summary>
|
||||
/// Displays a dialog showing the details of an error.
|
||||
/// </summary>
|
||||
/// <param name="friendlyMessage">User-friendly message about the error.</param>
|
||||
/// <param name="exception">Instance of the error's <see cref="Exception"/>.</param>
|
||||
/// <returns>The <see cref="DialogResult"/> associated with the dialog.</returns>
|
||||
internal static DialogResult Error(string friendlyMessage, Exception exception)
|
||||
{
|
||||
System.Media.SystemSounds.Exclamation.Play();
|
||||
return ErrorWindow.ShowErrorDialog(friendlyMessage, exception, true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Displays a dialog showing the details of an error.
|
||||
/// </summary>
|
||||
/// <param name="lines">User-friendly message about the error.</param>
|
||||
/// <returns>The <see cref="DialogResult"/> associated with the dialog.</returns>
|
||||
internal static DialogResult Error(params string[] lines)
|
||||
{
|
||||
System.Media.SystemSounds.Exclamation.Play();
|
||||
string msg = string.Join(Environment.NewLine + Environment.NewLine, lines);
|
||||
return MessageBox.Show(msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
|
||||
internal static DialogResult Alert(params string[] lines)
|
||||
{
|
||||
System.Media.SystemSounds.Asterisk.Play();
|
||||
string msg = string.Join(Environment.NewLine + Environment.NewLine, lines);
|
||||
return MessageBox.Show(msg, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
|
||||
internal static DialogResult Prompt(MessageBoxButtons btn, params string[] lines)
|
||||
{
|
||||
System.Media.SystemSounds.Question.Play();
|
||||
@@ -152,5 +173,6 @@ public static void PanelScroll(object sender, ScrollEventArgs e)
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
25
README.md
25
README.md
@@ -1,41 +1,36 @@
|
||||
PKHeX
|
||||
=====
|
||||

|
||||
|
||||
Pokémon GBA/NDS/3DS save editor, programmed in [C#](https://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29).
|
||||
Pokémon core series save editor, programmed in [C#](https://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29).
|
||||
|
||||
Supports the following files originating from the Nintendo GBA, NDS, & 3DS:
|
||||
Supports the following files:
|
||||
* Save files ("main", .sav)
|
||||
* Individual Pokémon entity files (.pk*)
|
||||
* Mystery Gift files (.pgt, .pcd, .pgf, .wc6) including conversion to .pk*
|
||||
* Importing teams from Decrypted Battle Videos (X/Y/OR/AS only)
|
||||
* Transferring of previous generation entities (.pkm) to future generation formats and save files
|
||||
* Transferring from one generation to another, converting formats along the way.
|
||||
|
||||
Data is displayed in a view which can be edited and saved.
|
||||
The interface can be translated with resource/external text files so that different languages can be supported.
|
||||
|
||||
Pokémon Showdown sets can be imported/exported in addition to QR codes.
|
||||
Pokémon Showdown sets and QR codes can be imported/exported to assist in sharing.
|
||||
|
||||
Nintendo 3DS savedata containers use an AES MAC that cannot be emulated without the 3DS's keys, thus a resigning service is required (svdt, save_manager, or SaveDataFiler).
|
||||
|
||||
## Screenshots
|
||||
|
||||

|
||||
|
||||
### License
|
||||
|
||||
PKHeX is licensed under GPLv3. Refer to LICENSE.md for more information.
|
||||

|
||||
|
||||
## Building
|
||||
|
||||
PKHeX can be compiled with any compiler that supports C# 6.0.
|
||||
PKHeX is a Windows Forms application which requires .NET Framework v4.0.
|
||||
|
||||
The executable can be built with any compiler that supports C# 6.0.
|
||||
|
||||
### IDE
|
||||
|
||||
PKHeX can be opened with MS Visual Studio and [MonoDevelop](http://www.monodevelop.com/) by importing the project with the .sln or .csproj file.
|
||||
|
||||
### Command Line
|
||||
|
||||
You can use [xbuild of Mono](http://mono-framework.com/Microsoft.Build): `xbuild PKHeX.sln`.
|
||||
PKHeX can be opened with IDEs such as [Visual Studio](https://www.visualstudio.com/) or [MonoDevelop](http://www.monodevelop.com/) by opening the .sln or .csproj file.
|
||||
|
||||
### GNU/Linux
|
||||
|
||||
|
||||
Reference in New Issue
Block a user