Files
PCK-Studio/MinecraftUSkinEditor/Classes/Models/DefaultModels/TextureSelector.cs
PhoenixARC 6b68cb9b97 update
2021-06-20 10:55:29 -04:00

196 lines
7.6 KiB
C#

using System;
using System.ComponentModel;
using System.Drawing;
using System.Globalization;
using System.IO;
using System.Windows.Forms;
using MinecraftUSkinEditor.Models;
using PckStudio.Properties;
namespace MinecraftUSkinEditor.Models
{
public class TextureSelector : global::System.Windows.Forms.UserControl
{
protected override void Dispose(bool disposing)
{
if (disposing && this.components != null)
{
this.components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.textureNameBox = new global::System.Windows.Forms.TextBox();
this.browseButton = new global::System.Windows.Forms.Button();
this.openFileDialog = new global::System.Windows.Forms.OpenFileDialog();
this.reloadButton = new global::System.Windows.Forms.Button();
base.SuspendLayout();
this.textureNameBox.Anchor = (global::System.Windows.Forms.AnchorStyles.Top | global::System.Windows.Forms.AnchorStyles.Left | global::System.Windows.Forms.AnchorStyles.Right);
this.textureNameBox.Enabled = false;
this.textureNameBox.Location = new global::System.Drawing.Point(3, 5);
this.textureNameBox.Name = "textureNameBox";
this.textureNameBox.Size = new global::System.Drawing.Size(0x86, 0x14);
this.textureNameBox.TabIndex = 0;
this.browseButton.Anchor = (global::System.Windows.Forms.AnchorStyles.Top | global::System.Windows.Forms.AnchorStyles.Right);
this.browseButton.Location = new global::System.Drawing.Point(0x8F, 3);
this.browseButton.Name = "browseButton";
this.browseButton.Size = new global::System.Drawing.Size(0x20, 0x17);
this.browseButton.TabIndex = 1;
this.browseButton.Text = "...";
this.browseButton.UseVisualStyleBackColor = true;
this.browseButton.Click += this.OnBrowseButtonClick;
this.openFileDialog.DefaultExt = "png";
this.openFileDialog.Filter = "PNG (*.png)|*.png";
this.reloadButton.Anchor = (global::System.Windows.Forms.AnchorStyles.Top | global::System.Windows.Forms.AnchorStyles.Right);
this.reloadButton.Enabled = false;
this.reloadButton.Image = global::PckStudio.Properties.Resources.BINKA_ICON;
this.reloadButton.Location = new global::System.Drawing.Point(0xB5, 3);
this.reloadButton.Name = "reloadButton";
this.reloadButton.Size = new global::System.Drawing.Size(0x20, 0x17);
this.reloadButton.TabIndex = 1;
this.reloadButton.UseVisualStyleBackColor = true;
this.reloadButton.Click += this.OnReloadButtonClick;
this.AllowDrop = true;
base.AutoScaleDimensions = new global::System.Drawing.SizeF(6f, 13f);
base.AutoScaleMode = global::System.Windows.Forms.AutoScaleMode.Font;
base.Controls.Add(this.reloadButton);
base.Controls.Add(this.browseButton);
base.Controls.Add(this.textureNameBox);
base.Margin = new global::System.Windows.Forms.Padding(0);
base.Name = "TextureSelector";
base.Size = new global::System.Drawing.Size(0xD8, 0x20);
base.ResumeLayout(false);
base.PerformLayout();
}
public global::MinecraftUSkinEditor.Models.Texture Texture
{
get
{
return this.texture;
}
set
{
this.texture = value;
this.UpdateTextureName();
this.UpdateReloadButton();
}
}
private void UpdateTextureName()
{
this.textureNameBox.Text = this.texture.ToString();
}
private void UpdateReloadButton()
{
this.reloadButton.Enabled = (this.texture != null && !string.IsNullOrEmpty(this.texture.FileName));
}
public TextureSelector()
{
this.InitializeComponent();
global::System.Windows.Forms.ToolTip toolTip = new global::System.Windows.Forms.ToolTip();
toolTip.SetToolTip(this.browseButton, "Browse...");
toolTip.SetToolTip(this.reloadButton, "Reload texture");
}
private void OnBrowseButtonClick(object sender, global::System.EventArgs e)
{
if (this.openFileDialog.ShowDialog() == global::System.Windows.Forms.DialogResult.OK)
{
string fileName = this.openFileDialog.FileName;
using (global::System.IO.FileStream fileStream = global::System.IO.File.OpenRead(fileName))
{
global::System.Drawing.Image image = global::System.Drawing.Image.FromStream(fileStream);
if (image.Width != this.texture.Width || image.Height != this.texture.Height)
{
global::System.Windows.Forms.MessageBox.Show("Image '" + global::System.IO.Path.GetFileName(fileName) + "' has wrong size.", "Minecraft Skin Viewer Extended", global::System.Windows.Forms.MessageBoxButtons.OK, global::System.Windows.Forms.MessageBoxIcon.Hand);
}
else
{
this.texture.Source = image;
this.texture.FileName = fileName;
this.UpdateTextureName();
this.reloadButton.Enabled = true;
}
}
}
}
private void OnReloadButtonClick(object sender, global::System.EventArgs e)
{
if (this.texture == null || this.texture.Source == null)
{
this.reloadButton.Enabled = false;
return;
}
string fileName = this.texture.FileName;
if (!global::System.IO.File.Exists(fileName))
{
global::System.Windows.Forms.MessageBox.Show("Image '" + global::System.IO.Path.GetFileName(fileName) + "' not found.", "Minecraft Skin Viewer Extended", global::System.Windows.Forms.MessageBoxButtons.OK, global::System.Windows.Forms.MessageBoxIcon.Hand);
return;
}
using (global::System.IO.FileStream fileStream = global::System.IO.File.OpenRead(fileName))
{
global::System.Drawing.Image image = global::System.Drawing.Image.FromStream(fileStream);
if (image.Width != this.texture.Width || image.Height != this.texture.Height)
{
global::System.Windows.Forms.MessageBox.Show("Image '" + global::System.IO.Path.GetFileName(fileName) + "' has wrong size.", "Minecraft Skin Viewer Extended", global::System.Windows.Forms.MessageBoxButtons.OK, global::System.Windows.Forms.MessageBoxIcon.Hand);
}
else
{
this.texture.Source = image;
this.UpdateTextureName();
}
}
}
protected override void OnDragEnter(global::System.Windows.Forms.DragEventArgs drgevent)
{
if (drgevent.Data.GetDataPresent(global::System.Windows.Forms.DataFormats.FileDrop))
{
string[] array = (string[])drgevent.Data.GetData(global::System.Windows.Forms.DataFormats.FileDrop, false);
if (array.Length == 1 && array[0].EndsWith(".PNG", true, global::System.Globalization.CultureInfo.CurrentCulture))
{
drgevent.Effect = global::System.Windows.Forms.DragDropEffects.Copy;
}
}
}
protected override void OnDragDrop(global::System.Windows.Forms.DragEventArgs drgevent)
{
string text = ((string[])drgevent.Data.GetData(global::System.Windows.Forms.DataFormats.FileDrop, false))[0];
using (global::System.IO.FileStream fileStream = global::System.IO.File.OpenRead(text))
{
global::System.Drawing.Image image = global::System.Drawing.Image.FromStream(fileStream);
if (image.Width != this.texture.Width || image.Height != this.texture.Height)
{
global::System.Windows.Forms.MessageBox.Show("Image '" + global::System.IO.Path.GetFileName(text) + "' has wrong size.", "Minecraft Skin Viewer Extended", global::System.Windows.Forms.MessageBoxButtons.OK, global::System.Windows.Forms.MessageBoxIcon.Hand);
}
else
{
this.texture.Source = image;
this.texture.FileName = text;
this.UpdateTextureName();
this.reloadButton.Enabled = true;
}
}
}
private global::System.ComponentModel.IContainer components;
private global::System.Windows.Forms.TextBox textureNameBox;
private global::System.Windows.Forms.Button browseButton;
private global::System.Windows.Forms.OpenFileDialog openFileDialog;
private global::System.Windows.Forms.Button reloadButton;
private global::MinecraftUSkinEditor.Models.Texture texture;
}
}