Use IPluginHotkey for program plugin

This commit is contained in:
Jack251970 2025-06-26 12:10:51 +08:00
parent 854f8082b1
commit 9f404aa92c
3 changed files with 55 additions and 17 deletions

View file

@ -16,7 +16,7 @@ using Path = System.IO.Path;
namespace Flow.Launcher.Plugin.Program
{
public class Main : ISettingProvider, IAsyncPlugin, IPluginI18n, IContextMenu, IAsyncReloadable, IDisposable
public class Main : ISettingProvider, IAsyncPlugin, IPluginI18n, IContextMenu, IAsyncReloadable, IDisposable, IPluginHotkey
{
private static readonly string ClassName = nameof(Main);
@ -459,5 +459,59 @@ namespace Flow.Launcher.Plugin.Program
{
Win32.Dispose();
}
public List<BasePluginHotkey> GetPuginHotkeys()
{
return new List<BasePluginHotkey>
{
new SearchWindowPluginHotkey()
{
Id = 0,
Name = Context.API.GetTranslation("flowlauncher_plugin_program_open_containing_folder"),
Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\ue838"),
DefaultHotkey = "Ctrl+Enter",
Editable = false,
Visible = true,
Action = (r) =>
{
if (r.ContextData is UWPPackage uwp)
{
Context.API.OpenDirectory(uwp.Location);
return true;
}
else if (r.ContextData is Win32 win32)
{
Context.API.OpenDirectory(win32.ParentDirectory, win32.FullPath);
return true;
}
return false;
}
},
// TODO: Do it after administrator mode PR
/*new SearchWindowPluginHotkey()
{
Id = 1,
Name = Context.API.GetTranslation("flowlauncher_plugin_program_run_as_administrator"),
Glyph = new GlyphInfo(FontFamily: "/Resources/#Segoe Fluent Icons", Glyph: "\uE7EF"),
DefaultHotkey = "Ctrl+Shift+Enter",
Editable = false,
Visible = true,
Action = (r) =>
{
if (r.ContextData is UWPPackage uwp)
{
return true;
}
else if (r.ContextData is Win32 win32)
{
return true;
}
return false;
}
},*/
};
}
}
}

View file

@ -442,14 +442,6 @@ namespace Flow.Launcher.Plugin.Program.Programs
ContextData = this,
Action = e =>
{
// Ctrl + Enter to open containing folder
bool openFolder = e.SpecialKeyState.ToModifierKeys() == ModifierKeys.Control;
if (openFolder)
{
Main.Context.API.OpenDirectory(Location);
return true;
}
// Ctrl + Shift + Enter to run elevated
bool elevated = e.SpecialKeyState.ToModifierKeys() == (ModifierKeys.Control | ModifierKeys.Shift);

View file

@ -185,14 +185,6 @@ namespace Flow.Launcher.Plugin.Program.Programs
TitleToolTip = $"{title}\n{ExecutablePath}",
Action = c =>
{
// Ctrl + Enter to open containing folder
bool openFolder = c.SpecialKeyState.ToModifierKeys() == ModifierKeys.Control;
if (openFolder)
{
Main.Context.API.OpenDirectory(ParentDirectory, FullPath);
return true;
}
// Ctrl + Shift + Enter to run as admin
bool runAsAdmin = c.SpecialKeyState.ToModifierKeys() == (ModifierKeys.Control | ModifierKeys.Shift);