Order plugins by priority and ensure uniqueness

Changed plugin priority in MediaInfoViewer to int.MinValue. Updated ViewerWindow.Actions to display more menu items from plugins in order of priority and to avoid duplicate plugins by grouping by plugin name.
This commit is contained in:
ema
2025-10-08 00:31:54 +08:00
parent 2af849ed81
commit 28f93256e4
2 changed files with 6 additions and 3 deletions

View File

@@ -32,7 +32,7 @@ public partial class Plugin : IViewer, IMoreMenuExtended
{
private TextViewerPanel _tvp;
public int Priority => 0;
public int Priority => int.MinValue;
public IEnumerable<IMenuItem> MenuItems => GetMenuItems();

View File

@@ -203,9 +203,12 @@ public partial class ViewerWindow
// Initial the more menu
ClearMoreMenuUnpin();
foreach (var plugin in PluginManager.GetInstance().LoadedPlugins)
foreach (var plugin in
PluginManager.GetInstance().LoadedPlugins
.GroupBy(x => x.ToString()).Select(g => g.First()) // DistinctBy plugin name
.OrderBy(p => p.Priority)) // OrderBy plugin priority
{
if (plugin == Plugin)
if (plugin.ToString() == Plugin.ToString())
{
if (Plugin is IMoreMenu moreMenu && moreMenu.MenuItems is not null)
{