Merge branch 'master' into spelling

This commit is contained in:
Clint Rutkas
2020-11-02 09:57:48 -08:00
committed by GitHub
245 changed files with 2177 additions and 1210 deletions

View File

@@ -4,7 +4,7 @@
using System;
using System.Diagnostics;
using System.IO;
using System.IO.Abstractions;
using System.Reflection;
namespace Wox.Plugin
@@ -26,6 +26,10 @@ namespace Wox.Plugin
}
}
private static readonly IFileSystem FileSystem = new FileSystem();
private static readonly IPath Path = FileSystem.Path;
private static readonly IDirectory Directory = FileSystem.Directory;
public const string ExeFileName = "PowerLauncher";
public const string ModuleLocation = "Microsoft\\PowerToys\\PowerToys Run";
public const string Plugins = "Plugins";

View File

@@ -0,0 +1,24 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.Generic;
using ControlzEx.Theming;
namespace Wox.Plugin
{
public class CustomLibraryThemeProvider : LibraryThemeProvider
{
public static readonly CustomLibraryThemeProvider DefaultInstance = new CustomLibraryThemeProvider();
public CustomLibraryThemeProvider()
: base(true)
{
}
/// <inheritdoc />
public override void FillColorSchemeValues(Dictionary<string, string> values, RuntimeThemeColorValues colorValues)
{
}
}
}

View File

