// File utilities
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace ManagedUi
{
class FileUtils
{
public enum FileType
{
All = 1,
Dvd,
Map,
Patch
}
///
/// get file size
///
///
///
public static long FileSize (string path)
{
FileInfo info = new FileInfo(path);
return info.Length;
}
///
/// open file dialog
///
///
///
public static string FileOpen (FileType type, Config config)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
string prevDir = Directory.GetCurrentDirectory();
switch (type)
{
case FileType.All:
openFileDialog.Filter = "All Supported Files|*.dol;*.elf;*.bin;*.gcm;*.iso|GameCube Executable Files|*.dol;*.elf|Binary Files|*.bin|GameCube DVD Images|*.gcm;*.iso|All Files|*.*";
Directory.SetCurrentDirectory(config.Settings.LastDirAll);
break;
case FileType.Dvd:
openFileDialog.Filter = "GameCube DVD Images|*.gcm;*.iso|All Files|*.*";
Directory.SetCurrentDirectory(config.Settings.LastDirDvd);
break;
case FileType.Map:
openFileDialog.Filter = "Symbolic information files|*.map|All Files|*.*";
Directory.SetCurrentDirectory(config.Settings.LastDirMap);
break;
case FileType.Patch:
openFileDialog.Filter = "Patch files|*.xmlpatch|All Files|*.*";
Directory.SetCurrentDirectory(config.Settings.LastDirPatch);
break;
}
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
Directory.SetCurrentDirectory(prevDir);
return openFileDialog.FileName;
}
Directory.SetCurrentDirectory(prevDir);
return null;
}
///
/// nice value of KB, MB or GB, for output
///
/// File size in bytes
/// Formatted string
public static string NiceSize(long size)
{
if (size < 1024)
{
return size.ToString() + " byte";
}
else if (size < 1024*1024)
{
long kbytes = size / 1024;
return kbytes.ToString() + " KB";
}
else if (size < 1024*1024*1024)
{
long mbytes = size / 1024 / 1024;
return mbytes.ToString() + " MB";
}
else
{
float gbytes = (float)size / 1024 / 1024 / 1024;
return gbytes.ToString("F2") + " GB";
}
}
}
}