From 845c6be95f670affd3c65e3d5e242ee0d8a50c13 Mon Sep 17 00:00:00 2001 From: Clint Rutkas Date: Thu, 23 Apr 2020 18:25:57 -0700 Subject: [PATCH] adjusting how programs are displayed. (#2369) * Removing description from title * adjusting subtitle * removing accidently paste * removing desc for uwp apps --- .../Plugins/Wox.Plugin.Program/Main.cs | 28 +- .../Wox.Plugin.Program/Programs/UWP.cs | 8 +- .../Wox.Plugin.Program/Programs/Win32.cs | 20 +- .../launcher/Plugins/Wox.Plugin.Shell/Main.cs | 696 +++++++++--------- 4 files changed, 361 insertions(+), 391 deletions(-) diff --git a/src/modules/launcher/Plugins/Wox.Plugin.Program/Main.cs b/src/modules/launcher/Plugins/Wox.Plugin.Program/Main.cs index cae579134e..59019a11ac 100644 --- a/src/modules/launcher/Plugins/Wox.Plugin.Program/Main.cs +++ b/src/modules/launcher/Plugins/Wox.Plugin.Program/Main.cs @@ -72,7 +72,8 @@ namespace Wox.Plugin.Program UWP.Application[] uwps; lock (IndexLock) - { // just take the reference inside the lock to eliminate query time issues. + { + // just take the reference inside the lock to eliminate query time issues. win32 = _win32s; uwps = _uwps; } @@ -118,7 +119,6 @@ namespace Wox.Plugin.Program public static void IndexPrograms() { var t1 = Task.Run(() => IndexWin32Programs()); - var t2 = Task.Run(() => IndexUWPPrograms()); Task.WaitAll(t1, t2); @@ -153,32 +153,8 @@ namespace Wox.Plugin.Program return menuOptions; } - private void DisableProgram(IProgram programToDelete) - { - if (_settings.DisabledProgramSources.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier)) - return; - - if (_uwps.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier)) - _uwps.Where(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier).FirstOrDefault().Enabled = false; - - if (_win32s.Any(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier)) - _win32s.Where(x => x.UniqueIdentifier == programToDelete.UniqueIdentifier).FirstOrDefault().Enabled = false; - - _settings.DisabledProgramSources - .Add( - new Settings.DisabledProgramSource - { - Name = programToDelete.Name, - Location = programToDelete.Location, - UniqueIdentifier = programToDelete.UniqueIdentifier, - Enabled = false - } - ); - } - public static void StartProcess(Func runProcess, ProcessStartInfo info) { - bool hide; try { runProcess(info); diff --git a/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/UWP.cs b/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/UWP.cs index 0c0100b405..2d89128c52 100644 --- a/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/UWP.cs +++ b/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/UWP.cs @@ -282,7 +282,7 @@ namespace Wox.Plugin.Program.Programs var result = new Result { - SubTitle = Package.Location, + SubTitle = "UWP Application", Icon = Logo, Score = score, ContextData = this, @@ -299,12 +299,6 @@ namespace Wox.Plugin.Program.Programs result.Title = Description; result.TitleHighlightData = StringMatcher.FuzzySearch(query, Description).MatchData; } - else if (!string.IsNullOrEmpty(Description)) - { - var title = $"{DisplayName}: {Description}"; - result.Title = title; - result.TitleHighlightData = StringMatcher.FuzzySearch(query, title).MatchData; - } else { result.Title = DisplayName; diff --git a/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/Win32.cs b/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/Win32.cs index 82e156106b..72b5f828a5 100644 --- a/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/Win32.cs +++ b/src/modules/launcher/Plugins/Wox.Plugin.Program/Programs/Win32.cs @@ -11,7 +11,6 @@ using Microsoft.Win32; using Shell; using Wox.Infrastructure; using Wox.Plugin.Program.Logger; -using Wox.Plugin.SharedCommands; namespace Wox.Plugin.Program.Programs { @@ -22,6 +21,7 @@ namespace Wox.Plugin.Program.Programs public string UniqueIdentifier { get; set; } public string IcoPath { get; set; } public string FullPath { get; set; } + public string LnkResolvedPath { get; set; } public string ParentDirectory { get; set; } public string ExecutableName { get; set; } public string Description { get; set; } @@ -53,7 +53,7 @@ namespace Wox.Plugin.Program.Programs var result = new Result { - SubTitle = FullPath, + SubTitle = "Win32 Application", IcoPath = IcoPath, Score = score, ContextData = this, @@ -78,12 +78,6 @@ namespace Wox.Plugin.Program.Programs result.Title = Description; result.TitleHighlightData = StringMatcher.FuzzySearch(query, Description).MatchData; } - else if (!string.IsNullOrEmpty(Description)) - { - var title = $"{Name}: {Description}"; - result.Title = title; - result.TitleHighlightData = StringMatcher.FuzzySearch(query, title).MatchData; - } else { result.Title = Name; @@ -196,6 +190,9 @@ namespace Wox.Plugin.Program.Programs var extension = Extension(target); if (extension == ExeExtension && File.Exists(target)) { + program.LnkResolvedPath = program.FullPath; + program.FullPath = target; + buffer = new StringBuilder(MAX_PATH); link.GetDescription(buffer, MAX_PATH); var description = buffer.ToString(); @@ -356,8 +353,11 @@ namespace Wox.Plugin.Program.Programs var programs1 = paths.AsParallel().Where(p => Extension(p) == ShortcutExtension).Select(LnkProgram); var programs2 = paths.AsParallel().Where(p => Extension(p) == ApplicationReferenceExtension).Select(Win32Program); - var programs = programs1.Concat(programs2).Where(p => p.Valid); - return programs; + var allValidPrograms = programs1.Concat(programs2).Where(p => p.Valid); + //var programsWithLnk = allValidPrograms.Where(x => !string.IsNullOrEmpty(x.LnkResolvedPath)); + + + return allValidPrograms; } private static ParallelQuery AppPathsPrograms(string[] suffixes) diff --git a/src/modules/launcher/Plugins/Wox.Plugin.Shell/Main.cs b/src/modules/launcher/Plugins/Wox.Plugin.Shell/Main.cs index 252f04022d..817426e8f9 100644 --- a/src/modules/launcher/Plugins/Wox.Plugin.Shell/Main.cs +++ b/src/modules/launcher/Plugins/Wox.Plugin.Shell/Main.cs @@ -1,353 +1,353 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; -using WindowsInput; -using WindowsInput.Native; -using Wox.Infrastructure.Hotkey; -using Wox.Infrastructure.Logger; -using Wox.Infrastructure.Storage; -using Wox.Plugin.SharedCommands; -using Application = System.Windows.Application; -using Control = System.Windows.Controls.Control; -using Keys = System.Windows.Forms.Keys; - -namespace Wox.Plugin.Shell -{ - public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu, ISavable - { - private const string Image = "Images/shell.png"; - private PluginInitContext _context; - private bool _winRStroked; - private readonly KeyboardSimulator _keyboardSimulator = new KeyboardSimulator(new InputSimulator()); - - private readonly Settings _settings; - private readonly PluginJsonStorage _storage; - - public Main() - { - _storage = new PluginJsonStorage(); - _settings = _storage.Load(); - } - - public void Save() - { - _storage.Save(); - } - - - public List Query(Query query) - { - List results = new List(); - string cmd = query.Search; - if (string.IsNullOrEmpty(cmd)) - { - return ResultsFromlHistory(); - } - else - { - var queryCmd = GetCurrentCmd(cmd); - results.Add(queryCmd); - var history = GetHistoryCmds(cmd, queryCmd); - results.AddRange(history); - - try - { - string basedir = null; - string dir = null; - string excmd = Environment.ExpandEnvironmentVariables(cmd); - if (Directory.Exists(excmd) && (cmd.EndsWith("/") || cmd.EndsWith(@"\"))) - { - basedir = excmd; - dir = cmd; - } - else if (Directory.Exists(Path.GetDirectoryName(excmd) ?? string.Empty)) - { - basedir = Path.GetDirectoryName(excmd); - var dirn = Path.GetDirectoryName(cmd); - dir = (dirn.EndsWith("/") || dirn.EndsWith(@"\")) ? dirn : cmd.Substring(0, dirn.Length + 1); - } - - if (basedir != null) - { - var autocomplete = Directory.GetFileSystemEntries(basedir). - Select(o => dir + Path.GetFileName(o)). - Where(o => o.StartsWith(cmd, StringComparison.OrdinalIgnoreCase) && - !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase)) && - !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase))).ToList(); - autocomplete.Sort(); - results.AddRange(autocomplete.ConvertAll(m => new Result - { - Title = m, - IcoPath = Image, - Action = c => - { - Execute(Process.Start, PrepareProcessStartInfo(m)); - return true; - } - })); - } - } - catch (Exception e) - { - Log.Exception($"|Wox.Plugin.Shell.Main.Query|Exception when query for <{query}>", e); - } - return results; - } - } - - private List GetHistoryCmds(string cmd, Result result) - { - IEnumerable history = _settings.Count.Where(o => o.Key.Contains(cmd)) - .OrderByDescending(o => o.Value) - .Select(m => - { - if (m.Key == cmd) - { - result.SubTitle = string.Format(_context.API.GetTranslation("wox_plugin_cmd_cmd_has_been_executed_times"), m.Value); - return null; - } - - var ret = new Result - { - Title = m.Key, - SubTitle = string.Format(_context.API.GetTranslation("wox_plugin_cmd_cmd_has_been_executed_times"), m.Value), - IcoPath = Image, - Action = c => - { - Execute(Process.Start, PrepareProcessStartInfo(m.Key)); - return true; - } - }; - return ret; - }).Where(o => o != null).Take(4); - return history.ToList(); - } - - private Result GetCurrentCmd(string cmd) - { - Result result = new Result - { - Title = cmd, - Score = 5000, - SubTitle = _context.API.GetTranslation("wox_plugin_cmd_execute_through_shell"), - IcoPath = Image, - Action = c => - { - Execute(Process.Start, PrepareProcessStartInfo(cmd)); - return true; - } - }; - - return result; - } - - private List ResultsFromlHistory() - { - IEnumerable history = _settings.Count.OrderByDescending(o => o.Value) - .Select(m => new Result - { - Title = m.Key, - SubTitle = string.Format(_context.API.GetTranslation("wox_plugin_cmd_cmd_has_been_executed_times"), m.Value), - IcoPath = Image, - Action = c => - { - Execute(Process.Start, PrepareProcessStartInfo(m.Key)); - return true; - } - }).Take(5); - return history.ToList(); - } - - private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdministrator = false) - { - command = command.Trim(); - command = Environment.ExpandEnvironmentVariables(command); - var workingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); - var runAsAdministratorArg = !runAsAdministrator && !_settings.RunAsAdministrator ? "" : "runas"; - - ProcessStartInfo info; - if (_settings.Shell == Shell.Cmd) - { +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; +using WindowsInput; +using WindowsInput.Native; +using Wox.Infrastructure.Hotkey; +using Wox.Infrastructure.Logger; +using Wox.Infrastructure.Storage; +using Wox.Plugin.SharedCommands; +using Application = System.Windows.Application; +using Control = System.Windows.Controls.Control; +using Keys = System.Windows.Forms.Keys; + +namespace Wox.Plugin.Shell +{ + public class Main : IPlugin, ISettingProvider, IPluginI18n, IContextMenu, ISavable + { + private const string Image = "Images/shell.png"; + private PluginInitContext _context; + private bool _winRStroked; + private readonly KeyboardSimulator _keyboardSimulator = new KeyboardSimulator(new InputSimulator()); + + private readonly Settings _settings; + private readonly PluginJsonStorage _storage; + + public Main() + { + _storage = new PluginJsonStorage(); + _settings = _storage.Load(); + } + + public void Save() + { + _storage.Save(); + } + + + public List Query(Query query) + { + List results = new List(); + string cmd = query.Search; + if (string.IsNullOrEmpty(cmd)) + { + return ResultsFromlHistory(); + } + else + { + var queryCmd = GetCurrentCmd(cmd); + results.Add(queryCmd); + var history = GetHistoryCmds(cmd, queryCmd); + results.AddRange(history); + + try + { + string basedir = null; + string dir = null; + string excmd = Environment.ExpandEnvironmentVariables(cmd); + if (Directory.Exists(excmd) && (cmd.EndsWith("/") || cmd.EndsWith(@"\"))) + { + basedir = excmd; + dir = cmd; + } + else if (Directory.Exists(Path.GetDirectoryName(excmd) ?? string.Empty)) + { + basedir = Path.GetDirectoryName(excmd); + var dirn = Path.GetDirectoryName(cmd); + dir = (dirn.EndsWith("/") || dirn.EndsWith(@"\")) ? dirn : cmd.Substring(0, dirn.Length + 1); + } + + if (basedir != null) + { + var autocomplete = Directory.GetFileSystemEntries(basedir). + Select(o => dir + Path.GetFileName(o)). + Where(o => o.StartsWith(cmd, StringComparison.OrdinalIgnoreCase) && + !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase)) && + !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase))).ToList(); + autocomplete.Sort(); + results.AddRange(autocomplete.ConvertAll(m => new Result + { + Title = m, + IcoPath = Image, + Action = c => + { + Execute(Process.Start, PrepareProcessStartInfo(m)); + return true; + } + })); + } + } + catch (Exception e) + { + Log.Exception($"|Wox.Plugin.Shell.Main.Query|Exception when query for <{query}>", e); + } + return results; + } + } + + private List GetHistoryCmds(string cmd, Result result) + { + IEnumerable history = _settings.Count.Where(o => o.Key.Contains(cmd)) + .OrderByDescending(o => o.Value) + .Select(m => + { + if (m.Key == cmd) + { + result.SubTitle = string.Format(_context.API.GetTranslation("wox_plugin_cmd_cmd_has_been_executed_times"), m.Value); + return null; + } + + var ret = new Result + { + Title = m.Key, + SubTitle = string.Format(_context.API.GetTranslation("wox_plugin_cmd_cmd_has_been_executed_times"), m.Value), + IcoPath = Image, + Action = c => + { + Execute(Process.Start, PrepareProcessStartInfo(m.Key)); + return true; + } + }; + return ret; + }).Where(o => o != null).Take(4); + return history.ToList(); + } + + private Result GetCurrentCmd(string cmd) + { + Result result = new Result + { + Title = cmd, + Score = 5000, + SubTitle = _context.API.GetTranslation("wox_plugin_cmd_execute_through_shell"), + IcoPath = Image, + Action = c => + { + Execute(Process.Start, PrepareProcessStartInfo(cmd)); + return true; + } + }; + + return result; + } + + private List ResultsFromlHistory() + { + IEnumerable history = _settings.Count.OrderByDescending(o => o.Value) + .Select(m => new Result + { + Title = m.Key, + SubTitle = string.Format(_context.API.GetTranslation("wox_plugin_cmd_cmd_has_been_executed_times"), m.Value), + IcoPath = Image, + Action = c => + { + Execute(Process.Start, PrepareProcessStartInfo(m.Key)); + return true; + } + }).Take(5); + return history.ToList(); + } + + private ProcessStartInfo PrepareProcessStartInfo(string command, bool runAsAdministrator = false) + { + command = command.Trim(); + command = Environment.ExpandEnvironmentVariables(command); + var workingDirectory = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); + var runAsAdministratorArg = !runAsAdministrator && !_settings.RunAsAdministrator ? "" : "runas"; + + ProcessStartInfo info; + if (_settings.Shell == Shell.Cmd) + { var arguments = _settings.LeaveShellOpen ? $"/k \"{command}\"" : $"/c \"{command}\" & pause"; - info = ShellCommand.SetProcessStartInfo("cmd.exe", workingDirectory, arguments, runAsAdministratorArg); - } - else if (_settings.Shell == Shell.Powershell) - { - string arguments; - if (_settings.LeaveShellOpen) - { - arguments = $"-NoExit \"{command}\""; - } - else - { - arguments = $"\"{command} ; Read-Host -Prompt \\\"Press Enter to continue\\\"\""; - } - - info = ShellCommand.SetProcessStartInfo("powershell.exe", workingDirectory, arguments, runAsAdministratorArg); - } - else if (_settings.Shell == Shell.RunCommand) - { - //Open explorer if the path is a file or directory + info = ShellCommand.SetProcessStartInfo("cmd.exe", workingDirectory, arguments, runAsAdministratorArg); + } + else if (_settings.Shell == Shell.Powershell) + { + string arguments; + if (_settings.LeaveShellOpen) + { + arguments = $"-NoExit \"{command}\""; + } + else + { + arguments = $"\"{command} ; Read-Host -Prompt \\\"Press Enter to continue\\\"\""; + } + + info = ShellCommand.SetProcessStartInfo("powershell.exe", workingDirectory, arguments, runAsAdministratorArg); + } + else if (_settings.Shell == Shell.RunCommand) + { + //Open explorer if the path is a file or directory if(Directory.Exists(command) || File.Exists(command)) { info = ShellCommand.SetProcessStartInfo("explorer.exe", arguments: command, verb: runAsAdministratorArg); - } - else - { - var parts = command.Split(new[] { ' ' }, 2); - if (parts.Length == 2) - { - var filename = parts[0]; - if (ExistInPath(filename)) - { - var arguments = parts[1]; - info = ShellCommand.SetProcessStartInfo(filename, workingDirectory, arguments, runAsAdministratorArg); - } - else - { - info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg); - } - } - else - { - info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg); - } - } - } - else - { - throw new NotImplementedException(); - } - - info.UseShellExecute = true; - - _settings.AddCmdHistory(command); - - return info; - } - - private void Execute(Func startProcess,ProcessStartInfo info) - { - try - { - startProcess(info); - } - catch (FileNotFoundException e) - { - var name = "Plugin: Shell"; - var message = $"Command not found: {e.Message}"; - _context.API.ShowMsg(name, message); - } - catch(Win32Exception e) - { - var name = "Plugin: Shell"; - var message = $"Error running the command: {e.Message}"; - _context.API.ShowMsg(name, message); - } - } - - private bool ExistInPath(string filename) - { - if (File.Exists(filename)) - { - return true; - } - else - { - var values = Environment.GetEnvironmentVariable("PATH"); - if (values != null) - { - foreach (var path in values.Split(';')) - { - var path1 = Path.Combine(path, filename); - var path2 = Path.Combine(path, filename + ".exe"); - if (File.Exists(path1) || File.Exists(path2)) - { - return true; - } - } - return false; - } - else - { - return false; - } - } - } - - public void Init(PluginInitContext context) - { - this._context = context; - context.API.GlobalKeyboardEvent += API_GlobalKeyboardEvent; - } - - bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state) - { - if (_settings.ReplaceWinR) - { - if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed) - { - _winRStroked = true; - OnWinRPressed(); - return false; - } - if (keyevent == (int)KeyEvent.WM_KEYUP && _winRStroked && vkcode == (int)Keys.LWin) - { - _winRStroked = false; - _keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.BACK); - return false; - } - } - return true; - } - - private void OnWinRPressed() - { - _context.API.ChangeQuery($"{_context.CurrentPluginMetadata.ActionKeywords[0]}{Plugin.Query.TermSeperater}"); - Application.Current.MainWindow.Visibility = Visibility.Visible; - } - - public Control CreateSettingPanel() - { - return new CMDSetting(_settings); - } - - public string GetTranslatedPluginTitle() - { - return _context.API.GetTranslation("wox_plugin_cmd_plugin_name"); - } - - public string GetTranslatedPluginDescription() - { - return _context.API.GetTranslation("wox_plugin_cmd_plugin_description"); - } - - public List LoadContextMenus(Result selectedResult) - { - var resultlist = new List - { - new ContextMenuResult - { - Title = _context.API.GetTranslation("wox_plugin_cmd_run_as_administrator"), - Glyph = "\xE7EF", - FontFamily = "Segoe MDL2 Assets", - AcceleratorKey = "Enter", - AcceleratorModifiers = "Control,Shift", - Action = c => - { - Execute(Process.Start, PrepareProcessStartInfo(selectedResult.Title, true)); - return true; - } - } - }; - - return resultlist; - } - } -} + } + else + { + var parts = command.Split(new[] { ' ' }, 2); + if (parts.Length == 2) + { + var filename = parts[0]; + if (ExistInPath(filename)) + { + var arguments = parts[1]; + info = ShellCommand.SetProcessStartInfo(filename, workingDirectory, arguments, runAsAdministratorArg); + } + else + { + info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg); + } + } + else + { + info = ShellCommand.SetProcessStartInfo(command, verb: runAsAdministratorArg); + } + } + } + else + { + throw new NotImplementedException(); + } + + info.UseShellExecute = true; + + _settings.AddCmdHistory(command); + + return info; + } + + private void Execute(Func startProcess,ProcessStartInfo info) + { + try + { + startProcess(info); + } + catch (FileNotFoundException e) + { + var name = "Plugin: Shell"; + var message = $"Command not found: {e.Message}"; + _context.API.ShowMsg(name, message); + } + catch(Win32Exception e) + { + var name = "Plugin: Shell"; + var message = $"Error running the command: {e.Message}"; + _context.API.ShowMsg(name, message); + } + } + + private bool ExistInPath(string filename) + { + if (File.Exists(filename)) + { + return true; + } + else + { + var values = Environment.GetEnvironmentVariable("PATH"); + if (values != null) + { + foreach (var path in values.Split(';')) + { + var path1 = Path.Combine(path, filename); + var path2 = Path.Combine(path, filename + ".exe"); + if (File.Exists(path1) || File.Exists(path2)) + { + return true; + } + } + return false; + } + else + { + return false; + } + } + } + + public void Init(PluginInitContext context) + { + this._context = context; + context.API.GlobalKeyboardEvent += API_GlobalKeyboardEvent; + } + + bool API_GlobalKeyboardEvent(int keyevent, int vkcode, SpecialKeyState state) + { + if (_settings.ReplaceWinR) + { + if (keyevent == (int)KeyEvent.WM_KEYDOWN && vkcode == (int)Keys.R && state.WinPressed) + { + _winRStroked = true; + OnWinRPressed(); + return false; + } + if (keyevent == (int)KeyEvent.WM_KEYUP && _winRStroked && vkcode == (int)Keys.LWin) + { + _winRStroked = false; + _keyboardSimulator.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.BACK); + return false; + } + } + return true; + } + + private void OnWinRPressed() + { + _context.API.ChangeQuery($"{_context.CurrentPluginMetadata.ActionKeywords[0]}{Plugin.Query.TermSeperater}"); + Application.Current.MainWindow.Visibility = Visibility.Visible; + } + + public Control CreateSettingPanel() + { + return new CMDSetting(_settings); + } + + public string GetTranslatedPluginTitle() + { + return _context.API.GetTranslation("wox_plugin_cmd_plugin_name"); + } + + public string GetTranslatedPluginDescription() + { + return _context.API.GetTranslation("wox_plugin_cmd_plugin_description"); + } + + public List LoadContextMenus(Result selectedResult) + { + var resultlist = new List + { + new ContextMenuResult + { + Title = _context.API.GetTranslation("wox_plugin_cmd_run_as_administrator"), + Glyph = "\xE7EF", + FontFamily = "Segoe MDL2 Assets", + AcceleratorKey = "Enter", + AcceleratorModifiers = "Control,Shift", + Action = c => + { + Execute(Process.Start, PrepareProcessStartInfo(selectedResult.Title, true)); + return true; + } + } + }; + + return resultlist; + } + } +}