@@ -0,0 +1,111 @@
{
"DefaultValues": {
"Theme.IsHighContrast": "false"
},
"BaseColorSchemes": [
{
"Name": "Dark",
"Values": {
"PrimaryAccentColor": "Black",
"SystemBaseMediumLowColor": "#FF818181",
"SystemChromeLow": "#FF171717",
"TextControlPlaceholderForeground": "#FF818181",
"TextBox.Static.Border": "Transparent",
"TextBox.MouseOver.Border": "Transparent",
"TextBox.Focus.Border": "Transparent",
"ButtonBackgroundPointerOver": "#30FFFFFF",
"ButtonBorderPointerOver": "#61FFFFFF",
"ButtonBackgroundPressed": "#30FFFFFF",
"ButtonBorderPressed": "#61FFFFFF",
"ListViewItemBackgroundPointerOver": "#FF363636",
"ControlTextBrushKey": "White",
"SecondaryTextForeground": "#FFa1a1a1",
"InactiveSelectionHighlightBrushKey": "White",
"DialogBorderBrush": "#FF373737",
"ScrollBarThumbBackground": "#FF7a7a7a",
"ScrollBarThumbPointerOver": "#FF767676",
"ScrollBarThumbPointerPressed": "#FFa4a4a4",
"ScrollBarBackgroundPointerOver": "#FF1b1b1b",
"ScrollBarLineButtonForeground": "#FFcdcdcd",
"ScrollBarLineButtonForegroundPointerOver": "#FFcdcdcd",
"ScrollBarLineButtonForegroundPointerPressed": "#FF171717",
"ScrollBarLineButtonBackground": "Transparent",
"ScrollBarLineButtonBackgroundPointerOver": "#FF313131",
"ScrollBarLineButtonBackgroundPointerPressed": "#FFa4a4a4",
"ToolTipBorderBrushKey": "#5B000000",
"ToolTipForegroundBrushKey": "#FFFFFFFF",
"ToolTipBackgroundBrushKey": "#FF2B2B2B"
}
},
{
"Name": "Light",
"Values": {
"PrimaryAccentColor": "White",
"SystemBaseMediumLowColor": "#66000000",
"SystemChromeLow": "#FFF2F2F2",
"TextControlPlaceholderForeground": "#FF5b5b5b",
"TextBox.Static.Border": "Transparent",
"TextBox.MouseOver.Border": "Transparent",
"TextBox.Focus.Border": "Transparent",
"ButtonBackgroundPointerOver": "#2E000000",
"ButtonBorderPointerOver": "#61000000",
"ButtonBackgroundPressed": "#30000000",
"ButtonBorderPressed": "#61000000",
"ListViewItemBackgroundPointerOver": "#FFd2d2d2",
"ControlTextBrushKey": "Black",
"SecondaryTextForeground": "#FF434343",
"InactiveSelectionHighlightBrushKey": "Black",
"DialogBorderBrush": "#FFf7f7f7",
"ScrollBarThumbBackground": "#FF7a7a7a",
"ScrollBarThumbPointerOver": "#FFa0a0a0",
"ScrollBarThumbPointerPressed": "#FF747474",
"ScrollBarBackgroundPointerOver": "#FFf0f0f0",
"ScrollBarLineButtonForeground": "#FF1d1d1d",
"ScrollBarLineButtonForegroundPointerOver": "#FF1d1d1d",
"ScrollBarLineButtonForegroundPointerPressed": "#FFf3f3f3",
"ScrollBarLineButtonBackground": "Transparent",
"ScrollBarLineButtonBackgroundPointerOver": "#FFd2d2d2",
"ScrollBarLineButtonBackgroundPointerPressed": "#FF5d5d5d",
"ToolTipBorderBrushKey": "#FFD0D0D0",
"ToolTipForegroundBrushKey": "#FF000000",
"ToolTipBackgroundBrushKey": "#FFFBFBFB"
}
},
{
"Name": "HighContrast",
"Values": {
"Theme.IsHighContrast": "true",
"PrimaryAccentColor": "White",
"SystemBaseMediumLowColor": "#ffff00",
"SystemChromeLow": "Black",
"TextControlPlaceholderForeground": "#FF008000",
"TextBox.Static.Border": "Transparent",
"TextBox.MouseOver.Border": "Transparent",
"TextBox.Focus.Border": "Transparent",
"ButtonBackgroundPointerOver": "Black",
"ButtonBorderPointerOver": "White",
"ButtonBackgroundPressed": "White",
"ButtonBorderPressed": "White",
"ListViewItemBackgroundPointerOver": "#FF003300",
"ControlTextBrushKey": "#FFffff00",
"SecondaryTextForeground": "#FF008000",
"InactiveSelectionHighlightBrushKey": "#FFFFFFFF",
"DialogBorderBrush": "#FF373737",
"ScrollBarThumbBackground": "White",
"ScrollBarThumbPointerOver": "#FF008000",
"ScrollBarThumbPointerPressed": "#FF008000",
"ScrollBarBackgroundPointerOver": "#FF000000",
"ScrollBarLineButtonForeground": "#FFFFFFFF",
"ScrollBarLineButtonForegroundPointerOver": "#FFFFFFFF",
"ScrollBarLineButtonForegroundPointerPressed": "#FFFFFFFF",
"ScrollBarLineButtonBackground": "Black",
"ScrollBarLineButtonBackgroundPointerOver": "#FF000000",
"ScrollBarLineButtonBackgroundPointerPressed": "#FF000000",
"ToolTipBorderBrushKey": "#5B000000",
"ToolTipForegroundBrushKey": "#FFFFFFFF",
"ToolTipBackgroundBrushKey": "#FF2B2B2B"
}
}
],
"ColorSchemes": []
}

View File

