Minor fixups to new core settings UI

fixes a455cce2d
This commit is contained in:
YoshiRulz 2022-05-29 05:41:59 +10:00
parent cd9327a10d
commit b2a609119a
No known key found for this signature in database
GPG Key ID: C4DE31C245353FB7
2 changed files with 31 additions and 12 deletions

View File

@ -2782,7 +2782,10 @@ namespace BizHawk.Client.EmuHawk
items.Add(oldBSNESSubmenu);
// C64Hawk
items.Add(CreateCoreSubmenu(VSystemCategory.PCs, CoreNames.C64Hawk, CreateSettingsItem("Settings...", (_, _) => OpenC64HawkSettingsDialog())));
var c64HawkSettingsItem = CreateSettingsItem("Settings...", (_, _) => OpenC64HawkSettingsDialog());
var c64HawkSubmenu = CreateCoreSubmenu(VSystemCategory.PCs, CoreNames.C64Hawk, c64HawkSettingsItem);
c64HawkSubmenu.DropDownOpened += (_, _) => c64HawkSettingsItem.Enabled = Emulator is C64;
items.Add(c64HawkSubmenu);
// ChannelFHawk
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.ChannelFHawk, CreateGenericCoreConfigItem<ChannelF>(CoreNames.ChannelFHawk)));
@ -2844,7 +2847,10 @@ namespace BizHawk.Client.EmuHawk
items.Add(gambatteLinkSubmenu);
// GBHawk
items.Add(CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.GbHawk, CreateSettingsItem("Settings...", (_, _) => OpenGBHawkSettingsDialog())));
var gbHawkSettingsItem = CreateSettingsItem("Settings...", (_, _) => OpenGBHawkSettingsDialog());
var gbHawkSubmenu = CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.GbHawk, gbHawkSettingsItem);
gbHawkSubmenu.DropDownOpened += (_, _) => gbHawkSettingsItem.Enabled = Emulator is GBHawk;
items.Add(gbHawkSubmenu);
// GBHawkLink
items.Add(CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.GBHawkLink, CreateGenericCoreConfigItem<GBHawkLink>(CoreNames.GBHawkLink)));
@ -2862,7 +2868,7 @@ namespace BizHawk.Client.EmuHawk
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.Gpgx, CreateGenericCoreConfigItem<GPGX>(CoreNames.Gpgx)));
// Handy
items.Add(CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.Handy, CreateGenericCoreConfigItem<Lynx>(CoreNames.Handy)));
items.Add(CreateCoreSubmenu(VSystemCategory.Handhelds, CoreNames.Handy, CreateGenericCoreConfigItem<Lynx>(CoreNames.Handy))); // as Handy doesn't implement `IStatable<,>`, this opens an empty `GenericCoreConfig`, which is dumb, but matches the existing behaviour
// HyperNyma
var hyperNymaSettingsItem = CreateSettingsItem("Settings...", (_, _) => OpenGenericCoreConfig($"{CoreNames.HyperNyma} Settings"));
@ -2995,11 +3001,14 @@ namespace BizHawk.Client.EmuHawk
items.Add(quickNesSubmenu);
// SameBoy
items.Add(CreateCoreSubmenu(
var sameBoySettingsItem = CreateSettingsItem("Settings...", (_, _) => OpenSameBoySettingsDialog());
var sameBoySubmenu = CreateCoreSubmenu(
VSystemCategory.Handhelds,
CoreNames.Sameboy,
CreateSettingsItem("Settings...", (_, _) => OpenSameBoySettingsDialog()),
CreateSettingsItem("Choose Custom Palette...", (_, _) => OpenSameBoyPaletteSettingsDialog(GetSettingsAdapterFor<Sameboy>()))));
sameBoySettingsItem,
CreateSettingsItem("Choose Custom Palette...", (_, _) => OpenSameBoyPaletteSettingsDialog(GetSettingsAdapterFor<Sameboy>())));
sameBoySubmenu.DropDownOpened += (_, _) => sameBoySettingsItem.Enabled = Emulator is Sameboy;
items.Add(sameBoySubmenu);
// Saturnus
var saturnusSettingsItem = CreateSettingsItem("Settings...", (_, _) => OpenGenericCoreConfig($"{CoreNames.Saturnus} Settings"));
@ -3055,13 +3064,16 @@ namespace BizHawk.Client.EmuHawk
items.Add(turboNymaSubmenu);
// uzem
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.Uzem, CreateGenericCoreConfigItem<Uzem>(CoreNames.Uzem)));
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.Uzem, CreateGenericCoreConfigItem<Uzem>(CoreNames.Uzem))); // as uzem doesn't implement `IStatable<,>`, this opens an empty `GenericCoreConfig`, which is dumb, but matches the existing behaviour
// VectrexHawk
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.VectrexHawk, CreateGenericCoreConfigItem<VectrexHawk>(CoreNames.VectrexHawk)));
// Virtu
items.Add(CreateCoreSubmenu(VSystemCategory.PCs, CoreNames.Virtu, CreateSettingsItem("Settings...", (_, _) => OpenVirtuSettingsDialog())));
var virtuSettingsItem = CreateSettingsItem("Settings...", (_, _) => OpenVirtuSettingsDialog());
var virtuSubmenu = CreateCoreSubmenu(VSystemCategory.PCs, CoreNames.Virtu, virtuSettingsItem);
virtuSubmenu.DropDownOpened += (_, _) => virtuSettingsItem.Enabled = Emulator is AppleII;
items.Add(virtuSubmenu);
// Virtual Boyee
items.Add(CreateCoreSubmenu(VSystemCategory.Consoles, CoreNames.VirtualBoyee, CreateGenericCoreConfigItem<VirtualBoyee>(CoreNames.VirtualBoyee)));

