2017-05-16 23:27:43 +00:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Diagnostics;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.IO;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
namespace PKHeX.WinForms
|
|
|
|
|
{
|
|
|
|
|
public partial class SAV_FolderList : Form
|
|
|
|
|
{
|
|
|
|
|
public SAV_FolderList()
|
|
|
|
|
{
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
// Preprogrammed folders
|
|
|
|
|
var locs = new List<CustomFolderPath>
|
|
|
|
|
{
|
|
|
|
|
new CustomFolderPath {Path = Main.BackupPath, DisplayText = "PKHeX Backups"}
|
|
|
|
|
};
|
|
|
|
|
locs.AddRange(getUserPaths());
|
2017-05-17 04:44:02 +00:00
|
|
|
|
locs.AddRange(get3DSPaths());
|
2017-05-16 23:27:43 +00:00
|
|
|
|
locs.Add(new CustomFolderPath {Path = CyberGadgetUtil.GetCacheFolder(), DisplayText = "CGSE Cache"});
|
|
|
|
|
locs.Add(new CustomFolderPath {Path = CyberGadgetUtil.GetTempFolder(), DisplayText = "CGSE Temp"});
|
|
|
|
|
|
|
|
|
|
foreach (var loc in locs.GroupBy(z => z.Path))
|
|
|
|
|
addButton(loc.First().DisplayText, loc.First().Path);
|
|
|
|
|
|
|
|
|
|
WinFormsUtil.TranslateInterface(this, Main.curlanguage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void addButton(string name, string path)
|
|
|
|
|
{
|
|
|
|
|
var button = new Button
|
|
|
|
|
{
|
|
|
|
|
Size = new Size { Height = 30, Width = 130 },
|
|
|
|
|
Text = name,
|
|
|
|
|
Name = "B_" + name,
|
|
|
|
|
Enabled = new DirectoryInfo(path).Exists,
|
|
|
|
|
};
|
|
|
|
|
button.Click += (s, e) =>
|
|
|
|
|
{
|
|
|
|
|
if (Directory.Exists(path))
|
2017-05-18 01:25:48 +00:00
|
|
|
|
{
|
2017-05-16 23:27:43 +00:00
|
|
|
|
Process.Start("explorer.exe", path);
|
2017-05-18 01:25:48 +00:00
|
|
|
|
Close();
|
|
|
|
|
}
|
2017-05-16 23:27:43 +00:00
|
|
|
|
else
|
|
|
|
|
WinFormsUtil.Alert("Can't find folder:", path);
|
|
|
|
|
};
|
|
|
|
|
FLP_Buttons.Controls.Add(button);
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-17 04:44:02 +00:00
|
|
|
|
private static IEnumerable<CustomFolderPath> getUserPaths()
|
2017-05-16 23:27:43 +00:00
|
|
|
|
{
|
|
|
|
|
const string loc = "savpaths.txt";
|
|
|
|
|
|
|
|
|
|
if (!File.Exists(loc))
|
2017-05-17 04:44:02 +00:00
|
|
|
|
yield break;
|
2017-05-16 23:27:43 +00:00
|
|
|
|
|
2017-05-17 04:44:02 +00:00
|
|
|
|
string[] lines = File.ReadAllLines(loc);
|
|
|
|
|
foreach (var line in lines)
|
2017-05-16 23:27:43 +00:00
|
|
|
|
{
|
2017-05-17 04:44:02 +00:00
|
|
|
|
var split = line.Split('\t');
|
|
|
|
|
if (split.Length == 2)
|
|
|
|
|
yield return new CustomFolderPath {DisplayText = split[0], Path = split[1]};
|
2017-05-16 23:27:43 +00:00
|
|
|
|
}
|
2017-05-17 04:44:02 +00:00
|
|
|
|
}
|
|
|
|
|
private static IEnumerable<CustomFolderPath> get3DSPaths()
|
|
|
|
|
{
|
|
|
|
|
var path3DS = PathUtilWindows.get3DSLocation();
|
|
|
|
|
var path = path3DS == null || !Directory.Exists(path3DS) ? @"C:\" : Path.GetPathRoot(path3DS);
|
|
|
|
|
foreach (var z in PathUtilWindows.get3DSBackupPaths(path))
|
2017-05-16 23:27:43 +00:00
|
|
|
|
{
|
2017-05-17 04:44:02 +00:00
|
|
|
|
var di = new DirectoryInfo(z);
|
|
|
|
|
var root = di.Root.Name;
|
|
|
|
|
var folder = di.Parent.Name;
|
|
|
|
|
if (root == folder)
|
|
|
|
|
folder = di.Name;
|
|
|
|
|
yield return new CustomFolderPath {Path = z, DisplayText = folder};
|
2017-05-16 23:27:43 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2017-05-17 04:44:02 +00:00
|
|
|
|
private struct CustomFolderPath
|
2017-05-16 23:27:43 +00:00
|
|
|
|
{
|
|
|
|
|
public string Path;
|
|
|
|
|
public string DisplayText;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|