mirror of
https://github.com/kwsch/PKHeX
synced 2024-11-23 04:23:12 +00:00
Add popup box viewer
Allows for dragging between boxes Pop up via shift-click Box tab Click the swap arrows to flip Main/Viewer current box Fixes swallowed exception: DragDrop a slot (filename), start another within 500ms before deletion thread deletes original dragdrop file; since filenames are the same the file for the active dragdrop will no longer exist resulting in an exception. Solved by tracking the current path of a dragdrop operation. Had to refactor the draginfo into its own class to 'cleanly' communicate between forms.
This commit is contained in:
parent
c34c4901ea
commit
4ea349df11
9 changed files with 1310 additions and 71 deletions
|
@ -17,7 +17,7 @@ namespace PKHeX
|
||||||
{
|
{
|
||||||
#region Initialize Form
|
#region Initialize Form
|
||||||
new Thread(() => new SplashScreen().ShowDialog()).Start();
|
new Thread(() => new SplashScreen().ShowDialog()).Start();
|
||||||
slotPkmSource = SAV.BlankPKM.EncryptedPartyData;
|
DragInfo.slotPkmSource = SAV.BlankPKM.EncryptedPartyData;
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
CB_ExtraBytes.SelectedIndex = 0;
|
CB_ExtraBytes.SelectedIndex = 0;
|
||||||
SaveFile.SetUpdateDex = Menu_ModifyDex.Checked;
|
SaveFile.SetUpdateDex = Menu_ModifyDex.Checked;
|
||||||
|
@ -774,6 +774,11 @@ namespace PKHeX
|
||||||
}
|
}
|
||||||
Menu_ExportSAV.Enabled = B_VerifyCHK.Enabled = SAV.Exportable;
|
Menu_ExportSAV.Enabled = B_VerifyCHK.Enabled = SAV.Exportable;
|
||||||
|
|
||||||
|
// Close subforms that are save dependent
|
||||||
|
Type[] f = { typeof(SAV_BoxViewer), typeof(f2_Text) };
|
||||||
|
foreach (var form in Application.OpenForms.Cast<Form>().Where(form => f.Contains(form.GetType())).ToArray())
|
||||||
|
form.Close();
|
||||||
|
|
||||||
setBoxNames(); // Display the Box Names
|
setBoxNames(); // Display the Box Names
|
||||||
if (SAV.HasBox)
|
if (SAV.HasBox)
|
||||||
{
|
{
|
||||||
|
@ -2402,7 +2407,7 @@ namespace PKHeX
|
||||||
invalid:
|
invalid:
|
||||||
{ SystemSounds.Exclamation.Play(); return false; }
|
{ SystemSounds.Exclamation.Play(); return false; }
|
||||||
}
|
}
|
||||||
private static string[] verifyPKMtoSAV(PKM pk)
|
public static string[] verifyPKMtoSAV(PKM pk)
|
||||||
{
|
{
|
||||||
// Check if PKM properties are outside of the valid range
|
// Check if PKM properties are outside of the valid range
|
||||||
List<string> errata = new List<string>();
|
List<string> errata = new List<string>();
|
||||||
|
@ -2454,6 +2459,8 @@ namespace PKHeX
|
||||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
openQuick(files[0]);
|
openQuick(files[0]);
|
||||||
e.Effect = DragDropEffects.Copy;
|
e.Effect = DragDropEffects.Copy;
|
||||||
|
|
||||||
|
Cursor = DefaultCursor;
|
||||||
}
|
}
|
||||||
// Decrypted Export
|
// Decrypted Export
|
||||||
private void dragout_MouseDown(object sender, MouseEventArgs e)
|
private void dragout_MouseDown(object sender, MouseEventArgs e)
|
||||||
|
@ -2476,12 +2483,12 @@ namespace PKHeX
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(newfile, dragdata);
|
File.WriteAllBytes(newfile, dragdata);
|
||||||
PictureBox pb = (PictureBox)sender;
|
PictureBox pb = (PictureBox)sender;
|
||||||
Cursor.Current = new Cursor(((Bitmap)pb.Image).GetHicon());
|
Cursor = DragInfo.Cursor = new Cursor(((Bitmap)pb.Image).GetHicon());
|
||||||
DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||||
}
|
}
|
||||||
catch (Exception x)
|
catch (Exception x)
|
||||||
{ Util.Error("Drag & Drop Error", x.ToString()); }
|
{ Util.Error("Drag & Drop Error", x.ToString()); }
|
||||||
Cursor.Current = DefaultCursor;
|
Cursor = DragInfo.Cursor = DefaultCursor;
|
||||||
File.Delete(newfile);
|
File.Delete(newfile);
|
||||||
}
|
}
|
||||||
private void dragout_DragOver(object sender, DragEventArgs e)
|
private void dragout_DragOver(object sender, DragEventArgs e)
|
||||||
|
@ -2502,6 +2509,8 @@ namespace PKHeX
|
||||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
openQuick(files[0]);
|
openQuick(files[0]);
|
||||||
e.Effect = DragDropEffects.Copy;
|
e.Effect = DragDropEffects.Copy;
|
||||||
|
|
||||||
|
Cursor = DefaultCursor;
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -2617,6 +2626,20 @@ namespace PKHeX
|
||||||
setPKXBoxes();
|
setPKXBoxes();
|
||||||
Util.Alert("Current Box sorted!");
|
Util.Alert("Current Box sorted!");
|
||||||
}
|
}
|
||||||
|
else if (ModifierKeys == Keys.Shift)
|
||||||
|
{
|
||||||
|
var z = Application.OpenForms.Cast<Form>().FirstOrDefault(form => form.GetType() == typeof(SAV_BoxViewer)) as SAV_BoxViewer;
|
||||||
|
if (z != null)
|
||||||
|
{ Util.CenterToForm(z, this); z.BringToFront(); return; }
|
||||||
|
|
||||||
|
new SAV_BoxViewer(this).Show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int swapBoxesViewer(int viewBox)
|
||||||
|
{
|
||||||
|
int mainBox = CB_BoxSelect.SelectedIndex;
|
||||||
|
CB_BoxSelect.SelectedIndex = viewBox;
|
||||||
|
return mainBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void clickSlot(object sender, EventArgs e)
|
private void clickSlot(object sender, EventArgs e)
|
||||||
|
@ -2980,8 +3003,8 @@ namespace PKHeX
|
||||||
catch
|
catch
|
||||||
{
|
{
|
||||||
CB_BoxSelect.Items.Clear();
|
CB_BoxSelect.Items.Clear();
|
||||||
for (int i = 0; i < SAV.BoxCount; i++)
|
for (int i = 1; i <= SAV.BoxCount; i++)
|
||||||
CB_BoxSelect.Items.Add("BOX " + (i+1));
|
CB_BoxSelect.Items.Add($"BOX {i}");
|
||||||
}
|
}
|
||||||
if (selectedbox < CB_BoxSelect.Items.Count)
|
if (selectedbox < CB_BoxSelect.Items.Count)
|
||||||
CB_BoxSelect.SelectedIndex = selectedbox; // restore selected box
|
CB_BoxSelect.SelectedIndex = selectedbox; // restore selected box
|
||||||
|
@ -2992,7 +3015,7 @@ namespace PKHeX
|
||||||
pk = pk ?? preparePKM(false); // don't perform control loss click
|
pk = pk ?? preparePKM(false); // don't perform control loss click
|
||||||
|
|
||||||
if (pb == dragout) mnuLQR.Enabled = pk.Species != 0; // Species
|
if (pb == dragout) mnuLQR.Enabled = pk.Species != 0; // Species
|
||||||
pb.Image = pk.Sprite;
|
pb.Image = pk.Species != 0 ? pk.Sprite : null;
|
||||||
if (pb.BackColor == Color.Red)
|
if (pb.BackColor == Color.Red)
|
||||||
pb.BackColor = Color.Transparent;
|
pb.BackColor = Color.Transparent;
|
||||||
}
|
}
|
||||||
|
@ -3312,7 +3335,7 @@ namespace PKHeX
|
||||||
// Drag and drop related functions
|
// Drag and drop related functions
|
||||||
private void pbBoxSlot_MouseClick(object sender, MouseEventArgs e)
|
private void pbBoxSlot_MouseClick(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (slotDragDropInProgress)
|
if (DragInfo.slotDragDropInProgress)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
clickSlot(sender, e);
|
clickSlot(sender, e);
|
||||||
|
@ -3320,23 +3343,23 @@ namespace PKHeX
|
||||||
private void pbBoxSlot_MouseUp(object sender, MouseEventArgs e)
|
private void pbBoxSlot_MouseUp(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.Button == MouseButtons.Left)
|
if (e.Button == MouseButtons.Left)
|
||||||
slotLeftMouseIsDown = false;
|
DragInfo.slotLeftMouseIsDown = false;
|
||||||
if (e.Button == MouseButtons.Right)
|
if (e.Button == MouseButtons.Right)
|
||||||
slotRightMouseIsDown = false;
|
DragInfo.slotRightMouseIsDown = false;
|
||||||
}
|
}
|
||||||
private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e)
|
private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.Button == MouseButtons.Left)
|
if (e.Button == MouseButtons.Left)
|
||||||
slotLeftMouseIsDown = true;
|
DragInfo.slotLeftMouseIsDown = true;
|
||||||
if (e.Button == MouseButtons.Right)
|
if (e.Button == MouseButtons.Right)
|
||||||
slotRightMouseIsDown = true;
|
DragInfo.slotRightMouseIsDown = true;
|
||||||
}
|
}
|
||||||
private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
||||||
{
|
{
|
||||||
if (slotDragDropInProgress)
|
if (DragInfo.slotDragDropInProgress)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (slotLeftMouseIsDown)
|
if (DragInfo.slotLeftMouseIsDown)
|
||||||
{
|
{
|
||||||
// The goal is to create a temporary PKX file for the underlying Pokemon
|
// The goal is to create a temporary PKX file for the underlying Pokemon
|
||||||
// and use that file to perform a drag drop operation.
|
// and use that file to perform a drag drop operation.
|
||||||
|
@ -3347,17 +3370,18 @@ namespace PKHeX
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// Set flag to prevent re-entering.
|
// Set flag to prevent re-entering.
|
||||||
slotDragDropInProgress = true;
|
DragInfo.slotDragDropInProgress = true;
|
||||||
|
|
||||||
slotSourceSlotNumber = getSlot(pb);
|
DragInfo.slotSourceSlotNumber = getSlot(pb);
|
||||||
int offset = getPKXOffset(slotSourceSlotNumber);
|
int offset = getPKXOffset(DragInfo.slotSourceSlotNumber);
|
||||||
|
|
||||||
// Prepare Data
|
// Prepare Data
|
||||||
slotPkmSource = SAV.getData(offset, SAV.SIZE_STORED);
|
DragInfo.slotPkmSource = SAV.getData(offset, SAV.SIZE_STORED);
|
||||||
slotSourceOffset = offset;
|
DragInfo.slotSourceOffset = offset;
|
||||||
|
DragInfo.slotSourceBoxNumber = CB_BoxSelect.SelectedIndex;
|
||||||
|
|
||||||
// Make a new file name based off the PID
|
// Make a new file name based off the PID
|
||||||
byte[] dragdata = SAV.decryptPKM(slotPkmSource);
|
byte[] dragdata = SAV.decryptPKM(DragInfo.slotPkmSource);
|
||||||
Array.Resize(ref dragdata, SAV.SIZE_STORED);
|
Array.Resize(ref dragdata, SAV.SIZE_STORED);
|
||||||
PKM pkx = SAV.getPKM(dragdata);
|
PKM pkx = SAV.getPKM(dragdata);
|
||||||
string filename = pkx.FileName;
|
string filename = pkx.FileName;
|
||||||
|
@ -3368,43 +3392,51 @@ namespace PKHeX
|
||||||
{
|
{
|
||||||
File.WriteAllBytes(newfile, dragdata);
|
File.WriteAllBytes(newfile, dragdata);
|
||||||
var img = (Bitmap)pb.Image;
|
var img = (Bitmap)pb.Image;
|
||||||
Cursor.Current = new Cursor(img.GetHicon());
|
DragInfo.Cursor = Cursor.Current = new Cursor(img.GetHicon());
|
||||||
pb.Image = null;
|
pb.Image = null;
|
||||||
pb.BackColor = Color.FromArgb(100, 200, 200, 200);
|
pb.BackgroundImage = Properties.Resources.slotDrag;
|
||||||
// Thread Blocks on DoDragDrop
|
// Thread Blocks on DoDragDrop
|
||||||
|
DragInfo.CurrentPath = newfile;
|
||||||
DragDropEffects result = pb.DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
DragDropEffects result = pb.DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||||
if (result != DragDropEffects.Link) // not dropped to another box slot, restore img
|
if (result != DragDropEffects.Link) // not dropped to another box slot, restore img
|
||||||
pb.Image = img;
|
pb.Image = img;
|
||||||
|
else // refresh image
|
||||||
|
getQuickFiller(pb, SAV.getStoredSlot(DragInfo.slotSourceOffset));
|
||||||
|
pb.BackgroundImage = null;
|
||||||
|
|
||||||
|
if (DragInfo.slotDestinationBoxNumber == DragInfo.slotSourceBoxNumber)
|
||||||
|
SlotPictureBoxes[DragInfo.slotDestinationSlotNumber].Image = img;
|
||||||
|
|
||||||
if (result == DragDropEffects.Copy) // viewed in tabs, apply 'view' highlight
|
if (result == DragDropEffects.Copy) // viewed in tabs, apply 'view' highlight
|
||||||
getSlotColor(slotSourceSlotNumber, Properties.Resources.slotView);
|
getSlotColor(DragInfo.slotSourceSlotNumber, Properties.Resources.slotView);
|
||||||
pb.BackColor = Color.Transparent;
|
|
||||||
}
|
}
|
||||||
catch (Exception x)
|
catch (Exception x)
|
||||||
{
|
{
|
||||||
Util.Error("Drag & Drop Error:", x.ToString());
|
Util.Error("Drag & Drop Error:", x.ToString());
|
||||||
}
|
}
|
||||||
slotSourceOffset = 0;
|
DragInfo.Reset();
|
||||||
Cursor.Current = DefaultCursor;
|
Cursor = DefaultCursor;
|
||||||
|
|
||||||
// Browser apps need time to load data since the file isn't moved to a location on the user's local storage.
|
// Browser apps need time to load data since the file isn't moved to a location on the user's local storage.
|
||||||
// Tested 10ms -> too quick, 100ms was fine. 500ms should be safe?
|
// Tested 10ms -> too quick, 100ms was fine. 500ms should be safe?
|
||||||
new Thread(() =>
|
new Thread(() =>
|
||||||
{
|
{
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
if (File.Exists(newfile))
|
if (File.Exists(newfile) && DragInfo.CurrentPath == null)
|
||||||
File.Delete(newfile);
|
File.Delete(newfile);
|
||||||
}).Start();
|
}).Start();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
|
private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
|
||||||
{
|
{
|
||||||
int slotDestinationSlotNumber = getSlot(sender);
|
DragInfo.slotDestinationSlotNumber = getSlot(sender);
|
||||||
int slotDestinationOffset = getPKXOffset(slotDestinationSlotNumber);
|
DragInfo.slotDestinationOffset = getPKXOffset(DragInfo.slotDestinationSlotNumber);
|
||||||
|
DragInfo.slotDestinationBoxNumber = CB_BoxSelect.SelectedIndex;
|
||||||
|
|
||||||
// Check for In-Dropped files (PKX,SAV,ETC)
|
// Check for In-Dropped files (PKX,SAV,ETC)
|
||||||
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
if (Directory.Exists(files[0])) { loadBoxesFromDB(files[0]); return; }
|
if (Directory.Exists(files[0])) { loadBoxesFromDB(files[0]); return; }
|
||||||
if (slotSourceOffset == 0)
|
if (DragInfo.slotSourceOffset < 0) // file
|
||||||
{
|
{
|
||||||
if (files.Length <= 0)
|
if (files.Length <= 0)
|
||||||
return;
|
return;
|
||||||
|
@ -3430,48 +3462,45 @@ namespace PKHeX
|
||||||
{ Console.WriteLine(c); Console.WriteLine(concat); return; }
|
{ Console.WriteLine(c); Console.WriteLine(concat); return; }
|
||||||
}
|
}
|
||||||
|
|
||||||
SAV.setStoredSlot(pk, slotDestinationOffset);
|
SAV.setStoredSlot(pk, DragInfo.slotDestinationOffset);
|
||||||
getQuickFiller(SlotPictureBoxes[slotDestinationSlotNumber], pk);
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotDestinationSlotNumber], pk);
|
||||||
getSlotColor(slotDestinationSlotNumber, Properties.Resources.slotSet);
|
getSlotColor(DragInfo.slotDestinationSlotNumber, Properties.Resources.slotSet);
|
||||||
Console.WriteLine(c);
|
Console.WriteLine(c);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
PKM pkz = SAV.getStoredSlot(slotSourceOffset);
|
PKM pkz = SAV.getStoredSlot(DragInfo.slotSourceOffset);
|
||||||
if (ModifierKeys == Keys.Alt && slotDestinationSlotNumber > -1) // overwrite delete old slot
|
if (ModifierKeys == Keys.Alt && DragInfo.slotDestinationSlotNumber > -1) // overwrite delete old slot
|
||||||
{
|
{
|
||||||
// Clear from slot
|
// Clear from slot
|
||||||
getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], SAV.BlankPKM); // picturebox
|
if (DragInfo.SameBox)
|
||||||
SAV.setStoredSlot(SAV.BlankPKM, slotSourceOffset); // savefile
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotSourceSlotNumber], SAV.BlankPKM); // picturebox
|
||||||
|
|
||||||
|
SAV.setStoredSlot(SAV.BlankPKM, DragInfo.slotSourceOffset);
|
||||||
}
|
}
|
||||||
else if (ModifierKeys != Keys.Control && slotDestinationSlotNumber > -1)
|
else if (ModifierKeys != Keys.Control && DragInfo.slotDestinationSlotNumber > -1)
|
||||||
{
|
{
|
||||||
if (((PictureBox)sender).Image != null)
|
// Load data from destination
|
||||||
{
|
PKM pk = ((PictureBox) sender).Image != null
|
||||||
// Load data from destination
|
? SAV.getStoredSlot(DragInfo.slotDestinationOffset)
|
||||||
PKM pk = SAV.getStoredSlot(slotDestinationOffset);
|
: SAV.BlankPKM;
|
||||||
|
|
||||||
// Set destination pokemon image to source picture box
|
// Set destination pokemon image to source picture box
|
||||||
getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], pk);
|
if (DragInfo.SameBox)
|
||||||
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotSourceSlotNumber], pk);
|
||||||
|
|
||||||
// Set destination pokemon data to source slot
|
// Set destination pokemon data to source slot
|
||||||
SAV.setStoredSlot(pk, slotSourceOffset);
|
SAV.setStoredSlot(pk, DragInfo.slotSourceOffset);
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Set blank to source slot
|
|
||||||
SAV.setStoredSlot(SAV.BlankPKM, slotSourceOffset);
|
|
||||||
SlotPictureBoxes[slotSourceSlotNumber].Image = null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else if (DragInfo.SameBox)
|
||||||
getQuickFiller(SlotPictureBoxes[slotSourceSlotNumber], pkz);
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotSourceSlotNumber], pkz);
|
||||||
|
|
||||||
// Copy from temp to destination slot.
|
// Copy from temp to destination slot.
|
||||||
SAV.setStoredSlot(pkz, slotDestinationOffset);
|
SAV.setStoredSlot(pkz, DragInfo.slotDestinationOffset);
|
||||||
getQuickFiller(SlotPictureBoxes[slotDestinationSlotNumber], pkz);
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotDestinationSlotNumber], pkz);
|
||||||
|
|
||||||
e.Effect = DragDropEffects.Link;
|
e.Effect = DragDropEffects.Link;
|
||||||
slotSourceOffset = 0; // Clear offset value
|
Cursor = DefaultCursor;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)
|
private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)
|
||||||
|
@ -3480,23 +3509,57 @@ namespace PKHeX
|
||||||
e.Effect = DragDropEffects.Copy;
|
e.Effect = DragDropEffects.Copy;
|
||||||
else if (e.Data != null) // within
|
else if (e.Data != null) // within
|
||||||
e.Effect = DragDropEffects.Move;
|
e.Effect = DragDropEffects.Move;
|
||||||
|
|
||||||
|
if (DragInfo.slotDragDropInProgress)
|
||||||
|
Cursor = DragInfo.Cursor;
|
||||||
}
|
}
|
||||||
private void pbBoxSlot_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
|
private void pbBoxSlot_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.Action == DragAction.Cancel || e.Action == DragAction.Drop)
|
if (e.Action == DragAction.Cancel || e.Action == DragAction.Drop)
|
||||||
{
|
{
|
||||||
slotLeftMouseIsDown = false;
|
DragInfo.slotLeftMouseIsDown = false;
|
||||||
slotRightMouseIsDown = false;
|
DragInfo.slotRightMouseIsDown = false;
|
||||||
slotDragDropInProgress = false;
|
DragInfo.slotDragDropInProgress = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class DragInfo
|
||||||
|
{
|
||||||
|
public static bool slotLeftMouseIsDown;
|
||||||
|
public static bool slotRightMouseIsDown;
|
||||||
|
public static bool slotDragDropInProgress;
|
||||||
|
|
||||||
|
public static byte[] slotPkmSource;
|
||||||
|
public static byte[] slotPkmDestination;
|
||||||
|
|
||||||
|
public static int slotSourceOffset = -1;
|
||||||
|
public static int slotSourceSlotNumber = -1;
|
||||||
|
public static int slotSourceBoxNumber = -1;
|
||||||
|
|
||||||
|
public static int slotDestinationOffset = -1;
|
||||||
|
public static int slotDestinationSlotNumber = -1;
|
||||||
|
public static int slotDestinationBoxNumber = -1;
|
||||||
|
|
||||||
|
public static Cursor Cursor;
|
||||||
|
public static string CurrentPath;
|
||||||
|
|
||||||
|
public static bool SameBox => slotSourceBoxNumber > -1 && slotSourceBoxNumber == slotDestinationBoxNumber;
|
||||||
|
public static void Reset()
|
||||||
|
{
|
||||||
|
slotLeftMouseIsDown = false;
|
||||||
|
slotRightMouseIsDown = false;
|
||||||
|
slotDragDropInProgress = false;
|
||||||
|
|
||||||
|
slotPkmSource = null;
|
||||||
|
slotSourceOffset = slotSourceSlotNumber = slotSourceBoxNumber = -1;
|
||||||
|
slotPkmDestination = null;
|
||||||
|
slotDestinationOffset = slotSourceBoxNumber = slotDestinationBoxNumber = -1;
|
||||||
|
|
||||||
|
Cursor = null;
|
||||||
|
CurrentPath = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool slotLeftMouseIsDown = false;
|
|
||||||
private static bool slotRightMouseIsDown = false;
|
|
||||||
private static bool slotDragDropInProgress = false;
|
|
||||||
private byte[] slotPkmSource;
|
|
||||||
private int slotSourceOffset;
|
|
||||||
private int slotSourceSlotNumber = -1;
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,6 +189,12 @@
|
||||||
<Compile Include="Subforms\Save Editors\Gen6\SAV_PokeBlockORAS.Designer.cs">
|
<Compile Include="Subforms\Save Editors\Gen6\SAV_PokeBlockORAS.Designer.cs">
|
||||||
<DependentUpon>SAV_PokeBlockORAS.cs</DependentUpon>
|
<DependentUpon>SAV_PokeBlockORAS.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Subforms\Save Editors\SAV_BoxViewer.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="Subforms\Save Editors\SAV_BoxViewer.Designer.cs">
|
||||||
|
<DependentUpon>SAV_BoxViewer.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="Subforms\SAV_Database.cs">
|
<Compile Include="Subforms\SAV_Database.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -338,6 +344,9 @@
|
||||||
<EmbeddedResource Include="Subforms\Save Editors\Gen6\SAV_PokeBlockORAS.resx">
|
<EmbeddedResource Include="Subforms\Save Editors\Gen6\SAV_PokeBlockORAS.resx">
|
||||||
<DependentUpon>SAV_PokeBlockORAS.cs</DependentUpon>
|
<DependentUpon>SAV_PokeBlockORAS.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="Subforms\Save Editors\SAV_BoxViewer.resx">
|
||||||
|
<DependentUpon>SAV_BoxViewer.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Subforms\SAV_Database.resx">
|
<EmbeddedResource Include="Subforms\SAV_Database.resx">
|
||||||
<DependentUpon>SAV_Database.cs</DependentUpon>
|
<DependentUpon>SAV_Database.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
@ -2704,7 +2713,12 @@
|
||||||
<None Include="Resources\img\ribbons\artist.png" />
|
<None Include="Resources\img\ribbons\artist.png" />
|
||||||
<None Include="Resources\img\ribbons\alert.png" />
|
<None Include="Resources\img\ribbons\alert.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup>
|
||||||
|
<None Include="Resources\img\box\slotDrag.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="Resources\img\box\swapBox.png" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|
24
PKHeX/Properties/Resources.Designer.cs
generated
24
PKHeX/Properties/Resources.Designer.cs
generated
|
@ -16670,6 +16670,16 @@ namespace PKHeX.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap slotDrag {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("slotDrag", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -18429,6 +18439,16 @@ namespace PKHeX.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||||
|
/// </summary>
|
||||||
|
internal static System.Drawing.Bitmap swapBox {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("swapBox", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to -
|
/// Looks up a localized string similar to -
|
||||||
///Duftnote
|
///Duftnote
|
||||||
|
@ -22883,8 +22903,8 @@ namespace PKHeX.Properties {
|
||||||
///
|
///
|
||||||
///Blanca
|
///Blanca
|
||||||
///Negra
|
///Negra
|
||||||
///Blanca2
|
///Blanca 2
|
||||||
///Negra2
|
///Negra 2
|
||||||
///X
|
///X
|
||||||
///Y
|
///Y
|
||||||
///Zafiro Alfa
|
///Zafiro Alfa
|
||||||
|
|
|
@ -6385,4 +6385,10 @@
|
||||||
<data name="item_tm" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="item_tm" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\img\item\item_tm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\img\item\item_tm.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="slotDrag" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\img\box\slotDrag.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="swapBox" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\img\box\swapBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
BIN
PKHeX/Resources/img/box/slotDrag.png
Normal file
BIN
PKHeX/Resources/img/box/slotDrag.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 143 B |
BIN
PKHeX/Resources/img/box/swapBox.png
Normal file
BIN
PKHeX/Resources/img/box/swapBox.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 176 B |
603
PKHeX/Subforms/Save Editors/SAV_BoxViewer.Designer.cs
generated
Normal file
603
PKHeX/Subforms/Save Editors/SAV_BoxViewer.Designer.cs
generated
Normal file
|
@ -0,0 +1,603 @@
|
||||||
|
namespace PKHeX
|
||||||
|
{
|
||||||
|
partial class SAV_BoxViewer
|
||||||
|
{
|
||||||
|
/// <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(SAV_BoxViewer));
|
||||||
|
this.PAN_Box = new System.Windows.Forms.Panel();
|
||||||
|
this.bpkx30 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx29 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx28 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx27 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx26 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx25 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx24 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx23 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx22 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx21 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx20 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx19 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx18 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx17 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx16 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx15 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx14 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx13 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx12 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx11 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx10 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx9 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx8 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx7 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx6 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx5 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx4 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx3 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx2 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.bpkx1 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.B_BoxRight = new System.Windows.Forms.Button();
|
||||||
|
this.B_BoxLeft = new System.Windows.Forms.Button();
|
||||||
|
this.CB_BoxSelect = new System.Windows.Forms.ComboBox();
|
||||||
|
this.PB_BoxSwap = new System.Windows.Forms.PictureBox();
|
||||||
|
this.PAN_Box.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx30)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx29)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx28)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx27)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx26)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx25)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx24)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx23)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx22)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx21)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx20)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx19)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx18)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx17)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx16)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx15)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx14)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx13)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx12)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx11)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx10)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx9)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx8)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx7)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx6)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx5)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx4)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx3)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx2)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx1)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.PB_BoxSwap)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// PAN_Box
|
||||||
|
//
|
||||||
|
this.PAN_Box.BackgroundImage = global::PKHeX.Properties.Resources.box_wp16xy;
|
||||||
|
this.PAN_Box.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx30);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx29);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx28);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx27);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx26);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx25);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx24);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx23);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx22);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx21);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx20);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx19);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx18);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx17);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx16);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx15);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx14);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx13);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx12);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx11);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx10);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx9);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx8);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx7);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx6);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx5);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx4);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx3);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx2);
|
||||||
|
this.PAN_Box.Controls.Add(this.bpkx1);
|
||||||
|
this.PAN_Box.Location = new System.Drawing.Point(17, 37);
|
||||||
|
this.PAN_Box.Name = "PAN_Box";
|
||||||
|
this.PAN_Box.Size = new System.Drawing.Size(251, 160);
|
||||||
|
this.PAN_Box.TabIndex = 66;
|
||||||
|
//
|
||||||
|
// bpkx30
|
||||||
|
//
|
||||||
|
this.bpkx30.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx30.Location = new System.Drawing.Point(207, 126);
|
||||||
|
this.bpkx30.Name = "bpkx30";
|
||||||
|
this.bpkx30.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx30.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx30.TabIndex = 59;
|
||||||
|
this.bpkx30.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx29
|
||||||
|
//
|
||||||
|
this.bpkx29.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx29.Location = new System.Drawing.Point(166, 126);
|
||||||
|
this.bpkx29.Name = "bpkx29";
|
||||||
|
this.bpkx29.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx29.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx29.TabIndex = 58;
|
||||||
|
this.bpkx29.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx28
|
||||||
|
//
|
||||||
|
this.bpkx28.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx28.Location = new System.Drawing.Point(125, 126);
|
||||||
|
this.bpkx28.Name = "bpkx28";
|
||||||
|
this.bpkx28.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx28.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx28.TabIndex = 57;
|
||||||
|
this.bpkx28.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx27
|
||||||
|
//
|
||||||
|
this.bpkx27.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx27.Location = new System.Drawing.Point(84, 126);
|
||||||
|
this.bpkx27.Name = "bpkx27";
|
||||||
|
this.bpkx27.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx27.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx27.TabIndex = 56;
|
||||||
|
this.bpkx27.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx26
|
||||||
|
//
|
||||||
|
this.bpkx26.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx26.Location = new System.Drawing.Point(43, 126);
|
||||||
|
this.bpkx26.Name = "bpkx26";
|
||||||
|
this.bpkx26.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx26.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx26.TabIndex = 55;
|
||||||
|
this.bpkx26.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx25
|
||||||
|
//
|
||||||
|
this.bpkx25.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx25.Location = new System.Drawing.Point(2, 126);
|
||||||
|
this.bpkx25.Name = "bpkx25";
|
||||||
|
this.bpkx25.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx25.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx25.TabIndex = 54;
|
||||||
|
this.bpkx25.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx24
|
||||||
|
//
|
||||||
|
this.bpkx24.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx24.Location = new System.Drawing.Point(207, 95);
|
||||||
|
this.bpkx24.Name = "bpkx24";
|
||||||
|
this.bpkx24.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx24.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx24.TabIndex = 53;
|
||||||
|
this.bpkx24.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx23
|
||||||
|
//
|
||||||
|
this.bpkx23.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx23.Location = new System.Drawing.Point(166, 95);
|
||||||
|
this.bpkx23.Name = "bpkx23";
|
||||||
|
this.bpkx23.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx23.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx23.TabIndex = 52;
|
||||||
|
this.bpkx23.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx22
|
||||||
|
//
|
||||||
|
this.bpkx22.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx22.Location = new System.Drawing.Point(125, 95);
|
||||||
|
this.bpkx22.Name = "bpkx22";
|
||||||
|
this.bpkx22.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx22.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx22.TabIndex = 51;
|
||||||
|
this.bpkx22.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx21
|
||||||
|
//
|
||||||
|
this.bpkx21.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx21.Location = new System.Drawing.Point(84, 95);
|
||||||
|
this.bpkx21.Name = "bpkx21";
|
||||||
|
this.bpkx21.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx21.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx21.TabIndex = 50;
|
||||||
|
this.bpkx21.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx20
|
||||||
|
//
|
||||||
|
this.bpkx20.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx20.Location = new System.Drawing.Point(43, 95);
|
||||||
|
this.bpkx20.Name = "bpkx20";
|
||||||
|
this.bpkx20.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx20.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx20.TabIndex = 49;
|
||||||
|
this.bpkx20.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx19
|
||||||
|
//
|
||||||
|
this.bpkx19.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx19.Location = new System.Drawing.Point(2, 95);
|
||||||
|
this.bpkx19.Name = "bpkx19";
|
||||||
|
this.bpkx19.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx19.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx19.TabIndex = 48;
|
||||||
|
this.bpkx19.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx18
|
||||||
|
//
|
||||||
|
this.bpkx18.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx18.Location = new System.Drawing.Point(207, 64);
|
||||||
|
this.bpkx18.Name = "bpkx18";
|
||||||
|
this.bpkx18.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx18.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx18.TabIndex = 47;
|
||||||
|
this.bpkx18.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx17
|
||||||
|
//
|
||||||
|
this.bpkx17.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx17.Location = new System.Drawing.Point(166, 64);
|
||||||
|
this.bpkx17.Name = "bpkx17";
|
||||||
|
this.bpkx17.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx17.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx17.TabIndex = 46;
|
||||||
|
this.bpkx17.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx16
|
||||||
|
//
|
||||||
|
this.bpkx16.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx16.Location = new System.Drawing.Point(125, 64);
|
||||||
|
this.bpkx16.Name = "bpkx16";
|
||||||
|
this.bpkx16.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx16.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx16.TabIndex = 45;
|
||||||
|
this.bpkx16.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx15
|
||||||
|
//
|
||||||
|
this.bpkx15.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx15.Location = new System.Drawing.Point(84, 64);
|
||||||
|
this.bpkx15.Name = "bpkx15";
|
||||||
|
this.bpkx15.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx15.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx15.TabIndex = 44;
|
||||||
|
this.bpkx15.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx14
|
||||||
|
//
|
||||||
|
this.bpkx14.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx14.Location = new System.Drawing.Point(43, 64);
|
||||||
|
this.bpkx14.Name = "bpkx14";
|
||||||
|
this.bpkx14.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx14.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx14.TabIndex = 43;
|
||||||
|
this.bpkx14.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx13
|
||||||
|
//
|
||||||
|
this.bpkx13.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx13.Location = new System.Drawing.Point(2, 64);
|
||||||
|
this.bpkx13.Name = "bpkx13";
|
||||||
|
this.bpkx13.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx13.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx13.TabIndex = 42;
|
||||||
|
this.bpkx13.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx12
|
||||||
|
//
|
||||||
|
this.bpkx12.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx12.Location = new System.Drawing.Point(207, 33);
|
||||||
|
this.bpkx12.Name = "bpkx12";
|
||||||
|
this.bpkx12.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx12.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx12.TabIndex = 41;
|
||||||
|
this.bpkx12.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx11
|
||||||
|
//
|
||||||
|
this.bpkx11.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx11.Location = new System.Drawing.Point(166, 33);
|
||||||
|
this.bpkx11.Name = "bpkx11";
|
||||||
|
this.bpkx11.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx11.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx11.TabIndex = 40;
|
||||||
|
this.bpkx11.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx10
|
||||||
|
//
|
||||||
|
this.bpkx10.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx10.Location = new System.Drawing.Point(125, 33);
|
||||||
|
this.bpkx10.Name = "bpkx10";
|
||||||
|
this.bpkx10.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx10.TabIndex = 39;
|
||||||
|
this.bpkx10.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx9
|
||||||
|
//
|
||||||
|
this.bpkx9.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx9.Location = new System.Drawing.Point(84, 33);
|
||||||
|
this.bpkx9.Name = "bpkx9";
|
||||||
|
this.bpkx9.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx9.TabIndex = 38;
|
||||||
|
this.bpkx9.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx8
|
||||||
|
//
|
||||||
|
this.bpkx8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx8.Location = new System.Drawing.Point(43, 33);
|
||||||
|
this.bpkx8.Name = "bpkx8";
|
||||||
|
this.bpkx8.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx8.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx8.TabIndex = 37;
|
||||||
|
this.bpkx8.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx7
|
||||||
|
//
|
||||||
|
this.bpkx7.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx7.Location = new System.Drawing.Point(2, 33);
|
||||||
|
this.bpkx7.Name = "bpkx7";
|
||||||
|
this.bpkx7.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx7.TabIndex = 36;
|
||||||
|
this.bpkx7.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx6
|
||||||
|
//
|
||||||
|
this.bpkx6.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx6.Location = new System.Drawing.Point(207, 2);
|
||||||
|
this.bpkx6.Name = "bpkx6";
|
||||||
|
this.bpkx6.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx6.TabIndex = 35;
|
||||||
|
this.bpkx6.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx5
|
||||||
|
//
|
||||||
|
this.bpkx5.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx5.Location = new System.Drawing.Point(166, 2);
|
||||||
|
this.bpkx5.Name = "bpkx5";
|
||||||
|
this.bpkx5.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx5.TabIndex = 34;
|
||||||
|
this.bpkx5.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx4
|
||||||
|
//
|
||||||
|
this.bpkx4.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx4.Location = new System.Drawing.Point(125, 2);
|
||||||
|
this.bpkx4.Name = "bpkx4";
|
||||||
|
this.bpkx4.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx4.TabIndex = 33;
|
||||||
|
this.bpkx4.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx3
|
||||||
|
//
|
||||||
|
this.bpkx3.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx3.Location = new System.Drawing.Point(84, 2);
|
||||||
|
this.bpkx3.Name = "bpkx3";
|
||||||
|
this.bpkx3.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx3.TabIndex = 32;
|
||||||
|
this.bpkx3.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx2
|
||||||
|
//
|
||||||
|
this.bpkx2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx2.Location = new System.Drawing.Point(43, 2);
|
||||||
|
this.bpkx2.Name = "bpkx2";
|
||||||
|
this.bpkx2.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx2.TabIndex = 31;
|
||||||
|
this.bpkx2.TabStop = false;
|
||||||
|
//
|
||||||
|
// bpkx1
|
||||||
|
//
|
||||||
|
this.bpkx1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
|
this.bpkx1.Location = new System.Drawing.Point(2, 2);
|
||||||
|
this.bpkx1.Name = "bpkx1";
|
||||||
|
this.bpkx1.Size = new System.Drawing.Size(42, 32);
|
||||||
|
this.bpkx1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage;
|
||||||
|
this.bpkx1.TabIndex = 30;
|
||||||
|
this.bpkx1.TabStop = false;
|
||||||
|
//
|
||||||
|
// B_BoxRight
|
||||||
|
//
|
||||||
|
this.B_BoxRight.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||||
|
this.B_BoxRight.Location = new System.Drawing.Point(210, 11);
|
||||||
|
this.B_BoxRight.Name = "B_BoxRight";
|
||||||
|
this.B_BoxRight.Size = new System.Drawing.Size(27, 23);
|
||||||
|
this.B_BoxRight.TabIndex = 65;
|
||||||
|
this.B_BoxRight.Text = ">>";
|
||||||
|
this.B_BoxRight.UseVisualStyleBackColor = true;
|
||||||
|
this.B_BoxRight.Click += new System.EventHandler(this.clickBoxRight);
|
||||||
|
//
|
||||||
|
// B_BoxLeft
|
||||||
|
//
|
||||||
|
this.B_BoxLeft.FlatStyle = System.Windows.Forms.FlatStyle.System;
|
||||||
|
this.B_BoxLeft.Location = new System.Drawing.Point(48, 11);
|
||||||
|
this.B_BoxLeft.Name = "B_BoxLeft";
|
||||||
|
this.B_BoxLeft.Size = new System.Drawing.Size(27, 23);
|
||||||
|
this.B_BoxLeft.TabIndex = 64;
|
||||||
|
this.B_BoxLeft.Text = "<<";
|
||||||
|
this.B_BoxLeft.UseVisualStyleBackColor = true;
|
||||||
|
this.B_BoxLeft.Click += new System.EventHandler(this.clickBoxLeft);
|
||||||
|
//
|
||||||
|
// CB_BoxSelect
|
||||||
|
//
|
||||||
|
this.CB_BoxSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.CB_BoxSelect.FormattingEnabled = true;
|
||||||
|
this.CB_BoxSelect.Items.AddRange(new object[] {
|
||||||
|
"Box 1",
|
||||||
|
"Box 2",
|
||||||
|
"Box 3",
|
||||||
|
"Box 4",
|
||||||
|
"Box 5",
|
||||||
|
"Box 6",
|
||||||
|
"Box 7",
|
||||||
|
"Box 8",
|
||||||
|
"Box 9",
|
||||||
|
"Box 10",
|
||||||
|
"Box 11",
|
||||||
|
"Box 12",
|
||||||
|
"Box 13",
|
||||||
|
"Box 14",
|
||||||
|
"Box 15",
|
||||||
|
"Box 16",
|
||||||
|
"Box 17",
|
||||||
|
"Box 18",
|
||||||
|
"Box 19",
|
||||||
|
"Box 20",
|
||||||
|
"Box 21",
|
||||||
|
"Box 22",
|
||||||
|
"Box 23",
|
||||||
|
"Box 24",
|
||||||
|
"Box 25",
|
||||||
|
"Box 26",
|
||||||
|
"Box 27",
|
||||||
|
"Box 28",
|
||||||
|
"Box 29",
|
||||||
|
"Box 30",
|
||||||
|
"Box 31"});
|
||||||
|
this.CB_BoxSelect.Location = new System.Drawing.Point(79, 12);
|
||||||
|
this.CB_BoxSelect.Name = "CB_BoxSelect";
|
||||||
|
this.CB_BoxSelect.Size = new System.Drawing.Size(127, 21);
|
||||||
|
this.CB_BoxSelect.TabIndex = 63;
|
||||||
|
this.CB_BoxSelect.SelectedIndexChanged += new System.EventHandler(this.CB_BoxSelect_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// PB_BoxSwap
|
||||||
|
//
|
||||||
|
this.PB_BoxSwap.Image = global::PKHeX.Properties.Resources.swapBox;
|
||||||
|
this.PB_BoxSwap.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.PB_BoxSwap.Name = "PB_BoxSwap";
|
||||||
|
this.PB_BoxSwap.Size = new System.Drawing.Size(24, 24);
|
||||||
|
this.PB_BoxSwap.TabIndex = 67;
|
||||||
|
this.PB_BoxSwap.TabStop = false;
|
||||||
|
this.PB_BoxSwap.Click += new System.EventHandler(this.PB_BoxSwap_Click);
|
||||||
|
//
|
||||||
|
// SAV_BoxViewer
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(284, 211);
|
||||||
|
this.Controls.Add(this.PB_BoxSwap);
|
||||||
|
this.Controls.Add(this.B_BoxRight);
|
||||||
|
this.Controls.Add(this.B_BoxLeft);
|
||||||
|
this.Controls.Add(this.CB_BoxSelect);
|
||||||
|
this.Controls.Add(this.PAN_Box);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.Name = "SAV_BoxViewer";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||||
|
this.Text = "Box Viewer";
|
||||||
|
this.PAN_Box.ResumeLayout(false);
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx30)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx29)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx28)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx27)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx26)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx25)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx24)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx23)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx22)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx21)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx20)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx19)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx18)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx17)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx16)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx15)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx14)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx13)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx12)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx11)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx10)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx9)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx8)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx7)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx6)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx5)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx4)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx3)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx2)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.bpkx1)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.PB_BoxSwap)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel PAN_Box;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx30;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx29;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx28;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx27;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx26;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx25;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx24;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx23;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx22;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx21;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx20;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx19;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx18;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx17;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx16;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx15;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx14;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx13;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx12;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx11;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx10;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx9;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx8;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx7;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx6;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx5;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx4;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx3;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx2;
|
||||||
|
private System.Windows.Forms.PictureBox bpkx1;
|
||||||
|
private System.Windows.Forms.Button B_BoxRight;
|
||||||
|
private System.Windows.Forms.Button B_BoxLeft;
|
||||||
|
private System.Windows.Forms.ComboBox CB_BoxSelect;
|
||||||
|
private System.Windows.Forms.PictureBox PB_BoxSwap;
|
||||||
|
}
|
||||||
|
}
|
314
PKHeX/Subforms/Save Editors/SAV_BoxViewer.cs
Normal file
314
PKHeX/Subforms/Save Editors/SAV_BoxViewer.cs
Normal file
|
@ -0,0 +1,314 @@
|
||||||
|
using System;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using static PKHeX.Main;
|
||||||
|
|
||||||
|
namespace PKHeX
|
||||||
|
{
|
||||||
|
public partial class SAV_BoxViewer : Form
|
||||||
|
{
|
||||||
|
public SAV_BoxViewer(Main p)
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
parent = p;
|
||||||
|
CenterToParent();
|
||||||
|
|
||||||
|
AllowDrop = true;
|
||||||
|
DragEnter += tabMain_DragEnter;
|
||||||
|
DragDrop += (sender, e) =>
|
||||||
|
{
|
||||||
|
Cursor = DefaultCursor;
|
||||||
|
System.Media.SystemSounds.Asterisk.Play();
|
||||||
|
};
|
||||||
|
|
||||||
|
SlotPictureBoxes = new[] {
|
||||||
|
bpkx1, bpkx2, bpkx3, bpkx4, bpkx5, bpkx6,
|
||||||
|
bpkx7, bpkx8, bpkx9, bpkx10,bpkx11,bpkx12,
|
||||||
|
bpkx13,bpkx14,bpkx15,bpkx16,bpkx17,bpkx18,
|
||||||
|
bpkx19,bpkx20,bpkx21,bpkx22,bpkx23,bpkx24,
|
||||||
|
bpkx25,bpkx26,bpkx27,bpkx28,bpkx29,bpkx30,
|
||||||
|
};
|
||||||
|
foreach (PictureBox pb in SlotPictureBoxes)
|
||||||
|
{
|
||||||
|
pb.AllowDrop = true;
|
||||||
|
pb.GiveFeedback += (sender, e) => { e.UseDefaultCursors = false; };
|
||||||
|
pb.MouseUp += pbBoxSlot_MouseUp;
|
||||||
|
pb.MouseDown += pbBoxSlot_MouseDown;
|
||||||
|
pb.MouseMove += pbBoxSlot_MouseMove;
|
||||||
|
pb.DragDrop += pbBoxSlot_DragDrop;
|
||||||
|
pb.DragEnter += pbBoxSlot_DragEnter;
|
||||||
|
pb.QueryContinueDrag += pbBoxSlot_QueryContinueDrag;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
CB_BoxSelect.Items.Clear();
|
||||||
|
for (int i = 0; i < SAV.BoxCount; i++)
|
||||||
|
CB_BoxSelect.Items.Add(SAV.getBoxName(i));
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
CB_BoxSelect.Items.Clear();
|
||||||
|
for (int i = 1; i <= SAV.BoxCount; i++)
|
||||||
|
CB_BoxSelect.Items.Add($"BOX {i}");
|
||||||
|
}
|
||||||
|
CB_BoxSelect.SelectedIndex = 0;
|
||||||
|
}
|
||||||
|
private readonly Main parent;
|
||||||
|
private readonly PictureBox[] SlotPictureBoxes;
|
||||||
|
|
||||||
|
private void CB_BoxSelect_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
setPKXBoxes();
|
||||||
|
}
|
||||||
|
private void clickBoxRight(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CB_BoxSelect.SelectedIndex = (CB_BoxSelect.SelectedIndex + 1) % SAV.BoxCount;
|
||||||
|
}
|
||||||
|
private void clickBoxLeft(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CB_BoxSelect.SelectedIndex = (CB_BoxSelect.SelectedIndex + SAV.BoxCount - 1) % SAV.BoxCount;
|
||||||
|
}
|
||||||
|
private void PB_BoxSwap_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
CB_BoxSelect.SelectedIndex = parent.swapBoxesViewer(CB_BoxSelect.SelectedIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Copied Methods from Main.cs (slightly modified)
|
||||||
|
private int getPKXOffset(int slot)
|
||||||
|
{
|
||||||
|
return SAV.getBoxOffset(CB_BoxSelect.SelectedIndex) + slot * SAV.SIZE_STORED;
|
||||||
|
}
|
||||||
|
private void setPKXBoxes()
|
||||||
|
{
|
||||||
|
int boxoffset = SAV.getBoxOffset(CB_BoxSelect.SelectedIndex);
|
||||||
|
int boxbgval = SAV.getBoxWallpaper(CB_BoxSelect.SelectedIndex);
|
||||||
|
PAN_Box.BackgroundImage = BoxWallpaper.getWallpaper(SAV, boxbgval);
|
||||||
|
|
||||||
|
for (int i = 0; i < SlotPictureBoxes.Length; i++)
|
||||||
|
getSlotFiller(boxoffset + SAV.SIZE_STORED*i, SlotPictureBoxes[i]);
|
||||||
|
}
|
||||||
|
private void getSlotFiller(int offset, PictureBox pb)
|
||||||
|
{
|
||||||
|
if (SAV.getData(offset, SAV.SIZE_STORED).SequenceEqual(new byte[SAV.SIZE_STORED]))
|
||||||
|
{
|
||||||
|
// 00s present in slot.
|
||||||
|
pb.Image = null;
|
||||||
|
pb.BackColor = Color.Transparent;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
PKM p = SAV.getStoredSlot(offset);
|
||||||
|
if (p.Sanity != 0 || !p.ChecksumValid) // Invalid
|
||||||
|
{
|
||||||
|
// Bad Egg present in slot.
|
||||||
|
pb.Image = null;
|
||||||
|
pb.BackColor = Color.Red;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Something stored in slot. Only display if species is valid.
|
||||||
|
pb.Image = p.Species == 0 ? null : p.Sprite;
|
||||||
|
pb.BackColor = Color.Transparent;
|
||||||
|
}
|
||||||
|
private void getQuickFiller(PictureBox pb, PKM pk)
|
||||||
|
{
|
||||||
|
pb.Image = pk.Species == 0 ? null : pk.Sprite;
|
||||||
|
if (pb.BackColor == Color.Red)
|
||||||
|
pb.BackColor = Color.Transparent;
|
||||||
|
}
|
||||||
|
private int getSlot(object sender)
|
||||||
|
{
|
||||||
|
sender = ((sender as ToolStripItem)?.Owner as ContextMenuStrip)?.SourceControl ?? sender as PictureBox;
|
||||||
|
return Array.IndexOf(SlotPictureBoxes, sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Drag and drop related functions
|
||||||
|
private void pbBoxSlot_MouseUp(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
DragInfo.slotLeftMouseIsDown = false;
|
||||||
|
if (e.Button == MouseButtons.Right)
|
||||||
|
DragInfo.slotRightMouseIsDown = false;
|
||||||
|
}
|
||||||
|
private void pbBoxSlot_MouseDown(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
DragInfo.slotLeftMouseIsDown = true;
|
||||||
|
if (e.Button == MouseButtons.Right)
|
||||||
|
DragInfo.slotRightMouseIsDown = true;
|
||||||
|
}
|
||||||
|
private void pbBoxSlot_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (DragInfo.slotDragDropInProgress)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (DragInfo.slotLeftMouseIsDown)
|
||||||
|
{
|
||||||
|
// The goal is to create a temporary PKX file for the underlying Pokemon
|
||||||
|
// and use that file to perform a drag drop operation.
|
||||||
|
|
||||||
|
// Abort if there is no Pokemon in the given slot.
|
||||||
|
PictureBox pb = (PictureBox)sender;
|
||||||
|
if (pb.Image == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Set flag to prevent re-entering.
|
||||||
|
DragInfo.slotDragDropInProgress = true;
|
||||||
|
|
||||||
|
DragInfo.slotSourceSlotNumber = getSlot(pb);
|
||||||
|
int offset = getPKXOffset(DragInfo.slotSourceSlotNumber);
|
||||||
|
|
||||||
|
// Prepare Data
|
||||||
|
DragInfo.slotPkmSource = SAV.getData(offset, SAV.SIZE_STORED);
|
||||||
|
DragInfo.slotSourceOffset = offset;
|
||||||
|
DragInfo.slotSourceBoxNumber = CB_BoxSelect.SelectedIndex;
|
||||||
|
|
||||||
|
// Make a new file name based off the PID
|
||||||
|
byte[] dragdata = SAV.decryptPKM(DragInfo.slotPkmSource);
|
||||||
|
Array.Resize(ref dragdata, SAV.SIZE_STORED);
|
||||||
|
PKM pkx = SAV.getPKM(dragdata);
|
||||||
|
string filename = pkx.FileName;
|
||||||
|
|
||||||
|
// Make File
|
||||||
|
string newfile = Path.Combine(Path.GetTempPath(), Util.CleanFileName(filename));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
File.WriteAllBytes(newfile, dragdata);
|
||||||
|
var img = (Bitmap)pb.Image;
|
||||||
|
DragInfo.Cursor = Cursor.Current = new Cursor(img.GetHicon());
|
||||||
|
pb.Image = null;
|
||||||
|
pb.BackgroundImage = Properties.Resources.slotDrag;
|
||||||
|
// Thread Blocks on DoDragDrop
|
||||||
|
DragInfo.CurrentPath = newfile;
|
||||||
|
DragDropEffects result = pb.DoDragDrop(new DataObject(DataFormats.FileDrop, new[] { newfile }), DragDropEffects.Move);
|
||||||
|
if (result != DragDropEffects.Link) // not dropped to another box slot, restore img
|
||||||
|
pb.Image = img;
|
||||||
|
else // refresh image
|
||||||
|
getQuickFiller(pb, SAV.getStoredSlot(DragInfo.slotSourceOffset));
|
||||||
|
pb.BackgroundImage = null;
|
||||||
|
|
||||||
|
if (DragInfo.slotDestinationBoxNumber == DragInfo.slotSourceBoxNumber)
|
||||||
|
SlotPictureBoxes[DragInfo.slotDestinationSlotNumber].Image = img;
|
||||||
|
}
|
||||||
|
catch (Exception x)
|
||||||
|
{
|
||||||
|
Util.Error("Drag & Drop Error:", x.ToString());
|
||||||
|
}
|
||||||
|
DragInfo.Reset();
|
||||||
|
Cursor = DefaultCursor;
|
||||||
|
|
||||||
|
// Browser apps need time to load data since the file isn't moved to a location on the user's local storage.
|
||||||
|
// Tested 10ms -> too quick, 100ms was fine. 500ms should be safe?
|
||||||
|
new Thread(() =>
|
||||||
|
{
|
||||||
|
Thread.Sleep(500);
|
||||||
|
if (File.Exists(newfile) && DragInfo.CurrentPath == null)
|
||||||
|
File.Delete(newfile);
|
||||||
|
}).Start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void pbBoxSlot_DragDrop(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
DragInfo.slotDestinationSlotNumber = getSlot(sender);
|
||||||
|
DragInfo.slotDestinationOffset = getPKXOffset(DragInfo.slotDestinationSlotNumber);
|
||||||
|
DragInfo.slotDestinationBoxNumber = CB_BoxSelect.SelectedIndex;
|
||||||
|
|
||||||
|
// Check for In-Dropped files (PKX,SAV,ETC)
|
||||||
|
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
|
||||||
|
if (Directory.Exists(files[0])) { return; }
|
||||||
|
if (DragInfo.slotSourceOffset < 0) // file
|
||||||
|
{
|
||||||
|
if (files.Length <= 0)
|
||||||
|
return;
|
||||||
|
string file = files[0];
|
||||||
|
FileInfo fi = new FileInfo(file);
|
||||||
|
if (!PKX.getIsPKM(fi.Length) && !MysteryGift.getIsMysteryGift(fi.Length))
|
||||||
|
{ return; }
|
||||||
|
|
||||||
|
byte[] data = File.ReadAllBytes(file);
|
||||||
|
MysteryGift mg = MysteryGift.getMysteryGift(data, fi.Extension);
|
||||||
|
PKM temp = mg != null ? mg.convertToPKM(SAV) : PKMConverter.getPKMfromBytes(data);
|
||||||
|
string c;
|
||||||
|
|
||||||
|
PKM pk = PKMConverter.convertToFormat(temp, SAV.Generation, out c);
|
||||||
|
if (pk == null)
|
||||||
|
{ Util.Error(c); Console.WriteLine(c); return; }
|
||||||
|
|
||||||
|
string[] errata = verifyPKMtoSAV(pk);
|
||||||
|
if (errata.Length > 0)
|
||||||
|
{
|
||||||
|
string concat = string.Join(Environment.NewLine, errata);
|
||||||
|
if (DialogResult.Yes != Util.Prompt(MessageBoxButtons.YesNo, concat, "Continue?"))
|
||||||
|
{ Console.WriteLine(c); Console.WriteLine(concat); return; }
|
||||||
|
}
|
||||||
|
|
||||||
|
SAV.setStoredSlot(pk, DragInfo.slotDestinationOffset);
|
||||||
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotDestinationSlotNumber], pk);
|
||||||
|
Console.WriteLine(c);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PKM pkz = SAV.getStoredSlot(DragInfo.slotSourceOffset);
|
||||||
|
if (ModifierKeys == Keys.Alt && DragInfo.slotDestinationSlotNumber > -1) // overwrite
|
||||||
|
{
|
||||||
|
// Clear from slot
|
||||||
|
if (DragInfo.SameBox)
|
||||||
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotSourceSlotNumber], SAV.BlankPKM); // picturebox
|
||||||
|
|
||||||
|
SAV.setStoredSlot(SAV.BlankPKM, DragInfo.slotSourceOffset);
|
||||||
|
}
|
||||||
|
else if (ModifierKeys != Keys.Control && DragInfo.slotDestinationSlotNumber > -1) // move
|
||||||
|
{
|
||||||
|
// Load data from destination
|
||||||
|
PKM pk = ((PictureBox)sender).Image != null
|
||||||
|
? SAV.getStoredSlot(DragInfo.slotDestinationOffset)
|
||||||
|
: SAV.BlankPKM;
|
||||||
|
|
||||||
|
// Set destination pokemon image to source picture box
|
||||||
|
if (DragInfo.SameBox)
|
||||||
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotSourceSlotNumber], pk);
|
||||||
|
|
||||||
|
// Set destination pokemon data to source slot
|
||||||
|
SAV.setStoredSlot(pk, DragInfo.slotSourceOffset);
|
||||||
|
}
|
||||||
|
else if (DragInfo.SameBox) // clone
|
||||||
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotSourceSlotNumber], pkz);
|
||||||
|
|
||||||
|
// Copy from temp to destination slot.
|
||||||
|
SAV.setStoredSlot(pkz, DragInfo.slotDestinationOffset);
|
||||||
|
getQuickFiller(SlotPictureBoxes[DragInfo.slotDestinationSlotNumber], pkz);
|
||||||
|
|
||||||
|
e.Effect = DragDropEffects.Link;
|
||||||
|
Cursor = DefaultCursor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void pbBoxSlot_DragEnter(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.AllowedEffect == (DragDropEffects.Copy | DragDropEffects.Link)) // external file
|
||||||
|
e.Effect = DragDropEffects.Copy;
|
||||||
|
else if (e.Data != null) // within
|
||||||
|
e.Effect = DragDropEffects.Move;
|
||||||
|
|
||||||
|
if (DragInfo.slotDragDropInProgress)
|
||||||
|
Cursor = DragInfo.Cursor;
|
||||||
|
}
|
||||||
|
private void pbBoxSlot_QueryContinueDrag(object sender, QueryContinueDragEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Action == DragAction.Cancel || e.Action == DragAction.Drop)
|
||||||
|
{
|
||||||
|
DragInfo.slotLeftMouseIsDown = false;
|
||||||
|
DragInfo.slotRightMouseIsDown = false;
|
||||||
|
DragInfo.slotDragDropInProgress = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void tabMain_DragEnter(object sender, DragEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.AllowedEffect == (DragDropEffects.Copy | DragDropEffects.Link)) // external file
|
||||||
|
e.Effect = DragDropEffects.Copy;
|
||||||
|
else if (e.Data != null) // within
|
||||||
|
e.Effect = DragDropEffects.Move;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
219
PKHeX/Subforms/Save Editors/SAV_BoxViewer.resx
Normal file
219
PKHeX/Subforms/Save Editors/SAV_BoxViewer.resx
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
<?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>
|
||||||
|
<metadata name="PB_BoxSwap.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<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
|
||||||
|
5v/n5+f/5+jn/+jp6P/p6en/7Ozs/8LCwv+Tk5P/ioqK/66urv/o6ej/6enp/+jp6P/o6Oj/5+jn/+bn
|
||||||
|
5v/m5ub/5ebl/+Tl5P/k5OT/4uLi/9/g3/9zdHNpAAAAAAAAAABoaWhl4eLh/+Pk4//m5ub/5ubm/+fn
|
||||||
|
5//n6Of/6Ojo/+np6f/p6un/6urq/8bGxv8yMjL/AAAA/wAAAP8AAAD/AAAA/xMTE/+ZmZn/7Ozs/+rq
|
||||||
|
6v/p6en/6Ojo/+jo6P/n5+f/5ubm/+bm5v/k5OT/4eHh/3R0dGkAAAAAAAAAAGhpaGXj4+P/5eXl/+fn
|
||||||
|
5//n6Of/6Ojo/+np6f/q6ur/6urq/+vr6//Dw8P/DAwM/wAAAP8AAAD/Gxsb/ygoKP8BAQH/AAAA/wAA
|
||||||
|
AP+FhYX/7O3s/+rr6v/q6ur/6enp/+jo6P/o6Oj/5+fn/+Xl5f/i4+L/dHR0aQAAAAAAAAAAYWFhZeTl
|
||||||
|
5P/m5+b/6Ono/+np6f/p6un/6uvq/+vr6//s7Oz/7e7t/ycnJ/8AAAD/Ghoa/7S0tP/m5ub/5OTk/9HR
|
||||||
|
0f9GRkb/AAAA/wICAv/IyMj/7Ozs/+vs6//q6+r/6urq/+nq6f/o6ej/5+fn/+Tk5P9sbGxpAAAAAAAA
|
||||||
|
AAA9Pj1lj4+P/5OTk/+VlZX/lpaW/5eXl/+YmJj/mZmZ/5qamv92dnb/AAAA/wEBAf+/wL//3Nzc/+Tk
|
||||||
|
5P/l5eX/3d3d/+Li4v8mJib/AAAA/0ZGRv+ampr/mZmZ/5iYmP+Xl5f/lpaW/5WVlf+Tk5P/j4+P/0ZG
|
||||||
|
RmoAAAAAAAAAAAwMDGUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/Nzc3/+fn
|
||||||
|
5//q6ur/7O3s/+zt7P/v7+//39/f/4WFhf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8AAAD/EBAQagAAAAAAAAAAAwMHZQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP9NTU3/5ufm//Lz8v/z9PP/8/Tz//X19f/l5eX/nZ2d/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8AAAD/AAAA/wAAAP8GBgpqAAAAAAAAAAAAABZlAQEk/wEBJ/8CAin/AgIq/wICKv8CAiv/AgIs/wIC
|
||||||
|
LP8BAR3/AAAA/xwcHP/w8PD/6+zr//r6+v/6+vr/9PT0/+vr6/9lZWX/AAAA/wAAD/8CAi3/AgIs/wIC
|
||||||
|
K/8CAir/AgIq/wICKf8BASf/AQEl/wUFG2oAAAAAAAAAAAICQGUGBpL/Bwec/wgIo/8JCaf/CQmq/wkJ
|
||||||
|
rf8JCa//Cgqz/wkJqP8AAAL/AAAA/4CAgP/y8/L/6+zr/+3t7f/u7u7/xMTE/wcHB/8AAAD/BgZz/woK
|
||||||
|
s/8JCbD/CQmt/wkJqv8JCaj/CAik/wcHnf8HB5P/Dg5MagAAAAAAAAAAAwNHZQgIk/8JCZ3/Cgqj/wsL
|
||||||
|
p/8LC6n/Cwus/wsLr/8MDLL/DAy2/wYGW/8AAAD/AAAA/1JSUv+sraz/tra2/3h4eP8KCgr/AAAA/wIC
|
||||||
|
Iv8MDLb/DAyy/wsLsP8LC63/Cwuq/wsLp/8KCqT/CQmd/wgIk/8PD1VrAAAAAAAAAAAEBE1lCQmY/woK
|
||||||
|
ov8LC6j/DAyr/wwMrf8MDLD/DAyy/w0Ntf8NDbf/Dg67/wUFSv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8CAiH/DQ2q/w0NuP8NDbX/DQ2z/wwMsP8MDK7/DAyr/wsLqP8KCqL/CQmZ/xAQWmsAAAAAAAAAAAQE
|
||||||
|
UGUKCp7/Cwum/wwMrP8NDa//DQ2w/w0Ns/8ODrX/Dg63/w4Ouf8ODrv/Dw/A/wwMiv8FBTj/AAAG/wAA
|
||||||
|
AP8DAyb/CQls/w8Pu/8PD7z/Dg66/w4OuP8ODrX/DQ2z/w0Nsf8NDa//DAys/wsLp/8KCp7/ERFeawAA
|
||||||
|
AAAAAAAABQVTZQsLpP8MDKv/DQ2w/w4Os/8ODrT/Dg62/w8PuP8PD7r/Dw+8/w8Pvf8QEL//EBDA/xER
|
||||||
|
w/8SEsn/ERHJ/xERxf8QEMD/EBC//w8Pvv8PD7z/Dw+6/w8PuP8ODrf/Dg61/w4Os/8NDbH/DAyr/wsL
|
||||||
|
pP8SEmFrAAAAAAAAAAAGBlZlDAyq/w4OsP8PD7X/Dw+3/w8PuP8QELr/EBC7/xAQvf8REb7/ERHA/xER
|
||||||
|
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>
|
Loading…
Reference in a new issue