View File

@ -91,12 +91,19 @@ namespace BizHawk.Client.EmuHawk
CoresSubMenu.DropDownOpened += (openedSender, openedArgs) => GBInSGBMenuItem.Checked = Config.GbAsSgb;
ToolStripMenuItemEx recentCoreSettingsSubmenu = new() { Text = "Recent" };
recentCoreSettingsSubmenu.DropDownItems.AddRange(CreateCoreSettingsSubmenus().Where(submenu => Config.RecentCores.Contains(submenu.Text)).ToArray());
recentCoreSettingsSubmenu.DropDownItems.AddRange(CreateCoreSettingsSubmenus().ToArray());
ToolStripMenuItemEx noRecentsItem = new() { Enabled = false, Text = "(N/A)" };
recentCoreSettingsSubmenu.DropDownItems.Add(noRecentsItem);
recentCoreSettingsSubmenu.DropDownOpened += (_, _) =>
{
foreach (ToolStripItem submenu in recentCoreSettingsSubmenu.DropDownItems) submenu.Visible = Config.RecentCores.Contains(submenu.Text);
noRecentsItem.Visible = Config.RecentCores.Count is 0;
};
ToolStripMenuItemEx consolesCoreSettingsSubmenu = new() { Text = "For Consoles" };
ToolStripMenuItemEx handheldsCoreSettingsSubmenu = new() { Text = "For Handhelds" };
ToolStripMenuItemEx pcsCoreSettingsSubmenu = new() { Text = "For PCs" };
ToolStripMenuItemEx otherCoreSettingsSubmenu = new() { Text = "Other" };
foreach (var submenu in CreateCoreSettingsSubmenus(includeDupes: true))
foreach (var submenu in CreateCoreSettingsSubmenus(includeDupes: true).OrderBy(submenu => submenu.Text))
{
var parentMenu = (VSystemCategory) submenu.Tag switch
{
@ -107,11 +114,11 @@ namespace BizHawk.Client.EmuHawk
};
parentMenu.DropDownItems.Add(submenu);
}
foreach (var submenu in new[] { recentCoreSettingsSubmenu, consolesCoreSettingsSubmenu, handheldsCoreSettingsSubmenu, pcsCoreSettingsSubmenu, otherCoreSettingsSubmenu })
foreach (var submenu in new[] { consolesCoreSettingsSubmenu, handheldsCoreSettingsSubmenu, pcsCoreSettingsSubmenu, otherCoreSettingsSubmenu })
{
if (submenu.DropDownItems.Count is 0)
{
submenu.DropDownItems.Add(new ToolStripMenuItemEx());
submenu.DropDownItems.Add(new ToolStripMenuItemEx { Text = "(none)" });
submenu.Enabled = false;
}
}