diff --git a/Plugins/Wox.Plugin.Program/Images/disable.png b/Plugins/Wox.Plugin.Program/Images/disable.png
new file mode 100644
index 0000000000..e9d4976bcf
Binary files /dev/null and b/Plugins/Wox.Plugin.Program/Images/disable.png differ
diff --git a/Plugins/Wox.Plugin.Program/Languages/en.xaml b/Plugins/Wox.Plugin.Program/Languages/en.xaml
index bd8d080242..1a48049c65 100644
--- a/Plugins/Wox.Plugin.Program/Languages/en.xaml
+++ b/Plugins/Wox.Plugin.Program/Languages/en.xaml
@@ -31,10 +31,15 @@
Run As Administrator
Open containing folder
+ Disable this program from displaying
Program
Search programs in Wox
Invalid Path
+
+
+ Success
+ Successfully disabled this program from displaying in your query
\ No newline at end of file
diff --git a/Plugins/Wox.Plugin.Program/Main.cs b/Plugins/Wox.Plugin.Program/Main.cs
index ba42eecaa5..d6f6550783 100644
--- a/Plugins/Wox.Plugin.Program/Main.cs
+++ b/Plugins/Wox.Plugin.Program/Main.cs
@@ -102,8 +102,6 @@ namespace Wox.Plugin.Program
lock (IndexLock)
{
_uwps = support ? UWP.All() : new UWP.Application[] { };
-
- //_uwps = UWP.RetainApplications(allUWPs, _settings.ProgramSources, _settings.EnableProgramSourceOnly);
}
}
@@ -133,16 +131,49 @@ namespace Wox.Plugin.Program
public List LoadContextMenus(Result selectedResult)
{
+ var menuOptions = new List();
var program = selectedResult.ContextData as IProgram;
if (program != null)
{
- var menus = program.ContextMenus(_context.API);
- return menus;
- }
- else
- {
- return new List();
+ menuOptions = program.ContextMenus(_context.API);
}
+
+ menuOptions.Add(
+ new Result
+ {
+ Title = _context.API.GetTranslation("wox_plugin_program_disable_program"),
+ Action = c =>
+ {
+ DisableProgram(program);
+ _context.API.ShowMsg(_context.API.GetTranslation("wox_plugin_program_disable_dlgtitle_success"),
+ _context.API.GetTranslation("wox_plugin_program_disable_dlgtitle_success_message"));
+ return false;
+ },
+ IcoPath = "Images/disable.png"
+ }
+ );
+
+ return menuOptions;
+ }
+
+ private void DisableProgram(IProgram ProgramToDelete)
+ {
+ 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 bool StartProcess(ProcessStartInfo info)
diff --git a/Plugins/Wox.Plugin.Program/Programs/IProgram.cs b/Plugins/Wox.Plugin.Program/Programs/IProgram.cs
index 88d4eaaf0f..f51ab9610f 100644
--- a/Plugins/Wox.Plugin.Program/Programs/IProgram.cs
+++ b/Plugins/Wox.Plugin.Program/Programs/IProgram.cs
@@ -1,8 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using System.Collections.Generic;
namespace Wox.Plugin.Program.Programs
{
@@ -10,5 +6,8 @@ namespace Wox.Plugin.Program.Programs
{
List ContextMenus(IPublicAPI api);
Result Result(string query, IPublicAPI api);
+ string UniqueIdentifier { get; set; }
+ string Name { get; }
+ string Location { get; }
}
}
diff --git a/Plugins/Wox.Plugin.Program/Programs/UWP.cs b/Plugins/Wox.Plugin.Program/Programs/UWP.cs
index cb2a28d7a2..9a7bcccb99 100644
--- a/Plugins/Wox.Plugin.Program/Programs/UWP.cs
+++ b/Plugins/Wox.Plugin.Program/Programs/UWP.cs
@@ -241,6 +241,9 @@ namespace Wox.Plugin.Program.Programs
public string UserModelId { get; set; }
public string BackgroundColor { get; set; }
+ public string Name => DisplayName;
+ public string Location => Package.Location;
+
public bool Enabled { get; set; }
public string LogoUri { get; set; }
diff --git a/Plugins/Wox.Plugin.Program/Programs/Win32.cs b/Plugins/Wox.Plugin.Program/Programs/Win32.cs
index b24c0187da..11ec701137 100644
--- a/Plugins/Wox.Plugin.Program/Programs/Win32.cs
+++ b/Plugins/Wox.Plugin.Program/Programs/Win32.cs
@@ -26,6 +26,7 @@ namespace Wox.Plugin.Program.Programs
public string Description { get; set; }
public bool Valid { get; set; }
public bool Enabled { get; set; }
+ public string Location => ParentDirectory;
private const string ShortcutExtension = "lnk";
private const string ApplicationReferenceExtension = "appref-ms";
diff --git a/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj b/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj
index 4ec456c6cc..58b93f8c65 100644
--- a/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj
+++ b/Plugins/Wox.Plugin.Program/Wox.Plugin.Program.csproj
@@ -105,6 +105,9 @@
PreserveNewest
+
+ PreserveNewest
+
MSBuild:Compile
Designer