@@ -0,0 +1,50 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:options="http://schemas.microsoft.com/winfx/2006/xaml/presentation/options"
xmlns:system="clr-namespace:System;assembly=System.Runtime"
mc:Ignorable="options">
<!-- Metadata -->
<system:String x:Key="Theme.Name">{{ThemeName}}</system:String>
<system:String x:Key="Theme.Origin">PowerToysRun</system:String>
<system:String x:Key="Theme.DisplayName">{{ThemeDisplayName}}</system:String>
<system:String x:Key="Theme.BaseColorScheme">{{BaseColorScheme}}</system:String>
<system:String x:Key="Theme.ColorScheme">{{ColorScheme}}</system:String>
<Color x:Key="Theme.PrimaryAccentColor">{{PrimaryAccentColor}}</Color>
<system:Boolean x:Key="Theme.IsHighContrast">{{IsHighContrast}}</system:Boolean>
<Color x:Key="SystemBaseMediumLowColor">{{SystemBaseMediumLowColor}}</Color>
<SolidColorBrush x:Key="SystemChromeLow" Color="{{SystemChromeLow}}" options:Freeze="True" />
<SolidColorBrush x:Key="TextControlPlaceholderForeground" Color="{{TextControlPlaceholderForeground}}" />
<SolidColorBrush x:Key="TextBox.Static.Border" Color="{{TextBox.Static.Border}}"/>
<SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="{{TextBox.MouseOver.Border}}"/>
<SolidColorBrush x:Key="TextBox.Focus.Border" Color="{{TextBox.Focus.Border}}"/>
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="{{ButtonBackgroundPointerOver}}" />
<SolidColorBrush x:Key="ButtonBorderPointerOver" Color="{{ButtonBorderPointerOver}}" />
<SolidColorBrush x:Key="ButtonBackgroundPressed" Color="{{ButtonBackgroundPressed}}" />
<SolidColorBrush x:Key="ButtonBorderPressed" Color="{{ButtonBorderPressed}}" />
<SolidColorBrush x:Key="ListViewItemBackgroundPointerOver" Color="{{ListViewItemBackgroundPointerOver}}" />
<SolidColorBrush x:Key="ControlTextBrushKey" Color="{{ControlTextBrushKey}}" />
<SolidColorBrush x:Key="SecondaryTextForeground" Color="{{SecondaryTextForeground}}" />
<SolidColorBrush x:Key="InactiveSelectionHighlightBrushKey" Color="{{InactiveSelectionHighlightBrushKey}}" />
<SolidColorBrush x:Key="DialogBorderBrush" Color="{{DialogBorderBrush}}" />
<SolidColorBrush x:Key="ScrollBarThumbBackground" Color="{{ScrollBarThumbBackground}}" />
<Color x:Key="ScrollBarThumbPointerOver">{{ScrollBarThumbPointerOver}}</Color>
<Color x:Key="ScrollBarThumbPointerPressed">{{ScrollBarThumbPointerPressed}}</Color>
<Color x:Key="ScrollBarBackgroundPointerOver">{{ScrollBarBackgroundPointerOver}}</Color>
<SolidColorBrush x:Key="ScrollBarLineButtonForeground" Color="{{ScrollBarLineButtonForeground}}" />
<Color x:Key="ScrollBarLineButtonForegroundPointerOver">{{ScrollBarLineButtonForegroundPointerOver}}</Color>
<Color x:Key="ScrollBarLineButtonForegroundPointerPressed">{{ScrollBarLineButtonForegroundPointerPressed}}</Color>
<SolidColorBrush x:Key="ScrollBarLineButtonBackground" Color="{{ScrollBarLineButtonBackground}}"/>
<Color x:Key="ScrollBarLineButtonBackgroundPointerOver">{{ScrollBarLineButtonBackgroundPointerOver}}</Color>
<Color x:Key="ScrollBarLineButtonBackgroundPointerPressed">{{ScrollBarLineButtonBackgroundPointerPressed}}</Color>
<SolidColorBrush x:Key="ToolTipBorderBrushKey" Color="{{ToolTipBorderBrushKey}}" />
<SolidColorBrush x:Key="ToolTipForegroundBrushKey" Color="{{ToolTipForegroundBrushKey}}" />
<SolidColorBrush x:Key="ToolTipBackgroundBrushKey" Color="{{ToolTipBackgroundBrushKey}}" />
</ResourceDictionary>

View File

