customizemii/CustomizeMii/CustomizeMii_PrivateFunctions.cs

285 lines
14 KiB
C#

using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.IO;
using System.Drawing;
namespace CustomizeMii
{
partial class CustomizeMii_Main
{
private void AddTpl(ListBox lbx)
{
AddTpl(lbx, null);
}
private void AddTpl(ListBox lbx, string inputFile)
{
try
{
if (string.IsNullOrEmpty(inputFile))
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "TPL|*.tpl|PNG|*.png|JPG|*.jpg|GIF|*.gif|BMP|*.bmp|All|*.tpl;*.png;*.jpg;*.gif;*.bmp";
ofd.FilterIndex = 6;
if (ofd.ShowDialog() == DialogResult.OK)
{
inputFile = ofd.FileName;
}
}
if (!string.IsNullOrEmpty(inputFile))
{
for (int i = 0; i < lbx.Items.Count; i++)
if (lbx.Items[i].ToString().ToLower() == Path.GetFileNameWithoutExtension(inputFile).ToLower() + ".tpl")
throw new Exception("This TPL already exists, use the Replace button");
string CurPath;
if (lbx == lbxBannerTpls) CurPath = GetCurBannerPath();
else CurPath = GetCurIconPath();
string[] brlytTpls = Wii.Brlyt.GetBrlytTpls(CurPath + string.Format("blyt\\{0}.brlyt", lbx == lbxBannerTpls ? "banner" : "icon"));
string TplName = Path.GetFileNameWithoutExtension(inputFile) + ".tpl";
int TplFormat = 6;
int switchVal = lbx == lbxBannerTpls ? cmbFormatBanner.SelectedIndex : cmbFormatIcon.SelectedIndex;
switch (switchVal)
{
case 0:
TplFormat = 6;
break;
case 1:
TplFormat = 4;
break;
case 2:
TplFormat = 5;
break;
default:
if (!inputFile.ToLower().EndsWith(".tpl"))
throw new Exception("This format is not supported, you must choose either RGBA8, RGB565 or RGB5A3!");
break;
}
if (!Wii.Tools.StringExistsInStringArray(TplName, brlytTpls))
{
if (MessageBox.Show(string.Format("{0} is not required by your {1}.brlyt and thus only wastes memory!\nDo you still want to add it?", TplName, lbx == lbxBannerTpls ? "banner" : "icon"), "TPL not required", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.No)
return;
}
if (inputFile.ToLower().EndsWith(".tpl"))
{
File.Copy(inputFile, CurPath + "timg\\" + TplName, true);
lbx.Items.Add(TplName);
}
else
{
using (Image img = Image.FromFile(inputFile))
{
Wii.TPL.ConvertToTPL(img, CurPath + "timg\\" + TplName, TplFormat);
lbx.Items.Add(TplName);
}
}
}
}
catch (Exception ex) { throw ex; }
}
private void LoadChannel()
{
LoadChannel(null);
}
private void LoadChannel(string inputFile)
{
if (this.Mono) CommonKeyCheck();
if (pbProgress.Value == 100)
{
if (string.IsNullOrEmpty(inputFile))
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Wii Channels|*.wad";
if (ofd.ShowDialog() == DialogResult.OK)
{
SourceWad = ofd.FileName;
BackgroundWorker bwLoadChannel = new BackgroundWorker();
bwLoadChannel.DoWork += new DoWorkEventHandler(bwLoadChannel_DoWork);
bwLoadChannel.ProgressChanged += new ProgressChangedEventHandler(bwLoadChannel_ProgressChanged);
bwLoadChannel.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwLoadChannel_RunWorkerCompleted);
bwLoadChannel.WorkerReportsProgress = true;
bwLoadChannel.RunWorkerAsync(ofd.FileName);
}
}
else
{
SourceWad = inputFile;
BackgroundWorker bwLoadChannel = new BackgroundWorker();
bwLoadChannel.DoWork += new DoWorkEventHandler(bwLoadChannel_DoWork);
bwLoadChannel.ProgressChanged += new ProgressChangedEventHandler(bwLoadChannel_ProgressChanged);
bwLoadChannel.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwLoadChannel_RunWorkerCompleted);
bwLoadChannel.WorkerReportsProgress = true;
bwLoadChannel.RunWorkerAsync(inputFile);
}
}
}
private void ReplacePart()
{
ReplacePart(null);
}
private void ReplacePart(string inputFile)
{
if (!string.IsNullOrEmpty(tbSourceWad.Text))
{
if (pbProgress.Value == 100)
{
if (cmbReplace.SelectedIndex == 2) //sound
{
try
{
if (string.IsNullOrEmpty(inputFile))
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Wii Channels|*.wad|00000000.app|00000000.app|sound.bin|sound.bin|All|*.wad;00000000.app;sound.bin";
ofd.FilterIndex = 4;
if (ofd.ShowDialog() == DialogResult.OK)
{
if (ofd.FileName != tbSourceWad.Text)
{
SoundReplace = ofd.FileName;
SetText(tbReplace, SoundReplace);
BackgroundWorker bwSoundReplace = new BackgroundWorker();
bwSoundReplace.DoWork += new DoWorkEventHandler(bwSoundReplace_DoWork);
bwSoundReplace.ProgressChanged += new ProgressChangedEventHandler(bwSoundReplace_ProgressChanged);
bwSoundReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwSoundReplace_RunWorkerCompleted);
bwSoundReplace.WorkerReportsProgress = true;
bwSoundReplace.RunWorkerAsync(ofd.FileName);
}
}
}
else
{
if (inputFile != tbSourceWad.Text)
{
SoundReplace = inputFile;
SetText(tbReplace, SoundReplace);
BackgroundWorker bwSoundReplace = new BackgroundWorker();
bwSoundReplace.DoWork += new DoWorkEventHandler(bwSoundReplace_DoWork);
bwSoundReplace.ProgressChanged += new ProgressChangedEventHandler(bwSoundReplace_ProgressChanged);
bwSoundReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwSoundReplace_RunWorkerCompleted);
bwSoundReplace.WorkerReportsProgress = true;
bwSoundReplace.RunWorkerAsync(inputFile);
}
}
}
catch (Exception ex)
{
SoundReplace = string.Empty;
SetText(tbReplace, SoundReplace);
ErrorBox(ex.Message);
}
}
else if (cmbReplace.SelectedIndex == 1) //icon
{
try
{
if (string.IsNullOrEmpty(inputFile))
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Wii Channels|*.wad|00000000.app|00000000.app|icon.bin|icon.bin|All|*.wad;00000000.app;icon.bin";
ofd.FilterIndex = 4;
if (ofd.ShowDialog() == DialogResult.OK)
{
if (ofd.FileName != tbSourceWad.Text)
{
IconReplace = ofd.FileName;
SetText(tbReplace, IconReplace);
BackgroundWorker bwIconReplace = new BackgroundWorker();
bwIconReplace.DoWork += new DoWorkEventHandler(bwIconReplace_DoWork);
bwIconReplace.ProgressChanged += new ProgressChangedEventHandler(bwIconReplace_ProgressChanged);
bwIconReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwIconReplace_RunWorkerCompleted);
bwIconReplace.WorkerReportsProgress = true;
bwIconReplace.RunWorkerAsync(ofd.FileName);
}
}
}
else
{
if (inputFile != tbSourceWad.Text)
{
IconReplace = inputFile;
SetText(tbReplace, IconReplace);
BackgroundWorker bwIconReplace = new BackgroundWorker();
bwIconReplace.DoWork += new DoWorkEventHandler(bwIconReplace_DoWork);
bwIconReplace.ProgressChanged += new ProgressChangedEventHandler(bwIconReplace_ProgressChanged);
bwIconReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwIconReplace_RunWorkerCompleted);
bwIconReplace.WorkerReportsProgress = true;
bwIconReplace.RunWorkerAsync(inputFile);
}
}
}
catch (Exception ex)
{
IconReplace = string.Empty;
SetText(tbReplace, IconReplace);
ErrorBox(ex.Message);
}
}
else //banner
{
try
{
if (string.IsNullOrEmpty(inputFile))
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Wii Channels|*.wad|00000000.app|00000000.app|banner.bin|banner.bin|All|*.wad;00000000.app;banner.bin";
ofd.FilterIndex = 4;
if (ofd.ShowDialog() == DialogResult.OK)
{
if (ofd.FileName != tbSourceWad.Text)
{
BannerReplace = ofd.FileName;
SetText(tbReplace, BannerReplace);
BackgroundWorker bwBannerReplace = new BackgroundWorker();
bwBannerReplace.DoWork += new DoWorkEventHandler(bwBannerReplace_DoWork);
bwBannerReplace.ProgressChanged += new ProgressChangedEventHandler(bwBannerReplace_ProgressChanged);
bwBannerReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwBannerReplace_RunWorkerCompleted);
bwBannerReplace.WorkerReportsProgress = true;
bwBannerReplace.RunWorkerAsync(ofd.FileName);
}
}
}
else
{
if (inputFile != tbSourceWad.Text)
{
BannerReplace = inputFile;
SetText(tbReplace, BannerReplace);
BackgroundWorker bwBannerReplace = new BackgroundWorker();
bwBannerReplace.DoWork += new DoWorkEventHandler(bwBannerReplace_DoWork);
bwBannerReplace.ProgressChanged += new ProgressChangedEventHandler(bwBannerReplace_ProgressChanged);
bwBannerReplace.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bwBannerReplace_RunWorkerCompleted);
bwBannerReplace.WorkerReportsProgress = true;
bwBannerReplace.RunWorkerAsync(inputFile);
}
}
}
catch (Exception ex)
{
BannerReplace = string.Empty;
SetText(tbReplace, BannerReplace);
ErrorBox(ex.Message);
}
}
}
}
}
}
}