customizemii-wiidb/CustomizeMii/CustomizeMii_DragDrop.cs

270 lines
10 KiB
C#

/* This file is part of CustomizeMii
* Copyright (C) 2009 Leathl
*
* CustomizeMii is free software: you can redistribute it and/or
* modify it under the terms of the GNU General Public License as published
* by the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* CustomizeMii is distributed in the hope that it will be
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using System;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using System.Collections.Generic;
namespace CustomizeMii
{
partial class CustomizeMii_Main
{
private void CustomizeMii_Main_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) && pbProgress.Value == 100)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data.Length == 1 && data[0].ToLower().EndsWith(".wad"))
e.Effect = DragDropEffects.Copy;
}
}
private void CustomizeMii_Main_DragDrop(object sender, DragEventArgs e)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data.Length == 1 && data[0].ToLower().EndsWith(".wad"))
{
LoadChannel(data[0]);
}
}
private void tbReplace_DragEnter(object sender, DragEventArgs e)
{
if (!string.IsNullOrEmpty(tbSourceWad.Text))
{
if (pbProgress.Value == 100 && e.Data.GetDataPresent(DataFormats.FileDrop))
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data.Length == 1)
{
if (data[0].ToLower().EndsWith(".wad") ||
data[0].ToLower().EndsWith("00000000.app"))
e.Effect = DragDropEffects.Copy;
else if ((cmbReplace.SelectedIndex == 2 && data[0].ToLower().EndsWith("sound.bin")) ||
(cmbReplace.SelectedIndex == 1 && data[0].ToLower().EndsWith("icon.bin")) ||
(cmbReplace.SelectedIndex == 0 && data[0].ToLower().EndsWith("banner.bin")))
e.Effect = DragDropEffects.Copy;
}
}
}
}
private void tbReplace_DragDrop(object sender, DragEventArgs e)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data.Length == 1 && (data[0].ToLower().EndsWith(".wad") ||
data[0].ToLower().EndsWith("00000000.app") ||
data[0].ToLower().EndsWith("sound.bin") ||
data[0].ToLower().EndsWith("icon.bin") ||
data[0].ToLower().EndsWith("banner.bin")))
{
ReplacePart(data[0]);
}
}
private void tbDol_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) && pbProgress.Value == 100)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data.Length == 1 && (data[0].ToLower().EndsWith(".wad") || data[0].ToLower().EndsWith(".dol")))
e.Effect = DragDropEffects.Copy;
}
}
private void tbDol_DragDrop(object sender, DragEventArgs e)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data[0].ToLower().EndsWith(".wad"))
{
try
{
byte[] wad = Wii.Tools.LoadFileToByteArray(data[0]);
int numContents = Wii.WadInfo.GetContentNum(wad);
if (numContents == 3)
{
int bootIndex = Wii.WadInfo.GetBootIndex(wad);
string appFile = string.Empty;
if (bootIndex == 1)
{ appFile = "00000002.app"; }
else if (bootIndex == 2)
{ appFile = "00000001.app"; }
if (!string.IsNullOrEmpty(appFile))
{
if (Directory.Exists(TempTempPath + "TempWad")) Directory.Delete(TempTempPath + "TempWad", true);
Wii.WadUnpack.UnpackWad(data[0], TempTempPath + "TempWad");
File.Copy(TempTempPath + "TempWad\\" + appFile, TempDolPath, true);
SetText(tbDol, data[0]);
btnBrowseDol.Text = "Clear";
}
else
ErrorBox("The DOL file couldn't be found!");
}
else
ErrorBox("The DOL file couldn't be found!");
}
catch (Exception ex)
{
SetText(tbDol, string.Empty);
ErrorBox(ex.Message);
}
}
else if (data[0].ToLower().EndsWith(".dol"))
{
SetText(tbDol, data[0]);
btnBrowseDol.Text = "Clear";
}
}
private void tbSound_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) && pbProgress.Value == 100)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (File.Exists(Application.StartupPath + "\\lame.exe"))
{
if (data.Length == 1 && (data[0].ToLower().EndsWith(".wav") ||
data[0].ToLower().EndsWith(".bns") ||
data[0].ToLower().EndsWith(".mp3")))
e.Effect = DragDropEffects.Copy;
}
else
{
if (data.Length == 1 && (data[0].ToLower().EndsWith(".wav") ||
data[0].ToLower().EndsWith(".bns")))
e.Effect = DragDropEffects.Copy;
}
}
}
private void tbSound_DragDrop(object sender, DragEventArgs e)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
if (data[0].ToLower().EndsWith(".mp3"))
{
ConvertMp3ToWave(data[0]);
}
else
{
SetText(tbSound, data[0]);
btnBrowseSound.Text = "Clear";
if (!string.IsNullOrEmpty(SoundReplace))
{
SoundReplace = string.Empty;
if (cmbReplace.SelectedIndex == 2) SetText(tbReplace, SoundReplace);
if (File.Exists(TempSoundPath)) File.Delete(TempSoundPath);
}
}
}
private void lbxBannerTpls_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) && pbProgress.Value == 100)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
bool correct = true;
for (int i = 0; i < data.Length; i++)
if (!(data[0].ToLower().EndsWith(".tpl") ||
data[0].ToLower().EndsWith(".png") ||
data[0].ToLower().EndsWith(".jpg") ||
data[0].ToLower().EndsWith(".gif") ||
data[0].ToLower().EndsWith(".bmp")))
correct = false;
if (correct) e.Effect = DragDropEffects.Copy;
}
}
private void lbxBannerTpls_DragDrop(object sender, DragEventArgs e)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
List<string> errors = new List<string>();
foreach (string thisFile in data)
{
try
{
AddTpl(lbxBannerTpls, thisFile);
}
catch { errors.Add(thisFile); }
}
if (errors.Count > 0)
{
ErrorBox(string.Format("These files were not added, because either they already exist or an error occured during conversion:\n\n{0}", string.Join("\n", (errors.ToArray()))));
}
}
private void lbxIconTpls_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop) && pbProgress.Value == 100)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
bool correct = true;
for (int i = 0; i < data.Length; i++)
if (!(data[0].ToLower().EndsWith(".tpl") ||
data[0].ToLower().EndsWith(".png") ||
data[0].ToLower().EndsWith(".jpg") ||
data[0].ToLower().EndsWith(".gif") ||
data[0].ToLower().EndsWith(".bmp")))
correct = false;
if (correct) e.Effect = DragDropEffects.Copy;
}
}
private void lbxIconTpls_DragDrop(object sender, DragEventArgs e)
{
string[] data = (string[])e.Data.GetData(DataFormats.FileDrop);
List<string> errors = new List<string>();
foreach (string thisFile in data)
{
try
{
AddTpl(lbxIconTpls, thisFile);
}
catch { errors.Add(thisFile); }
}
if (errors.Count > 0)
{
ErrorBox(string.Format("These files were not added, because either they already exist or an error occured during conversion:\n\n{0}", string.Join("\n", (errors.ToArray()))));
}
}
}
}