@@ -3,7 +3,7 @@
// See the LICENSE file in the project root for more information.
using System;
using System.IO;
using System.IO.Abstractions;
using System.Runtime.CompilerServices;
using NLog;
using NLog.Config;
@@ -13,6 +13,10 @@ namespace Wox.Plugin.Logger
{
public static class Log
{
private static readonly IFileSystem FileSystem = new FileSystem();
private static readonly IPath Path = FileSystem.Path;
private static readonly IDirectory Directory = FileSystem.Directory;
public const string DirectoryName = "Logs";
public static string CurrentLogDirectory { get; }

View File

@@ -4,7 +4,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Abstractions;
using Newtonsoft.Json;
namespace Wox.Plugin
@@ -12,6 +12,9 @@ namespace Wox.Plugin
[JsonObject(MemberSerialization.OptOut)]
public class PluginMetadata : BaseModel
{
private static readonly IFileSystem FileSystem = new FileSystem();
private static readonly IPath Path = FileSystem.Path;
private string _pluginDirectory;
private List<string> _actionKeywords;

View File

@@ -5,7 +5,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.IO.Abstractions;
using System.Windows;
using System.Windows.Media;
@@ -13,6 +13,9 @@ namespace Wox.Plugin
{
public class Result
{
private static readonly IFileSystem FileSystem = new FileSystem();
private static readonly IPath Path = FileSystem.Path;
private string _title;
private ToolTipData _toolTipData;
private string _pluginDirectory;

View File

@@ -1,131 +0,0 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Globalization;
using System.IO;
using System.Reflection;
using Wox.Plugin.Logger;
using Wox.Plugin.Properties;
namespace Wox.Plugin.SharedCommands
{
public static class FilesFolders
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Suppressing this to enable FxCop. We are logging the exception, and going forward general exceptions should not be caught")]
public static void Copy(this string sourcePath, string targetPath)
{
// Get the subdirectories for the specified directory.
DirectoryInfo dir = new DirectoryInfo(sourcePath);
if (!dir.Exists)
{
throw new DirectoryNotFoundException(
"Source directory does not exist or could not be found: "
+ sourcePath);
}
try
{
DirectoryInfo[] dirs = dir.GetDirectories();
// If the destination directory doesn't exist, create it.
if (!Directory.Exists(targetPath))
{
Directory.CreateDirectory(targetPath);
}
// Get the files in the directory and copy them to the new location.
FileInfo[] files = dir.GetFiles();
foreach (FileInfo file in files)
{
string temppath = Path.Combine(targetPath, file.Name);
file.CopyTo(temppath, false);
}
// Recursively copy subdirectories by calling itself on each subdirectory until there are no more to copy
foreach (DirectoryInfo subdir in dirs)
{
string temppath = Path.Combine(targetPath, subdir.Name);
Copy(subdir.FullName, temppath);
}
}
#pragma warning disable CS0168 // Variable is declared but never used. Due to #if debug vs release statement
catch (Exception e)
#pragma warning restore CS0168 // Variable is declared but never used
{
string error = $"Copying path {targetPath} has failed";
Log.Exception(error, e, MethodBase.GetCurrentMethod().DeclaringType);
#if DEBUG
throw;
#else
// Using CurrentCulture since this is user facing
System.Windows.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, Resources.filesfolder_copy_failed, targetPath));
RemoveFolder(targetPath);
#endif
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Suppressing this to enable FxCop. We are logging the exception, and going forward general exceptions should not be caught")]
public static bool VerifyBothFolderFilesEqual(this string fromPath, string toPath)
{
try
{
var fromDir = new DirectoryInfo(fromPath);
var toDir = new DirectoryInfo(toPath);
if (fromDir.GetFiles("*", SearchOption.AllDirectories).Length != toDir.GetFiles("*", SearchOption.AllDirectories).Length)
{
return false;
}
if (fromDir.GetDirectories("*", SearchOption.AllDirectories).Length != toDir.GetDirectories("*", SearchOption.AllDirectories).Length)
{
return false;
}
return true;
}
#pragma warning disable CS0168 // Variable is declared but never used. Due to #if debug vs release statement
catch (Exception e)
#pragma warning restore CS0168 // Variable is declared but never used
{
string error = $"Unable to verify folders and files between {fromPath} and {toPath}";
Log.Exception(error, e, MethodBase.GetCurrentMethod().DeclaringType);
#if DEBUG
throw;
#else
// Using CurrentCulture since this is user facing
System.Windows.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, Resources.filesfolder_verifybothfolderfilesequal_failed, fromPath, toPath));
return false;
#endif
}
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Design", "CA1031:Do not catch general exception types", Justification = "Suppressing this to enable FxCop. We are logging the exception, and going forward general exceptions should not be caught")]
public static void RemoveFolder(this string path)
{
try
{
if (Directory.Exists(path))
{
Directory.Delete(path, true);
}
}
#pragma warning disable CS0168 // Variable is declared but never used. Due to #if debug vs release statement
catch (Exception e)
#pragma warning restore CS0168 // Variable is declared but never used
{
string error = $"Not able to delete folder {path}";
Log.Exception(error, e, MethodBase.GetCurrentMethod().DeclaringType);
#if DEBUG
throw;
#else
// Using CurrentCulture since this is user facing
System.Windows.MessageBox.Show(string.Format(CultureInfo.CurrentCulture, Resources.filesfolder_removefolder_failed, path));
#endif
}
}
}
}

View File

@@ -1,78 +0,0 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
namespace Wox.Plugin.SharedCommands
{
public static class SearchWeb
{
/// <summary>
/// Opens search in a new browser. If no browser path is passed in then Chrome is used.
/// Leave browser path blank to use Chrome.
/// </summary>
public static void NewBrowserWindow(this Uri url, string browserPath)
{
if (url == null)
{
throw new ArgumentNullException(nameof(url));
}
var browserExecutableName = browserPath?
.Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.None)
.Last();
var browser = string.IsNullOrEmpty(browserExecutableName) ? "chrome" : browserPath;
// Internet Explorer will open url in new browser window, and does not take the --new-window parameter
var browserArguments = browserExecutableName == "iexplore.exe" ? url.AbsoluteUri : "--new-window " + url.AbsoluteUri;
try
{
Process.Start(browser, browserArguments);
}
catch (System.ComponentModel.Win32Exception)
{
var psi = new ProcessStartInfo
{
FileName = url.AbsoluteUri,
UseShellExecute = true,
};
Process.Start(psi);
}
}
/// <summary>
/// Opens search as a tab in the default browser chosen in Windows settings.
/// </summary>
public static void NewTabInBrowser(this Uri url, string browserPath)
{
if (url == null)
{
throw new ArgumentNullException(nameof(url));
}
try
{
if (!string.IsNullOrEmpty(browserPath))
{
Process.Start(browserPath, url.AbsoluteUri);
}
else
{
Process.Start(url.AbsoluteUri);
}
}
// This error may be thrown for Process.Start(browserPath, url)
catch (System.ComponentModel.Win32Exception)
{
Process.Start(url.AbsoluteUri);
}
}
}
}

View File

@@ -1,11 +1,10 @@
// Copyright (c) Microsoft Corporation
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Linq;
using System.Windows;
using MahApps.Metro.Theming;
using ManagedCommon;
using Microsoft.Win32;
@@ -40,31 +39,35 @@ namespace Wox.Plugin
ControlzEx.Theming.ThemeManager.Current.AddLibraryTheme(
new ControlzEx.Theming.LibraryTheme(
highContrastOneThemeUri,
MahAppsLibraryThemeProvider.DefaultInstance));
CustomLibraryThemeProvider.DefaultInstance));
ControlzEx.Theming.ThemeManager.Current.AddLibraryTheme(
new ControlzEx.Theming.LibraryTheme(
highContrastTwoThemeUri,
MahAppsLibraryThemeProvider.DefaultInstance));
CustomLibraryThemeProvider.DefaultInstance));
ControlzEx.Theming.ThemeManager.Current.AddLibraryTheme(
new ControlzEx.Theming.LibraryTheme(
highContrastBlackThemeUri,
MahAppsLibraryThemeProvider.DefaultInstance));
CustomLibraryThemeProvider.DefaultInstance));
ControlzEx.Theming.ThemeManager.Current.AddLibraryTheme(
new ControlzEx.Theming.LibraryTheme(
highContrastWhiteThemeUri,
MahAppsLibraryThemeProvider.DefaultInstance));
CustomLibraryThemeProvider.DefaultInstance));
ControlzEx.Theming.ThemeManager.Current.AddLibraryTheme(
new ControlzEx.Theming.LibraryTheme(
lightThemeUri,
MahAppsLibraryThemeProvider.DefaultInstance));
CustomLibraryThemeProvider.DefaultInstance));
ControlzEx.Theming.ThemeManager.Current.AddLibraryTheme(
new ControlzEx.Theming.LibraryTheme(
darkThemeUri,
MahAppsLibraryThemeProvider.DefaultInstance));
CustomLibraryThemeProvider.DefaultInstance));
ResetTheme();
ControlzEx.Theming.ThemeManager.Current.ThemeSyncMode = ControlzEx.Theming.ThemeSyncMode.SyncAll;
ControlzEx.Theming.ThemeManager.Current.ThemeChanged += Current_ThemeChanged;
// Currently there is an issue in ControlzEx, so we must use SyncAll to sync also HighContrast themes.
// We can change this after using next release.
ControlzEx.Theming.ThemeManager.Current.ThemeSyncMode = ControlzEx.Theming.ThemeSyncMode.SyncAll;
ControlzEx.Theming.ThemeManager.Current.SyncTheme();
}
public Theme GetCurrentTheme()
@@ -119,22 +122,22 @@ namespace Wox.Plugin
else if (theme == Theme.HighContrastOne)
{
currentTheme = Theme.HighContrastOne;
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastOneTheme);
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastOneTheme, true);
}
else if (theme == Theme.HighContrastTwo)
{
currentTheme = Theme.HighContrastTwo;
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastTwoTheme);
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastTwoTheme, true);
}
else if (theme == Theme.HighContrastWhite)
{
currentTheme = Theme.HighContrastWhite;
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastWhiteTheme);
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastWhiteTheme, true);
}
else if (theme == Theme.HighContrastBlack)
{
currentTheme = Theme.HighContrastBlack;
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastBlackTheme);
ControlzEx.Theming.ThemeManager.Current.ChangeTheme(_app, HighContrastBlackTheme, true);
}
else if (theme == Theme.Light)
{
@@ -157,7 +160,15 @@ namespace Wox.Plugin
private void Current_ThemeChanged(object sender, ControlzEx.Theming.ThemeChangedEventArgs e)
{
ResetTheme();
ControlzEx.Theming.ThemeManager.Current.ThemeChanged -= Current_ThemeChanged;
try
{
ResetTheme();
}
finally
{
ControlzEx.Theming.ThemeManager.Current.ThemeChanged += Current_ThemeChanged;
}
}
protected virtual void Dispose(bool disposing)

View File

@@ -49,6 +49,15 @@
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup>
<DefaultItemExcludes>$(DefaultItemExcludes);**/*.Template.xaml</DefaultItemExcludes>
</PropertyGroup>
<ItemGroup>
<EmbeddedResource Include="**/*.Template.xaml" />
<EmbeddedResource Include="**/GeneratorParameters.json" />
<UpToDateCheckInput Include="**/*.xaml" />
</ItemGroup>
<ItemGroup>
<None Include="README.md" />
</ItemGroup>
@@ -67,7 +76,6 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="JetBrains.Annotations" Version="2020.1.0" />
<PackageReference Include="MahApps.Metro" Version="2.3.0" />
<PackageReference Include="ControlzEx" Version="4.3.2" />
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="3.3.0">
<PrivateAssets>all</PrivateAssets>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nepovedlo se zkopírovat cestu {0}. Aby se zachovala konzistence, cesta se odstraní.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nepovedlo se odstranit složku {0}. Přejděte prosím na příslušné umístění a odstraňte ji ručně.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nepovedlo se ověřit složky a soubory mezi {0} a {1}.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Fehler beim Kopieren des Pfads "{0}". Er wird nun aus Konsistenzgründen gelöscht.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Der Ordner "{0}" kann nicht gelöscht werden. Wechseln Sie zum Speicherort, und löschen Sie ihn manuell.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Die Ordner und Dateien zwischen "{0}" und "{1}" können nicht verifiziert werden.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Error al copiar la ruta de acceso {0}. Ahora se eliminará por coherencia.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[No se puede eliminar la carpeta {0}. Vaya a la ubicación y elimínela manualmente.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[No se pueden comprobar las carpetas y los archivos entre {0} y {1}.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[La copie du chemin {0} a échoué, il est maintenant supprimé pour assurer la cohérence]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Impossible de supprimer le dossier {0}, accédez à l'emplacement et supprimez-le manuellement]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Impossible de vérifier les dossiers et les fichiers entre {0} et {1}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[A(z) {0} elérési út másolása sikertelen volt, a konzisztencia érdekében törlődik]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nem sikerült törölni a(z) {0} mappát, lépjen a helyhez, és törölje manuálisan]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Nem sikerült ellenőrizni a mappákat és a fájlokat a(z) {0} és {1} között]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[パス {0} をコピーできませんでした。これは、整合性のために削除されます]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[フォルダー {0} を削除できません。その場所に移動して、手動で削除してください]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0} と {1} の間のフォルダーとファイルを確認できません]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kan het pad {0} niet kopiëren. Het pad wordt nu verwijderd voor consistentie]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kan de map {0} niet verwijderen. Ga naar de locatie en om de map handmatig te verwijderen]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Kan geen mappen en bestanden controleren tussen {0} en {1}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Falha ao copiar o caminho {0}, ele será excluído para consistência]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Não é possível excluir a pasta {0}, vá até o local e exclua-a manualmente]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Não é possível verificar pastas e arquivos entre {0} e {1}]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Не удалось скопировать путь {0}, он будет удален для обеспечения согласованности.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Не удается удалить папку {0}, перейдите в ее расположение и удалите ее вручную.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[Не удается проверить папки и файлы между {0} и {1}.]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0} yolu kopyalanamadığından şimdi tutarlılık için silinecek]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0} klasörü silinemiyor, lütfen konuma gidin ve kendiniz silin]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[{0} ile {1} arasındaki klasör ve dosyalar doğrulanamıyor]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>

View File

@@ -13,29 +13,29 @@
<Item ItemId=";filesfolder_copy_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Copying path {0} has failed, it will now be deleted for consistency]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[无法复制路径 {0}。为了保持一致性,现在它将被删除]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: targetPath]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_removefolder_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Not able to delete folder {0}, please go to the location and manually delete it]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[无法删除文件夹 {0}。请转到相应位置,然后手动删除它]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[parameter: path]]></Cmt>
</Cmts>
</Item>
<Item ItemId=";filesfolder_verifybothfolderfilesequal_failed" ItemType="0;.resx" PsrId="211" InstFlg="true" Leaf="true">
<Str Cat="Text">
<Val><![CDATA[Unable to verify folders and files between {0} and {1}]]></Val>
<Tgt Cat="Text" Stat="Loc" Orig="New">
<Val><![CDATA[无法验证 {0} 和 {1} 之间的文件夹和文件]]></Val>
</Tgt>
</Str>
<Disp Icon="Str" />
<Cmts>
<Cmt Name="Dev"><![CDATA[paramaters: fromPath, toPath]]></Cmt>
</Cmts>
</Item>
</Item>
</Item>