PKHeX/PKHeX.WinForms/Subforms/Save Editors/SAV_BoxViewer.cs
Kurt cce4707604
Enable nullable for winforms csproj (#3037)
Handle all warnings
obviously the usage of null! could potentially be avoided if the object init wasn't such garbage, but here we are with years of old junk and lack of abstraction in the GUI project
2020-10-18 11:02:39 -07:00

72 lines
2.5 KiB
C#

using System;
using System.Windows.Forms;
using PKHeX.Core;
using PKHeX.WinForms.Controls;
namespace PKHeX.WinForms
{
public sealed partial class SAV_BoxViewer : Form
{
private readonly SAVEditor parent;
public SAV_BoxViewer(SAVEditor p, SlotChangeManager m)
{
parent = p;
InitializeComponent();
int deltaW = Width - Box.BoxPokeGrid.Width;
int deltaH = Height - Box.BoxPokeGrid.Height;
Box.Editor = new BoxEdit(m.SE.SAV);
Box.Setup(m);
Box.InitializeGrid();
Width = Box.BoxPokeGrid.Width + deltaW + 2;
Height = Box.BoxPokeGrid.Height + deltaH + 2;
Box.RecenterControls();
Box.HorizontallyCenter(this);
Box.Reset();
CenterToParent();
AllowDrop = true;
GiveFeedback += (sender, e) => e.UseDefaultCursors = false;
DragEnter += Main_DragEnter;
DragDrop += (sender, e) =>
{
Cursor = DefaultCursor;
System.Media.SystemSounds.Asterisk.Play();
};
Owner = p.ParentForm;
MouseWheel += (s, e) =>
{
if (parent.menu.mnuVSD.Visible)
return;
Box.CurrentBox = e.Delta > 1 ? Box.Editor.MoveLeft() : Box.Editor.MoveRight();
};
foreach (PictureBox pb in Box.SlotPictureBoxes)
pb.ContextMenuStrip = parent.SlotPictureBoxes[0].ContextMenuStrip;
Box.ResetBoxNames(); // fix box names
Box.ResetSlots(); // refresh box background
p.EditEnv.Slots.Publisher.Subscribers.Add(Box);
}
public int CurrentBox => Box.CurrentBox;
private void PB_BoxSwap_Click(object sender, EventArgs e) => Box.CurrentBox = parent.SwapBoxesViewer(Box.CurrentBox);
private static void Main_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;
}
private void SAV_BoxViewer_FormClosing(object sender, FormClosingEventArgs e)
{
// Remove viewer from manager list
Box.M?.Boxes.Remove(Box);
parent.EditEnv.Slots.Publisher.Subscribers.Remove(Box);
}
}
}