Misc. refactors in `ExternalToolManager`

This commit is contained in:
YoshiRulz 2023-02-08 06:24:59 +10:00
parent a86860faaa
commit 15eed689d0
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
3 changed files with 8 additions and 17 deletions

View File

@ -1185,7 +1185,7 @@ namespace BizHawk.Client.EmuHawk
private void ExternalToolMenuItem_DropDownOpening(object sender, EventArgs e)
{
ExternalToolMenuItem.DropDownItems.Clear();
ExternalToolMenuItem.DropDownItems.AddRange(ExtToolManager.ToolStripMenu.Cast<ToolStripItem>().ToArray());
ExternalToolMenuItem.DropDownItems.AddRange(ExtToolManager.ToolStripItems.ToArray());
if (ExternalToolMenuItem.DropDownItems.Count == 0)
{
ExternalToolMenuItem.DropDownItems.Add("None");

View File

@ -186,7 +186,7 @@ namespace BizHawk.Client.EmuHawk
var requestedExtToolDll = _argParser.openExtToolDll;
if (requestedExtToolDll != null)
{
var found = ExtToolManager.ToolStripMenu.Where(static item => item.Enabled)
var found = ExtToolManager.ToolStripItems.Where(static item => item.Enabled)
.Select(static item => (ExternalToolManager.MenuItemInfo) item.Tag)
.FirstOrNull(info => info.AsmFilename == requestedExtToolDll
|| Path.GetFileName(info.AsmFilename) == requestedExtToolDll

View File

@ -57,9 +57,6 @@ namespace BizHawk.Client.EmuHawk
private readonly Func<string, string, bool, bool> _loadCallback;
private PathEntryCollection _paths
=> _config.PathEntries;
private FileSystemWatcher DirectoryMonitor;
private readonly List<ToolStripMenuItem> MenuItems = new List<ToolStripMenuItem>();
@ -84,7 +81,7 @@ namespace BizHawk.Client.EmuHawk
DirectoryMonitor.Created -= DirectoryMonitor_Created;
DirectoryMonitor.Dispose();
}
var path = _paths[PathEntryCollection.GLOBAL, "External Tools"].Path;
var path = _config.PathEntries[PathEntryCollection.GLOBAL, "External Tools"].Path;
if (Directory.Exists(path))
{
DirectoryMonitor = new FileSystemWatcher(path, "*.dll")
@ -110,10 +107,7 @@ namespace BizHawk.Client.EmuHawk
}
/// <summary>Generates a <see cref="ToolStripMenuItem"/> from an assembly at <paramref name="fileName"/> containing an external tool.</summary>
/// <returns>
/// a <see cref="ToolStripMenuItem"/> with its <see cref="ToolStripItem.Tag"/> containing a <see cref="MenuItemInfo"/>;
/// the first is the assembly path (<paramref name="fileName"/>) and the second is the <see cref="Type.FullName"/> of the entry point form's type
/// </returns>
/// <returns>a <see cref="ToolStripMenuItem"/> with its <see cref="ToolStripItem.Tag"/> containing a <see cref="MenuItemInfo"/></returns>
private ToolStripMenuItem GenerateToolTipFromFileName(string fileName)
{
if (fileName == null) throw new Exception();
@ -138,7 +132,7 @@ namespace BizHawk.Client.EmuHawk
var toolAttribute = allAttrs.OfType<ExternalToolAttribute>().First();
if (toolAttribute.LoadAssemblyFiles != null)
{
foreach (var depFilename in toolAttribute.LoadAssemblyFiles) Assembly.LoadFrom($"{_paths[PathEntryCollection.GLOBAL, "External Tools"].Path}/{depFilename}");
foreach (var depFilename in toolAttribute.LoadAssemblyFiles) Assembly.LoadFrom($"{_config.PathEntries[PathEntryCollection.GLOBAL, "External Tools"].Path}/{depFilename}");
}
item.Image = null; // no errors, remove error icon
@ -157,7 +151,7 @@ namespace BizHawk.Client.EmuHawk
item.Tag = menuItemInfo;
item.Click += (_, _) => menuItemInfo.TryLoad();
PossibleExtToolTypeNames.Add(entryPoint.AssemblyQualifiedName);
if (applicabilityAttrs.Count == 1)
if (applicabilityAttrs.Count is 1)
{
var (system, loadedRomHash) = _getLoadedRomInfoCallback();
if (applicabilityAttrs[0].NotApplicableTo(system))
@ -210,10 +204,7 @@ namespace BizHawk.Client.EmuHawk
MenuItems.Add(GenerateToolTipFromFileName(e.FullPath));
}
/// <summary>
/// Gets a prebuild <see cref="ToolStripMenuItem"/>
/// This list auto-updated by the <see cref="ExternalToolManager"/> itself
/// </summary>
public IEnumerable<ToolStripMenuItem> ToolStripMenu => MenuItems;
public IReadOnlyCollection<ToolStripItem> ToolStripItems
=> MenuItems;
}
}