Add pattern bulk import

#443
Pattern names don't update on the left side (even for single-imports), don't bother for now. Just save & reopen the editor.
This commit is contained in:
Kurt 2021-01-22 23:14:14 -08:00
parent c5fe5b2e76
commit 1c4df60920
3 changed files with 82 additions and 0 deletions

View File

@ -164,6 +164,33 @@ private static void Dump(this DesignPattern dp, string path)
File.WriteAllBytes(dest, dp.Data);
}
/// <summary>
/// Loads all designs from the requested <see cref="path"/>.
/// </summary>
/// <param name="patterns">Patterns to load</param>
/// <param name="path">Path to load from</param>
public static void Load(this DesignPattern[] patterns, string path)
{
if (patterns.Length == 0)
return;
var files = Directory.GetFiles(path, "*.nhd", SearchOption.TopDirectoryOnly);
int ctr = 0;
foreach (var f in files)
{
var fi = new FileInfo(f);
if (fi.Length != DesignPattern.SIZE)
continue;
var data = File.ReadAllBytes(f);
var p = new DesignPattern(data);
p.ChangeOrigins(patterns[ctr], data);
patterns[ctr] = p;
if (++ctr >= patterns.Length)
break;
}
}
/// <summary>
/// Dumps all designs to the requested <see cref="path"/>.
/// </summary>
@ -186,6 +213,33 @@ public static void Dump(this IEnumerable<DesignPatternPRO> patterns, string path
dp.Dump(path);
}
/// <summary>
/// Loads all designs from the requested <see cref="path"/>.
/// </summary>
/// <param name="patterns">Patterns to load</param>
/// <param name="path">Path to load from</param>
public static void Load(this DesignPatternPRO[] patterns, string path)
{
if (patterns.Length == 0)
return;
var files = Directory.GetFiles(path, "*.nhpd", SearchOption.TopDirectoryOnly);
int ctr = 0;
foreach (var f in files)
{
var fi = new FileInfo(f);
if (fi.Length != DesignPatternPRO.SIZE)
continue;
var data = File.ReadAllBytes(f);
var p = new DesignPatternPRO(data);
p.ChangeOrigins(patterns[ctr], data);
patterns[ctr] = p;
if (++ctr >= patterns.Length)
break;
}
}
private static void Dump(this DesignPatternPRO dp, string path)
{
var name = dp.DesignName;

View File

@ -76,6 +76,20 @@ private void B_DumpDesign_Click(object sender, EventArgs e)
private void B_LoadDesign_Click(object sender, EventArgs e)
{
if (ModifierKeys == Keys.Shift)
{
using var fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
var dir = Path.GetDirectoryName(fbd.SelectedPath);
if (dir == null || !Directory.Exists(dir))
return;
Patterns.Load(fbd.SelectedPath);
LoadPattern(Patterns[0]);
return;
}
var original = Patterns[Index];
var name = original.DesignName;
using var ofd = new OpenFileDialog

View File

@ -76,6 +76,20 @@ private void B_DumpDesign_Click(object sender, EventArgs e)
private void B_LoadDesign_Click(object sender, EventArgs e)
{
if (ModifierKeys == Keys.Shift)
{
using var fbd = new FolderBrowserDialog();
if (fbd.ShowDialog() != DialogResult.OK)
return;
var dir = Path.GetDirectoryName(fbd.SelectedPath);
if (dir == null || !Directory.Exists(dir))
return;
Patterns.Load(fbd.SelectedPath);
LoadPattern(Patterns[0]);
return;
}
var original = Patterns[Index];
var name = original.DesignName;
using var ofd = new OpenFileDialog