mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/PCK-Studio.git
synced 2026-05-23 05:45:32 +00:00
196 lines
7.5 KiB
C#
196 lines
7.5 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::PckStudio.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::PckStudio.Models.Texture texture;
|
|
}
|
|
}
|