Dev/crutkas/fixing warnings (#5161)
* new lines & braces * Tabs /space auto fix Co-authored-by: Clint Rutkas <crutkas@microsoft.com>
This commit is contained in:
parent
6efec9d280
commit
14247fa75a
|
@ -7,7 +7,6 @@ using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Lib
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
{
|
{
|
||||||
|
|
||||||
// Represents the configuration property of the settings that store Double type.
|
// Represents the configuration property of the settings that store Double type.
|
||||||
public class DoubleProperty
|
public class DoubleProperty
|
||||||
{
|
{
|
||||||
|
|
|
@ -148,7 +148,7 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
return JsonSerializer.Serialize(this);
|
return JsonSerializer.Serialize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LogTelemetryEvent(bool value, [CallerMemberName] string moduleName = null )
|
private void LogTelemetryEvent(bool value, [CallerMemberName] string moduleName = null)
|
||||||
{
|
{
|
||||||
var dataEvent = new SettingsEnabledEvent()
|
var dataEvent = new SettingsEnabledEvent()
|
||||||
{
|
{
|
||||||
|
|
|
@ -65,7 +65,6 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
|
|
||||||
public PowerPreviewProperties()
|
public PowerPreviewProperties()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
|
|
|
@ -7,7 +7,6 @@ using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Lib
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
{
|
{
|
||||||
|
|
||||||
public class PowerRenameLocalProperties
|
public class PowerRenameLocalProperties
|
||||||
{
|
{
|
||||||
public PowerRenameLocalProperties()
|
public PowerRenameLocalProperties()
|
||||||
|
|
|
@ -13,7 +13,6 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
|
|
||||||
public PowerRenameSettingsIPCMessage()
|
public PowerRenameSettingsIPCMessage()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PowerRenameSettingsIPCMessage(SndPowerRenameSettings settings)
|
public PowerRenameSettingsIPCMessage(SndPowerRenameSettings settings)
|
||||||
|
|
|
@ -9,7 +9,6 @@ using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Lib
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
{
|
{
|
||||||
|
|
||||||
public class ShortcutGuideProperties
|
public class ShortcutGuideProperties
|
||||||
{
|
{
|
||||||
public ShortcutGuideProperties()
|
public ShortcutGuideProperties()
|
||||||
|
|
|
@ -17,7 +17,6 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
|
|
||||||
public ShortcutGuideSettingsIPCMessage()
|
public ShortcutGuideSettingsIPCMessage()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ShortcutGuideSettingsIPCMessage(SndShortcutGuideSettings settings)
|
public ShortcutGuideSettingsIPCMessage(SndShortcutGuideSettings settings)
|
||||||
|
|
|
@ -10,7 +10,6 @@ using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Lib
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
{
|
{
|
||||||
|
|
||||||
public class SndImageResizerSettings
|
public class SndImageResizerSettings
|
||||||
{
|
{
|
||||||
[JsonPropertyName("Image Resizer")]
|
[JsonPropertyName("Image Resizer")]
|
||||||
|
|
|
@ -6,7 +6,6 @@ using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace Microsoft.PowerToys.Settings.UI.Lib
|
namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
{
|
{
|
||||||
|
|
||||||
public class SndShortcutGuideSettings
|
public class SndShortcutGuideSettings
|
||||||
{
|
{
|
||||||
[JsonPropertyName("Shortcut Guide")]
|
[JsonPropertyName("Shortcut Guide")]
|
||||||
|
@ -14,7 +13,6 @@ namespace Microsoft.PowerToys.Settings.UI.Lib
|
||||||
|
|
||||||
public SndShortcutGuideSettings()
|
public SndShortcutGuideSettings()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SndShortcutGuideSettings(ShortcutGuideSettings settings)
|
public SndShortcutGuideSettings(ShortcutGuideSettings settings)
|
||||||
|
|
|
@ -58,7 +58,8 @@ namespace Microsoft.PowerToys.Settings.UI.Runner
|
||||||
IsUserAnAdmin = false;
|
IsUserAnAdmin = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
RunnerHelper.WaitForPowerToysRunner(PowerToysPID, () => {
|
RunnerHelper.WaitForPowerToysRunner(PowerToysPID, () =>
|
||||||
|
{
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace Microsoft.PowerToys.Settings.UI.Helpers
|
||||||
{
|
{
|
||||||
public event PropertyChangedEventHandler PropertyChanged;
|
public event PropertyChangedEventHandler PropertyChanged;
|
||||||
|
|
||||||
protected void Set<T>(ref T storage, T value, [CallerMemberName]string propertyName = null)
|
protected void Set<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
|
||||||
{
|
{
|
||||||
if (Equals(storage, value))
|
if (Equals(storage, value))
|
||||||
{
|
{
|
||||||
|
|
|
@ -238,19 +238,19 @@ namespace Microsoft.PowerToys.Settings.UI.ViewModels
|
||||||
|
|
||||||
public bool ClearInputOnLaunch
|
public bool ClearInputOnLaunch
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return settings.Properties.clear_input_on_launch;
|
return settings.Properties.clear_input_on_launch;
|
||||||
}
|
}
|
||||||
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (settings.Properties.clear_input_on_launch != value)
|
if (settings.Properties.clear_input_on_launch != value)
|
||||||
{
|
{
|
||||||
settings.Properties.clear_input_on_launch = value;
|
settings.Properties.clear_input_on_launch = value;
|
||||||
UpdateSettings();
|
UpdateSettings();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool DisableDriveDetectionWarning
|
public bool DisableDriveDetectionWarning
|
||||||
|
|
|
@ -59,7 +59,7 @@ namespace CommonLibTest
|
||||||
BasePTSettingsTest expected_json = JsonSerializer.Deserialize<BasePTSettingsTest>(file_contents_correct_json_content);
|
BasePTSettingsTest expected_json = JsonSerializer.Deserialize<BasePTSettingsTest>(file_contents_correct_json_content);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
if(SettingsUtils.SettingsFolderExists(file_name))
|
if (SettingsUtils.SettingsFolderExists(file_name))
|
||||||
{
|
{
|
||||||
DeleteFolder(file_name);
|
DeleteFolder(file_name);
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ namespace CommonLibTest
|
||||||
public void SettingsFolderExists_ShouldReturnFalse_WhenFilePathIsNotFound()
|
public void SettingsFolderExists_ShouldReturnFalse_WhenFilePathIsNotFound()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
string file_name_random = "test\\"+ RandomString();
|
string file_name_random = "test\\" + RandomString();
|
||||||
string file_name_exists = "test\\exists";
|
string file_name_exists = "test\\exists";
|
||||||
string file_contents_correct_json_content = "{\"name\":\"powertoy module name\",\"version\":\"powertoy version\"}";
|
string file_contents_correct_json_content = "{\"name\":\"powertoy module name\",\"version\":\"powertoy version\"}";
|
||||||
|
|
||||||
|
|
|
@ -282,7 +282,7 @@ namespace ViewModelTests
|
||||||
};
|
};
|
||||||
|
|
||||||
// act
|
// act
|
||||||
viewModel.ZoneHighlightColor = Color.FromArgb(0, 225,225,225);
|
viewModel.ZoneHighlightColor = Color.FromArgb(0, 225, 225, 225);
|
||||||
}
|
}
|
||||||
|
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
|
|
|
@ -46,12 +46,13 @@ namespace ColorPickerUI
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_args.Length > 0)
|
if (_args.Length > 0)
|
||||||
{
|
{
|
||||||
_ = int.TryParse(_args[0], out _powerToysPid);
|
_ = int.TryParse(_args[0], out _powerToysPid);
|
||||||
}
|
}
|
||||||
|
|
||||||
RunnerHelper.WaitForPowerToysRunner(_powerToysPid, () => {
|
RunnerHelper.WaitForPowerToysRunner(_powerToysPid, () =>
|
||||||
|
{
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,8 @@ namespace ColorPicker.Behaviors
|
||||||
{
|
{
|
||||||
var sender = ((ResizeBehavior)d).AssociatedObject;
|
var sender = ((ResizeBehavior)d).AssociatedObject;
|
||||||
var move = new DoubleAnimation(sender.Width, (double)e.NewValue, new Duration(TimeSpan.FromMilliseconds(150)), FillBehavior.Stop);
|
var move = new DoubleAnimation(sender.Width, (double)e.NewValue, new Duration(TimeSpan.FromMilliseconds(150)), FillBehavior.Stop);
|
||||||
move.Completed += (s, e1) => {
|
move.Completed += (s, e1) =>
|
||||||
|
{
|
||||||
sender.BeginAnimation(FrameworkElement.WidthProperty, null); sender.Width = (double)e.NewValue;
|
sender.BeginAnimation(FrameworkElement.WidthProperty, null); sender.Width = (double)e.NewValue;
|
||||||
};
|
};
|
||||||
move.EasingFunction = new QuadraticEase() { EasingMode = EasingMode.EaseOut };
|
move.EasingFunction = new QuadraticEase() { EasingMode = EasingMode.EaseOut };
|
||||||
|
|
|
@ -38,7 +38,7 @@ namespace ColorPicker.Mouse
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if(curFile != null)
|
if (curFile != null)
|
||||||
{
|
{
|
||||||
Registry.SetValue(CursorsRegistryPath, cursorRegistryName, curFile);
|
Registry.SetValue(CursorsRegistryPath, cursorRegistryName, curFile);
|
||||||
Win32Apis.SystemParametersInfo(SPI_SETCURSORS, 0, new IntPtr(0), SPIF_SENDCHANGE);
|
Win32Apis.SystemParametersInfo(SPI_SETCURSORS, 0, new IntPtr(0), SPIF_SENDCHANGE);
|
||||||
|
|
|
@ -76,7 +76,7 @@ namespace ColorPicker.Settings
|
||||||
Logger.LogError("Failed to read changed settings", ex);
|
Logger.LogError("Failed to read changed settings", ex);
|
||||||
Thread.Sleep(500);
|
Thread.Sleep(500);
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Logger.LogError("Failed to read changed settings", ex);
|
Logger.LogError("Failed to read changed settings", ex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,8 @@ namespace FancyZonesEditor
|
||||||
|
|
||||||
private void OnStartup(object sender, StartupEventArgs e)
|
private void OnStartup(object sender, StartupEventArgs e)
|
||||||
{
|
{
|
||||||
RunnerHelper.WaitForPowerToysRunner(Settings.PowerToysPID, () => {
|
RunnerHelper.WaitForPowerToysRunner(Settings.PowerToysPID, () =>
|
||||||
|
{
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace FancyZonesEditor
|
||||||
internal static class Native
|
internal static class Native
|
||||||
{
|
{
|
||||||
[DllImport("kernel32", SetLastError = true, CharSet = CharSet.Ansi)]
|
[DllImport("kernel32", SetLastError = true, CharSet = CharSet.Ansi)]
|
||||||
public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)]string lpFileName);
|
public static extern IntPtr LoadLibrary([MarshalAs(UnmanagedType.LPStr)] string lpFileName);
|
||||||
|
|
||||||
[DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
|
[DllImport("kernel32", CharSet = CharSet.Ansi, ExactSpelling = true, SetLastError = true)]
|
||||||
public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
|
public static extern IntPtr GetProcAddress(IntPtr hModule, string procName);
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace Microsoft.Plugin.Calculator
|
||||||
var result = MagesEngine.Interpret(query.Search);
|
var result = MagesEngine.Interpret(query.Search);
|
||||||
|
|
||||||
// This could happen for some incorrect queries, like pi(2)
|
// This could happen for some incorrect queries, like pi(2)
|
||||||
if(result == null)
|
if (result == null)
|
||||||
{
|
{
|
||||||
return new List<Result>();
|
return new List<Result>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,7 +111,7 @@ namespace Microsoft.Plugin.Folder
|
||||||
{
|
{
|
||||||
Process.Start("explorer.exe", $" /select,\"{record.FullPath}\"");
|
Process.Start("explorer.exe", $" /select,\"{record.FullPath}\"");
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
var message = $"Fail to open file at {record.FullPath}";
|
var message = $"Fail to open file at {record.FullPath}";
|
||||||
LogException(message, e);
|
LogException(message, e);
|
||||||
|
@ -159,7 +159,7 @@ namespace Microsoft.Plugin.Folder
|
||||||
|
|
||||||
private bool CanRunAsDifferentUser(string path)
|
private bool CanRunAsDifferentUser(string path)
|
||||||
{
|
{
|
||||||
switch(Path.GetExtension(path))
|
switch (Path.GetExtension(path))
|
||||||
{
|
{
|
||||||
case ".exe":
|
case ".exe":
|
||||||
case ".bat":
|
case ".bat":
|
||||||
|
|
|
@ -197,7 +197,7 @@ namespace Microsoft.Plugin.Folder
|
||||||
{
|
{
|
||||||
if ((fileSystemInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) continue;
|
if ((fileSystemInfo.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden) continue;
|
||||||
|
|
||||||
if(fileSystemInfo is DirectoryInfo)
|
if (fileSystemInfo is DirectoryInfo)
|
||||||
{
|
{
|
||||||
var folderSubtitleString = fileSystemInfo.FullName;
|
var folderSubtitleString = fileSystemInfo.FullName;
|
||||||
|
|
||||||
|
@ -246,7 +246,7 @@ namespace Microsoft.Plugin.Folder
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
},
|
},
|
||||||
ContextData = new SearchResult { Type = ResultType.File, FullPath = filePath}
|
ContextData = new SearchResult { Type = ResultType.File, FullPath = filePath }
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace Microsoft.Plugin.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extensions for adding run as admin context menu item for applications
|
// Extensions for adding run as admin context menu item for applications
|
||||||
private readonly string[] appExtensions = { ".exe", ".bat", ".appref-ms", ".lnk" };
|
private readonly string[] appExtensions = { ".exe", ".bat", ".appref-ms", ".lnk" };
|
||||||
|
|
||||||
public ContextMenuLoader(PluginInitContext context)
|
public ContextMenuLoader(PluginInitContext context)
|
||||||
{
|
{
|
||||||
|
@ -44,7 +44,7 @@ namespace Microsoft.Plugin.Indexer
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test to check if File can be Run as admin, if yes, we add a 'run as admin' context menu item
|
// Test to check if File can be Run as admin, if yes, we add a 'run as admin' context menu item
|
||||||
if(CanFileBeRunAsAdmin(record.Path))
|
if (CanFileBeRunAsAdmin(record.Path))
|
||||||
{
|
{
|
||||||
contextMenus.Add(CreateRunAsAdminContextMenu(record));
|
contextMenus.Add(CreateRunAsAdminContextMenu(record));
|
||||||
}
|
}
|
||||||
|
@ -128,7 +128,7 @@ namespace Microsoft.Plugin.Indexer
|
||||||
Task.Run(() => Helper.RunAsAdmin(record.Path));
|
Task.Run(() => Helper.RunAsAdmin(record.Path));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Log.Exception($"|Microsoft.Plugin.Indexer.ContextMenu| Failed to run {record.Path} as admin, {e.Message}", e);
|
Log.Exception($"|Microsoft.Plugin.Indexer.ContextMenu| Failed to run {record.Path} as admin, {e.Message}", e);
|
||||||
return false;
|
return false;
|
||||||
|
@ -142,9 +142,9 @@ namespace Microsoft.Plugin.Indexer
|
||||||
private bool CanFileBeRunAsAdmin(string path)
|
private bool CanFileBeRunAsAdmin(string path)
|
||||||
{
|
{
|
||||||
string fileExtension = Path.GetExtension(path);
|
string fileExtension = Path.GetExtension(path);
|
||||||
foreach(string extension in appExtensions)
|
foreach (string extension in appExtensions)
|
||||||
{
|
{
|
||||||
if(extension.Equals(fileExtension, StringComparison.OrdinalIgnoreCase))
|
if (extension.Equals(fileExtension, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ namespace Microsoft.Plugin.Indexer
|
||||||
{
|
{
|
||||||
Process.Start("explorer.exe", $" /select,\"{record.Path}\"");
|
Process.Start("explorer.exe", $" /select,\"{record.Path}\"");
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
var message = $"Fail to open file at {record.Path}";
|
var message = $"Fail to open file at {record.Path}";
|
||||||
LogException(message, e);
|
LogException(message, e);
|
||||||
|
|
|
@ -14,10 +14,10 @@ namespace Microsoft.Plugin.Indexer.DriveDetection
|
||||||
{
|
{
|
||||||
using (RegistryKey regKey = Registry.LocalMachine.OpenSubKey(registryLocation))
|
using (RegistryKey regKey = Registry.LocalMachine.OpenSubKey(registryLocation))
|
||||||
{
|
{
|
||||||
if(regKey != null)
|
if (regKey != null)
|
||||||
{
|
{
|
||||||
Object value = regKey.GetValue(valueName);
|
Object value = regKey.GetValue(valueName);
|
||||||
if(value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
return (int)value;
|
return (int)value;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,7 +69,7 @@ namespace Microsoft.Plugin.Indexer.SearchHelper
|
||||||
resultDisposed = true;
|
resultDisposed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(conn.State == System.Data.ConnectionState.Closed)
|
if (conn.State == System.Data.ConnectionState.Closed)
|
||||||
{
|
{
|
||||||
connDisposed = true;
|
connDisposed = true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace Microsoft.Plugin.Indexer.SearchHelper
|
||||||
List<OleDBResult> oleDBResults = WindowsIndexerSearch.Query(queryHelper.ConnectionString, sqlQuery);
|
List<OleDBResult> oleDBResults = WindowsIndexerSearch.Query(queryHelper.ConnectionString, sqlQuery);
|
||||||
|
|
||||||
// Loop over all records from the database
|
// Loop over all records from the database
|
||||||
foreach(OleDBResult oleDBResult in oleDBResults)
|
foreach (OleDBResult oleDBResult in oleDBResults)
|
||||||
{
|
{
|
||||||
if (oleDBResult.fieldData[0] == DBNull.Value || oleDBResult.fieldData[1] == DBNull.Value || oleDBResult.fieldData[2] == DBNull.Value)
|
if (oleDBResult.fieldData[0] == DBNull.Value || oleDBResult.fieldData[1] == DBNull.Value || oleDBResult.fieldData[2] == DBNull.Value)
|
||||||
{
|
{
|
||||||
|
@ -105,7 +105,8 @@ namespace Microsoft.Plugin.Indexer.SearchHelper
|
||||||
|
|
||||||
public IEnumerable<SearchResult> Search(string keyword, string pattern = "*", int maxCount = 30)
|
public IEnumerable<SearchResult> Search(string keyword, string pattern = "*", int maxCount = 30)
|
||||||
{
|
{
|
||||||
lock(_lock){
|
lock (_lock)
|
||||||
|
{
|
||||||
ISearchQueryHelper queryHelper;
|
ISearchQueryHelper queryHelper;
|
||||||
InitQueryHelper(out queryHelper, maxCount);
|
InitQueryHelper(out queryHelper, maxCount);
|
||||||
ModifyQueryHelper(ref queryHelper, pattern);
|
ModifyQueryHelper(ref queryHelper, pattern);
|
||||||
|
|
|
@ -79,7 +79,7 @@ namespace Microsoft.Plugin.Program.UnitTests.Programs
|
||||||
// Arrange
|
// Arrange
|
||||||
PackageWrapper invalidPackagedApp = new PackageWrapper();
|
PackageWrapper invalidPackagedApp = new PackageWrapper();
|
||||||
Main._settings = new Settings();
|
Main._settings = new Settings();
|
||||||
List<IPackage> packages = new List<IPackage>() {invalidPackagedApp };
|
List<IPackage> packages = new List<IPackage>() { invalidPackagedApp };
|
||||||
var mock = new Mock<IPackageManager>();
|
var mock = new Mock<IPackageManager>();
|
||||||
mock.Setup(x => x.FindPackagesForCurrentUser()).Returns(packages);
|
mock.Setup(x => x.FindPackagesForCurrentUser()).Returns(packages);
|
||||||
UWP.PackageManagerWrapper = mock.Object;
|
UWP.PackageManagerWrapper = mock.Object;
|
||||||
|
|
|
@ -56,7 +56,7 @@ namespace Microsoft.Plugin.Program.UnitTests.Programs
|
||||||
Name = "Command Prompt",
|
Name = "Command Prompt",
|
||||||
ExecutableName = "cmd.exe",
|
ExecutableName = "cmd.exe",
|
||||||
FullPath = "c:\\windows\\system32\\cmd.exe",
|
FullPath = "c:\\windows\\system32\\cmd.exe",
|
||||||
LnkResolvedPath ="c:\\users\\powertoys\\appdata\\roaming\\microsoft\\windows\\start menu\\programs\\system tools\\command prompt.lnk",
|
LnkResolvedPath = "c:\\users\\powertoys\\appdata\\roaming\\microsoft\\windows\\start menu\\programs\\system tools\\command prompt.lnk",
|
||||||
AppType = 2
|
AppType = 2
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ namespace Microsoft.Plugin.Program.UnitTests.Storage
|
||||||
//Arrange
|
//Arrange
|
||||||
ListRepository<string> repository = new ListRepository<string>();
|
ListRepository<string> repository = new ListRepository<string>();
|
||||||
var numItems = 1000;
|
var numItems = 1000;
|
||||||
for(var i=0; i<numItems;++i)
|
for (var i = 0; i < numItems; ++i)
|
||||||
{
|
{
|
||||||
repository.Add($"OriginalItem_{i}");
|
repository.Add($"OriginalItem_{i}");
|
||||||
}
|
}
|
||||||
|
@ -87,13 +87,13 @@ namespace Microsoft.Plugin.Program.UnitTests.Storage
|
||||||
});
|
});
|
||||||
|
|
||||||
//Act - Insert on another thread
|
//Act - Insert on another thread
|
||||||
var addTask = Task.Run(() =>
|
var addTask = Task.Run(() =>
|
||||||
{
|
{
|
||||||
for (var i = 0; i < numItems; ++i)
|
for (var i = 0; i < numItems; ++i)
|
||||||
{
|
{
|
||||||
repository.Add($"NewItem_{i}");
|
repository.Add($"NewItem_{i}");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//Assert that this does not throw. Collections that aren't syncronized will throw an invalidoperatioexception if the list is modified while enumerating
|
//Assert that this does not throw. Collections that aren't syncronized will throw an invalidoperatioexception if the list is modified while enumerating
|
||||||
Assert.DoesNotThrowAsync(async () =>
|
Assert.DoesNotThrowAsync(async () =>
|
||||||
|
|
|
@ -108,7 +108,7 @@ namespace Microsoft.Plugin.Program.UnitTests.Storage
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage<IList<Win32>>("Win32"), _settings, _pathsToWatch);
|
Win32ProgramRepository _win32ProgramRepository = new Win32ProgramRepository(_fileSystemWatchers, new BinaryStorage<IList<Win32>>("Win32"), _settings, _pathsToWatch);
|
||||||
RenamedEventArgs e = new RenamedEventArgs(WatcherChangeTypes.Renamed, directory , newpath, oldpath);
|
RenamedEventArgs e = new RenamedEventArgs(WatcherChangeTypes.Renamed, directory, newpath, oldpath);
|
||||||
|
|
||||||
string oldFullPath = directory + "\\" + oldpath;
|
string oldFullPath = directory + "\\" + oldpath;
|
||||||
string newFullPath = directory + "\\" + newpath;
|
string newFullPath = directory + "\\" + newpath;
|
||||||
|
|
|
@ -74,7 +74,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
public interface IAppxManifestProperties
|
public interface IAppxManifestProperties
|
||||||
{
|
{
|
||||||
[PreserveSig]
|
[PreserveSig]
|
||||||
int GetBoolValue([MarshalAs(UnmanagedType.LPWStr)]string name, out bool value);
|
int GetBoolValue([MarshalAs(UnmanagedType.LPWStr)] string name, out bool value);
|
||||||
[PreserveSig]
|
[PreserveSig]
|
||||||
int GetStringValue([MarshalAs(UnmanagedType.LPWStr)] string name, [MarshalAs(UnmanagedType.LPWStr)] out string value);
|
int GetStringValue([MarshalAs(UnmanagedType.LPWStr)] string name, [MarshalAs(UnmanagedType.LPWStr)] out string value);
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
string path;
|
string path;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
path = package.InstalledLocation.Path;
|
path = package.InstalledLocation.Path;
|
||||||
}
|
}
|
||||||
catch (Exception e) when (e is ArgumentException || e is FileNotFoundException)
|
catch (Exception e) when (e is ArgumentException || e is FileNotFoundException)
|
||||||
{
|
{
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
{
|
{
|
||||||
((IPersistFile)link).Load(path, STGM_READ);
|
((IPersistFile)link).Load(path, STGM_READ);
|
||||||
}
|
}
|
||||||
catch(System.IO.FileNotFoundException ex)
|
catch (System.IO.FileNotFoundException ex)
|
||||||
{
|
{
|
||||||
ProgramLogger.LogException($"|Win32| ShellLinkHelper.retrieveTargetPath | {path} | Path could not be retrieved", ex);
|
ProgramLogger.LogException($"|Win32| ShellLinkHelper.retrieveTargetPath | {path} | Path could not be retrieved", ex);
|
||||||
return String.Empty;
|
return String.Empty;
|
||||||
|
|
|
@ -66,7 +66,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
var apps = new List<Application>();
|
var apps = new List<Application>();
|
||||||
|
|
||||||
List<AppxPackageHelper.IAppxManifestApplication> _apps = _helper.getAppsFromManifest(stream);
|
List<AppxPackageHelper.IAppxManifestApplication> _apps = _helper.getAppsFromManifest(stream);
|
||||||
foreach(var _app in _apps)
|
foreach (var _app in _apps)
|
||||||
{
|
{
|
||||||
var app = new Application(_app, this);
|
var app = new Application(_app, this);
|
||||||
apps.Add(app);
|
apps.Add(app);
|
||||||
|
@ -194,7 +194,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
ProgramLogger.LogException("UWP" ,"CurrentUserPackages", $"id","An unexpected error occurred and "
|
ProgramLogger.LogException("UWP", "CurrentUserPackages", $"id", "An unexpected error occurred and "
|
||||||
+ $"unable to verify if package is valid", e);
|
+ $"unable to verify if package is valid", e);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -242,7 +242,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
public string Name => DisplayName;
|
public string Name => DisplayName;
|
||||||
public string Location => Package.Location;
|
public string Location => Package.Location;
|
||||||
public bool Enabled { get; set; }
|
public bool Enabled { get; set; }
|
||||||
public bool CanRunElevated {get;set;}
|
public bool CanRunElevated { get; set; }
|
||||||
|
|
||||||
public string LogoUri { get; set; }
|
public string LogoUri { get; set; }
|
||||||
public string LogoPath { get; set; }
|
public string LogoPath { get; set; }
|
||||||
|
@ -253,7 +253,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
{
|
{
|
||||||
var displayNameMatch = StringMatcher.FuzzySearch(query, DisplayName);
|
var displayNameMatch = StringMatcher.FuzzySearch(query, DisplayName);
|
||||||
var descriptionMatch = StringMatcher.FuzzySearch(query, Description);
|
var descriptionMatch = StringMatcher.FuzzySearch(query, Description);
|
||||||
var score = new[] { displayNameMatch.Score, descriptionMatch.Score/2 }.Max();
|
var score = new[] { displayNameMatch.Score, descriptionMatch.Score / 2 }.Max();
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,22 +326,22 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
contextMenus.Add(
|
contextMenus.Add(
|
||||||
new ContextMenuResult
|
new ContextMenuResult
|
||||||
{
|
{
|
||||||
PluginName = Assembly.GetExecutingAssembly().GetName().Name,
|
PluginName = Assembly.GetExecutingAssembly().GetName().Name,
|
||||||
Title = api.GetTranslation("wox_plugin_program_open_containing_folder"),
|
Title = api.GetTranslation("wox_plugin_program_open_containing_folder"),
|
||||||
Glyph = "\xE838",
|
Glyph = "\xE838",
|
||||||
FontFamily = "Segoe MDL2 Assets",
|
FontFamily = "Segoe MDL2 Assets",
|
||||||
AcceleratorKey = Key.E,
|
AcceleratorKey = Key.E,
|
||||||
AcceleratorModifiers = (ModifierKeys.Control | ModifierKeys.Shift),
|
AcceleratorModifiers = (ModifierKeys.Control | ModifierKeys.Shift),
|
||||||
Action = _ =>
|
Action = _ =>
|
||||||
{
|
{
|
||||||
Main.StartProcess(Process.Start, new ProcessStartInfo("explorer", Package.Location));
|
Main.StartProcess(Process.Start, new ProcessStartInfo("explorer", Package.Location));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
contextMenus.Add(new ContextMenuResult
|
contextMenus.Add(new ContextMenuResult
|
||||||
{
|
{
|
||||||
|
@ -436,7 +436,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
if (File.Exists(manifest))
|
if (File.Exists(manifest))
|
||||||
{
|
{
|
||||||
var file = File.ReadAllText(manifest);
|
var file = File.ReadAllText(manifest);
|
||||||
if(file.Contains("TrustLevel=\"mediumIL\"", StringComparison.InvariantCultureIgnoreCase))
|
if (file.Contains("TrustLevel=\"mediumIL\"", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -594,7 +594,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int appIconSize = 36;
|
int appIconSize = 36;
|
||||||
var targetSizes = new List<int>{16, 24, 30, 36, 44, 60, 72, 96, 128, 180, 256}.AsParallel();
|
var targetSizes = new List<int> { 16, 24, 30, 36, 44, 60, 72, 96, 128, 180, 256 }.AsParallel();
|
||||||
Dictionary<string, int> pathFactorPairs = new Dictionary<string, int>();
|
Dictionary<string, int> pathFactorPairs = new Dictionary<string, int>();
|
||||||
|
|
||||||
foreach (var factor in targetSizes)
|
foreach (var factor in targetSizes)
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
var nameMatch = StringMatcher.FuzzySearch(query, Name);
|
var nameMatch = StringMatcher.FuzzySearch(query, Name);
|
||||||
var descriptionMatch = StringMatcher.FuzzySearch(query, Description);
|
var descriptionMatch = StringMatcher.FuzzySearch(query, Description);
|
||||||
var executableNameMatch = StringMatcher.FuzzySearch(query, ExecutableName);
|
var executableNameMatch = StringMatcher.FuzzySearch(query, ExecutableName);
|
||||||
var score = new[] { nameMatch.Score, descriptionMatch.Score/2, executableNameMatch.Score }.Max();
|
var score = new[] { nameMatch.Score, descriptionMatch.Score / 2, executableNameMatch.Score }.Max();
|
||||||
return score;
|
return score;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
public bool FilterWebApplication(string query)
|
public bool FilterWebApplication(string query)
|
||||||
{
|
{
|
||||||
// If the app is not a web application, then do not filter it
|
// If the app is not a web application, then do not filter it
|
||||||
if(!IsWebApplication())
|
if (!IsWebApplication())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
pathContainsQuery = true;
|
pathContainsQuery = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Name.Contains(subquery, StringComparison.OrdinalIgnoreCase))
|
if (Name.Contains(subquery, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
nameContainsQuery = true;
|
nameContainsQuery = true;
|
||||||
}
|
}
|
||||||
|
@ -112,19 +112,19 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
// Function to set the subtitle based on the Type of application
|
// Function to set the subtitle based on the Type of application
|
||||||
private string SetSubtitle(IPublicAPI api)
|
private string SetSubtitle(IPublicAPI api)
|
||||||
{
|
{
|
||||||
if(AppType == (uint)ApplicationTypes.WIN32_APPLICATION)
|
if (AppType == (uint)ApplicationTypes.WIN32_APPLICATION)
|
||||||
{
|
{
|
||||||
return api.GetTranslation("powertoys_run_plugin_program_win32_application");
|
return api.GetTranslation("powertoys_run_plugin_program_win32_application");
|
||||||
}
|
}
|
||||||
else if(AppType == (uint)ApplicationTypes.INTERNET_SHORTCUT_APPLICATION)
|
else if (AppType == (uint)ApplicationTypes.INTERNET_SHORTCUT_APPLICATION)
|
||||||
{
|
{
|
||||||
return api.GetTranslation("powertoys_run_plugin_program_internet_shortcut_application");
|
return api.GetTranslation("powertoys_run_plugin_program_internet_shortcut_application");
|
||||||
}
|
}
|
||||||
else if(AppType == (uint)ApplicationTypes.WEB_APPLICATION)
|
else if (AppType == (uint)ApplicationTypes.WEB_APPLICATION)
|
||||||
{
|
{
|
||||||
return api.GetTranslation("powertoys_run_plugin_program_web_application");
|
return api.GetTranslation("powertoys_run_plugin_program_web_application");
|
||||||
}
|
}
|
||||||
else if(AppType == (uint)ApplicationTypes.RUN_COMMAND)
|
else if (AppType == (uint)ApplicationTypes.RUN_COMMAND)
|
||||||
{
|
{
|
||||||
return api.GetTranslation("powertoys_run_plugin_program_run_command");
|
return api.GetTranslation("powertoys_run_plugin_program_run_command");
|
||||||
}
|
}
|
||||||
|
@ -153,7 +153,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!hasArguments)
|
if (!hasArguments)
|
||||||
{
|
{
|
||||||
var noArgumentScoreModifier = 5;
|
var noArgumentScoreModifier = 5;
|
||||||
score += noArgumentScoreModifier;
|
score += noArgumentScoreModifier;
|
||||||
|
@ -168,7 +168,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: This is to display run commands only when there is an exact match, like in start menu
|
// NOTE: This is to display run commands only when there is an exact match, like in start menu
|
||||||
if(!QueryEqualsNameForRunCommands(query))
|
if (!QueryEqualsNameForRunCommands(query))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -330,27 +330,27 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
const string urlPrefix = "URL=";
|
const string urlPrefix = "URL=";
|
||||||
const string iconFilePrefix = "IconFile=";
|
const string iconFilePrefix = "IconFile=";
|
||||||
|
|
||||||
foreach(string line in lines)
|
foreach (string line in lines)
|
||||||
{
|
{
|
||||||
if(line.StartsWith(urlPrefix))
|
if (line.StartsWith(urlPrefix))
|
||||||
{
|
{
|
||||||
urlPath = line.Substring(urlPrefix.Length);
|
urlPath = line.Substring(urlPrefix.Length);
|
||||||
Uri uri = new Uri(urlPath);
|
Uri uri = new Uri(urlPath);
|
||||||
|
|
||||||
// To filter out only those steam shortcuts which have 'run' or 'rungameid' as the hostname
|
// To filter out only those steam shortcuts which have 'run' or 'rungameid' as the hostname
|
||||||
if(InternetShortcutURLPrefixes.Match(urlPath).Success)
|
if (InternetShortcutURLPrefixes.Match(urlPath).Success)
|
||||||
{
|
{
|
||||||
validApp = true;
|
validApp = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(line.StartsWith(iconFilePrefix))
|
if (line.StartsWith(iconFilePrefix))
|
||||||
{
|
{
|
||||||
iconPath = line.Substring(iconFilePrefix.Length);
|
iconPath = line.Substring(iconFilePrefix.Length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!validApp)
|
if (!validApp)
|
||||||
{
|
{
|
||||||
return new Win32() { Valid = false, Enabled = false };
|
return new Win32() { Valid = false, Enabled = false };
|
||||||
}
|
}
|
||||||
|
@ -473,25 +473,25 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
|
|
||||||
string extension = Path.GetExtension(path);
|
string extension = Path.GetExtension(path);
|
||||||
|
|
||||||
if(extension.Equals(exeExtension, StringComparison.OrdinalIgnoreCase))
|
if (extension.Equals(exeExtension, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
app = ExeProgram(path);
|
app = ExeProgram(path);
|
||||||
}
|
}
|
||||||
else if(extension.Equals(lnkExtension, StringComparison.OrdinalIgnoreCase))
|
else if (extension.Equals(lnkExtension, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
app = LnkProgram(path);
|
app = LnkProgram(path);
|
||||||
}
|
}
|
||||||
else if(extension.Equals(apprefExtension, StringComparison.OrdinalIgnoreCase))
|
else if (extension.Equals(apprefExtension, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
app = Win32Program(path);
|
app = Win32Program(path);
|
||||||
}
|
}
|
||||||
else if(extension.Equals(urlExtenion, StringComparison.OrdinalIgnoreCase))
|
else if (extension.Equals(urlExtenion, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
app = InternetShortcutProgram(path);
|
app = InternetShortcutProgram(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if the app is valid, only then return the application, else return null
|
// if the app is valid, only then return the application, else return null
|
||||||
if(app?.Valid ?? false)
|
if (app?.Valid ?? false)
|
||||||
{
|
{
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
|
@ -540,7 +540,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// If the search is set to be non-recursive, then do not enqueue the child directories.
|
// If the search is set to be non-recursive, then do not enqueue the child directories.
|
||||||
if(!recursiveSearch)
|
if (!recursiveSearch)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -606,9 +606,9 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
IEnumerable<String> toFilterAllPaths = new List<String>();
|
IEnumerable<String> toFilterAllPaths = new List<String>();
|
||||||
bool isRecursiveSearch = true;
|
bool isRecursiveSearch = true;
|
||||||
|
|
||||||
foreach(string path in searchPaths)
|
foreach (string path in searchPaths)
|
||||||
{
|
{
|
||||||
if(path.Length > 0)
|
if (path.Length > 0)
|
||||||
{
|
{
|
||||||
// to expand any environment variables present in the path
|
// to expand any environment variables present in the path
|
||||||
string directory = Environment.ExpandEnvironmentVariables(path);
|
string directory = Environment.ExpandEnvironmentVariables(path);
|
||||||
|
@ -629,7 +629,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
var allPrograms = programs1.Concat(programs2).Where(p => p.Valid)
|
var allPrograms = programs1.Concat(programs2).Where(p => p.Valid)
|
||||||
.Concat(programs3).Where(p => p.Valid)
|
.Concat(programs3).Where(p => p.Valid)
|
||||||
.Concat(programs4).Where(p => p.Valid)
|
.Concat(programs4).Where(p => p.Valid)
|
||||||
.Select( p => { p.AppType = (uint)ApplicationTypes.RUN_COMMAND; return p; });
|
.Select(p => { p.AppType = (uint)ApplicationTypes.RUN_COMMAND; return p; });
|
||||||
|
|
||||||
return allPrograms;
|
return allPrograms;
|
||||||
}
|
}
|
||||||
|
@ -665,7 +665,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
{
|
{
|
||||||
var directory1 = Environment.GetFolderPath(Environment.SpecialFolder.Programs);
|
var directory1 = Environment.GetFolderPath(Environment.SpecialFolder.Programs);
|
||||||
var directory2 = Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms);
|
var directory2 = Environment.GetFolderPath(Environment.SpecialFolder.CommonPrograms);
|
||||||
List<string> IndexLocation = new List<string>() { directory1, directory2};
|
List<string> IndexLocation = new List<string>() { directory1, directory2 };
|
||||||
|
|
||||||
return IndexPath(suffixes, IndexLocation);
|
return IndexPath(suffixes, IndexLocation);
|
||||||
}
|
}
|
||||||
|
@ -778,7 +778,7 @@ namespace Microsoft.Plugin.Program.Programs
|
||||||
public bool Equals(Win32 app1, Win32 app2)
|
public bool Equals(Win32 app1, Win32 app2)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(!string.IsNullOrEmpty(app1.Name) && !string.IsNullOrEmpty(app2.Name)
|
if (!string.IsNullOrEmpty(app1.Name) && !string.IsNullOrEmpty(app2.Name)
|
||||||
&& !string.IsNullOrEmpty(app1.ExecutableName) && !string.IsNullOrEmpty(app2.ExecutableName)
|
&& !string.IsNullOrEmpty(app1.ExecutableName) && !string.IsNullOrEmpty(app2.ExecutableName)
|
||||||
&& !string.IsNullOrEmpty(app1.FullPath) && !string.IsNullOrEmpty(app2.FullPath))
|
&& !string.IsNullOrEmpty(app1.FullPath) && !string.IsNullOrEmpty(app2.FullPath))
|
||||||
{
|
{
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace Microsoft.Plugin.Program
|
||||||
public DateTime LastIndexTime { get; set; }
|
public DateTime LastIndexTime { get; set; }
|
||||||
public List<ProgramSource> ProgramSources { get; set; } = new List<ProgramSource>();
|
public List<ProgramSource> ProgramSources { get; set; } = new List<ProgramSource>();
|
||||||
public List<DisabledProgramSource> DisabledProgramSources { get; set; } = new List<DisabledProgramSource>();
|
public List<DisabledProgramSource> DisabledProgramSources { get; set; } = new List<DisabledProgramSource>();
|
||||||
public string[] ProgramSuffixes { get; set; } = {"bat", "appref-ms", "exe", "lnk", "url"};
|
public string[] ProgramSuffixes { get; set; } = { "bat", "appref-ms", "exe", "lnk", "url" };
|
||||||
|
|
||||||
public bool EnableStartMenuSource { get; set; } = true;
|
public bool EnableStartMenuSource { get; set; } = true;
|
||||||
|
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var packageWrapper = PackageWrapper.GetWrapperFromPackage(args.Package);
|
var packageWrapper = PackageWrapper.GetWrapperFromPackage(args.Package);
|
||||||
if(!string.IsNullOrEmpty(packageWrapper.InstalledLocation))
|
if (!string.IsNullOrEmpty(packageWrapper.InstalledLocation))
|
||||||
{
|
{
|
||||||
var uwp = new UWP(packageWrapper);
|
var uwp = new UWP(packageWrapper);
|
||||||
uwp.InitializeAppInfo(packageWrapper.InstalledLocation);
|
uwp.InitializeAppInfo(packageWrapper.InstalledLocation);
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
{
|
{
|
||||||
if (disposing)
|
if (disposing)
|
||||||
{
|
{
|
||||||
for(int index = 0; index < _pathsToWatch.Length; index++)
|
for (int index = 0; index < _pathsToWatch.Length; index++)
|
||||||
{
|
{
|
||||||
_fileSystemWatchers[index].Dispose();
|
_fileSystemWatchers[index].Dispose();
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
private IList<IFileSystemWatcherWrapper> _fileSystemWatcherHelpers;
|
private IList<IFileSystemWatcherWrapper> _fileSystemWatcherHelpers;
|
||||||
private string[] _pathsToWatch;
|
private string[] _pathsToWatch;
|
||||||
private int _numberOfPathsToWatch;
|
private int _numberOfPathsToWatch;
|
||||||
private Collection<string> extensionsToWatch = new Collection<string>{ "*.exe", "*.lnk", "*.appref-ms", "*.url" };
|
private Collection<string> extensionsToWatch = new Collection<string> { "*.exe", "*.lnk", "*.appref-ms", "*.url" };
|
||||||
private readonly string lnkExtension = ".lnk";
|
private readonly string lnkExtension = ".lnk";
|
||||||
private readonly string urlExtension = ".url";
|
private readonly string urlExtension = ".url";
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
|
|
||||||
private void InitializeFileSystemWatchers()
|
private void InitializeFileSystemWatchers()
|
||||||
{
|
{
|
||||||
for(int index = 0; index < _numberOfPathsToWatch; index++)
|
for (int index = 0; index < _numberOfPathsToWatch; index++)
|
||||||
{
|
{
|
||||||
// To set the paths to monitor
|
// To set the paths to monitor
|
||||||
_fileSystemWatcherHelpers[index].Path = _pathsToWatch[index];
|
_fileSystemWatcherHelpers[index].Path = _pathsToWatch[index];
|
||||||
|
@ -77,7 +77,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
{
|
{
|
||||||
oldApp = new Win32() { Name = Path.GetFileNameWithoutExtension(e.OldName), ExecutableName = newApp.ExecutableName, FullPath = newApp.FullPath };
|
oldApp = new Win32() { Name = Path.GetFileNameWithoutExtension(e.OldName), ExecutableName = newApp.ExecutableName, FullPath = newApp.FullPath };
|
||||||
}
|
}
|
||||||
else if(extension.Equals(urlExtension, StringComparison.OrdinalIgnoreCase))
|
else if (extension.Equals(urlExtension, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
oldApp = new Win32() { Name = Path.GetFileNameWithoutExtension(e.OldName), ExecutableName = Path.GetFileName(e.OldName), FullPath = newApp.FullPath };
|
oldApp = new Win32() { Name = Path.GetFileNameWithoutExtension(e.OldName), ExecutableName = Path.GetFileName(e.OldName), FullPath = newApp.FullPath };
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
app = Programs.Win32.GetAppFromPath(path);
|
app = Programs.Win32.GetAppFromPath(path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Log.Info($"|Win32ProgramRepository|OnAppDeleted-{extension}Program|{path}|Unable to create program from {path}| {ex.Message}");
|
Log.Info($"|Win32ProgramRepository|OnAppDeleted-{extension}Program|{path}|Unable to create program from {path}| {ex.Message}");
|
||||||
}
|
}
|
||||||
|
@ -154,7 +154,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
// Unlike the rename event args, since we do not have a newPath, we iterate through all the programs and find the one with the same LnkResolved path.
|
// Unlike the rename event args, since we do not have a newPath, we iterate through all the programs and find the one with the same LnkResolved path.
|
||||||
private Programs.Win32 GetAppWithSameLnkResolvedPath(string lnkResolvedPath)
|
private Programs.Win32 GetAppWithSameLnkResolvedPath(string lnkResolvedPath)
|
||||||
{
|
{
|
||||||
foreach(Programs.Win32 app in Items)
|
foreach (Programs.Win32 app in Items)
|
||||||
{
|
{
|
||||||
if (lnkResolvedPath.ToLower().Equals(app.LnkResolvedPath))
|
if (lnkResolvedPath.ToLower().Equals(app.LnkResolvedPath))
|
||||||
{
|
{
|
||||||
|
@ -167,7 +167,7 @@ namespace Microsoft.Plugin.Program.Storage
|
||||||
private void OnAppCreated(object sender, FileSystemEventArgs e)
|
private void OnAppCreated(object sender, FileSystemEventArgs e)
|
||||||
{
|
{
|
||||||
string path = e.FullPath;
|
string path = e.FullPath;
|
||||||
if(!Path.GetExtension(path).Equals(urlExtension))
|
if (!Path.GetExtension(path).Equals(urlExtension))
|
||||||
{
|
{
|
||||||
Programs.Win32 app = Programs.Win32.GetAppFromPath(path);
|
Programs.Win32 app = Programs.Win32.GetAppFromPath(path);
|
||||||
if (app != null)
|
if (app != null)
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace Microsoft.Plugin.Program.Views
|
||||||
private void btnAddProgramSource_OnClick(object sender, RoutedEventArgs e)
|
private void btnAddProgramSource_OnClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
var add = new AddProgramSource(context, _settings);
|
var add = new AddProgramSource(context, _settings);
|
||||||
if(add.ShowDialog() ?? false)
|
if (add.ShowDialog() ?? false)
|
||||||
{
|
{
|
||||||
ReIndexing();
|
ReIndexing();
|
||||||
}
|
}
|
||||||
|
|
|
@ -198,7 +198,7 @@ namespace Microsoft.Plugin.Shell
|
||||||
else if (_settings.Shell == Shell.RunCommand)
|
else if (_settings.Shell == Shell.RunCommand)
|
||||||
{
|
{
|
||||||
//Open explorer if the path is a file or directory
|
//Open explorer if the path is a file or directory
|
||||||
if(Directory.Exists(command) || File.Exists(command))
|
if (Directory.Exists(command) || File.Exists(command))
|
||||||
{
|
{
|
||||||
info = ShellCommand.SetProcessStartInfo("explorer.exe", arguments: command, verb: runAsAdministratorArg);
|
info = ShellCommand.SetProcessStartInfo("explorer.exe", arguments: command, verb: runAsAdministratorArg);
|
||||||
}
|
}
|
||||||
|
@ -236,7 +236,7 @@ namespace Microsoft.Plugin.Shell
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Execute(Func<ProcessStartInfo, Process> startProcess,ProcessStartInfo info)
|
private void Execute(Func<ProcessStartInfo, Process> startProcess, ProcessStartInfo info)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -248,7 +248,7 @@ namespace Microsoft.Plugin.Shell
|
||||||
var message = $"Command not found: {e.Message}";
|
var message = $"Command not found: {e.Message}";
|
||||||
_context.API.ShowMsg(name, message);
|
_context.API.ShowMsg(name, message);
|
||||||
}
|
}
|
||||||
catch(Win32Exception e)
|
catch (Win32Exception e)
|
||||||
{
|
{
|
||||||
var name = "Plugin: Shell";
|
var name = "Plugin: Shell";
|
||||||
var message = $"Error running the command: {e.Message}";
|
var message = $"Error running the command: {e.Message}";
|
||||||
|
|
|
@ -49,10 +49,10 @@ namespace Microsoft.Plugin.Shell
|
||||||
_settings.ReplaceWinR = false;
|
_settings.ReplaceWinR = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
ShellComboBox.SelectedIndex = (int) _settings.Shell;
|
ShellComboBox.SelectedIndex = (int)_settings.Shell;
|
||||||
ShellComboBox.SelectionChanged += (o, e) =>
|
ShellComboBox.SelectionChanged += (o, e) =>
|
||||||
{
|
{
|
||||||
_settings.Shell = (Shell) ShellComboBox.SelectedIndex;
|
_settings.Shell = (Shell)ShellComboBox.SelectedIndex;
|
||||||
LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand;
|
LeaveShellOpen.IsEnabled = _settings.Shell != Shell.RunCommand;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -815,7 +815,7 @@ namespace Microsoft.Plugin.WindowWalker.Components
|
||||||
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
|
public static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId);
|
||||||
|
|
||||||
[DllImport("psapi.dll")]
|
[DllImport("psapi.dll")]
|
||||||
public static extern uint GetProcessImageFileName(IntPtr hProcess, [Out] StringBuilder lpImageFileName, [In] [MarshalAs(UnmanagedType.U4)] int nSize);
|
public static extern uint GetProcessImageFileName(IntPtr hProcess, [Out] StringBuilder lpImageFileName, [In][MarshalAs(UnmanagedType.U4)] int nSize);
|
||||||
|
|
||||||
[DllImport("user32.dll", SetLastError = true)]
|
[DllImport("user32.dll", SetLastError = true)]
|
||||||
public static extern IntPtr GetProp(IntPtr hWnd, string lpString);
|
public static extern IntPtr GetProp(IntPtr hWnd, string lpString);
|
||||||
|
@ -824,7 +824,7 @@ namespace Microsoft.Plugin.WindowWalker.Components
|
||||||
public static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwProcessId);
|
public static extern IntPtr OpenProcess(ProcessAccessFlags dwDesiredAccess, [MarshalAs(UnmanagedType.Bool)] bool bInheritHandle, int dwProcessId);
|
||||||
|
|
||||||
[DllImport("dwmapi.dll", EntryPoint = "#113", CallingConvention = CallingConvention.StdCall)]
|
[DllImport("dwmapi.dll", EntryPoint = "#113", CallingConvention = CallingConvention.StdCall)]
|
||||||
public static extern int DwmpActivateLivePreview([MarshalAs(UnmanagedType.Bool)]bool fActivate, IntPtr hWndExclude, IntPtr hWndInsertBefore, LivePreviewTrigger lpt, IntPtr prcFinalRect);
|
public static extern int DwmpActivateLivePreview([MarshalAs(UnmanagedType.Bool)] bool fActivate, IntPtr hWndExclude, IntPtr hWndInsertBefore, LivePreviewTrigger lpt, IntPtr prcFinalRect);
|
||||||
|
|
||||||
[DllImport("dwmapi.dll", PreserveSig = false)]
|
[DllImport("dwmapi.dll", PreserveSig = false)]
|
||||||
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);
|
public static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, ref int attrValue, int attrSize);
|
||||||
|
|
|
@ -91,7 +91,7 @@ namespace Microsoft.Plugin.WindowWalker.Components
|
||||||
Window newWindow = new Window(hwnd);
|
Window newWindow = new Window(hwnd);
|
||||||
|
|
||||||
if (newWindow.IsWindow && newWindow.Visible && newWindow.IsOwner &&
|
if (newWindow.IsWindow && newWindow.Visible && newWindow.IsOwner &&
|
||||||
(!newWindow.IsToolWindow || newWindow.IsAppWindow ) && !newWindow.TaskListDeleted &&
|
(!newWindow.IsToolWindow || newWindow.IsAppWindow) && !newWindow.TaskListDeleted &&
|
||||||
newWindow.ClassName != "Windows.UI.Core.CoreWindow")
|
newWindow.ClassName != "Windows.UI.Core.CoreWindow")
|
||||||
{
|
{
|
||||||
windows.Add(newWindow);
|
windows.Add(newWindow);
|
||||||
|
|
|
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Microsoft.Plugin.WindowWalker.Components
|
namespace Microsoft.Plugin.WindowWalker.Components
|
||||||
{
|
{
|
||||||
class WindowResult:Window
|
class WindowResult : Window
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Number of letters in between constant for when
|
/// Number of letters in between constant for when
|
||||||
|
@ -27,7 +27,7 @@ namespace Microsoft.Plugin.WindowWalker.Components
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor for WindowResult
|
/// Constructor for WindowResult
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public WindowResult(Window window):base(window.Hwnd)
|
public WindowResult(Window window) : base(window.Hwnd)
|
||||||
{
|
{
|
||||||
LettersInBetweenScore = WindowResult.NoResult;
|
LettersInBetweenScore = WindowResult.NoResult;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,8 @@ namespace PowerLauncher
|
||||||
|
|
||||||
private void OnStartup(object sender, StartupEventArgs e)
|
private void OnStartup(object sender, StartupEventArgs e)
|
||||||
{
|
{
|
||||||
RunnerHelper.WaitForPowerToysRunner(_powerToysPid, () => {
|
RunnerHelper.WaitForPowerToysRunner(_powerToysPid, () =>
|
||||||
|
{
|
||||||
Dispose();
|
Dispose();
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
});
|
});
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace PowerLauncher.Helper
|
||||||
{
|
{
|
||||||
private static void Report(Exception e)
|
private static void Report(Exception e)
|
||||||
{
|
{
|
||||||
if( e != null)
|
if (e != null)
|
||||||
{
|
{
|
||||||
var logger = LogManager.GetLogger("UnHandledException");
|
var logger = LogManager.GetLogger("UnHandledException");
|
||||||
logger.Fatal(ExceptionFormatter.FormatException(e));
|
logger.Fatal(ExceptionFormatter.FormatException(e));
|
||||||
|
|
|
@ -27,7 +27,7 @@ namespace PowerLauncher.Helper
|
||||||
/// <param name="newItems"></param>
|
/// <param name="newItems"></param>
|
||||||
public void Update(List<ResultViewModel> newItems)
|
public void Update(List<ResultViewModel> newItems)
|
||||||
{
|
{
|
||||||
if(newItems == null)
|
if (newItems == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(newItems));
|
throw new ArgumentNullException(nameof(newItems));
|
||||||
}
|
}
|
||||||
|
|
|
@ -212,7 +212,7 @@ namespace PowerLauncher.Helper
|
||||||
|
|
||||||
public interface ISingleInstanceApp
|
public interface ISingleInstanceApp
|
||||||
{
|
{
|
||||||
void OnSecondAppStarted();
|
void OnSecondAppStarted();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -227,7 +227,7 @@ namespace PowerLauncher.Helper
|
||||||
/// For most apps, this will not be much of an issue.
|
/// For most apps, this will not be much of an issue.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
public static class SingleInstance<TApplication>
|
public static class SingleInstance<TApplication>
|
||||||
where TApplication: Application , ISingleInstanceApp
|
where TApplication : Application, ISingleInstanceApp
|
||||||
|
|
||||||
{
|
{
|
||||||
#region Private Fields
|
#region Private Fields
|
||||||
|
@ -260,7 +260,7 @@ namespace PowerLauncher.Helper
|
||||||
/// If not, activates the first instance.
|
/// If not, activates the first instance.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>True if this is the first instance of the application.</returns>
|
/// <returns>True if this is the first instance of the application.</returns>
|
||||||
internal static bool InitializeAsFirstInstance( string uniqueName )
|
internal static bool InitializeAsFirstInstance(string uniqueName)
|
||||||
{
|
{
|
||||||
// Build unique application Id and the IPC channel name.
|
// Build unique application Id and the IPC channel name.
|
||||||
string applicationIdentifier = uniqueName + Environment.UserName;
|
string applicationIdentifier = uniqueName + Environment.UserName;
|
||||||
|
@ -298,7 +298,7 @@ namespace PowerLauncher.Helper
|
||||||
/// Gets command line args - for ClickOnce deployed applications, command line args may not be passed directly, they have to be retrieved.
|
/// Gets command line args - for ClickOnce deployed applications, command line args may not be passed directly, they have to be retrieved.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>List of command line arg strings.</returns>
|
/// <returns>List of command line arg strings.</returns>
|
||||||
private static IList<string> GetCommandLineArgs( string uniqueApplicationName )
|
private static IList<string> GetCommandLineArgs(string uniqueApplicationName)
|
||||||
{
|
{
|
||||||
string[] args = null;
|
string[] args = null;
|
||||||
|
|
||||||
|
@ -353,7 +353,7 @@ namespace PowerLauncher.Helper
|
||||||
{
|
{
|
||||||
using (NamedPipeServerStream pipeServer = new NamedPipeServerStream(channelName, PipeDirection.In))
|
using (NamedPipeServerStream pipeServer = new NamedPipeServerStream(channelName, PipeDirection.In))
|
||||||
{
|
{
|
||||||
while(true)
|
while (true)
|
||||||
{
|
{
|
||||||
// Wait for connection to the pipe
|
// Wait for connection to the pipe
|
||||||
await pipeServer.WaitForConnectionAsync().ConfigureAwait(false);
|
await pipeServer.WaitForConnectionAsync().ConfigureAwait(false);
|
||||||
|
|
|
@ -110,7 +110,7 @@ namespace PowerLauncher
|
||||||
|
|
||||||
private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
private void ViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if(e.PropertyName == nameof(MainViewModel.MainWindowVisibility))
|
if (e.PropertyName == nameof(MainViewModel.MainWindowVisibility))
|
||||||
{
|
{
|
||||||
if (Visibility == System.Windows.Visibility.Visible)
|
if (Visibility == System.Windows.Visibility.Visible)
|
||||||
{
|
{
|
||||||
|
@ -153,15 +153,15 @@ namespace PowerLauncher
|
||||||
|
|
||||||
private void OnActivated(object sender, EventArgs e)
|
private void OnActivated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (_settings.ClearInputOnLaunch)
|
if (_settings.ClearInputOnLaunch)
|
||||||
{
|
{
|
||||||
_viewModel.ClearQueryCommand.Execute(null);
|
_viewModel.ClearQueryCommand.Execute(null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDeactivated(object sender, EventArgs e)
|
private void OnDeactivated(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (_settings.HideWhenDeactivated)
|
if (_settings.HideWhenDeactivated)
|
||||||
{
|
{
|
||||||
//(this.FindResource("OutroStoryboard") as Storyboard).Begin();
|
//(this.FindResource("OutroStoryboard") as Storyboard).Begin();
|
||||||
Hide();
|
Hide();
|
||||||
|
@ -290,7 +290,7 @@ namespace PowerLauncher
|
||||||
private void SuggestionsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
private void SuggestionsList_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||||
{
|
{
|
||||||
ListView listview = (ListView)sender;
|
ListView listview = (ListView)sender;
|
||||||
_viewModel.Results.SelectedItem = (ResultViewModel) listview.SelectedItem;
|
_viewModel.Results.SelectedItem = (ResultViewModel)listview.SelectedItem;
|
||||||
if (e.AddedItems.Count > 0 && e.AddedItems[0] != null)
|
if (e.AddedItems.Count > 0 && e.AddedItems[0] != null)
|
||||||
{
|
{
|
||||||
listview.ScrollIntoView(e.AddedItems[0]);
|
listview.ScrollIntoView(e.AddedItems[0]);
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
namespace PowerLauncher.Properties {
|
namespace PowerLauncher.Properties
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
// This class allows you to handle specific events on the settings class:
|
// This class allows you to handle specific events on the settings class:
|
||||||
|
@ -6,9 +7,11 @@
|
||||||
// The PropertyChanged event is raised after a setting's value is changed.
|
// The PropertyChanged event is raised after a setting's value is changed.
|
||||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
// The SettingsLoaded event is raised after the setting values are loaded.
|
||||||
// The SettingsSaving event is raised before the setting values are saved.
|
// The SettingsSaving event is raised before the setting values are saved.
|
||||||
internal sealed partial class Settings {
|
internal sealed partial class Settings
|
||||||
|
{
|
||||||
|
|
||||||
public Settings() {
|
public Settings()
|
||||||
|
{
|
||||||
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
||||||
//
|
//
|
||||||
// this.SettingChanging += this.SettingChangingEventHandler;
|
// this.SettingChanging += this.SettingChangingEventHandler;
|
||||||
|
@ -17,11 +20,13 @@
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e)
|
||||||
|
{
|
||||||
// Add code to handle the SettingChangingEvent event here.
|
// Add code to handle the SettingChangingEvent event here.
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e)
|
||||||
|
{
|
||||||
// Add code to handle the SettingsSaving event here.
|
// Add code to handle the SettingsSaving event here.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ namespace PowerLauncher
|
||||||
{
|
{
|
||||||
_settings = settings;
|
_settings = settings;
|
||||||
// Set up watcher
|
// Set up watcher
|
||||||
_watcher = Microsoft.PowerToys.Settings.UI.Lib.Utilities.Helper.GetFileWatcher(PowerLauncherSettings.ModuleName, "settings.json", OverloadSettings);
|
_watcher = Microsoft.PowerToys.Settings.UI.Lib.Utilities.Helper.GetFileWatcher(PowerLauncherSettings.ModuleName, "settings.json", OverloadSettings);
|
||||||
|
|
||||||
// Load initial settings file
|
// Load initial settings file
|
||||||
OverloadSettings();
|
OverloadSettings();
|
||||||
|
@ -75,7 +75,7 @@ namespace PowerLauncher
|
||||||
|
|
||||||
if (_settings.ClearInputOnLaunch != overloadSettings.Properties.clear_input_on_launch)
|
if (_settings.ClearInputOnLaunch != overloadSettings.Properties.clear_input_on_launch)
|
||||||
{
|
{
|
||||||
_settings.ClearInputOnLaunch = overloadSettings.Properties.clear_input_on_launch;
|
_settings.ClearInputOnLaunch = overloadSettings.Properties.clear_input_on_launch;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// the settings application can hold a lock on the settings.json file which will result in a IOException.
|
// the settings application can hold a lock on the settings.json file which will result in a IOException.
|
||||||
|
|
|
@ -15,7 +15,8 @@ namespace PowerLauncher.ViewModel
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
public string Glyph { get; set; }
|
public string Glyph { get; set; }
|
||||||
public string FontFamily { get; set; }
|
public string FontFamily { get; set; }
|
||||||
public ICommand Command {
|
public ICommand Command
|
||||||
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return this._command;
|
return this._command;
|
||||||
|
|
|
@ -117,7 +117,7 @@ namespace PowerLauncher.ViewModel
|
||||||
|
|
||||||
private void InitializeKeyCommands()
|
private void InitializeKeyCommands()
|
||||||
{
|
{
|
||||||
IgnoreCommand = new RelayCommand(_ => {});
|
IgnoreCommand = new RelayCommand(_ => { });
|
||||||
|
|
||||||
EscCommand = new RelayCommand(_ =>
|
EscCommand = new RelayCommand(_ =>
|
||||||
{
|
{
|
||||||
|
@ -187,7 +187,7 @@ namespace PowerLauncher.ViewModel
|
||||||
results.SelectedIndex = int.Parse(index.ToString(), CultureInfo.InvariantCulture);
|
results.SelectedIndex = int.Parse(index.ToString(), CultureInfo.InvariantCulture);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(results.SelectedItem != null)
|
if (results.SelectedItem != null)
|
||||||
{
|
{
|
||||||
//If there is a context button selected fire the action for that button before the main command.
|
//If there is a context button selected fire the action for that button before the main command.
|
||||||
bool didExecuteContextButton = results.SelectedItem.ExecuteSelectedContextButton();
|
bool didExecuteContextButton = results.SelectedItem.ExecuteSelectedContextButton();
|
||||||
|
@ -248,12 +248,12 @@ namespace PowerLauncher.ViewModel
|
||||||
|
|
||||||
ClearQueryCommand = new RelayCommand(_ =>
|
ClearQueryCommand = new RelayCommand(_ =>
|
||||||
{
|
{
|
||||||
if(!string.IsNullOrEmpty(QueryText))
|
if (!string.IsNullOrEmpty(QueryText))
|
||||||
{
|
{
|
||||||
ChangeQueryText(string.Empty,true);
|
ChangeQueryText(string.Empty, true);
|
||||||
//Push Event to UI SystemQuery has changed
|
//Push Event to UI SystemQuery has changed
|
||||||
OnPropertyChanged(nameof(SystemQueryText));
|
OnPropertyChanged(nameof(SystemQueryText));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -280,11 +280,11 @@ namespace PowerLauncher.ViewModel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="queryText"></param>
|
/// <param name="queryText"></param>
|
||||||
/// <param name="requery">Optional Parameter that if true, will automatically execute a query against the updated text</param>
|
/// <param name="requery">Optional Parameter that if true, will automatically execute a query against the updated text</param>
|
||||||
public void ChangeQueryText(string queryText, bool requery=false)
|
public void ChangeQueryText(string queryText, bool requery = false)
|
||||||
{
|
{
|
||||||
SystemQueryText = queryText;
|
SystemQueryText = queryText;
|
||||||
|
|
||||||
if(requery)
|
if (requery)
|
||||||
{
|
{
|
||||||
QueryText = queryText;
|
QueryText = queryText;
|
||||||
Query();
|
Query();
|
||||||
|
@ -332,11 +332,13 @@ namespace PowerLauncher.ViewModel
|
||||||
|
|
||||||
private Visibility _visibility;
|
private Visibility _visibility;
|
||||||
|
|
||||||
public Visibility MainWindowVisibility {
|
public Visibility MainWindowVisibility
|
||||||
|
{
|
||||||
get { return _visibility; }
|
get { return _visibility; }
|
||||||
set {
|
set
|
||||||
|
{
|
||||||
_visibility = value;
|
_visibility = value;
|
||||||
if(value == Visibility.Visible)
|
if (value == Visibility.Visible)
|
||||||
{
|
{
|
||||||
PowerToysTelemetry.Log.WriteEvent(new LauncherShowEvent());
|
PowerToysTelemetry.Log.WriteEvent(new LauncherShowEvent());
|
||||||
}
|
}
|
||||||
|
@ -569,7 +571,7 @@ namespace PowerLauncher.ViewModel
|
||||||
hotkey.Shift = hotkeyModel.Shift;
|
hotkey.Shift = hotkeyModel.Shift;
|
||||||
hotkey.Ctrl = hotkeyModel.Ctrl;
|
hotkey.Ctrl = hotkeyModel.Ctrl;
|
||||||
hotkey.Win = hotkeyModel.Win;
|
hotkey.Win = hotkeyModel.Win;
|
||||||
hotkey.Key = (byte) KeyInterop.VirtualKeyFromKey(hotkeyModel.CharKey);
|
hotkey.Key = (byte)KeyInterop.VirtualKeyFromKey(hotkeyModel.CharKey);
|
||||||
|
|
||||||
_hotkeyHandle = _hotkeyManager.RegisterHotkey(hotkey, action);
|
_hotkeyHandle = _hotkeyManager.RegisterHotkey(hotkey, action);
|
||||||
}
|
}
|
||||||
|
@ -672,7 +674,7 @@ namespace PowerLauncher.ViewModel
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void UpdateResultView(List<Result> list, PluginMetadata metadata, Query originQuery)
|
public void UpdateResultView(List<Result> list, PluginMetadata metadata, Query originQuery)
|
||||||
{
|
{
|
||||||
if(list == null)
|
if (list == null)
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(list));
|
throw new ArgumentNullException(nameof(list));
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,7 +165,7 @@ namespace PowerLauncher.ViewModel
|
||||||
public void SelectNextTabItem()
|
public void SelectNextTabItem()
|
||||||
{
|
{
|
||||||
//Do nothing if there is no selected item or we've selected the next context button
|
//Do nothing if there is no selected item or we've selected the next context button
|
||||||
if(!SelectedItem?.SelectNextContextButton() ?? true)
|
if (!SelectedItem?.SelectNextContextButton() ?? true)
|
||||||
{
|
{
|
||||||
SelectNextResult();
|
SelectNextResult();
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,8 +40,10 @@ namespace Wox.Core.Plugin
|
||||||
return Execute(_startInfo);
|
return Execute(_startInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string ExecuteContextMenu(Result selectedResult) {
|
protected override string ExecuteContextMenu(Result selectedResult)
|
||||||
JsonRPCServerRequestModel request = new JsonRPCServerRequestModel {
|
{
|
||||||
|
JsonRPCServerRequestModel request = new JsonRPCServerRequestModel
|
||||||
|
{
|
||||||
Method = "contextmenu",
|
Method = "contextmenu",
|
||||||
Parameters = new object[] { selectedResult.ContextData },
|
Parameters = new object[] { selectedResult.ContextData },
|
||||||
};
|
};
|
||||||
|
|
|
@ -71,7 +71,8 @@ namespace Wox.Core.Plugin
|
||||||
|
|
||||||
private string GetParameterByType(object parameter)
|
private string GetParameterByType(object parameter)
|
||||||
{
|
{
|
||||||
if (parameter == null) {
|
if (parameter == null)
|
||||||
|
{
|
||||||
return "null";
|
return "null";
|
||||||
}
|
}
|
||||||
if (parameter is string)
|
if (parameter is string)
|
||||||
|
|
|
@ -53,7 +53,7 @@ namespace Wox.Core.Plugin
|
||||||
|
|
||||||
public static void ReloadData()
|
public static void ReloadData()
|
||||||
{
|
{
|
||||||
foreach(var plugin in AllPlugins)
|
foreach (var plugin in AllPlugins)
|
||||||
{
|
{
|
||||||
var reloadablePlugin = plugin.Plugin as IReloadable;
|
var reloadablePlugin = plugin.Plugin as IReloadable;
|
||||||
reloadablePlugin?.ReloadData();
|
reloadablePlugin?.ReloadData();
|
||||||
|
@ -272,7 +272,7 @@ namespace Wox.Core.Plugin
|
||||||
GlobalPlugins.Remove(plugin);
|
GlobalPlugins.Remove(plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(oldActionkeyword != Query.GlobalPluginWildcardSign)
|
if (oldActionkeyword != Query.GlobalPluginWildcardSign)
|
||||||
NonGlobalPlugins.Remove(oldActionkeyword);
|
NonGlobalPlugins.Remove(oldActionkeyword);
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -14,9 +14,10 @@ namespace Wox.Core.Resource
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
return (FontWeight) fontWeightConverter.ConvertFromInvariantString(value);
|
return (FontWeight)fontWeightConverter.ConvertFromInvariantString(value);
|
||||||
}
|
}
|
||||||
catch {
|
catch
|
||||||
|
{
|
||||||
return FontWeights.Normal;
|
return FontWeights.Normal;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,7 +63,7 @@ namespace Wox.Infrastructure
|
||||||
|
|
||||||
var combination = PinyinCombination(source);
|
var combination = PinyinCombination(source);
|
||||||
|
|
||||||
var pinyinArray=combination.Select(x => string.Join("", x));
|
var pinyinArray = combination.Select(x => string.Join("", x));
|
||||||
var acronymArray = combination.Select(Acronym).Distinct();
|
var acronymArray = combination.Select(Acronym).Distinct();
|
||||||
|
|
||||||
var joinedSingleStringCombination = new StringBuilder();
|
var joinedSingleStringCombination = new StringBuilder();
|
||||||
|
|
|
@ -94,7 +94,7 @@ namespace Wox.Infrastructure.Exception
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sb.Append(ass.Location);
|
sb.Append(ass.Location);
|
||||||
|
|
||||||
}
|
}
|
||||||
sb.AppendLine(")");
|
sb.AppendLine(")");
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace Wox.Infrastructure.FileSystemHelper
|
||||||
public FileVersionInfoWrapper() { }
|
public FileVersionInfoWrapper() { }
|
||||||
public FileVersionInfo GetVersionInfo(string path)
|
public FileVersionInfo GetVersionInfo(string path)
|
||||||
{
|
{
|
||||||
if(File.Exists(path))
|
if (File.Exists(path))
|
||||||
{
|
{
|
||||||
return FileVersionInfo.GetVersionInfo(path);
|
return FileVersionInfo.GetVersionInfo(path);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,7 +92,7 @@ namespace Wox.Infrastructure
|
||||||
{
|
{
|
||||||
Process.Start(info);
|
Process.Start(info);
|
||||||
}
|
}
|
||||||
catch(System.Exception ex)
|
catch (System.Exception ex)
|
||||||
{
|
{
|
||||||
Log.Exception($"Wox.Infrastructure.Helper| Unable to Run {path} as admin : {ex.Message}", ex);
|
Log.Exception($"Wox.Infrastructure.Helper| Unable to Run {path} as admin : {ex.Message}", ex);
|
||||||
}
|
}
|
||||||
|
|
|
@ -103,7 +103,7 @@ namespace Wox.Infrastructure.Hotkey
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
CharKey = (Key) Enum.Parse(typeof (Key), charKey);
|
CharKey = (Key)Enum.Parse(typeof(Key), charKey);
|
||||||
}
|
}
|
||||||
catch (ArgumentException)
|
catch (ArgumentException)
|
||||||
{
|
{
|
||||||
|
|
|
@ -207,7 +207,7 @@ namespace Wox.Infrastructure.Image
|
||||||
int ImageCacheValue;
|
int ImageCacheValue;
|
||||||
if (GuidToKey.TryGetValue(hash, out string key))
|
if (GuidToKey.TryGetValue(hash, out string key))
|
||||||
{ // image already exists
|
{ // image already exists
|
||||||
if(ImageCache.Usage.TryGetValue(path, out ImageCacheValue))
|
if (ImageCache.Usage.TryGetValue(path, out ImageCacheValue))
|
||||||
{
|
{
|
||||||
img = ImageCache[key];
|
img = ImageCache[key];
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,8 @@ namespace Wox.Infrastructure.Image
|
||||||
internal interface IShellItem
|
internal interface IShellItem
|
||||||
{
|
{
|
||||||
void BindToHandler(IntPtr pbc,
|
void BindToHandler(IntPtr pbc,
|
||||||
[MarshalAs(UnmanagedType.LPStruct)]Guid bhid,
|
[MarshalAs(UnmanagedType.LPStruct)] Guid bhid,
|
||||||
[MarshalAs(UnmanagedType.LPStruct)]Guid riid,
|
[MarshalAs(UnmanagedType.LPStruct)] Guid riid,
|
||||||
out IntPtr ppv);
|
out IntPtr ppv);
|
||||||
|
|
||||||
void GetParent(out IShellItem ppsi);
|
void GetParent(out IShellItem ppsi);
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace Wox.Infrastructure.Storage
|
||||||
// Depending on the version number of the previously installed PT Run, delete the cache if it is found to be incompatible
|
// Depending on the version number of the previously installed PT Run, delete the cache if it is found to be incompatible
|
||||||
if (_storageHelper.clearCache)
|
if (_storageHelper.clearCache)
|
||||||
{
|
{
|
||||||
if(File.Exists(FilePath))
|
if (File.Exists(FilePath))
|
||||||
{
|
{
|
||||||
File.Delete(FilePath);
|
File.Delete(FilePath);
|
||||||
Log.Info($"|BinaryStorage.TryLoad|Deleting cached data| <{FilePath}>");
|
Log.Info($"|BinaryStorage.TryLoad|Deleting cached data| <{FilePath}>");
|
||||||
|
|
|
@ -13,9 +13,9 @@ namespace Wox.Infrastructure.Storage
|
||||||
get => this.Filters;
|
get => this.Filters;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if(value != null)
|
if (value != null)
|
||||||
{
|
{
|
||||||
foreach(string filter in value)
|
foreach (string filter in value)
|
||||||
{
|
{
|
||||||
this.Filters.Add(filter);
|
this.Filters.Add(filter);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace Wox.Infrastructure.Storage
|
||||||
// Depending on the version number of the previously installed PT Run, delete the cache if it is found to be incompatible
|
// Depending on the version number of the previously installed PT Run, delete the cache if it is found to be incompatible
|
||||||
if (_storageHelper.clearCache)
|
if (_storageHelper.clearCache)
|
||||||
{
|
{
|
||||||
if(File.Exists(FilePath))
|
if (File.Exists(FilePath))
|
||||||
{
|
{
|
||||||
File.Delete(FilePath);
|
File.Delete(FilePath);
|
||||||
Log.Info($"|JsonStorage.TryLoad|Deleting cached data|<{FilePath}>");
|
Log.Info($"|JsonStorage.TryLoad|Deleting cached data|<{FilePath}>");
|
||||||
|
|
|
@ -35,7 +35,7 @@ namespace Wox.Infrastructure.Storage
|
||||||
{
|
{
|
||||||
_items = new ConcurrentDictionary<int, T>(items.ToDictionary(i => i.GetHashCode()));
|
_items = new ConcurrentDictionary<int, T>(items.ToDictionary(i => i.GetHashCode()));
|
||||||
}
|
}
|
||||||
catch(ArgumentException e)
|
catch (ArgumentException e)
|
||||||
{
|
{
|
||||||
Log.Info($"|LisRepository.Set| Trying to insert a duplicate item", e.Message);
|
Log.Info($"|LisRepository.Set| Trying to insert a duplicate item", e.Message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
namespace Wox.Infrastructure.Storage
|
namespace Wox.Infrastructure.Storage
|
||||||
{
|
{
|
||||||
public class PluginJsonStorage<T> :JsonStorage<T> where T : new()
|
public class PluginJsonStorage<T> : JsonStorage<T> where T : new()
|
||||||
{
|
{
|
||||||
public PluginJsonStorage()
|
public PluginJsonStorage()
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,17 +32,17 @@ namespace Wox.Infrastructure.Storage
|
||||||
|
|
||||||
// If there is some error in populating/retrieving the version numbers, then the cache must be deleted
|
// If there is some error in populating/retrieving the version numbers, then the cache must be deleted
|
||||||
// This case will not be hit, but is present as a fail safe
|
// This case will not be hit, but is present as a fail safe
|
||||||
if(String.IsNullOrEmpty(version1) || String.IsNullOrEmpty(version2))
|
if (String.IsNullOrEmpty(version1) || String.IsNullOrEmpty(version2))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
string[] split1 = version1.Split( new string[] { version, period }, StringSplitOptions.RemoveEmptyEntries);
|
string[] split1 = version1.Split(new string[] { version, period }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
string[] split2 = version2.Split( new string[] { version, period }, StringSplitOptions.RemoveEmptyEntries);
|
string[] split2 = version2.Split(new string[] { version, period }, StringSplitOptions.RemoveEmptyEntries);
|
||||||
|
|
||||||
for(int i=0; i<versionLength; i++)
|
for (int i = 0; i < versionLength; i++)
|
||||||
{
|
{
|
||||||
if(int.Parse(split1[i]) < int.Parse(split2[i]))
|
if (int.Parse(split1[i]) < int.Parse(split2[i]))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -70,11 +70,11 @@ namespace Wox.Infrastructure.Storage
|
||||||
string cacheSuffix = ".cache";
|
string cacheSuffix = ".cache";
|
||||||
string jsonSuffix = ".json";
|
string jsonSuffix = ".json";
|
||||||
|
|
||||||
if(type == (uint)StorageType.BINARY_STORAGE)
|
if (type == (uint)StorageType.BINARY_STORAGE)
|
||||||
{
|
{
|
||||||
suffix = cacheSuffix;
|
suffix = cacheSuffix;
|
||||||
}
|
}
|
||||||
else if(type == (uint)StorageType.JSON_STORAGE)
|
else if (type == (uint)StorageType.JSON_STORAGE)
|
||||||
{
|
{
|
||||||
suffix = jsonSuffix;
|
suffix = jsonSuffix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace Wox.Infrastructure
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public MatchResult FuzzyMatch(string query, string stringToCompare, MatchOption opt)
|
public MatchResult FuzzyMatch(string query, string stringToCompare, MatchOption opt)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(stringToCompare) || string.IsNullOrEmpty(query)) return new MatchResult (false, UserSettingSearchPrecision);
|
if (string.IsNullOrEmpty(stringToCompare) || string.IsNullOrEmpty(query)) return new MatchResult(false, UserSettingSearchPrecision);
|
||||||
|
|
||||||
query = query.Trim();
|
query = query.Trim();
|
||||||
|
|
||||||
|
@ -164,13 +164,13 @@ namespace Wox.Infrastructure
|
||||||
return new MatchResult(true, UserSettingSearchPrecision, indexList, score);
|
return new MatchResult(true, UserSettingSearchPrecision, indexList, score);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new MatchResult (false, UserSettingSearchPrecision);
|
return new MatchResult(false, UserSettingSearchPrecision);
|
||||||
}
|
}
|
||||||
|
|
||||||
// To get the index of the closest space which preceeds the first matching index
|
// To get the index of the closest space which preceeds the first matching index
|
||||||
private int CalculateClosestSpaceIndex(List<int> spaceIndices, int firstMatchIndex)
|
private int CalculateClosestSpaceIndex(List<int> spaceIndices, int firstMatchIndex)
|
||||||
{
|
{
|
||||||
if(spaceIndices.Count == 0)
|
if (spaceIndices.Count == 0)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -240,7 +240,7 @@ namespace Wox.Infrastructure
|
||||||
{
|
{
|
||||||
int count = query.Count(c => !char.IsWhiteSpace(c));
|
int count = query.Count(c => !char.IsWhiteSpace(c));
|
||||||
int threshold = 4;
|
int threshold = 4;
|
||||||
if(count <= threshold)
|
if (count <= threshold)
|
||||||
{
|
{
|
||||||
score += count * 10;
|
score += count * 10;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,8 @@ namespace Wox.Infrastructure.UserSettings
|
||||||
{
|
{
|
||||||
private string _hotkey = "Alt + Space";
|
private string _hotkey = "Alt + Space";
|
||||||
private string _previousHotkey = "";
|
private string _previousHotkey = "";
|
||||||
public string PreviousHotkey {
|
public string PreviousHotkey
|
||||||
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
return _previousHotkey;
|
return _previousHotkey;
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Wox.Plugin
|
||||||
public string Description { get; set; }
|
public string Description { get; set; }
|
||||||
public string Website { get; set; }
|
public string Website { get; set; }
|
||||||
public bool Disabled { get; set; }
|
public bool Disabled { get; set; }
|
||||||
public string ExecuteFilePath { get; private set;}
|
public string ExecuteFilePath { get; private set; }
|
||||||
|
|
||||||
public string ExecuteFileName { get; set; }
|
public string ExecuteFileName { get; set; }
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ namespace Wox.Plugin
|
||||||
|
|
||||||
public List<string> ActionKeywords { get; set; }
|
public List<string> ActionKeywords { get; set; }
|
||||||
|
|
||||||
public string IcoPath { get; set;}
|
public string IcoPath { get; set; }
|
||||||
|
|
||||||
public override string ToString()
|
public override string ToString()
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,7 +14,8 @@ namespace Wox.Plugin
|
||||||
private ToolTipData _toolTipData;
|
private ToolTipData _toolTipData;
|
||||||
private string _pluginDirectory;
|
private string _pluginDirectory;
|
||||||
private string _icoPath;
|
private string _icoPath;
|
||||||
public string Title {
|
public string Title
|
||||||
|
{
|
||||||
get { return _title; }
|
get { return _title; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
|
|
|
@ -74,7 +74,7 @@ namespace Wox.Plugin
|
||||||
private static Theme GetHighContrastBaseType()
|
private static Theme GetHighContrastBaseType()
|
||||||
{
|
{
|
||||||
string RegistryKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes";
|
string RegistryKey = @"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes";
|
||||||
string theme = (string) Registry.GetValue(RegistryKey, "CurrentTheme", string.Empty);
|
string theme = (string)Registry.GetValue(RegistryKey, "CurrentTheme", string.Empty);
|
||||||
theme = theme.Split('\\').Last().Split('.').First().ToString();
|
theme = theme.Split('\\').Last().Split('.').First().ToString();
|
||||||
|
|
||||||
if (theme == "hc1")
|
if (theme == "hc1")
|
||||||
|
|
|
@ -10,7 +10,7 @@ namespace Wox.Plugin
|
||||||
|
|
||||||
public ToolTipData(string title, string text)
|
public ToolTipData(string title, string text)
|
||||||
{
|
{
|
||||||
if(string.IsNullOrEmpty(title))
|
if (string.IsNullOrEmpty(title))
|
||||||
{
|
{
|
||||||
throw new ArgumentException("title cannot be null or empty", "title");
|
throw new ArgumentException("title cannot be null or empty", "title");
|
||||||
}
|
}
|
||||||
|
|
|
@ -150,7 +150,7 @@ namespace Wox.Test
|
||||||
[TestCase("chr", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.Regular, false)]
|
[TestCase("chr", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.Regular, false)]
|
||||||
[TestCase("chr", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.None, true)]
|
[TestCase("chr", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.None, true)]
|
||||||
[TestCase("ccs", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.Low, true)]
|
[TestCase("ccs", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.Low, true)]
|
||||||
[TestCase("cand", "Candy Crush Saga from King",StringMatcher.SearchPrecisionScore.Regular, true)]
|
[TestCase("cand", "Candy Crush Saga from King", StringMatcher.SearchPrecisionScore.Regular, true)]
|
||||||
[TestCase("cand", "Help cure hope raise on mind entity Chrome", StringMatcher.SearchPrecisionScore.Regular, false)]
|
[TestCase("cand", "Help cure hope raise on mind entity Chrome", StringMatcher.SearchPrecisionScore.Regular, false)]
|
||||||
public void WhenGivenDesiredPrecisionThenShouldReturnAllResultsGreaterOrEqual(
|
public void WhenGivenDesiredPrecisionThenShouldReturnAllResultsGreaterOrEqual(
|
||||||
string queryString,
|
string queryString,
|
||||||
|
@ -159,7 +159,7 @@ namespace Wox.Test
|
||||||
bool expectedPrecisionResult)
|
bool expectedPrecisionResult)
|
||||||
{
|
{
|
||||||
// When
|
// When
|
||||||
var matcher = new StringMatcher {UserSettingSearchPrecision = expectedPrecisionScore};
|
var matcher = new StringMatcher { UserSettingSearchPrecision = expectedPrecisionScore };
|
||||||
|
|
||||||
// Given
|
// Given
|
||||||
var matchResult = matcher.FuzzyMatch(queryString, compareString);
|
var matchResult = matcher.FuzzyMatch(queryString, compareString);
|
||||||
|
|
|
@ -36,7 +36,7 @@ namespace PreviewPaneUnitTests
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
String mdString = "> Blockquotes.";
|
String mdString = "> Blockquotes.";
|
||||||
HTMLParsingExtension htmlParsingExtension = new HTMLParsingExtension(()=> { });
|
HTMLParsingExtension htmlParsingExtension = new HTMLParsingExtension(() => { });
|
||||||
MarkdownPipeline markdownPipeline = BuidPipeline(htmlParsingExtension);
|
MarkdownPipeline markdownPipeline = BuidPipeline(htmlParsingExtension);
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
|
|
|
@ -244,12 +244,12 @@ namespace UnitTests_PreviewHandlerCommon
|
||||||
var stremMock = new Mock<IStream>();
|
var stremMock = new Mock<IStream>();
|
||||||
|
|
||||||
stremMock
|
stremMock
|
||||||
.Setup(x => x.Read(It.IsAny<byte []>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
|
.Setup(x => x.Read(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<IntPtr>()))
|
||||||
.Callback<byte [], int, IntPtr>((buffer, countToRead , bytesReadPtr) =>
|
.Callback<byte[], int, IntPtr>((buffer, countToRead, bytesReadPtr) =>
|
||||||
{
|
{
|
||||||
Array.Copy(streamBytes, 0, buffer, 0, streamBytes.Length);
|
Array.Copy(streamBytes, 0, buffer, 0, streamBytes.Length);
|
||||||
Marshal.WriteInt32(bytesReadPtr, count);
|
Marshal.WriteInt32(bytesReadPtr, count);
|
||||||
});
|
});
|
||||||
|
|
||||||
var streamWrapper = new StreamWrapper(stremMock.Object);
|
var streamWrapper = new StreamWrapper(stremMock.Object);
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,7 @@ namespace PowerToysTests
|
||||||
[TestMethod]
|
[TestMethod]
|
||||||
public void ShowSpacingTest()
|
public void ShowSpacingTest()
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 2; ++i)
|
for (int i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
OpenEditor();
|
OpenEditor();
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@ namespace PowerToysTests
|
||||||
editorWindow.SendKeys(OpenQA.Selenium.Keys.Alt + OpenQA.Selenium.Keys.F4);
|
editorWindow.SendKeys(OpenQA.Selenium.Keys.Alt + OpenQA.Selenium.Keys.F4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(OpenQA.Selenium.WebDriverException)
|
catch (OpenQA.Selenium.WebDriverException)
|
||||||
{
|
{
|
||||||
//editor has already closed
|
//editor has already closed
|
||||||
}
|
}
|
||||||
|
|
|
@ -651,7 +651,7 @@ namespace PowerToysTests
|
||||||
WindowsElement powerToysWindow = session.FindElementByXPath("//Window[@Name=\"PowerToys Settings\"]");
|
WindowsElement powerToysWindow = session.FindElementByXPath("//Window[@Name=\"PowerToys Settings\"]");
|
||||||
Assert.IsNull(powerToysWindow);
|
Assert.IsNull(powerToysWindow);
|
||||||
}
|
}
|
||||||
catch(OpenQA.Selenium.WebDriverException)
|
catch (OpenQA.Selenium.WebDriverException)
|
||||||
{
|
{
|
||||||
//window is no longer available, which is expected
|
//window is no longer available, which is expected
|
||||||
}
|
}
|
||||||
|
@ -734,7 +734,7 @@ namespace PowerToysTests
|
||||||
exitDialogButton.Click();
|
exitDialogButton.Click();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch(OpenQA.Selenium.WebDriverException)
|
catch (OpenQA.Selenium.WebDriverException)
|
||||||
{
|
{
|
||||||
//element couldn't be located
|
//element couldn't be located
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,7 +158,7 @@ namespace PowerToysTests
|
||||||
{
|
{
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void CloseSettings()
|
public static void CloseSettings()
|
||||||
{
|
{
|
||||||
|
@ -186,7 +186,7 @@ namespace PowerToysTests
|
||||||
isLaunched = (pt != null);
|
isLaunched = (pt != null);
|
||||||
trayButton.Click(); //close
|
trayButton.Click(); //close
|
||||||
}
|
}
|
||||||
catch(OpenQA.Selenium.WebDriverException)
|
catch (OpenQA.Selenium.WebDriverException)
|
||||||
{
|
{
|
||||||
//PowerToys not found
|
//PowerToys not found
|
||||||
}
|
}
|
||||||
|
@ -228,7 +228,7 @@ namespace PowerToysTests
|
||||||
trayButton.Click(); //close tray
|
trayButton.Click(); //close tray
|
||||||
isPowerToysLaunched = false;
|
isPowerToysLaunched = false;
|
||||||
}
|
}
|
||||||
catch(Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
Console.WriteLine(ex.Message);
|
Console.WriteLine(ex.Message);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace PowerToysTests
|
||||||
|
|
||||||
private void PressWinKey()
|
private void PressWinKey()
|
||||||
{
|
{
|
||||||
if(!isWinKeyPressed)
|
if (!isWinKeyPressed)
|
||||||
{
|
{
|
||||||
new Actions(session).KeyDown(OpenQA.Selenium.Keys.Command).Perform();
|
new Actions(session).KeyDown(OpenQA.Selenium.Keys.Command).Perform();
|
||||||
isWinKeyPressed = true;
|
isWinKeyPressed = true;
|
||||||
|
@ -26,7 +26,7 @@ namespace PowerToysTests
|
||||||
|
|
||||||
private void ReleaseWinKey()
|
private void ReleaseWinKey()
|
||||||
{
|
{
|
||||||
if(isWinKeyPressed)
|
if (isWinKeyPressed)
|
||||||
{
|
{
|
||||||
new Actions(session).KeyUp(OpenQA.Selenium.Keys.Command).Perform();
|
new Actions(session).KeyUp(OpenQA.Selenium.Keys.Command).Perform();
|
||||||
isWinKeyPressed = false;
|
isWinKeyPressed = false;
|
||||||
|
@ -89,7 +89,8 @@ namespace PowerToysTests
|
||||||
// FindElementByClassName will be faster than using with XPath.
|
// FindElementByClassName will be faster than using with XPath.
|
||||||
WindowsElement shortcutHelperWindow = session.FindElementByClassName("PToyD2DPopup");
|
WindowsElement shortcutHelperWindow = session.FindElementByClassName("PToyD2DPopup");
|
||||||
Assert.IsNotNull(shortcutHelperWindow);
|
Assert.IsNotNull(shortcutHelperWindow);
|
||||||
} catch (InvalidOperationException)
|
}
|
||||||
|
catch (InvalidOperationException)
|
||||||
{
|
{
|
||||||
// Not the exception we wanted to catch here.
|
// Not the exception we wanted to catch here.
|
||||||
Assert.Fail("Shortcut Guide not found");
|
Assert.Fail("Shortcut Guide not found");
|
||||||
|
@ -121,11 +122,12 @@ namespace PowerToysTests
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
startMenuWindow = session.FindElementByXPath("/Pane[@ClassName=\"#32769\"]/Window[@Name=\"Start\"]");
|
startMenuWindow = session.FindElementByXPath("/Pane[@ClassName=\"#32769\"]/Window[@Name=\"Start\"]");
|
||||||
} catch (Exception)
|
}
|
||||||
|
catch (Exception)
|
||||||
{
|
{
|
||||||
//Start menu not found, as expected.
|
//Start menu not found, as expected.
|
||||||
}
|
}
|
||||||
if (startMenuWindow!=null)
|
if (startMenuWindow != null)
|
||||||
{
|
{
|
||||||
string startMenuWindowHandle = (int.Parse(startMenuWindow.GetAttribute("NativeWindowHandle"))).ToString("x");
|
string startMenuWindowHandle = (int.Parse(startMenuWindow.GetAttribute("NativeWindowHandle"))).ToString("x");
|
||||||
// Create session for controlling the Start Menu.
|
// Create session for controlling the Start Menu.
|
||||||
|
|
Loading…
Reference in a new issue