Merge remote-tracking branch 'origin/dev' into explorerMerge

# Conflicts:
#	Flow.Launcher.Test/Plugins/ExplorerTest.cs
#	Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs
This commit is contained in:
Hongtao Zhang 2022-08-16 21:38:15 -04:00
commit 193ea552dd
No known key found for this signature in database
GPG key ID: 75F655B91C7AC9BB
171 changed files with 34803 additions and 2095 deletions

146
.editorconfig Normal file
View file

@ -0,0 +1,146 @@
# To learn more about .editorconfig see https://aka.ms/editorconfigdocs
###############################
# Core EditorConfig Options #
###############################
# All files
[*]
indent_style = space
# XML project files
[*.{csproj,vbproj,vcxproj,vcxproj.filters,proj,projitems,shproj}]
indent_size = 2
# XML config files
[*.{props,targets,ruleset,config,nuspec,resx,vsixmanifest,vsct}]
indent_size = 2
# Code files
[*.{cs,csx,vb,vbx}]
indent_size = 4
insert_final_newline = true
charset = utf-8-bom
###############################
# .NET Coding Conventions #
###############################
[*.{cs,vb}]
# Organize usings
dotnet_sort_system_directives_first = true
# this. preferences
dotnet_style_qualification_for_field = false:silent
dotnet_style_qualification_for_property = false:silent
dotnet_style_qualification_for_method = false:silent
dotnet_style_qualification_for_event = false:silent
# Language keywords vs BCL types preferences
dotnet_style_predefined_type_for_locals_parameters_members = true:silent
dotnet_style_predefined_type_for_member_access = true:silent
# Parentheses preferences
dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent
dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent
# Modifier preferences
dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent
dotnet_style_readonly_field = true:suggestion
# Expression-level preferences
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
###############################
# Naming Conventions #
###############################
# Style Definitions
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
# Use PascalCase for constant fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.applicable_accessibilities = *
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_style_operator_placement_when_wrapping = beginning_of_line
tab_width = 2
end_of_line = crlf
dotnet_style_prefer_simplified_boolean_expressions = true:suggestion
dotnet_style_prefer_compound_assignment = true:suggestion
dotnet_diagnostic.CA1416.severity = silent
###############################
# C# Coding Conventions #
###############################
[*.cs]
dotnet_diagnostics.VSTHRD200.severity = none # VSTHRD200: Use "Async" suffix for async methods
dotnet_analyzer_diagnostic.VSTHRD200.severity = none # VSTHRD200: Use "Async" suffix for async methods
# var preferences
csharp_style_var_for_built_in_types = true:silent
csharp_style_var_when_type_is_apparent = true:silent
csharp_style_var_elsewhere = true:silent
# Expression-bodied members
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent
csharp_style_expression_bodied_indexers = true:silent
csharp_style_expression_bodied_accessors = true:silent
# Pattern matching preferences
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
# Null-checking preferences
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
# Modifier preferences
csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:suggestion
# Expression-level preferences
csharp_prefer_braces = true:silent
csharp_style_deconstructed_variable_declaration = true:suggestion
csharp_prefer_simple_default_expression = true:suggestion
csharp_style_pattern_local_over_anonymous_function = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
###############################
# C# Formatting Rules #
###############################
# New line preferences
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true
# Indentation preferences
csharp_indent_case_contents = true
csharp_indent_switch_labels = true
csharp_indent_labels = flush_left
# Space preferences
csharp_space_after_cast = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_around_binary_operators = before_and_after
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
# Wrapping preferences
csharp_preserve_single_line_statements = true
csharp_preserve_single_line_blocks = true
csharp_using_directive_placement = outside_namespace:silent
csharp_prefer_simple_using_statement = true:suggestion
csharp_style_namespace_declarations = block_scoped:silent
csharp_style_prefer_method_group_conversion = true:silent
csharp_style_expression_bodied_lambdas = true:silent
csharp_style_expression_bodied_local_functions = false:silent
###############################
# VB Coding Conventions #
###############################
[*.vb]
# Modifier preferences
visual_basic_preferred_modifier_order = Partial,Default,Private,Protected,Public,Friend,NotOverridable,Overridable,MustOverride,Overloads,Overrides,MustInherit,NotInheritable,Static,Shared,Shadows,ReadOnly,WriteOnly,Dim,Const,WithEvents,Widening,Narrowing,Custom,Async:suggestion

View file

@ -1,32 +0,0 @@
---
name: "\U0001F41E Bug report"
about: Create a bug report to help us improve Flow Launcher
title: "[Describe Your Bug]"
labels: 'bug'
assignees: ''
---
**Describe the bug/issue**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. ...
2. ...
3. ...
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Your System**
```
Windows build number: (run "ver" at a command prompt)
Flow Launcher version: (Settings => About)
```
**Flow Launcher Error Log**
<!--
The latest log file can be found here: %AppData%\FlowLauncher\Logs\<version>\<date>.txt
or for portable mode: %LocalAppData%\FlowLauncher\<App-Version>\UserData\Logs\<version>\<date>.txt
Drag and drop the log file below this comment.
-->

78
.github/ISSUE_TEMPLATE/bug-report.yaml vendored Normal file
View file

@ -0,0 +1,78 @@
name: "\U0001F41E Bug Report"
description: Create a bug report to help us improve Flow Launcher
title: "BUG: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: Thanks for taking the time to fill out this bug report!
- type: checkboxes
attributes:
label: Checks
options:
- label: >
I have checked that this issue has not already been reported.
- type: textarea
attributes:
label: Problem Description
description: A clear and concise description of what the problem is.
validations:
required: true
- type: textarea
attributes:
label: To Reproduce
description: Steps to reproduce the behavior.
value: >
1. ...
2. ...
3. ...
- type: textarea
attributes:
label: Screenshots
description: If applicable, add screenshots to help explain your problem.
- type: input
attributes:
label: Flow Launcher Version
description: Go to "Settings" => "About".
value: v1.8.3
- type: input
attributes:
label: Windows Build Number
description: Run "ver" at CMD (command prompt).
value: 10.0.19043.1288
- type: textarea
id: logs
attributes:
label: Error Log
description: >
Log file place:
- The latest version place: `%AppData%\FlowLauncher\Logs\<version>\<date>.txt`
- For portable mode: `%LocalAppData%\FlowLauncher\<App-Version>\UserData\Logs\<version>\<date>.txt`
value: >
<details>
```shell
Replace this line with the important log contents.
```
</details>
<!-- # Or drag and drop the log file and delete the above detail part. -->

View file

@ -15,9 +15,12 @@ jobs:
steps:
- uses: actions/stale@v4
with:
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
days-before-stale: 30
days-before-close: 5
stale-issue-message: 'This issue is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
days-before-stale: 45
days-before-close: 7
days-before-pr-close: -1
exempt-all-milestones: true
close-issue-message: 'This issue was closed because it has been stale for 5 days with no activity. If you feel this issue still needs attention please feel free to reopen.'
close-issue-message: 'This issue was closed because it has been stale for 7 days with no activity. If you feel this issue still needs attention please feel free to reopen.'
stale-pr-label: 'no-pr-activity'
exempt-issue-labels: 'keep-fresh'
exempt-pr-labels: 'keep-fresh,awaiting-approval,work-in-progress'

View file

@ -1,4 +1,4 @@
using Microsoft.Win32;
using Microsoft.Win32;
using Squirrel;
using System;
using System.IO;
@ -127,7 +127,7 @@ namespace Flow.Launcher.Core.Configuration
using (var portabilityUpdater = NewUpdateManager())
{
portabilityUpdater.CreateUninstallerRegistryEntry();
_ = portabilityUpdater.CreateUninstallerRegistryEntry();
}
}

View file

@ -0,0 +1,24 @@
using Flow.Launcher.Plugin;
using System;
namespace Flow.Launcher.Core.ExternalPlugins
{
public class FlowPluginException : Exception
{
public PluginMetadata Metadata { get; set; }
public FlowPluginException(PluginMetadata metadata, Exception e) : base(e.Message, e)
{
Metadata = metadata;
}
public override string ToString()
{
return $@"{Metadata.Name} Exception:
Websites: {Metadata.Website}
Author: {Metadata.Author}
Version: {Metadata.Version}
{base.ToString()}";
}
}
}

View file

@ -56,7 +56,7 @@
<PackageReference Include="Droplex" Version="1.4.1" />
<PackageReference Include="FSharp.Core" Version="5.0.2" />
<PackageReference Include="Microsoft.IO.RecyclableMemoryStream" Version="2.1.3" />
<PackageReference Include="squirrel.windows" Version="1.5.2" />
<PackageReference Include="squirrel.windows" Version="1.5.2" NoWarn="NU1701" />
</ItemGroup>
<ItemGroup>

View file

@ -93,4 +93,4 @@ namespace Flow.Launcher.Core.Plugin
public Dictionary<string, object> SettingsChange { get; set; }
}
}
}

View file

@ -69,7 +69,13 @@ namespace Flow.Launcher.Core.Plugin
private static readonly JsonSerializerOptions options = new()
{
PropertyNameCaseInsensitive = true,
#pragma warning disable SYSLIB0020
// IgnoreNullValues is obsolete, but the replacement JsonIgnoreCondition.WhenWritingNull still
// deserializes null, instead of ignoring it and leaving the default (empty list). We can change the behaviour
// to accept null and fallback to a default etc, or just keep IgnoreNullValues for now
// see: https://github.com/dotnet/runtime/issues/39152
IgnoreNullValues = true,
#pragma warning restore SYSLIB0020 // Type or member is obsolete
Converters =
{
new JsonObjectConverter()
@ -82,7 +88,7 @@ namespace Flow.Launcher.Core.Plugin
};
private Dictionary<string, object> Settings { get; set; }
private Dictionary<string, FrameworkElement> _settingControls = new();
private readonly Dictionary<string, FrameworkElement> _settingControls = new();
private async Task<List<Result>> DeserializedResultAsync(Stream output)
{
@ -115,7 +121,7 @@ namespace Flow.Launcher.Core.Plugin
foreach (var result in queryResponseModel.Result)
{
result.Action = c =>
result.AsyncAction = async c =>
{
UpdateSettings(result.SettingsChange);
@ -133,15 +139,15 @@ namespace Flow.Launcher.Core.Plugin
}
else
{
var actionResponse = Request(result.JsonRPCAction);
var actionResponse = await RequestAsync(result.JsonRPCAction);
if (string.IsNullOrEmpty(actionResponse))
if (actionResponse.Length == 0)
{
return !result.JsonRPCAction.DontHideAfterAction;
}
var jsonRpcRequestModel =
JsonSerializer.Deserialize<JsonRPCRequestModel>(actionResponse, options);
var jsonRpcRequestModel = await
JsonSerializer.DeserializeAsync<JsonRPCRequestModel>(actionResponse, options);
if (jsonRpcRequestModel?.Method?.StartsWith("Flow.Launcher.") ?? false)
{
@ -166,19 +172,20 @@ namespace Flow.Launcher.Core.Plugin
private void ExecuteFlowLauncherAPI(string method, object[] parameters)
{
var parametersTypeArray = parameters.Select(param => param.GetType()).ToArray();
MethodInfo methodInfo = PluginManager.API.GetType().GetMethod(method, parametersTypeArray);
if (methodInfo != null)
var methodInfo = typeof(IPublicAPI).GetMethod(method, parametersTypeArray);
if (methodInfo == null)
{
return;
}
try
{
methodInfo.Invoke(PluginManager.API, parameters);
}
catch (Exception)
{
try
{
methodInfo.Invoke(PluginManager.API, parameters);
}
catch (Exception)
{
#if (DEBUG)
throw;
throw;
#endif
}
}
}
@ -241,7 +248,7 @@ namespace Flow.Launcher.Core.Plugin
protected async Task<Stream> ExecuteAsync(ProcessStartInfo startInfo, CancellationToken token = default)
{
Process process = null;
bool disposed = false;
using var exitTokenSource = new CancellationTokenSource();
try
{
process = Process.Start(startInfo);
@ -251,6 +258,7 @@ namespace Flow.Launcher.Core.Plugin
return Stream.Null;
}
await using var source = process.StandardOutput.BaseStream;
var buffer = BufferManager.GetStream();
@ -259,7 +267,7 @@ namespace Flow.Launcher.Core.Plugin
{
// ReSharper disable once AccessToModifiedClosure
// Manually Check whether disposed
if (!disposed && !process.HasExited)
if (!exitTokenSource.IsCancellationRequested && !process.HasExited)
process.Kill();
});
@ -302,8 +310,8 @@ namespace Flow.Launcher.Core.Plugin
}
finally
{
exitTokenSource.Cancel();
process?.Dispose();
disposed = true;
}
}
@ -365,8 +373,7 @@ namespace Flow.Launcher.Core.Plugin
var settingWindow = new UserControl();
var mainPanel = new StackPanel
{
Margin = settingPanelMargin,
Orientation = Orientation.Vertical
Margin = settingPanelMargin, Orientation = Orientation.Vertical
};
settingWindow.Content = mainPanel;
@ -374,8 +381,7 @@ namespace Flow.Launcher.Core.Plugin
{
var panel = new StackPanel
{
Orientation = Orientation.Horizontal,
Margin = settingControlMargin
Orientation = Orientation.Horizontal, Margin = settingControlMargin
};
var name = new TextBlock()
{
@ -535,4 +541,4 @@ namespace Flow.Launcher.Core.Plugin
}
}
}
}
}

View file

@ -1,4 +1,5 @@
using System;
using Flow.Launcher.Core.ExternalPlugins;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
@ -74,7 +75,7 @@ namespace Flow.Launcher.Core.Plugin
}
}
public static async Task ReloadData()
public static async Task ReloadDataAsync()
{
await Task.WhenAll(AllPlugins.Select(plugin => plugin.Plugin switch
{
@ -109,7 +110,7 @@ namespace Flow.Launcher.Core.Plugin
/// Call initialize for all plugins
/// </summary>
/// <returns>return the list of failed to init plugins or null for none</returns>
public static async Task InitializePlugins(IPublicAPI api)
public static async Task InitializePluginsAsync(IPublicAPI api)
{
API = api;
var failedPlugins = new ConcurrentQueue<PluginPair>();
@ -182,13 +183,11 @@ namespace Flow.Launcher.Core.Plugin
public static async Task<List<Result>> QueryForPluginAsync(PluginPair pair, Query query, CancellationToken token)
{
var results = new List<Result>();
var metadata = pair.Metadata;
try
{
var metadata = pair.Metadata;
long milliseconds = -1L;
milliseconds = await Stopwatch.DebugAsync($"|PluginManager.QueryForPlugin|Cost for {metadata.Name}",
var milliseconds = await Stopwatch.DebugAsync($"|PluginManager.QueryForPlugin|Cost for {metadata.Name}",
async () => results = await pair.Plugin.QueryAsync(query, token).ConfigureAwait(false));
token.ThrowIfCancellationRequested();
@ -206,7 +205,10 @@ namespace Flow.Launcher.Core.Plugin
// null will be fine since the results will only be added into queue if the token hasn't been cancelled
return null;
}
catch (Exception e)
{
throw new FlowPluginException(metadata, e);
}
return results;
}
@ -327,4 +329,4 @@ namespace Flow.Launcher.Core.Plugin
}
}
}
}
}

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -11,7 +11,6 @@ using Flow.Launcher.Infrastructure.Logger;
using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin;
using Flow.Launcher.Plugin.SharedCommands;
using System.Diagnostics;
using Stopwatch = Flow.Launcher.Infrastructure.Stopwatch;
namespace Flow.Launcher.Core.Plugin
@ -41,14 +40,6 @@ namespace Flow.Launcher.Core.Plugin
var milliseconds = Stopwatch.Debug(
$"|PluginsLoader.DotNetPlugins|Constructor init cost for {metadata.Name}", () =>
{
#if DEBUG
var assemblyLoader = new PluginAssemblyLoader(metadata.ExecuteFilePath);
var assembly = assemblyLoader.LoadAssemblyAndDependencies();
var type = assemblyLoader.FromAssemblyGetTypeOfInterface(assembly,
typeof(IAsyncPlugin));
var plugin = Activator.CreateInstance(type) as IAsyncPlugin;
#else
Assembly assembly = null;
IAsyncPlugin plugin = null;
@ -62,6 +53,12 @@ namespace Flow.Launcher.Core.Plugin
plugin = Activator.CreateInstance(type) as IAsyncPlugin;
}
#if DEBUG
catch (Exception e)
{
throw;
}
#else
catch (Exception e) when (assembly == null)
{
Log.Exception($"|PluginsLoader.DotNetPlugins|Couldn't load assembly for the plugin: {metadata.Name}", e);
@ -79,6 +76,7 @@ namespace Flow.Launcher.Core.Plugin
Log.Exception($"|PluginsLoader.DotNetPlugins|The following plugin has errored and can not be loaded: <{metadata.Name}>", e);
}
#endif
if (plugin == null)
{
erroredPlugins.Add(metadata.Name);
@ -98,7 +96,7 @@ namespace Flow.Launcher.Core.Plugin
+ (erroredPlugins.Count > 1 ? "plugins have " : "plugin has ")
+ "errored and cannot be loaded:";
Task.Run(() =>
_ = Task.Run(() =>
{
MessageBox.Show($"{errorMessage}{Environment.NewLine}{Environment.NewLine}" +
$"{errorPluginString}{Environment.NewLine}{Environment.NewLine}" +

View file

@ -16,7 +16,7 @@ namespace Flow.Launcher.Core.Plugin
return null;
}
var rawQuery = string.Join(Query.TermSeparator, terms);
var rawQuery = text;
string actionKeyword, search;
string possibleActionKeyword = terms[0];
string[] searchTerms;
@ -24,13 +24,13 @@ namespace Flow.Launcher.Core.Plugin
if (nonGlobalPlugins.TryGetValue(possibleActionKeyword, out var pluginPair) && !pluginPair.Metadata.Disabled)
{ // use non global plugin for query
actionKeyword = possibleActionKeyword;
search = terms.Length > 1 ? rawQuery[(actionKeyword.Length + 1)..] : string.Empty;
search = terms.Length > 1 ? rawQuery[(actionKeyword.Length + 1)..].TrimStart() : string.Empty;
searchTerms = terms[1..];
}
else
{ // non action keyword
actionKeyword = string.Empty;
search = rawQuery;
search = rawQuery.TrimStart();
searchTerms = terms;
}

View file

@ -1,3 +1,3 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("Flow.Launcher.Test")]
[assembly: InternalsVisibleTo("Flow.Launcher.Test")]

View file

@ -99,7 +99,7 @@ namespace Flow.Launcher.Core.Resource
Settings.Language = language.LanguageCode;
CultureInfo.CurrentCulture = new CultureInfo(language.LanguageCode);
CultureInfo.CurrentUICulture = CultureInfo.CurrentCulture;
Task.Run(() =>
_ = Task.Run(() =>
{
UpdatePluginMetadataTranslations();
});
@ -182,6 +182,7 @@ namespace Flow.Launcher.Core.Resource
{
p.Metadata.Name = pluginI18N.GetTranslatedPluginTitle();
p.Metadata.Description = pluginI18N.GetTranslatedPluginDescription();
pluginI18N.OnCultureInfoChanged(CultureInfo.CurrentCulture);
}
catch (Exception e)
{

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -85,10 +85,13 @@ namespace Flow.Launcher.Core.Resource
Settings.Theme = theme;
// reload all resources even if the theme itself hasn't changed in order to pickup changes
// to things like fonts
UpdateResourceDictionary(GetResourceDictionary());
//always allow re-loading default theme, in case of failure of switching to a new theme from default theme
if (_oldTheme != theme || theme == defaultTheme)
{
UpdateResourceDictionary(GetResourceDictionary());
_oldTheme = Path.GetFileNameWithoutExtension(_oldResource.Source.AbsolutePath);
}
@ -99,7 +102,7 @@ namespace Flow.Launcher.Core.Resource
SetBlurForWindow();
}
catch (DirectoryNotFoundException e)
catch (DirectoryNotFoundException)
{
Log.Error($"|Theme.ChangeTheme|Theme <{theme}> path can't be found");
if (theme != defaultTheme)
@ -109,7 +112,7 @@ namespace Flow.Launcher.Core.Resource
}
return false;
}
catch (XamlParseException e)
catch (XamlParseException)
{
Log.Error($"|Theme.ChangeTheme|Theme <{theme}> fail to parse");
if (theme != defaultTheme)

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Http;
@ -40,7 +40,7 @@ namespace Flow.Launcher.Core
api.ShowMsg(api.GetTranslation("pleaseWait"),
api.GetTranslation("update_flowlauncher_update_check"));
using var updateManager = await GitHubUpdateManager(GitHubRepository).ConfigureAwait(false);
using var updateManager = await GitHubUpdateManagerAsync(GitHubRepository).ConfigureAwait(false);
// UpdateApp CheckForUpdate will return value only if the app is squirrel installed
var newUpdateInfo = await updateManager.CheckForUpdate().NonNull().ConfigureAwait(false);
@ -115,7 +115,7 @@ namespace Flow.Launcher.Core
}
/// https://github.com/Squirrel/Squirrel.Windows/blob/master/src/Squirrel/UpdateManager.Factory.cs
private async Task<UpdateManager> GitHubUpdateManager(string repository)
private async Task<UpdateManager> GitHubUpdateManagerAsync(string repository)
{
var uri = new Uri(repository);
var api = $"https://api.github.com/repos{uri.AbsolutePath}/releases";
@ -145,4 +145,4 @@ namespace Flow.Launcher.Core
}
}
}
}

View file

@ -78,7 +78,7 @@ namespace Flow.Launcher.Infrastructure.Exception
sb.AppendLine();
sb.AppendLine("## Assemblies - " + AppDomain.CurrentDomain.FriendlyName);
sb.AppendLine();
foreach (var ass in AppDomain.CurrentDomain.GetAssemblies().OrderBy(o => o.GlobalAssemblyCache ? 50 : 0))
foreach (var ass in AppDomain.CurrentDomain.GetAssemblies())
{
sb.Append("* ");
sb.Append(ass.FullName);
@ -166,7 +166,7 @@ namespace Flow.Launcher.Infrastructure.Exception
}
return result;
}
catch (System.Exception e)
catch
{
return new List<string>();
}

View file

@ -14,30 +14,23 @@ namespace Flow.Launcher.Infrastructure.Image
{
public string GetHashFromImage(ImageSource imageSource)
{
if (!(imageSource is BitmapSource image))
if (imageSource is not BitmapSource image)
{
return null;
}
try
{
using (var outStream = new MemoryStream())
{
// PngBitmapEncoder enc2 = new PngBitmapEncoder();
// enc2.Frames.Add(BitmapFrame.Create(tt));
var enc = new JpegBitmapEncoder();
var bitmapFrame = BitmapFrame.Create(image);
bitmapFrame.Freeze();
enc.Frames.Add(bitmapFrame);
enc.Save(outStream);
var byteArray = outStream.GetBuffer();
using (var sha1 = new SHA1CryptoServiceProvider())
{
var hash = Convert.ToBase64String(sha1.ComputeHash(byteArray));
return hash;
}
}
using var outStream = new MemoryStream();
var enc = new JpegBitmapEncoder();
var bitmapFrame = BitmapFrame.Create(image);
bitmapFrame.Freeze();
enc.Frames.Add(bitmapFrame);
enc.Save(outStream);
var byteArray = outStream.GetBuffer();
using var sha1 = SHA1.Create();
var hash = Convert.ToBase64String(sha1.ComputeHash(byteArray));
return hash;
}
catch
{
@ -46,4 +39,4 @@ namespace Flow.Launcher.Infrastructure.Image
}
}
}
}

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.IO;
@ -13,11 +13,11 @@ namespace Flow.Launcher.Infrastructure.Image
{
public static class ImageLoader
{
private static readonly ImageCache ImageCache = new ImageCache();
private static readonly ImageCache ImageCache = new();
private static BinaryStorage<Dictionary<string, int>> _storage;
private static readonly ConcurrentDictionary<string, string> GuidToKey = new ConcurrentDictionary<string, string>();
private static readonly ConcurrentDictionary<string, string> GuidToKey = new();
private static IImageHashGenerator _hashGenerator;
private static bool EnableImageHash = true;
private static readonly bool EnableImageHash = true;
public static ImageSource DefaultImage { get; } = new BitmapImage(new Uri(Constant.MissingImgIcon));
@ -46,7 +46,7 @@ namespace Flow.Launcher.Infrastructure.Image
ImageCache[icon] = img;
}
Task.Run(() =>
_ = Task.Run(() =>
{
Stopwatch.Normal("|ImageLoader.Initialize|Preload images cost", () =>
{
@ -243,7 +243,6 @@ namespace Flow.Launcher.Infrastructure.Image
ImageCache[path] = img;
}
return img;
}

View file

@ -2,4 +2,5 @@
[assembly: InternalsVisibleTo("Flow.Launcher")]
[assembly: InternalsVisibleTo("Flow.Launcher.Core")]
[assembly: InternalsVisibleTo("Flow.Launcher.Test")]
[assembly: InternalsVisibleTo("Flow.Launcher.Test")]
[assembly: System.Runtime.Versioning.SupportedOSPlatform("Windows10.0.19041.0")]

View file

@ -9,6 +9,7 @@ using Flow.Launcher.Infrastructure.UserSettings;
namespace Flow.Launcher.Infrastructure.Storage
{
#pragma warning disable SYSLIB0011 // BinaryFormatter is obsolete.
/// <summary>
/// Stroage object using binary data
/// Normally, it has better performance, but not readable
@ -113,4 +114,5 @@ namespace Flow.Launcher.Infrastructure.Storage
}
}
}
#pragma warning restore SYSLIB0011
}

View file

@ -1,33 +1,58 @@
namespace Flow.Launcher.Plugin
{
/// <summary>
/// Allowed plugin languages
/// </summary>
public static class AllowedLanguage
{
/// <summary>
/// Python
/// </summary>
public static string Python
{
get { return "PYTHON"; }
}
/// <summary>
/// C#
/// </summary>
public static string CSharp
{
get { return "CSHARP"; }
}
/// <summary>
/// F#
/// </summary>
public static string FSharp
{
get { return "FSHARP"; }
}
/// <summary>
/// Standard .exe
/// </summary>
public static string Executable
{
get { return "EXECUTABLE"; }
}
/// <summary>
/// Determines if this language is a .NET language
/// </summary>
/// <param name="language"></param>
/// <returns></returns>
public static bool IsDotNet(string language)
{
return language.ToUpper() == CSharp
|| language.ToUpper() == FSharp;
}
/// <summary>
/// Determines if this language is supported
/// </summary>
/// <param name="language"></param>
/// <returns></returns>
public static bool IsAllowed(string language)
{
return IsDotNet(language)
@ -35,4 +60,4 @@
|| language.ToUpper() == Executable.ToUpper();
}
}
}
}

View file

@ -4,14 +4,24 @@ using JetBrains.Annotations;
namespace Flow.Launcher.Plugin
{
/// <summary>
/// Base model for plugin classes
/// </summary>
public class BaseModel : INotifyPropertyChanged
{
/// <summary>
/// Property changed event handler
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Invoked when a property changes
/// </summary>
/// <param name="propertyName"></param>
[NotifyPropertyChangedInvocator]
protected void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}

View file

@ -3,9 +3,24 @@ using System.Windows.Input;
namespace Flow.Launcher.Plugin
{
/// <summary>
/// Delegate for key down event
/// </summary>
/// <param name="e"></param>
public delegate void FlowLauncherKeyDownEventHandler(FlowLauncherKeyDownEventArgs e);
/// <summary>
/// Delegate for query event
/// </summary>
/// <param name="e"></param>
public delegate void AfterFlowLauncherQueryEventHandler(FlowLauncherQueryEventArgs e);
/// <summary>
/// Delegate for drop events [unused?]
/// </summary>
/// <param name="result"></param>
/// <param name="dropObject"></param>
/// <param name="e"></param>
public delegate void ResultItemDropEventHandler(Result result, IDataObject dropObject, DragEventArgs e);
/// <summary>
@ -17,14 +32,30 @@ namespace Flow.Launcher.Plugin
/// <returns>return true to continue handling, return false to intercept system handling</returns>
public delegate bool FlowLauncherGlobalKeyboardEventHandler(int keyevent, int vkcode, SpecialKeyState state);
/// <summary>
/// Arguments container for the Key Down event
/// </summary>
public class FlowLauncherKeyDownEventArgs
{
/// <summary>
/// The actual query
/// </summary>
public string Query { get; set; }
/// <summary>
/// Relevant key events for this event
/// </summary>
public KeyEventArgs keyEventArgs { get; set; }
}
/// <summary>
/// Arguments container for the Query event
/// </summary>
public class FlowLauncherQueryEventArgs
{
/// <summary>
/// The actual query
/// </summary>
public Query Query { get; set; }
}
}

View file

@ -15,6 +15,10 @@ namespace Flow.Launcher.Plugin
/// </summary>
public interface IAsyncReloadable : IFeatures
{
/// <summary>
/// Reload plugin data
/// </summary>
/// <returns></returns>
Task ReloadDataAsync();
}
}
}

View file

@ -1,7 +1,8 @@
using Flow.Launcher.Plugin.SharedModels;
using Flow.Launcher.Plugin.SharedModels;
using JetBrains.Annotations;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Runtime.CompilerServices;
using System.Threading;
@ -41,7 +42,7 @@ namespace Flow.Launcher.Plugin
/// <summary>
/// Copy Text to clipboard
/// </summary>
/// <param name="Text">Text to save on clipboard</param>
/// <param name="text">Text to save on clipboard</param>
public void CopyToClipboard(string text);
/// <summary>
@ -163,6 +164,7 @@ namespace Flow.Launcher.Plugin
/// Download the specific url to a cretain file path
/// </summary>
/// <param name="url">URL to download file</param>
/// <param name="filePath">path to save downloaded file</param>
/// <param name="token">place to store file</param>
/// <returns>Task showing the progress</returns>
Task HttpDownloadAsync([NotNull] string url, [NotNull] string filePath, CancellationToken token = default);
@ -178,7 +180,7 @@ namespace Flow.Launcher.Plugin
/// Remove ActionKeyword for specific plugin
/// </summary>
/// <param name="pluginId">ID for plugin that needs to remove action keyword</param>
/// <param name="newActionKeyword">The actionkeyword that is supposed to be removed</param>
/// <param name="oldActionKeyword">The actionkeyword that is supposed to be removed</param>
void RemoveActionKeyword(string pluginId, string oldActionKeyword);
/// <summary>

View file

@ -17,6 +17,9 @@
/// </summary>
public interface IReloadable : IFeatures
{
/// <summary>
/// Synchronously reload plugin data
/// </summary>
void ReloadData();
}
}
}

View file

@ -2,4 +2,4 @@
[assembly: InternalsVisibleTo("Flow.Launcher")]
[assembly: InternalsVisibleTo("Flow.Launcher.Core")]
[assembly: InternalsVisibleTo("Flow.Launcher.Test")]
[assembly: InternalsVisibleTo("Flow.Launcher.Test")]

View file

@ -16,7 +16,9 @@ namespace Flow.Launcher.Plugin
{
Search = search;
RawQuery = rawQuery;
#pragma warning disable CS0618
Terms = terms;
#pragma warning restore CS0618
SearchTerms = searchTerms;
ActionKeyword = actionKeyword;
}
@ -98,4 +100,4 @@ namespace Flow.Launcher.Plugin
public override string ToString() => RawQuery;
}
}
}

View file

@ -1,11 +1,14 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Media;
namespace Flow.Launcher.Plugin
{
/// <summary>
/// Describes the result of a plugin
/// </summary>
public class Result
{
@ -64,6 +67,10 @@ namespace Flow.Launcher.Plugin
}
}
/// <summary>
/// Delegate function, see <see cref="Icon"/>
/// </summary>
/// <returns></returns>
public delegate ImageSource IconDelegate();
/// <summary>
@ -85,6 +92,14 @@ namespace Flow.Launcher.Plugin
/// </summary>
public Func<ActionContext, bool> Action { get; set; }
/// <summary>
/// Delegate. An Async action to take in the form of a function call when the result has been selected
/// <returns>
/// true to hide flowlauncher after select result
/// </returns>
/// </summary>
public Func<ActionContext, ValueTask<bool>> AsyncAction { get; set; }
/// <summary>
/// Priority of the current result
/// <value>default: 0</value>
@ -96,6 +111,9 @@ namespace Flow.Launcher.Plugin
/// </summary>
public IList<int> TitleHighlightData { get; set; }
/// <summary>
/// Deprecated as of Flow Launcher v1.9.1. Subtitle highlighting is no longer offered
/// </summary>
[Obsolete("Deprecated as of Flow Launcher v1.9.1. Subtitle highlighting is no longer offered")]
public IList<int> SubTitleHighlightData { get; set; }
@ -169,5 +187,15 @@ namespace Flow.Launcher.Plugin
/// Show message as ToolTip on result SubTitle hover over
/// </summary>
public string SubTitleToolTip { get; set; }
/// <summary>
/// Run this result, asynchronously
/// </summary>
/// <param name="context"></param>
/// <returns></returns>
public ValueTask<bool> ExecuteAsync(ActionContext context)
{
return AsyncAction?.Invoke(context) ?? ValueTask.FromResult(Action?.Invoke(context) ?? false);
}
}
}
}

View file

@ -5,6 +5,9 @@ using System.Windows;
namespace Flow.Launcher.Plugin.SharedCommands
{
/// <summary>
/// Commands that are useful to run on files... and folders!
/// </summary>
public static class FilesFolders
{
private const string FileExplorerProgramName = "explorer";
@ -53,10 +56,10 @@ namespace Flow.Launcher.Plugin.SharedCommands
CopyAll(subdir.FullName, temppath);
}
}
catch (Exception e)
catch (Exception)
{
#if DEBUG
throw e;
throw;
#else
MessageBox.Show(string.Format("Copying path {0} has failed, it will now be deleted for consistency", targetPath));
RemoveFolderIfExists(targetPath);
@ -65,6 +68,13 @@ namespace Flow.Launcher.Plugin.SharedCommands
}
/// <summary>
/// Check if the files and directories are identical between <paramref name="fromPath"/>
/// and <paramref name="toPath"/>
/// </summary>
/// <param name="fromPath"></param>
/// <param name="toPath"></param>
/// <returns></returns>
public static bool VerifyBothFolderFilesEqual(this string fromPath, string toPath)
{
try
@ -80,10 +90,10 @@ namespace Flow.Launcher.Plugin.SharedCommands
return true;
}
catch (Exception e)
catch (Exception)
{
#if DEBUG
throw e;
throw;
#else
MessageBox.Show(string.Format("Unable to verify folders and files between {0} and {1}", fromPath, toPath));
return false;
@ -92,6 +102,10 @@ namespace Flow.Launcher.Plugin.SharedCommands
}
/// <summary>
/// Deletes a folder if it exists
/// </summary>
/// <param name="path"></param>
public static void RemoveFolderIfExists(this string path)
{
try
@ -99,26 +113,40 @@ namespace Flow.Launcher.Plugin.SharedCommands
if (Directory.Exists(path))
Directory.Delete(path, true);
}
catch (Exception e)
catch (Exception)
{
#if DEBUG
throw e;
throw;
#else
MessageBox.Show(string.Format("Not able to delete folder {0}, please go to the location and manually delete it", path));
#endif
}
}
/// <summary>
/// Checks if a directory exists
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public static bool LocationExists(this string path)
{
return Directory.Exists(path);
}
/// <summary>
/// Checks if a file exists
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static bool FileExists(this string filePath)
{
return File.Exists(filePath);
}
/// <summary>
/// Open a directory window (using the OS's default handler, usually explorer)
/// </summary>
/// <param name="fileOrFolderPath"></param>
public static void OpenPath(string fileOrFolderPath)
{
var psi = new ProcessStartInfo { FileName = FileExplorerProgramName, UseShellExecute = true, Arguments = '"' + fileOrFolderPath + '"' };
@ -127,16 +155,20 @@ namespace Flow.Launcher.Plugin.SharedCommands
if (LocationExists(fileOrFolderPath) || FileExists(fileOrFolderPath))
Process.Start(psi);
}
catch (Exception e)
catch (Exception)
{
#if DEBUG
throw e;
throw;
#else
MessageBox.Show(string.Format("Unable to open the path {0}, please check if it exists", fileOrFolderPath));
#endif
}
}
/// <summary>
/// Open the folder that contains <paramref name="path"/>
/// </summary>
/// <param name="path"></param>
public static void OpenContainingFolder(string path)
{
Process.Start(FileExplorerProgramEXE, $" /select,\"{path}\"");

View file

@ -1,6 +1,8 @@
using System;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
@ -87,7 +89,8 @@ namespace Flow.Launcher.Plugin.SharedCommands
/// <summary>
/// Runs a windows command using the provided ProcessStartInfo using a custom execute command function
/// </summary>
/// <param name="Func startProcess">allows you to pass in a custom command execution function</param>
/// <param name="startProcess">allows you to pass in a custom command execution function</param>
/// <param name="info">allows you to pass in the info that will be passed to startProcess</param>
/// <exception cref="FileNotFoundException">Thrown when unable to find the file specified in the command </exception>
/// <exception cref="Win32Exception">Thrown when error occurs during the execution of the command </exception>
public static void Execute(Func<ProcessStartInfo, Process> startProcess, ProcessStartInfo info)

View file

@ -1,4 +1,4 @@
using Flow.Launcher.Plugin;
using Flow.Launcher.Plugin;
using Flow.Launcher.Plugin.Explorer;
using Flow.Launcher.Plugin.Explorer.Search;
using Flow.Launcher.Plugin.Explorer.Search.DirectoryInfo;
@ -20,10 +20,12 @@ namespace Flow.Launcher.Test.Plugins
[TestFixture]
public class ExplorerTest
{
#pragma warning disable CS1998 // async method with no await (more readable to leave it async to match the tested signature)
private async Task<List<Result>> MethodWindowsIndexSearchReturnsZeroResultsAsync(Query dummyQuery, string dummyString, CancellationToken dummyToken)
{
return new List<Result>();
}
#pragma warning restore CS1998
private List<Result> MethodDirectoryInfoClassSearchReturnsTwoResults(Query dummyQuery, string dummyString, CancellationToken token)
{
@ -157,6 +159,7 @@ namespace Flow.Launcher.Test.Plugins
$"Actual string was: {resultString}{Environment.NewLine}");
}
[SupportedOSPlatform("windows7.0")]
[TestCase(@"some words", @"FREETEXT('some words')")]
public void GivenWindowsIndexSearch_WhenQueryWhereRestrictionsIsForFileContentSearch_ThenShouldReturnFreeTextString(

View file

@ -48,7 +48,7 @@ namespace Flow.Launcher.Test.Plugins
foreach (var result in results)
{
Assert.IsNotNull(result);
Assert.IsNotNull(result.Action);
Assert.IsNotNull(result.AsyncAction);
Assert.IsNotNull(result.Title);
}
@ -92,7 +92,7 @@ namespace Flow.Launcher.Test.Plugins
Assert.AreEqual(result1, referenceResult);
Assert.IsNotNull(result1);
Assert.IsNotNull(result1.Action);
Assert.IsNotNull(result1.AsyncAction);
}
}

View file

@ -17,7 +17,7 @@ namespace Flow.Launcher.Test
Query q = QueryBuilder.Build("> file.txt file2 file3", nonGlobalPlugins);
Assert.AreEqual("file.txt file2 file3", q.Search);
Assert.AreEqual("file.txt file2 file3", q.Search);
Assert.AreEqual(">", q.ActionKeyword);
}
@ -31,7 +31,7 @@ namespace Flow.Launcher.Test
Query q = QueryBuilder.Build("> file.txt file2 file3", nonGlobalPlugins);
Assert.AreEqual("> file.txt file2 file3", q.Search);
Assert.AreEqual("> file.txt file2 file3", q.Search);
}
[Test]

View file

@ -43,6 +43,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Flow.Launcher.Plugin.Url",
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{FFD651C7-0546-441F-BC8C-D4EE8FD01EA7}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.gitattributes = .gitattributes
.gitignore = .gitignore
appveyor.yml = appveyor.yml

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Diagnostics;
using System.Text;
using System.Threading.Tasks;
@ -74,7 +74,7 @@ namespace Flow.Launcher
Http.API = API;
Http.Proxy = _settings.Proxy;
await PluginManager.InitializePlugins(API);
await PluginManager.InitializePluginsAsync(API);
var window = new MainWindow(_settings, _mainVM);
Log.Info($"|App.OnStartup|Dependencies Info:{ErrorReporting.DependenciesInfo()}");
@ -104,14 +104,22 @@ namespace Flow.Launcher
});
}
private void AutoStartup()
{
if (_settings.StartFlowLauncherOnSystemStartup)
// we try to enable auto-startup on first launch, or reenable if it was removed
// but the user still has the setting set
if (_settings.StartFlowLauncherOnSystemStartup && !Helper.AutoStartup.IsEnabled)
{
if (!SettingWindow.StartupSet())
try
{
SettingWindow.SetStartup();
Helper.AutoStartup.Enable();
}
catch (Exception e)
{
// but if it fails (permissions, etc) then don't keep retrying
// this also gives the user a visual indication in the Settings widget
_settings.StartFlowLauncherOnSystemStartup = false;
Notification.Show(InternationalizationManager.Instance.GetTranslation("setAutoStartFailed"), e.Message);
}
}
}

View file

@ -81,7 +81,7 @@ namespace Flow.Launcher
}
tbAction.Text = updateCustomHotkey.ActionKeyword;
ctlHotkey.SetHotkey(updateCustomHotkey.Hotkey, false);
_ = ctlHotkey.SetHotkeyAsync(updateCustomHotkey.Hotkey, false);
update = true;
lblAdd.Text = InternationalizationManager.Instance.GetTranslation("update");
}

View file

@ -0,0 +1,63 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Flow.Launcher.Infrastructure;
using Flow.Launcher.Infrastructure.Logger;
using Microsoft.Win32;
namespace Flow.Launcher.Helper
{
public class AutoStartup
{
private const string StartupPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
public static bool IsEnabled
{
get
{
try
{
using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true);
var path = key?.GetValue(Constant.FlowLauncher) as string;
return path == Constant.ExecutablePath;
}
catch (Exception e)
{
Log.Error("AutoStartup", $"Ignoring non-critical registry error (querying if enabled): {e}");
}
return false;
}
}
public static void Disable()
{
try
{
using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true);
key?.DeleteValue(Constant.FlowLauncher, false);
}
catch (Exception e)
{
Log.Error("AutoStartup", $"Failed to disable auto-startup: {e}");
throw;
}
}
internal static void Enable()
{
try
{
using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true);
key?.SetValue(Constant.FlowLauncher, Constant.ExecutablePath);
}
catch (Exception e)
{
Log.Error("AutoStartup", $"Failed to enable auto-startup: {e}");
throw;
}
}
}
}

View file

@ -385,27 +385,5 @@ namespace Flow.Launcher.Helper
}
#endregion
#region Private Classes
/// <summary>
/// Remoting service class which is exposed by the server i.e the first instance and called by the second instance
/// to pass on the command line arguments to the first instance and cause it to activate itself.
/// </summary>
private class IPCRemoteService : MarshalByRefObject
{
/// <summary>
/// Remoting Object's ease expires after every 5 minutes by default. We need to override the InitializeLifetimeService class
/// to ensure that lease never expires.
/// </summary>
/// <returns>Always null.</returns>
public override object InitializeLifetimeService()
{
return null;
}
}
#endregion
}
}

View file

@ -69,7 +69,7 @@ namespace Flow.Launcher.Helper
//get current active window
IntPtr hWnd = GetForegroundWindow();
if (hWnd != null && !hWnd.Equals(IntPtr.Zero))
if (!hWnd.Equals(IntPtr.Zero))
{
//if current active window is NOT desktop or shell
if (!(hWnd.Equals(HWND_DESKTOP) || hWnd.Equals(HWND_SHELL)))
@ -98,7 +98,7 @@ namespace Flow.Launcher.Helper
{
IntPtr hWndDesktop = FindWindowEx(hWnd, IntPtr.Zero, "SHELLDLL_DefView", null);
hWndDesktop = FindWindowEx(hWndDesktop, IntPtr.Zero, "SysListView32", "FolderView");
if (hWndDesktop != null && !hWndDesktop.Equals(IntPtr.Zero))
if (!hWndDesktop.Equals(IntPtr.Zero))
{
return false;
}
@ -160,4 +160,4 @@ namespace Flow.Launcher.Helper
public int Bottom;
}
}
}
}

View file

@ -65,11 +65,11 @@ namespace Flow.Launcher
{
await Task.Delay(500, token);
if (!token.IsCancellationRequested)
await SetHotkey(hotkeyModel);
await SetHotkeyAsync(hotkeyModel);
});
}
public async Task SetHotkey(HotkeyModel keyModel, bool triggerValidate = true)
public async Task SetHotkeyAsync(HotkeyModel keyModel, bool triggerValidate = true)
{
CurrentHotkey = keyModel;
@ -101,9 +101,9 @@ namespace Flow.Launcher
}
}
public void SetHotkey(string keyStr, bool triggerValidate = true)
public Task SetHotkeyAsync(string keyStr, bool triggerValidate = true)
{
SetHotkey(new HotkeyModel(keyStr), triggerValidate);
return SetHotkeyAsync(new HotkeyModel(keyStr), triggerValidate);
}
private bool CheckHotkeyAvailability() => HotKeyMapper.CheckAvailability(CurrentHotkey);
@ -116,4 +116,4 @@ namespace Flow.Launcher
tbMsg.Foreground = tbMsgForegroundColorOriginal;
}
}
}
}

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Start Flow Launcher ved system start</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Skjul Flow Launcher ved mistet fokus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Vis ikke notifikationer om nye versioner</system:String>
<system:String x:Key="rememberLastLocation">Husk seneste position</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portabler Modus</system:String>
<system:String x:Key="portableModeToolTIp">Speichern Sie alle Einstellungen und Benutzerdaten in einem Ordner (nützlich bei Verwendung mit Wechseldatenträgern oder Clouddiensten).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Starte Flow Launcher bei Systemstart</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Verstecke Flow Launcher wenn der Fokus verloren geht</system:String>
<system:String x:Key="dontPromptUpdateMsg">Zeige keine Nachricht wenn eine neue Version vorhanden ist</system:String>
<system:String x:Key="rememberLastLocation">Merke letzte Ausführungsposition</system:String>

View file

@ -30,6 +30,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Start Flow Launcher on system startup</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Hide Flow Launcher when focus is lost</system:String>
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
<system:String x:Key="rememberLastLocation">Remember last launch location</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Modo portable</system:String>
<system:String x:Key="portableModeToolTIp">Almacena todos los ajustes y datos de usuario en una sola carpeta (útil cuando se utiliza con unidades extraíbles o servicios en la nube).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Iniciar Flow Launcher al arrancar el sistema</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierde el enfoque</system:String>
<system:String x:Key="dontPromptUpdateMsg">No mostrar notificaciones de nuevas versiones</system:String>
<system:String x:Key="rememberLastLocation">Recordar última ubicación de inicio</system:String>

View file

@ -7,7 +7,7 @@
<system:String x:Key="setAsTopMostInThisQuery">Establecer como primer resultado en esta consulta</system:String>
<system:String x:Key="cancelTopMostInThisQuery">Cancelar como primer resultado en esta consulta</system:String>
<system:String x:Key="executeQuery">Ejecutar consulta: {0}</system:String>
<system:String x:Key="lastExecuteTime">Fecha de última ejecución: {0}</system:String>
<system:String x:Key="lastExecuteTime">Hora de la última ejecución: {0}</system:String>
<system:String x:Key="iconTrayOpen">Abrir</system:String>
<system:String x:Key="iconTraySettings">Configuración</system:String>
<system:String x:Key="iconTrayAbout">Acerca de</system:String>
@ -20,7 +20,7 @@
<system:String x:Key="folderTitle">Carpeta</system:String>
<system:String x:Key="textTitle">Texto</system:String>
<system:String x:Key="GameMode">Modo Juego</system:String>
<system:String x:Key="GameModeToolTip">Suspender el uso de atajos de teclado.</system:String>
<system:String x:Key="GameModeToolTip">Suspende el uso de atajos de teclado.</system:String>
<!-- Setting General -->
<system:String x:Key="flowlauncher_settings">Configuración de Flow Launcher</system:String>
@ -28,22 +28,23 @@
<system:String x:Key="portableMode">Modo Portable</system:String>
<system:String x:Key="portableModeToolTIp">Guarda toda la configuración y datos de usuario en una carpeta (Útil cuando se utiliza con unidades extraíbles o servicios en la nube).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Cargar Flow Launcher al iniciar el sistema</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierda el foco</system:String>
<system:String x:Key="setAutoStartFailed">Error de configuración de arranque al iniciar</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher cuando se pierde el foco</system:String>
<system:String x:Key="dontPromptUpdateMsg">No mostrar notificaciones de nuevas versiones</system:String>
<system:String x:Key="rememberLastLocation">Recordar última posición de Flow Launcher</system:String>
<system:String x:Key="language">Idioma</system:String>
<system:String x:Key="lastQueryMode">Estilo de la última consulta</system:String>
<system:String x:Key="lastQueryModeToolTip">Muestra/Oculta resultados anteriores cuando Flow Launcher es reactivado.</system:String>
<system:String x:Key="LastQueryPreserved">Conservar la última consulta</system:String>
<system:String x:Key="LastQueryPreserved">Mantener la última consulta</system:String>
<system:String x:Key="LastQuerySelected">Seleccionar la última consulta</system:String>
<system:String x:Key="LastQueryEmpty">Limpiar la última consulta</system:String>
<system:String x:Key="maxShowResults">Número máximo de resultados mostrados</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorar atajos de teclado en modo pantalla completa</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Desactiva Flow Launcher cuando una aplicación de pantalla completa está activa (Recomendado para juegos).</system:String>
<system:String x:Key="defaultFileManager">Administrador de archivos por defecto</system:String>
<system:String x:Key="defaultFileManager">Administrador de archivos predeterminado</system:String>
<system:String x:Key="defaultFileManagerToolTip">Selecciona el administrador de archivos que se desea utilizar para abrir la carpeta.</system:String>
<system:String x:Key="defaultBrowser">Navegador web por defecto</system:String>
<system:String x:Key="defaultBrowserToolTip">Configura navegador, nueva pestaña, nueva ventana, modo privado.</system:String>
<system:String x:Key="defaultBrowser">Navegador web predeterminado</system:String>
<system:String x:Key="defaultBrowserToolTip">Configuración para Nueva Pestaña, Nueva Ventana, Modo Privado.</system:String>
<system:String x:Key="pythonDirectory">Carpeta de Python</system:String>
<system:String x:Key="autoUpdates">Actualización automática</system:String>
<system:String x:Key="selectPythonDirectory">Seleccionar</system:String>
@ -51,12 +52,12 @@
<system:String x:Key="hideNotifyIcon">Ocultar icono de la bandeja del sistema</system:String>
<system:String x:Key="querySearchPrecision">Precisión en la búsqueda de consultas</system:String>
<system:String x:Key="querySearchPrecisionToolTip">Cambia la puntuación mínima requerida para la coincidencia de los resultados.</system:String>
<system:String x:Key="ShouldUsePinyin">Debe utilizar Pinyin</system:String>
<system:String x:Key="ShouldUsePinyin">Utilizar Pinyin</system:String>
<system:String x:Key="ShouldUsePinyinToolTip">Permite utilizar Pinyin para la búsqueda. Pinyin es el sistema estándar de ortografía romanizado para traducir chino</system:String>
<system:String x:Key="shadowEffectNotAllowed">El efecto de sombra no está permitido mientras el tema actual tenga el efecto de desenfoque activado</system:String>
<!-- Setting Plugin -->
<system:String x:Key="plugin">Complementos</system:String>
<system:String x:Key="plugin">Complemento</system:String>
<system:String x:Key="browserMorePlugins">Buscar más complementos</system:String>
<system:String x:Key="enable">Activado</system:String>
<system:String x:Key="disable">Desactivado</system:String>
@ -64,11 +65,11 @@
<system:String x:Key="actionKeywords">Palabra clave de acción</system:String>
<system:String x:Key="currentActionKeywords">Palabra clave de acción actual</system:String>
<system:String x:Key="newActionKeyword">Nueva palabra clave de acción</system:String>
<system:String x:Key="actionKeywordsTooltip">Cambiar palabras clave de acción</system:String>
<system:String x:Key="actionKeywordsTooltip">Cambia las palabras clave de acción</system:String>
<system:String x:Key="currentPriority">Prioridad actual</system:String>
<system:String x:Key="newPriority">Nueva prioridad</system:String>
<system:String x:Key="priority">Prioridad</system:String>
<system:String x:Key="pluginDirectory">Directorio de complementos</system:String>
<system:String x:Key="pluginDirectory">Carpeta de complementos</system:String>
<system:String x:Key="author">por</system:String>
<system:String x:Key="plugin_init_time">Tiempo de inicio:</system:String>
<system:String x:Key="plugin_query_time">Tiempo de consulta:</system:String>
@ -86,12 +87,12 @@
<system:String x:Key="browserMoreThemes">Galería de temas</system:String>
<system:String x:Key="howToCreateTheme">Cómo crear un tema</system:String>
<system:String x:Key="hiThere">Hola</system:String>
<system:String x:Key="queryBoxFont">Fuente del cuadro de consulta</system:String>
<system:String x:Key="resultItemFont">Fuente de los resultados</system:String>
<system:String x:Key="windowMode">Modo ventana</system:String>
<system:String x:Key="queryBoxFont">Fuente del texto del cuadro de consulta</system:String>
<system:String x:Key="resultItemFont">Fuente del texto de los resultados</system:String>
<system:String x:Key="windowMode">Modo Ventana</system:String>
<system:String x:Key="opacity">Opacidad</system:String>
<system:String x:Key="theme_load_failure_path_not_exists">El tema {0} no existe, activando el tema por defecto</system:String>
<system:String x:Key="theme_load_failure_parse_error">Fallo al cargar el tema {0}, activando el tema por defecto</system:String>
<system:String x:Key="theme_load_failure_parse_error">Fallo al cargar el tema {0}, activando el tema predeterminado</system:String>
<system:String x:Key="ThemeFolder">Carpeta de temas</system:String>
<system:String x:Key="OpenThemeFolder">Abrir carpeta de temas</system:String>
<system:String x:Key="ColorScheme">Esquema de colores</system:String>
@ -101,28 +102,28 @@
<system:String x:Key="SoundEffect">Efecto de sonido</system:String>
<system:String x:Key="SoundEffectTip">Reproduce un pequeño sonido cuando se abre el cuadro de búsqueda</system:String>
<system:String x:Key="Animation">Animación</system:String>
<system:String x:Key="AnimationTip">Utiliza animación en la Interfaz de Usuario</system:String>
<system:String x:Key="AnimationTip">Usar animación en la Interfaz de Usuario</system:String>
<!-- Setting Hotkey -->
<system:String x:Key="hotkey">Atajos de teclado</system:String>
<system:String x:Key="hotkey">Atajo de teclado</system:String>
<system:String x:Key="flowlauncherHotkey">Atajo de teclado de Flow Launcher</system:String>
<system:String x:Key="flowlauncherHotkeyToolTip">Introduzca el atajo de teclado para mostrar/ocultar Flow Launcher.</system:String>
<system:String x:Key="openResultModifiers">Tecla modificadora para abrir resultado</system:String>
<system:String x:Key="openResultModifiersToolTip">Seleccione una tecla modificadora para abrir el resultado seleccionado con el teclado.</system:String>
<system:String x:Key="showOpenResultHotkey">Mostrar atajo de teclado</system:String>
<system:String x:Key="showOpenResultHotkeyToolTip">Muestra atajo de teclado de selección junto a los resultados.</system:String>
<system:String x:Key="customQueryHotkey">Atajos de teclado de consulta personalizada</system:String>
<system:String x:Key="customQueryHotkey">Atajo de teclado de consulta personalizada</system:String>
<system:String x:Key="customQuery">Consulta</system:String>
<system:String x:Key="delete">Borrar</system:String>
<system:String x:Key="delete">Eliminar</system:String>
<system:String x:Key="edit">Editar</system:String>
<system:String x:Key="add">Añadir</system:String>
<system:String x:Key="pleaseSelectAnItem">Por favor, seleccione un elemento</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">¿Está seguro que desea eliminar el atajo de teclado del complemento {0}?</system:String>
<system:String x:Key="queryWindowShadowEffect">Efecto de sombra de ventana</system:String>
<system:String x:Key="queryWindowShadowEffect">Efecto de sombra de la ventana de consultas</system:String>
<system:String x:Key="shadowEffectCPUUsage">El efecto de sombra hace un uso sustancial de la GPU. No se recomienda para ordenadores de rendimiento limitado.</system:String>
<system:String x:Key="windowWidthSize">Tamaño de ancho de ventana</system:String>
<system:String x:Key="useGlyphUI">Utilizar iconos Segoe Fluent</system:String>
<system:String x:Key="useGlyphUIEffect">Utiliza iconos Segoe Fluent para los resultados de la consulta cuando sean compatible</system:String>
<system:String x:Key="windowWidthSize">Tamaño del ancho de la ventana</system:String>
<system:String x:Key="useGlyphUI">Usar iconos Segoe Fluent</system:String>
<system:String x:Key="useGlyphUIEffect">Usa iconos Segoe Fluent para los resultados de la consulta cuando sean compatibles</system:String>
<!-- Setting Proxy -->
<system:String x:Key="proxy">Proxy HTTP</system:String>
@ -133,46 +134,46 @@
<system:String x:Key="password">Contraseña</system:String>
<system:String x:Key="testProxy">Probar proxy</system:String>
<system:String x:Key="save">Guardar</system:String>
<system:String x:Key="serverCantBeEmpty">El campo servidor no puede estar vacío</system:String>
<system:String x:Key="serverCantBeEmpty">El campo del servidor no puede estar vacío</system:String>
<system:String x:Key="portCantBeEmpty">El campo puerto no puede estar vacío</system:String>
<system:String x:Key="invalidPortFormat">Formato de puerto incorrecto</system:String>
<system:String x:Key="invalidPortFormat">Formato de puerto no válido</system:String>
<system:String x:Key="saveProxySuccessfully">Configuración del proxy guardada correctamente</system:String>
<system:String x:Key="proxyIsCorrect">Proxy configurado correctamente</system:String>
<system:String x:Key="proxyConnectFailed">Conexión con el proxy fallida</system:String>
<system:String x:Key="proxyConnectFailed">La conexión con el proxy ha fallado</system:String>
<!-- Setting About -->
<system:String x:Key="about">Acerca de</system:String>
<system:String x:Key="website">Sitio web</system:String>
<system:String x:Key="github">GitHub</system:String>
<system:String x:Key="docs">Docs</system:String>
<system:String x:Key="docs">Documentación</system:String>
<system:String x:Key="version">Versión</system:String>
<system:String x:Key="about_activate_times">Has activado Flow Launcher {0} veces</system:String>
<system:String x:Key="about_activate_times">Ha activado Flow Launcher {0} veces</system:String>
<system:String x:Key="checkUpdates">Buscar actualizaciones</system:String>
<system:String x:Key="newVersionTips">La nueva versión {0} está disponible, ¿desea reiniciar Flow Launcher para actualizar?</system:String>
<system:String x:Key="checkUpdatesFailed">Falló la comprobación de actualizaciones, compruebe su conexión y cambie la configuración de proxy a api.github.com.</system:String>
<system:String x:Key="checkUpdatesFailed">La comprobación de las actualizaciones ha fallado, por favor, compruebe la configuración de su proxy y conexión a api.github.com.</system:String>
<system:String x:Key="downloadUpdatesFailed">
Falló la descarga de actualizaciones, por favor compruebe su conexión y cambie el proxy a github-cloud.s3.amazonaws.com,
o vaya a https://github.com/Flow-Launcher/Flow.Launcher/releases para descargar actualizaciones manualmente.
La descarga de las actualizaciones ha fallado, por favor, compruebe la configuración de su proxy y conexión a github-cloud.s3.amazonaws.com,
o diríjase a https://github.com/Flow-Launcher/Flow.Launcher/releases para descargar actualizaciones manualmente.
</system:String>
<system:String x:Key="releaseNotes">Notas de la versión</system:String>
<system:String x:Key="documentation">Consejos de uso</system:String>
<system:String x:Key="devtool">Herramientas de desarrolador</system:String>
<system:String x:Key="settingfolder">Carpeta de configuración</system:String>
<system:String x:Key="logfolder">Carpeta de logs</system:String>
<system:String x:Key="logfolder">Carpeta de registros</system:String>
<system:String x:Key="welcomewindow">Asistente</system:String>
<!-- FileManager Setting Dialog -->
<system:String x:Key="fileManagerWindow">Seleccionar administrador de archivos</system:String>
<system:String x:Key="fileManager_tips">Por favor, especifique la ubicación del administrador de archivos que desea utilizar y añada argumentos si es necesario. El argumento por defecto es &quot;%d&quot;, introduciendo una ruta en esa ubicación. Por ejemplo, si se requiere un comando como &quot;totalcmd.exe /A c:\windows&quot;, el argumento es /A &quot;%d&quot;.</system:String>
<system:String x:Key="fileManager_tips2">&quot;%f&quot; es un argumento que representa la ruta del archivo. Se utiliza para especificar el nombre de archivo/carpeta al abrir una ubicación específica con administradores de archivos de terceros. Este argumento sólo está disponible en el elemento &quot;Arg para archivo&quot;. Si el administrador de archivos no tiene esa función, puede utilizar &quot;%d&quot;.</system:String>
<system:String x:Key="fileManager_tips2">&quot;%f&quot; es un argumento que representa la ruta del archivo. Se utiliza para especificar el nombre de archivo/carpeta al abrir una ubicación específica con administradores de archivos de terceros. Este argumento sólo está disponible en el elemento &quot;Argumentos del archivo&quot;. Si el administrador de archivos no tiene esa función, puede utilizar &quot;%d&quot;.</system:String>
<system:String x:Key="fileManager_name">Administrador de archivos</system:String>
<system:String x:Key="fileManager_profile_name">Nombre de perfil</system:String>
<system:String x:Key="fileManager_profile_name">Nombre del perfil</system:String>
<system:String x:Key="fileManager_path">Ruta del administrador de archivos</system:String>
<system:String x:Key="fileManager_directory_arg">Arg para la carpeta</system:String>
<system:String x:Key="fileManager_file_arg">Arg para archivo</system:String>
<system:String x:Key="fileManager_directory_arg">Argumentos de la carpeta</system:String>
<system:String x:Key="fileManager_file_arg">Argumentos del archivo</system:String>
<!-- DefaultBrowser Setting Dialog -->
<system:String x:Key="defaultBrowserTitle">Navegador web por defecto</system:String>
<system:String x:Key="defaultBrowserTitle">Navegador web predeterminado</system:String>
<system:String x:Key="defaultBrowser_tips">La configuración por defecto utiliza el navegador predeterminado del sistema operativo. Si se indica uno específicamente, Flow Launcher utilizará este otro navegador.</system:String>
<system:String x:Key="defaultBrowser_name">Navegador</system:String>
<system:String x:Key="defaultBrowser_profile_name">Nombre del navegador</system:String>
@ -182,27 +183,27 @@
<system:String x:Key="defaultBrowser_parameter">Modo privado</system:String>
<!-- Priority Setting Dialog -->
<system:String x:Key="changePriorityWindow">Cambiar prioridad</system:String>
<system:String x:Key="priority_tips">A mayor número, más alto aparecerá el resultado. Intentalo con 5. Si quieres que los resultados aparezcan más abajo que los de cualquier otro complemento, usa un número negativo</system:String>
<system:String x:Key="invalidPriority">¡Por favor, proporcione un entero válido para la prioridad!</system:String>
<system:String x:Key="changePriorityWindow">Cambiar la prioridad</system:String>
<system:String x:Key="priority_tips">A mayor número, más alto aparecerá el resultado. Inténtelo con 5. Si quiere que los resultados aparezcan más abajo que los de cualquier otro complemento, utilice un número negativo</system:String>
<system:String x:Key="invalidPriority">¡Por favor, proporcione un número entero válido para la prioridad!</system:String>
<!-- Action Keyword Setting Dialog -->
<system:String x:Key="oldActionKeywords">Palabra clave de acción antigua</system:String>
<system:String x:Key="newActionKeywords">Palabra clave de acción nueva</system:String>
<system:String x:Key="oldActionKeywords">Antigua palabra clave de acción</system:String>
<system:String x:Key="newActionKeywords">Nueva palabra clave de acción</system:String>
<system:String x:Key="cancel">Cancelar</system:String>
<system:String x:Key="done">Aceptar</system:String>
<system:String x:Key="cannotFindSpecifiedPlugin">No se puede encontrar el complemento especificado</system:String>
<system:String x:Key="newActionKeywordsCannotBeEmpty">La nueva palabra clave de acción no puede estar vacía</system:String>
<system:String x:Key="newActionKeywordsHasBeenAssigned">Esta nueva palabra clave de acción ya está asignada a otro complemento, por favor elija una diferente</system:String>
<system:String x:Key="success">Éxito</system:String>
<system:String x:Key="completedSuccessfully">Completado correctamente</system:String>
<system:String x:Key="actionkeyword_tips">Introduce la palabra clave que deseas utilizar para iniciar el complemento. Utiliza * si no deseas especificar ninguna, y el complemento se activará sin ninguna palabra clave.</system:String>
<system:String x:Key="success">Correcto</system:String>
<system:String x:Key="completedSuccessfully">Finalizado correctamente</system:String>
<system:String x:Key="actionkeyword_tips">Introduzca la palabra clave que desea utilizar para iniciar el complemento. Utilice * si no desea especificar ninguna, y el complemento se activará sin ninguna palabra clave.</system:String>
<!-- Custom Query Hotkey Dialog -->
<system:String x:Key="customeQueryHotkeyTitle">Atajos de búsqueda personalizada</system:String>
<system:String x:Key="customeQueryHotkeyTips">Presione el atajo de teclado personalizado para iniciar automáticamente la búsqueda especificada.</system:String>
<system:String x:Key="customeQueryHotkeyTitle">Atajo de teclado de consulta personalizada</system:String>
<system:String x:Key="customeQueryHotkeyTips">Pulse el atajo de teclado personalizado para insertar automáticamente la consulta especificada.</system:String>
<system:String x:Key="preview">Vista previa</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">El atajo de teclado no está disponible, por favor selecciona uno nuevo</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">El atajo de teclado no está disponible, por favor seleccione uno nuevo</system:String>
<system:String x:Key="invalidPluginHotkey">Atajo de teclado de complemento no válido</system:String>
<system:String x:Key="update">Actualizar</system:String>
@ -211,57 +212,57 @@
<!-- Crash Reporter -->
<system:String x:Key="reportWindow_version">Versión</system:String>
<system:String x:Key="reportWindow_time">Fecha</system:String>
<system:String x:Key="reportWindow_reproduce">Por favor, díganos cómo falló la aplicación para que podamos arreglarla</system:String>
<system:String x:Key="reportWindow_time">Hora</system:String>
<system:String x:Key="reportWindow_reproduce">Por favor, informe del fallo de la aplicación para poder solucionarlo</system:String>
<system:String x:Key="reportWindow_send_report">Enviar informe</system:String>
<system:String x:Key="reportWindow_cancel">Cancelar</system:String>
<system:String x:Key="reportWindow_general">General</system:String>
<system:String x:Key="reportWindow_exceptions">Excepciones</system:String>
<system:String x:Key="reportWindow_exception_type">Tipo de excepción</system:String>
<system:String x:Key="reportWindow_source">Origen</system:String>
<system:String x:Key="reportWindow_stack_trace">Traza de Pila</system:String>
<system:String x:Key="reportWindow_stack_trace">Rastreo de Pila</system:String>
<system:String x:Key="reportWindow_sending">Enviando</system:String>
<system:String x:Key="reportWindow_report_succeed">Informe enviado correctamente</system:String>
<system:String x:Key="reportWindow_report_failed">No se pudo enviar el informe</system:String>
<system:String x:Key="reportWindow_report_failed">No se ha podido enviar el informe</system:String>
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Flow Launcher ha tenido un error</system:String>
<!-- General Notice -->
<system:String x:Key="pleaseWait">Por favor, espera...</system:String>
<system:String x:Key="pleaseWait">Por favor espere...</system:String>
<!-- update -->
<system:String x:Key="update_flowlauncher_update_check">Comprobando actualizaciones</system:String>
<system:String x:Key="update_flowlauncher_already_on_latest">Ya tienes la versión más reciente de Flow Launcher</system:String>
<system:String x:Key="update_flowlauncher_already_on_latest">Ya tiene la última versión de Flow Launcher</system:String>
<system:String x:Key="update_flowlauncher_update_found">Actualización encontrada</system:String>
<system:String x:Key="update_flowlauncher_updating">Actualizando...</system:String>
<system:String x:Key="update_flowlauncher_fail_moving_portable_user_profile_data">
Flow Launcher no pudo migrar los datos de su perfil de usuario de la antigua versión a la nueva.
Por favor, mueve manualmente la carpeta de datos de tu perfil de {0} a {1}
Flow Launcher no pudo mover sus datos de perfil de usuario a la nueva versión de actualización.
Por favor, mueva manualmente la carpeta de datos de su perfil de {0} a {1}
</system:String>
<system:String x:Key="update_flowlauncher_new_update">Nueva actualización</system:String>
<system:String x:Key="update_flowlauncher_update_new_version_available">La nueva versión {0} de Flow Launcher está disponible</system:String>
<system:String x:Key="update_flowlauncher_update_error">Ocurrió un error mientras se trataba de actualizar</system:String>
<system:String x:Key="update_flowlauncher_update_error">Se ha producido un error al intentar instalar actualizaciones de software</system:String>
<system:String x:Key="update_flowlauncher_update">Actualizar</system:String>
<system:String x:Key="update_flowlauncher_update_cancel">Cancelar</system:String>
<system:String x:Key="update_flowlauncher_fail">Actualización fallida</system:String>
<system:String x:Key="update_flowlauncher_check_connection">Compruebe su conexión e intente cambiar la configuración del proxy a github-cloud.s3.amazonaws.com.</system:String>
<system:String x:Key="update_flowlauncher_fail">La actualización ha fallado</system:String>
<system:String x:Key="update_flowlauncher_check_connection">Compruebe su conexión e intente actualizar la configuración del proxy a github-cloud.s3.amazonaws.com.</system:String>
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Esta actualización reiniciará Flow Launcher</system:String>
<system:String x:Key="update_flowlauncher_update_update_files">Los siguientes archivos serán actualizados</system:String>
<system:String x:Key="update_flowlauncher_update_update_files">Se actualizarán los siguientes archivos</system:String>
<system:String x:Key="update_flowlauncher_update_files">Actualizar archivos</system:String>
<system:String x:Key="update_flowlauncher_update_update_description">Modificar descripción</system:String>
<system:String x:Key="update_flowlauncher_update_update_description">Actualizar descripción</system:String>
<!-- Welcome Window -->
<system:String x:Key="Skip">Omitir</system:String>
<system:String x:Key="Welcome_Page1_Title">Bienvenido a Flow Launcher</system:String>
<system:String x:Key="Welcome_Page1_Text01">Hola, ¡es la primera vez que ejecuta Flow Launcher!</system:String>
<system:String x:Key="Welcome_Page1_Text01">Hola, ¡Esta es la primera vez que ejecuta Flow Launcher!</system:String>
<system:String x:Key="Welcome_Page1_Text02">Antes de empezar, este asistente le ayudará a configurar Flow Launcher. Puede omitirlo si lo desea. Por favor, elija un idioma</system:String>
<system:String x:Key="Welcome_Page2_Title">Busque y ejecute archivos y aplicaciones en el equipo</system:String>
<system:String x:Key="Welcome_Page2_Title">Busque y ejecute todos los archivos y aplicaciones del equipo</system:String>
<system:String x:Key="Welcome_Page2_Text01">Busque todo, desde aplicaciones, archivos, marcadores, YouTube, Twitter y más. Todo desde la comodidad del teclado y sin tener que tocar el ratón.</system:String>
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher se inicia con el atajo de teclado que se muestra a continuación, anímese y pruébelo ahora. Para cambiarlo, haga clic en la caja de texto y presione la nueva combinación de teclas.</system:String>
<system:String x:Key="Welcome_Page3_Title">Atajos de teclado</system:String>
<system:String x:Key="Welcome_Page4_Title">Palabra clave de acción y comandos</system:String>
<system:String x:Key="Welcome_Page4_Text01">Busque en la web, inicie aplicaciones o ejecute diversas funciones mediante los complementos de Flow Launcher. Algunas funciones comienzan con una palabra clave de acción y, si es necesario, pueden utilizarse sin ellas. Pruebe las siguientes consultas en Flow Launcher.</system:String>
<system:String x:Key="Welcome_Page5_Title">Iniciemos Flow Launcher</system:String>
<system:String x:Key="Welcome_Page5_Text01">Finalizado. Disfrute de Flow Launcher. No olvide utilizar el atajo de teclado para iniciar :)</system:String>
<system:String x:Key="Welcome_Page5_Text01">Terminado. Disfruta de Flow Launcher. No olvides el atajo de teclado para empezar :)</system:String>
<!-- General Guide & Hotkey -->
@ -270,15 +271,15 @@
<system:String x:Key="HotkeyShiftEnterDesc">Abrir menú contextual</system:String>
<system:String x:Key="HotkeyCtrlEnterDesc">Abrir carpeta contenedora</system:String>
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Ejecutar como administrador</system:String>
<system:String x:Key="HotkeyCtrlHDesc">Historial de búsquedas</system:String>
<system:String x:Key="HotkeyCtrlHDesc">Historial de consultas</system:String>
<system:String x:Key="HotkeyESCDesc">Volver al resultado en menú contextual</system:String>
<system:String x:Key="HotkeyTabDesc">Autocompletar</system:String>
<system:String x:Key="HotkeyRunDesc">Abrir / Ejecutar elemento seleccionado</system:String>
<system:String x:Key="HotkeyCtrlIDesc">Abrir ventana de configuración</system:String>
<system:String x:Key="HotkeyF5Desc">Refrescar datos del complemento</system:String>
<system:String x:Key="HotkeyF5Desc">Recargar datos del complemento</system:String>
<system:String x:Key="RecommendWeather">El tiempo</system:String>
<system:String x:Key="RecommendWeatherDesc">El tiempo en Google</system:String>
<system:String x:Key="RecommendWeatherDesc">El tiempo en los resultados de Google</system:String>
<system:String x:Key="RecommendShell">&gt; ping 8.8.8.8</system:String>
<system:String x:Key="RecommendShellDesc">Comando de terminal</system:String>
<system:String x:Key="RecommendBluetooth">Bluetooth</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Mode Portable</system:String>
<system:String x:Key="portableModeToolTIp">Stocker tous les paramètres et données utilisateur dans un seul dossier (Pratique en cas d'utilisation de disques amovibles ou de services cloud).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Lancer Flow Launcher au démarrage du système</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Cacher Flow Launcher lors de la perte de focus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Ne pas afficher les notifications lors d'une nouvelle version</system:String>
<system:String x:Key="rememberLastLocation">Se souvenir du dernier emplacement de la fenêtre</system:String>
@ -42,16 +43,16 @@
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Désactiver l'activation de Flow Launcher lorsqu'une application en plein écran est active (Recommandé pour les jeux).</system:String>
<system:String x:Key="defaultFileManager">Gestionnaire de fichiers par défaut</system:String>
<system:String x:Key="defaultFileManagerToolTip">Select the file manager to use when opening the folder.</system:String>
<system:String x:Key="defaultBrowser">Default Web Browser</system:String>
<system:String x:Key="defaultBrowser">Navigateur web par défaut</system:String>
<system:String x:Key="defaultBrowserToolTip">Setting for New Tab, New Window, Private Mode.</system:String>
<system:String x:Key="pythonDirectory">Répertoire de Python</system:String>
<system:String x:Key="autoUpdates">Mettre à jour automatiquement</system:String>
<system:String x:Key="selectPythonDirectory">Sélectionner</system:String>
<system:String x:Key="hideOnStartup">Cacher Flow Launcher au démarrage</system:String>
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
<system:String x:Key="hideNotifyIcon">Masquer icône du plateau</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
<system:String x:Key="querySearchPrecisionToolTip">Changes minimum match score required for results.</system:String>
<system:String x:Key="ShouldUsePinyin">Should Use Pinyin</system:String>
<system:String x:Key="ShouldUsePinyin">Devrait utiliser le pinyin</system:String>
<system:String x:Key="ShouldUsePinyinToolTip">Allows using Pinyin to search. Pinyin is the standard system of romanized spelling for translating Chinese</system:String>
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
@ -173,7 +174,7 @@
<!-- DefaultBrowser Setting Dialog -->
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
<system:String x:Key="defaultBrowser_tips">The default setting follows the OS default browser setting. If specified separately, flow uses that browser.</system:String>
<system:String x:Key="defaultBrowser_name">Browser</system:String>
<system:String x:Key="defaultBrowser_name">Navigateur</system:String>
<system:String x:Key="defaultBrowser_profile_name">Browser Name</system:String>
<system:String x:Key="defaultBrowser_path">Browser Path</system:String>
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
@ -279,9 +280,9 @@
<system:String x:Key="RecommendWeather">Weather</system:String>
<system:String x:Key="RecommendWeatherDesc">Weather in Google Result</system:String>
<system:String x:Key="RecommendShell">&gt; ping 8.8.8.8</system:String>
<system:String x:Key="RecommendShellDesc">Shell Command</system:String>
<system:String x:Key="RecommendShellDesc">Commande Shell</system:String>
<system:String x:Key="RecommendBluetooth">Bluetooth</system:String>
<system:String x:Key="RecommendBluetoothDesc">Bluetooth in Windows Settings</system:String>
<system:String x:Key="RecommendBluetoothDesc">Bluetooth dans les Paramètres de Windows</system:String>
<system:String x:Key="RecommendAcronyms">sn</system:String>
<system:String x:Key="RecommendAcronymsDesc">Sticky Notes</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Avvia Wow all'avvio di Windows</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Nascondi Flow Launcher quando perde il focus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Non mostrare le notifiche per una nuova versione</system:String>
<system:String x:Key="rememberLastLocation">Ricorda l'ultima posizione di avvio del launcher</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">スタートアップ時にFlow Launcherを起動する</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">フォーカスを失った時にFlow Launcherを隠す</system:String>
<system:String x:Key="dontPromptUpdateMsg">最新版が入手可能であっても、アップグレードメッセージを表示しない</system:String>
<system:String x:Key="rememberLastLocation">前回のランチャーの位置を記憶</system:String>

View file

@ -16,9 +16,9 @@
<system:String x:Key="copy">복사하기</system:String>
<system:String x:Key="cut">잘라내기</system:String>
<system:String x:Key="paste">붙여넣기</system:String>
<system:String x:Key="fileTitle">File</system:String>
<system:String x:Key="folderTitle">Folder</system:String>
<system:String x:Key="textTitle">Text</system:String>
<system:String x:Key="fileTitle">파일</system:String>
<system:String x:Key="folderTitle">폴더</system:String>
<system:String x:Key="textTitle">텍스트</system:String>
<system:String x:Key="GameMode">게임 모드</system:String>
<system:String x:Key="GameModeToolTip">단축키 사용을 일시중단합니다.</system:String>
@ -28,6 +28,7 @@
<system:String x:Key="portableMode">포터블 모드</system:String>
<system:String x:Key="portableModeToolTIp">모든 설정이 폴더안에 들어갑니다. USB 드라이브나 클라우드로 사용 가능합니다.</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">시스템 시작 시 Flow Launcher 실행</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">포커스 잃으면 Flow Launcher 숨김</system:String>
<system:String x:Key="dontPromptUpdateMsg">새 버전 알림 끄기</system:String>
<system:String x:Key="rememberLastLocation">마지막 실행 위치 기억</system:String>
@ -85,7 +86,7 @@
<system:String x:Key="theme">테마</system:String>
<system:String x:Key="browserMoreThemes">테마 갤러리</system:String>
<system:String x:Key="howToCreateTheme">테마 제작 안내</system:String>
<system:String x:Key="hiThere">Hi There</system:String>
<system:String x:Key="hiThere">안녕하세요.</system:String>
<system:String x:Key="queryBoxFont">쿼리 상자 글꼴</system:String>
<system:String x:Key="resultItemFont">결과 항목 글꼴</system:String>
<system:String x:Key="windowMode">윈도우 모드</system:String>
@ -177,8 +178,8 @@
<system:String x:Key="defaultBrowser_name">브라우저</system:String>
<system:String x:Key="defaultBrowser_profile_name">브라우저 이름</system:String>
<system:String x:Key="defaultBrowser_path">브라우저 경로</system:String>
<system:String x:Key="defaultBrowser_newWindow">New Window</system:String>
<system:String x:Key="defaultBrowser_newTab">New Tab</system:String>
<system:String x:Key="defaultBrowser_newWindow">새 창</system:String>
<system:String x:Key="defaultBrowser_newTab">새 탭</system:String>
<system:String x:Key="defaultBrowser_parameter">사생활 보호 모드</system:String>
<!-- Priority Setting Dialog -->
@ -243,7 +244,7 @@
<system:String x:Key="update_flowlauncher_update">업데이트</system:String>
<system:String x:Key="update_flowlauncher_update_cancel">취소</system:String>
<system:String x:Key="update_flowlauncher_fail">업데이트 실패</system:String>
<system:String x:Key="update_flowlauncher_check_connection">Check your connection and try updating proxy settings to github-cloud.s3.amazonaws.com.</system:String>
<system:String x:Key="update_flowlauncher_check_connection">연결을 확인하고 프록시 설정을 github-cloud.s3.amazonaws.com으로 업데이트해 보십시오.</system:String>
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">업데이트를 위해 Flow Launcher를 재시작합니다.</system:String>
<system:String x:Key="update_flowlauncher_update_update_files">아래 파일들이 업데이트됩니다.</system:String>
<system:String x:Key="update_flowlauncher_update_files">업데이트 파일</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Start Flow Launcher on system startup</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Hide Flow Launcher when focus is lost</system:String>
<system:String x:Key="dontPromptUpdateMsg">Do not show new version notifications</system:String>
<system:String x:Key="rememberLastLocation">Remember last launch location</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Draagbare Modus</system:String>
<system:String x:Key="portableModeToolTIp">Alle instellingen en gebruikersgegevens opslaan in één map (Nuttig bij het gebruik van verwijderbare schijven of cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Start Flow Launcher als systeem opstart</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Verberg Flow Launcher als focus verloren is</system:String>
<system:String x:Key="dontPromptUpdateMsg">Laat geen nieuwe versie notificaties zien</system:String>
<system:String x:Key="rememberLastLocation">Herinner laatste opstart locatie</system:String>

View file

@ -12,22 +12,23 @@
<system:String x:Key="iconTraySettings">Ustawienia</system:String>
<system:String x:Key="iconTrayAbout">O programie</system:String>
<system:String x:Key="iconTrayExit">Wyjdź</system:String>
<system:String x:Key="closeWindow">Close</system:String>
<system:String x:Key="closeWindow">Zamknij</system:String>
<system:String x:Key="copy">Copy</system:String>
<system:String x:Key="cut">Cut</system:String>
<system:String x:Key="paste">Paste</system:String>
<system:String x:Key="cut">Wytnij</system:String>
<system:String x:Key="paste">Wklej</system:String>
<system:String x:Key="fileTitle">File</system:String>
<system:String x:Key="folderTitle">Folder</system:String>
<system:String x:Key="textTitle">Text</system:String>
<system:String x:Key="GameMode">Game Mode</system:String>
<system:String x:Key="GameModeToolTip">Suspend the use of Hotkeys.</system:String>
<system:String x:Key="GameMode">Tryb grania</system:String>
<system:String x:Key="GameModeToolTip">Wstrzymaj używanie skrótów.</system:String>
<!-- Setting General -->
<system:String x:Key="flowlauncher_settings">Ustawienia Flow Launcher</system:String>
<system:String x:Key="general">Ogólne</system:String>
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="portableMode">Tryb przenośny</system:String>
<system:String x:Key="portableModeToolTIp">Przechowuj wszystkie ustawienia i dane użytkownika w jednym folderze (Przydatne, gdy używane na dyskach wymiennych lub usługach chmurowych).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Uruchamiaj Flow Launcher przy starcie systemu</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ukryj okno Flow Launcher kiedy przestanie ono być aktywne</system:String>
<system:String x:Key="dontPromptUpdateMsg">Nie pokazuj powiadomienia o nowej wersji</system:String>
<system:String x:Key="rememberLastLocation">Zapamiętaj ostatnią pozycję okna</system:String>
@ -39,16 +40,16 @@
<system:String x:Key="LastQueryEmpty">Empty last Query</system:String>
<system:String x:Key="maxShowResults">Maksymalna liczba wyników</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignoruj skróty klawiszowe w trybie pełnego ekranu</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Disable Flow Launcher activation when a full screen application is active (Recommended for games).</system:String>
<system:String x:Key="defaultFileManager">Default File Manager</system:String>
<system:String x:Key="defaultFileManagerToolTip">Select the file manager to use when opening the folder.</system:String>
<system:String x:Key="defaultBrowser">Default Web Browser</system:String>
<system:String x:Key="defaultBrowserToolTip">Setting for New Tab, New Window, Private Mode.</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Wyłącz aktywowanie Flow Launcher, gdy uruchomiona jest aplikacja pełnoekranowa (Zalecane dla gier).</system:String>
<system:String x:Key="defaultFileManager">Domyślny menedżer plików</system:String>
<system:String x:Key="defaultFileManagerToolTip">Wybierz menedżer plików używany do otwierania folderów.</system:String>
<system:String x:Key="defaultBrowser">Domyślna przeglądarka</system:String>
<system:String x:Key="defaultBrowserToolTip">Ustawienie dla nowej karty, nowego okna i trybu prywatnego.</system:String>
<system:String x:Key="pythonDirectory">Folder biblioteki Python</system:String>
<system:String x:Key="autoUpdates">Automatyczne aktualizacje</system:String>
<system:String x:Key="selectPythonDirectory">Wybierz</system:String>
<system:String x:Key="hideOnStartup">Uruchamiaj Flow Launcher zminimalizowany</system:String>
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
<system:String x:Key="hideNotifyIcon">Ukryj ikonę zasobnika</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
<system:String x:Key="querySearchPrecisionToolTip">Changes minimum match score required for results.</system:String>
<system:String x:Key="ShouldUsePinyin">Should Use Pinyin</system:String>
@ -172,7 +173,7 @@
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
<!-- DefaultBrowser Setting Dialog -->
<system:String x:Key="defaultBrowserTitle">Default Web Browser</system:String>
<system:String x:Key="defaultBrowserTitle">Domyślna przeglądarka</system:String>
<system:String x:Key="defaultBrowser_tips">The default setting follows the OS default browser setting. If specified separately, flow uses that browser.</system:String>
<system:String x:Key="defaultBrowser_name">Browser</system:String>
<system:String x:Key="defaultBrowser_profile_name">Browser Name</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Iniciar Flow Launcher com inicialização do sistema</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Esconder Flow Launcher quando foco for perdido</system:String>
<system:String x:Key="dontPromptUpdateMsg">Não mostrar notificações de novas versões</system:String>
<system:String x:Key="rememberLastLocation">Lembrar última localização de lançamento</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Modo portátil</system:String>
<system:String x:Key="portableModeToolTIp">Guardar todas as definições e dados do utilizador numa pasta (indicado se utilizar discos amovíveis ou serviços cloud)</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Iniciar Flow Launcher ao arrancar o sistema</system:String>
<system:String x:Key="setAutoStartFailed">Erro ao definir para iniciar ao arrancar</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Ocultar Flow Launcher ao perder o foco</system:String>
<system:String x:Key="dontPromptUpdateMsg">Não notificar acerca de novas versões</system:String>
<system:String x:Key="rememberLastLocation">Memorizar localização anterior</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Запускать Flow Launcher при запуске системы</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Скрывать Flow Launcher, если потерян фокуc</system:String>
<system:String x:Key="dontPromptUpdateMsg">Не отображать сообщение об обновлении, когда доступна новая версия</system:String>
<system:String x:Key="rememberLastLocation">Запомнить последнее место запуска</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Prenosný režim</system:String>
<system:String x:Key="portableModeToolTIp">Uloží všetky nastavenia a používateľské údaje do jedného priečinka (Užitočné pri vymeniteľných diskoch a cloudových službách).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Spustiť Flow Launcher pri spustení systému</system:String>
<system:String x:Key="setAutoStartFailed">Chybné nastavenie spustenia pri spustení</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Schovať Flow Launcher po strate fokusu</system:String>
<system:String x:Key="dontPromptUpdateMsg">Nezobrazovať upozornenia na novú verziu</system:String>
<system:String x:Key="rememberLastLocation">Zapamätať si posledné umiestnenie</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Pokreni Flow Launcher pri podizanju sistema</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Sakri Flow Launcher kada se izgubi fokus</system:String>
<system:String x:Key="dontPromptUpdateMsg">Ne prikazuj obaveštenje o novoj verziji</system:String>
<system:String x:Key="rememberLastLocation">Zapamti lokaciju poslednjeg pokretanja</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Taşınabilir Mod</system:String>
<system:String x:Key="portableModeToolTIp">Tüm ayarları ve kullanıcı verilerini tek bir klasörde saklayın (Çıkarılabilir sürücüler veya bulut hizmetleri ile kullanıldığında kullanışlıdır).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Flow Launcher'u başlangıçta başlat</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Odak pencereden ayrıldığında Flow Launcher'u gizle</system:String>
<system:String x:Key="dontPromptUpdateMsg">Güncelleme bildirimlerini gösterme</system:String>
<system:String x:Key="rememberLastLocation">Pencere konumunu hatırla</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Портативний режим</system:String>
<system:String x:Key="portableModeToolTIp">Зберігати всі налаштування і дані користувача в одній теці (буде корисно при видаленні дисків або хмарних сервісах).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">Запускати Flow Launcher при запуску системи</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">Сховати Flow Launcher, якщо втрачено фокус</system:String>
<system:String x:Key="dontPromptUpdateMsg">Не повідомляти про доступні нові версії</system:String>
<system:String x:Key="rememberLastLocation">Запам'ятати останнє місце запуску</system:String>

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">便携模式</system:String>
<system:String x:Key="portableModeToolTIp">将所有设置和用户数据存储在一个文件夹中 (可用于可移除驱动器或云服务)。</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">开机自启</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">失去焦点时自动隐藏 Flow Launcher</system:String>
<system:String x:Key="dontPromptUpdateMsg">不显示新版本提示</system:String>
<system:String x:Key="rememberLastLocation">记住上次启动位置</system:String>
@ -39,7 +40,7 @@
<system:String x:Key="LastQueryEmpty">清空上次搜索关键字</system:String>
<system:String x:Key="maxShowResults">最大结果显示个数</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全屏模式下忽略热键</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">当全屏应用程序激活时禁用快捷键。</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">当全屏应用程序激活时禁用快捷键(建议游戏时打开)。</system:String>
<system:String x:Key="defaultFileManager">默认文件管理器</system:String>
<system:String x:Key="defaultFileManagerToolTip">选择打开文件夹时要使用的文件管理器。</system:String>
<system:String x:Key="defaultBrowser">默认浏览器</system:String>
@ -148,7 +149,7 @@
<system:String x:Key="version">版本</system:String>
<system:String x:Key="about_activate_times">你已经激活了 Flow Launcher {0} 次</system:String>
<system:String x:Key="checkUpdates">检查更新</system:String>
<system:String x:Key="newVersionTips">发现新版本 {0} , 请重启 Flow Launcher</system:String>
<system:String x:Key="newVersionTips">发现新版本 {0}, 请重启 Flow Launcher</system:String>
<system:String x:Key="checkUpdatesFailed">下载更新失败,请检查您与 api.github.com 的连接状态或检查代理设置</system:String>
<system:String x:Key="downloadUpdatesFailed">
下载更新失败,请检查您与 github-cloud.s3.amazonaws.com 的连接状态或检查代理设置,

View file

@ -28,6 +28,7 @@
<system:String x:Key="portableMode">Portable Mode</system:String>
<system:String x:Key="portableModeToolTIp">Store all settings and user data in one folder (Useful when used with removable drives or cloud services).</system:String>
<system:String x:Key="startFlowLauncherOnSystemStartup">開機時啟動</system:String>
<system:String x:Key="setAutoStartFailed">Error setting launch on startup</system:String>
<system:String x:Key="hideFlowLauncherWhenLoseFocus">失去焦點時自動隱藏 Flow Launcher</system:String>
<system:String x:Key="dontPromptUpdateMsg">不顯示新版本提示</system:String>
<system:String x:Key="rememberLastLocation">記住上次啟動位置</system:String>
@ -38,7 +39,7 @@
<system:String x:Key="LastQuerySelected">Select last Query</system:String>
<system:String x:Key="LastQueryEmpty">Empty last Query</system:String>
<system:String x:Key="maxShowResults">最大結果顯示個數</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全螢幕模式下忽略鍵</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreen">全螢幕模式下忽略快捷鍵</system:String>
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">全螢幕模式下停用快捷鍵(推薦用於遊戲時)。</system:String>
<system:String x:Key="defaultFileManager">預設檔案管理器</system:String>
<system:String x:Key="defaultFileManagerToolTip">選擇打開資料夾時要使用的檔案管理器。</system:String>
@ -77,7 +78,7 @@
<!-- Setting Plugin Store -->
<system:String x:Key="pluginStore">插件商店</system:String>
<system:String x:Key="pluginStore">外掛商店</system:String>
<system:String x:Key="refresh">重新整理</system:String>
<system:String x:Key="install">安裝</system:String>
@ -117,7 +118,7 @@
<system:String x:Key="edit">編輯</system:String>
<system:String x:Key="add">新增</system:String>
<system:String x:Key="pleaseSelectAnItem">請選擇一項</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">確定要刪除外掛 {0} 的鍵嗎?</system:String>
<system:String x:Key="deleteCustomHotkeyWarning">確定要刪除外掛 {0} 的快捷鍵嗎?</system:String>
<system:String x:Key="queryWindowShadowEffect">查詢窗口陰影效果</system:String>
<system:String x:Key="shadowEffectCPUUsage">陰影效果將佔用大量的 GPU 資源。如果你的電腦效能有限,不建議使用。</system:String>
<system:String x:Key="windowWidthSize">窗口寬度</system:String>
@ -168,8 +169,8 @@
<system:String x:Key="fileManager_name">檔案管理器</system:String>
<system:String x:Key="fileManager_profile_name">檔案名稱</system:String>
<system:String x:Key="fileManager_path">檔案管理器路徑</system:String>
<system:String x:Key="fileManager_directory_arg">Arg For Folder</system:String>
<system:String x:Key="fileManager_file_arg">Arg For File</system:String>
<system:String x:Key="fileManager_directory_arg">資料夾參數</system:String>
<system:String x:Key="fileManager_file_arg">檔案參數</system:String>
<!-- DefaultBrowser Setting Dialog -->
<system:String x:Key="defaultBrowserTitle">預設瀏覽器</system:String>
@ -183,7 +184,7 @@
<!-- Priority Setting Dialog -->
<system:String x:Key="changePriorityWindow">更改優先度</system:String>
<system:String x:Key="priority_tips">數字越大,查詢結過會排在越前面。嘗試將其設定為 5。如果你希望查詢結果低於任何其他插件,請提供負數</system:String>
<system:String x:Key="priority_tips">數字越大,查詢結果會排在越前面。嘗試將其設定為 5。如果你希望查詢結果低於任何其他外掛,請提供負數</system:String>
<system:String x:Key="invalidPriority">請為優先度提供一個有效的整數!</system:String>
<!-- Action Keyword Setting Dialog -->
@ -199,15 +200,15 @@
<system:String x:Key="actionkeyword_tips">如果不想設定觸發關鍵字,可以使用*代替</system:String>
<!-- Custom Query Hotkey Dialog -->
<system:String x:Key="customeQueryHotkeyTitle">自定義鍵查詢</system:String>
<system:String x:Key="customeQueryHotkeyTitle">自定義快捷鍵查詢</system:String>
<system:String x:Key="customeQueryHotkeyTips">Press the custom hotkey to automatically insert the specified query.</system:String>
<system:String x:Key="preview">預覽</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">熱鍵不存在,請設定一個新的熱鍵</system:String>
<system:String x:Key="hotkeyIsNotUnavailable">快捷鍵不存在,請設定一個新的快捷鍵</system:String>
<system:String x:Key="invalidPluginHotkey">外掛熱鍵無法使用</system:String>
<system:String x:Key="update">更新</system:String>
<!-- Hotkey Control -->
<system:String x:Key="hotkeyUnavailable">鍵無法使用</system:String>
<system:String x:Key="hotkeyUnavailable">快捷鍵無法使用</system:String>
<!-- Crash Reporter -->
<system:String x:Key="reportWindow_version">版本</system:String>
@ -254,28 +255,28 @@
<system:String x:Key="Welcome_Page1_Title">歡迎使用 Flow Launcher</system:String>
<system:String x:Key="Welcome_Page1_Text01">你好,這是你第一次運行 Flow Launcher</system:String>
<system:String x:Key="Welcome_Page1_Text02">在開始之前,此嚮導將幫助設定 Flow Launcher。如果你想你可以跳過這個。請選擇一種語言</system:String>
<system:String x:Key="Welcome_Page2_Title">Search and run all files and applications on your PC</system:String>
<system:String x:Key="Welcome_Page2_Text01">Search everything from applications, files, bookmarks, YouTube, Twitter and more. All from the comfort of your keyboard without ever touching the mouse.</system:String>
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher starts with the hotkey below, go ahead and try it out now. To change it, click on the input and press the desired hotkey on the keyboard.</system:String>
<system:String x:Key="Welcome_Page2_Title">在PC上搜尋並執行所有文件和應用程式</system:String>
<system:String x:Key="Welcome_Page2_Text01">只需使用鍵盤搜尋應用程式、文件、書籤、Youtube、Twitter等</system:String>
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher 需要搭配快捷鍵使用,請馬上試試吧! 如果想更改它,請點擊&quot;輸入&quot;並輸入你想要的快捷鍵。</system:String>
<system:String x:Key="Welcome_Page3_Title">快捷鍵</system:String>
<system:String x:Key="Welcome_Page4_Title">Action Keyword and Commands</system:String>
<system:String x:Key="Welcome_Page4_Title">關鍵字與指令</system:String>
<system:String x:Key="Welcome_Page4_Text01">Search the web, launch applications or run various functions through Flow Launcher plugins. Certain functions start with an action keyword, and if necessary, they can be used without action keywords. Try the queries below in Flow Launcher.</system:String>
<system:String x:Key="Welcome_Page5_Title">Let's Start Flow Launcher</system:String>
<system:String x:Key="Welcome_Page5_Text01">Finished. Enjoy Flow Launcher. Don't forget the hotkey to start :)</system:String>
<system:String x:Key="Welcome_Page5_Title">開始使用 Flow Launcher吧!</system:String>
<system:String x:Key="Welcome_Page5_Text01">大功告成! 別忘了使用快捷鍵以開始 :)</system:String>
<!-- General Guide & Hotkey -->
<system:String x:Key="HotkeyUpDownDesc">Back / Context Menu</system:String>
<system:String x:Key="HotkeyUpDownDesc">返回 / 快捷選單</system:String>
<system:String x:Key="HotkeyLeftRightDesc">Item Navigation</system:String>
<system:String x:Key="HotkeyShiftEnterDesc">Open Context Menu</system:String>
<system:String x:Key="HotkeyCtrlEnterDesc">Open Contaning Folder</system:String>
<system:String x:Key="HotkeyShiftEnterDesc">打開選單</system:String>
<system:String x:Key="HotkeyCtrlEnterDesc">開啟檔案位置</system:String>
<system:String x:Key="HotkeyCtrlShiftEnterDesc">以管理員身分執行</system:String>
<system:String x:Key="HotkeyCtrlHDesc">查詢歷史</system:String>
<system:String x:Key="HotkeyESCDesc">Back to Result in Context Menu</system:String>
<system:String x:Key="HotkeyTabDesc">Autocomplete</system:String>
<system:String x:Key="HotkeyRunDesc">Open / Run Selected Item</system:String>
<system:String x:Key="HotkeyCtrlIDesc">開啟視窗設定</system:String>
<system:String x:Key="HotkeyF5Desc">充新載入插件數據</system:String>
<system:String x:Key="HotkeyF5Desc">重新載入外掛資料</system:String>
<system:String x:Key="RecommendWeather">天氣</system:String>
<system:String x:Key="RecommendWeatherDesc">Google 搜索的天氣結果</system:String>

View file

@ -517,6 +517,7 @@ namespace Flow.Launcher
if (specialKeyState.CtrlPressed)
{
if (_viewModel.SelectedIsFromQueryResults()
&& QueryTextBox.Text.Length > 0
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length)
{
var queryWithoutActionKeyword =

View file

@ -18,7 +18,7 @@ namespace Flow.Launcher
}
[System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")]
public static void Show(string title, string subTitle, string iconPath)
public static void Show(string title, string subTitle, string iconPath = null)
{
// Handle notification for win7/8/early win10
if (legacy)
@ -45,4 +45,4 @@ namespace Flow.Launcher
msg.Show(title, subTitle, iconPath);
}
}
}
}

View file

@ -4,4 +4,4 @@ using System.Windows;
[assembly: ThemeInfo(
ResourceDictionaryLocation.None,
ResourceDictionaryLocation.SourceAssembly
)]
)]

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
@ -23,7 +23,6 @@ using System.Runtime.CompilerServices;
using Flow.Launcher.Infrastructure.Logger;
using Flow.Launcher.Infrastructure.Storage;
using System.Collections.Concurrent;
using Flow.Launcher.Plugin.SharedCommands;
using System.Diagnostics;
namespace Flow.Launcher
@ -83,7 +82,7 @@ namespace Flow.Launcher
ImageLoader.Save();
}
public Task ReloadAllPluginData() => PluginManager.ReloadData();
public Task ReloadAllPluginData() => PluginManager.ReloadDataAsync();
public void ShowMsgError(string title, string subTitle = "") =>
ShowMsg(title, subTitle, Constant.ErrorIcon, true);
@ -288,4 +287,4 @@ namespace Flow.Launcher
#endregion
}
}
}

View file

@ -1,4 +1,5 @@
using System;
using Flow.Launcher.Core.ExternalPlugins;
using System;
using System.Diagnostics;
using System.Globalization;
using System.IO;
@ -22,13 +23,34 @@ namespace Flow.Launcher
SetException(exception);
}
private static string GetIssueUrl(string website)
{
if (!website.StartsWith("https://github.com"))
{
return website;
}
if(website.Contains("Flow-Launcher/Flow.Launcher"))
{
return Constant.Issue;
}
var treeIndex = website.IndexOf("tree", StringComparison.Ordinal);
return treeIndex == -1 ? $"{website}/issues/new" : $"{website[..treeIndex]}/issues/new";
}
private void SetException(Exception exception)
{
string path = Log.CurrentLogDirectory;
var directory = new DirectoryInfo(path);
var log = directory.GetFiles().OrderByDescending(f => f.LastWriteTime).First();
var paragraph = Hyperlink("Please open new issue in: ", Constant.Issue);
var websiteUrl = exception switch
{
FlowPluginException pluginException =>GetIssueUrl(pluginException.Metadata.Website),
_ => Constant.Issue
};
var paragraph = Hyperlink("Please open new issue in: ", websiteUrl);
paragraph.Inlines.Add($"1. upload log file: {log.FullName}\n");
paragraph.Inlines.Add($"2. copy below exception message");
ErrorTextbox.Document.Blocks.Add(paragraph);
@ -49,7 +71,10 @@ namespace Flow.Launcher
var paragraph = new Paragraph();
paragraph.Margin = new Thickness(0);
var link = new Hyperlink { IsEnabled = true };
var link = new Hyperlink
{
IsEnabled = true
};
link.Inlines.Add(url);
link.NavigateUri = new Uri(url);
link.RequestNavigate += (s, e) => SearchWeb.OpenInBrowserTab(e.Uri.ToString());
@ -62,4 +87,4 @@ namespace Flow.Launcher
return paragraph;
}
}
}
}

View file

@ -27,7 +27,7 @@ namespace Flow.Launcher.Resources.Pages
tbMsgTextOriginal = HotkeyControl.tbMsg.Text;
tbMsgForegroundColorOriginal = HotkeyControl.tbMsg.Foreground;
HotkeyControl.SetHotkey(new Infrastructure.Hotkey.HotkeyModel(Settings.Hotkey), false);
HotkeyControl.SetHotkeyAsync(new Infrastructure.Hotkey.HotkeyModel(Settings.Hotkey), false);
}
private void HotkeyControl_OnGotFocus(object sender, RoutedEventArgs args)
{

View file

@ -86,7 +86,7 @@
Height="32"
Margin="0,0,0,0"
HorizontalAlignment="Center"
Source="{Binding Image}"
Source="{Binding Image, TargetNullValue={x:Null}}"
Stretch="Uniform"
Visibility="{Binding ShowIcon}" />
</Border>

View file

@ -598,10 +598,8 @@
<TextBlock Style="{DynamicResource SettingTitleLabel}" Text="{DynamicResource startFlowLauncherOnSystemStartup}" />
</StackPanel>
<CheckBox
Checked="OnAutoStartupChecked"
IsChecked="{Binding Settings.StartFlowLauncherOnSystemStartup}"
Style="{DynamicResource SideControlCheckBox}"
Unchecked="OnAutoStartupUncheck" />
IsChecked="{Binding StartFlowLauncherOnSystemStartup}"
Style="{DynamicResource SideControlCheckBox}" />
<TextBlock Style="{StaticResource Glyph}">
&#xe8fc;
</TextBlock>
@ -917,6 +915,7 @@
Padding="0,0,0,0"
Background="{DynamicResource Color01B}">
<ListBox
Name="Plugins"
Width="Auto"
Margin="5,0,0,0"
Padding="0,0,7,0"
@ -927,6 +926,7 @@
ScrollViewer.CanContentScroll="False"
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
SelectedItem="{Binding SelectedPlugin}"
SelectionChanged="SelectedPluginChanged"
SnapsToDevicePixels="True">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
@ -1116,7 +1116,8 @@
Margin="0"
Padding="1"
VerticalAlignment="Stretch"
Content="{Binding SettingControl}" />
Content="{Binding SettingControl}"
SizeChanged="ItemSizeChanged" />
</StackPanel>
<StackPanel>
@ -1126,8 +1127,7 @@
VerticalAlignment="Center"
BorderThickness="0,1,0,0"
CornerRadius="0"
Style="{DynamicResource SettingGroupBox}"
Visibility="{Binding ActionKeywordsVisibility}">
Style="{DynamicResource SettingGroupBox}">
<ItemsControl Style="{DynamicResource SettingGrid}">
<StackPanel
Margin="0,0,-14,0"
@ -1793,7 +1793,8 @@
HorizontalAlignment="Left"
VerticalAlignment="Top"
ItemsSource="{Binding Source={StaticResource SortedFonts}}"
SelectedItem="{Binding SelectedQueryBoxFont}" />
SelectedItem="{Binding SelectedQueryBoxFont}"
IsSynchronizedWithCurrentItem="False" />
<ComboBox
Width="130"
Margin="10,0,0,0"
@ -1843,7 +1844,8 @@
HorizontalAlignment="Left"
VerticalAlignment="Top"
ItemsSource="{Binding Source={StaticResource SortedFonts}}"
SelectedItem="{Binding SelectedResultFont}" />
SelectedItem="{Binding SelectedResultFont}"
IsSynchronizedWithCurrentItem="False" />
<ComboBox
Width="130"
Margin="10,-2,0,0"

View file

@ -1,9 +1,10 @@
using Flow.Launcher.Core.ExternalPlugins;
using Flow.Launcher.Core.ExternalPlugins;
using Flow.Launcher.Core.Plugin;
using Flow.Launcher.Core.Resource;
using Flow.Launcher.Helper;
using Flow.Launcher.Infrastructure;
using Flow.Launcher.Infrastructure.Hotkey;
using Flow.Launcher.Infrastructure.Logger;
using Flow.Launcher.Infrastructure.UserSettings;
using Flow.Launcher.Plugin;
using Flow.Launcher.Plugin.SharedCommands;
@ -13,12 +14,15 @@ using ModernWpf;
using System;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using System.Windows.Interop;
using System.Windows.Media;
using System.Windows.Navigation;
using Button = System.Windows.Controls.Button;
using Control = System.Windows.Controls.Control;
using ListViewItem = System.Windows.Controls.ListViewItem;
using MessageBox = System.Windows.MessageBox;
using TextBox = System.Windows.Controls.TextBox;
using ThemeManager = ModernWpf.ThemeManager;
@ -27,12 +31,9 @@ namespace Flow.Launcher
{
public partial class SettingWindow
{
private const string StartupPath = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
public readonly IPublicAPI API;
private Settings settings;
private SettingWindowViewModel viewModel;
private static MainViewModel mainViewModel;
public SettingWindow(IPublicAPI api, SettingWindowViewModel viewModel)
{
@ -44,6 +45,7 @@ namespace Flow.Launcher
}
#region General
private void OnLoaded(object sender, RoutedEventArgs e)
{
RefreshMaximizeRestoreButton();
@ -54,39 +56,6 @@ namespace Flow.Launcher
hwndTarget.RenderMode = RenderMode.SoftwareOnly;
}
private void OnAutoStartupChecked(object sender, RoutedEventArgs e)
{
SetStartup();
}
private void OnAutoStartupUncheck(object sender, RoutedEventArgs e)
{
RemoveStartup();
}
public static void SetStartup()
{
using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true);
key?.SetValue(Constant.FlowLauncher, Constant.ExecutablePath);
}
private void RemoveStartup()
{
using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true);
key?.DeleteValue(Constant.FlowLauncher, false);
}
public static bool StartupSet()
{
using var key = Registry.CurrentUser.OpenSubKey(StartupPath, true);
var path = key?.GetValue(Constant.FlowLauncher) as string;
if (path != null)
{
return path == Constant.ExecutablePath;
}
return false;
}
private void OnSelectPythonDirectoryClick(object sender, RoutedEventArgs e)
{
var dlg = new FolderBrowserDialog
@ -132,7 +101,7 @@ namespace Flow.Launcher
private void OnHotkeyControlLoaded(object sender, RoutedEventArgs e)
{
HotkeyControl.SetHotkey(viewModel.Settings.Hotkey, false);
_ = HotkeyControl.SetHotkeyAsync(viewModel.Settings.Hotkey, false);
}
private void OnHotkeyControlFocused(object sender, RoutedEventArgs e)
@ -247,6 +216,7 @@ namespace Flow.Launcher
PluginManager.API.OpenDirectory(directory);
}
}
#endregion
#region Proxy
@ -259,7 +229,7 @@ namespace Flow.Launcher
#endregion
private async void OnCheckUpdates(object sender, RoutedEventArgs e)
private void OnCheckUpdates(object sender, RoutedEventArgs e)
{
viewModel.UpdateApp(); // TODO: change to command
}
@ -307,7 +277,7 @@ namespace Flow.Launcher
private void OnExternalPluginInstallClick(object sender, RoutedEventArgs e)
{
if(sender is Button { DataContext: UserPlugin plugin })
if (sender is Button { DataContext: UserPlugin plugin })
{
var pluginsManagerPlugin = PluginManager.GetPluginForId("9f8f9b14-2518-4907-b211-35ab6290dee7");
var actionKeyword = pluginsManagerPlugin.Metadata.ActionKeywords.Count == 0 ? "" : pluginsManagerPlugin.Metadata.ActionKeywords[0];
@ -326,7 +296,7 @@ namespace Flow.Launcher
textBox.MoveFocus(tRequest);
}
private void ColorSchemeSelectedIndexChanged(object sender, EventArgs e)
private void ColorSchemeSelectedIndexChanged(object sender, EventArgs e)
=> ThemeManager.Current.ApplicationTheme = settings.ColorScheme switch
{
Constant.Light => ApplicationTheme.Light,
@ -370,5 +340,13 @@ namespace Flow.Launcher
RefreshMaximizeRestoreButton();
}
private void SelectedPluginChanged(object sender, SelectionChangedEventArgs e)
{
Plugins.ScrollIntoView(Plugins.SelectedItem);
}
private void ItemSizeChanged(object sender, SizeChangedEventArgs e)
{
Plugins.ScrollIntoView(Plugins.SelectedItem);
}
}
}

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
@ -194,37 +194,38 @@ namespace Flow.Launcher.ViewModel
PluginManager.API.OpenUrl("https://github.com/Flow-Launcher/Flow.Launcher/wiki/Flow-Launcher/");
});
OpenSettingCommand = new RelayCommand(_ => { App.API.OpenSettingDialog(); });
OpenResultCommand = new RelayCommand(index =>
OpenResultCommand = new RelayCommand(async index =>
{
var results = SelectedResults;
if (index != null)
{
results.SelectedIndex = int.Parse(index.ToString());
results.SelectedIndex = int.Parse(index.ToString()!);
}
var result = results.SelectedItem?.Result;
if (result != null) // SelectedItem returns null if selection is empty.
if (result == null)
{
bool hideWindow = result.Action != null && result.Action(new ActionContext
{
SpecialKeyState = GlobalHotkey.CheckModifiers()
});
return;
}
var hideWindow = await result.ExecuteAsync(new ActionContext
{
SpecialKeyState = GlobalHotkey.CheckModifiers()
}).ConfigureAwait(false);
if (hideWindow)
{
Hide();
}
if (hideWindow)
{
Hide();
}
if (SelectedIsFromQueryResults())
{
_userSelectedRecord.Add(result);
_history.Add(result.OriginQuery.RawQuery);
}
else
{
SelectedResults = Results;
}
if (SelectedIsFromQueryResults())
{
_userSelectedRecord.Add(result);
_history.Add(result.OriginQuery.RawQuery);
}
else
{
SelectedResults = Results;
}
});
@ -298,16 +299,16 @@ namespace Flow.Launcher.ViewModel
{
Hide();
PluginManager
.ReloadData()
_ = PluginManager
.ReloadDataAsync()
.ContinueWith(_ =>
Application.Current.Dispatcher.Invoke(() =>
{
Notification.Show(
InternationalizationManager.Instance.GetTranslation("success"),
InternationalizationManager.Instance.GetTranslation("completedSuccessfully"),
"");
}))
InternationalizationManager.Instance.GetTranslation("completedSuccessfully")
);
}), TaskScheduler.Default)
.ConfigureAwait(false);
});
}
@ -572,7 +573,7 @@ namespace Flow.Launcher.ViewModel
if (currentCancellationToken.IsCancellationRequested)
return;
var query = QueryBuilder.Build(QueryText.Trim(), PluginManager.NonGlobalPlugins);
var query = QueryBuilder.Build(QueryText, PluginManager.NonGlobalPlugins);
// handle the exclusiveness of plugin using action keyword
RemoveOldQueryResults(query);
@ -664,7 +665,7 @@ namespace Flow.Launcher.ViewModel
private void RemoveOldQueryResults(Query query)
{
if (_lastQuery.ActionKeyword != query.ActionKeyword)
if (_lastQuery?.ActionKeyword != query?.ActionKeyword)
{
Results.Clear();
}
@ -926,4 +927,4 @@ namespace Flow.Launcher.ViewModel
#endregion
}
}
}

View file

@ -5,7 +5,7 @@ namespace Flow.Launcher.ViewModel
{
public class RelayCommand : ICommand
{
private Action<object> _action;
private readonly Action<object> _action;
public RelayCommand(Action<object> action)
{
@ -17,7 +17,9 @@ namespace Flow.Launcher.ViewModel
return true;
}
#pragma warning disable CS0067 // the event is never used
public event EventHandler CanExecuteChanged;
#pragma warning restore CS0067
public virtual void Execute(object parameter)
{

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@ -60,7 +60,30 @@ namespace Flow.Launcher.ViewModel
Settings.AutoUpdates = value;
if (value)
{
UpdateApp();
}
}
}
public bool StartFlowLauncherOnSystemStartup
{
get => Settings.StartFlowLauncherOnSystemStartup;
set
{
Settings.StartFlowLauncherOnSystemStartup = value;
try
{
if (value)
AutoStartup.Enable();
else
AutoStartup.Disable();
}
catch (Exception e)
{
Notification.Show(InternationalizationManager.Instance.GetTranslation("setAutoStartFailed"), e.Message);
}
}
}

View file

@ -3,18 +3,18 @@
<!-- Plugin Info -->
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_name">Marcadores del navegador</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_description">Busca en los marcadores de tu navegador</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_description">Busque en sus marcadores del navegador</system:String>
<!-- Settings -->
<system:String x:Key="flowlauncher_plugin_browserbookmark_bookmarkDataSetting">Datos de marcador</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_openBookmarks">Abrir marcadores en:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newWindow">Nueva ventana</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">Nueva Pestaña</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">Nueva pestaña</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_setBrowserFromPath">Establecer navegador desde ruta:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_choose">Elige</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_title">Copiar enlace</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_subtitle">Copiar enlace del marcador al portapapeles</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_loadBrowserFrom">Iniciar navegador desde:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_choose">Elegir</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_title">Copiar url</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_subtitle">Copia la url del marcador al portapapeles</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_loadBrowserFrom">Cargar navegador desde:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserName">Nombre del navegador</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory">Ruta del directorio de datos</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_addBrowserBookmark">Añadir</system:String>

View file

@ -8,10 +8,10 @@
<!-- Settings -->
<system:String x:Key="flowlauncher_plugin_browserbookmark_bookmarkDataSetting">북마크 데이터</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_openBookmarks">Open bookmarks in:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newWindow">New window</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">New tab</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newWindow">새 창</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">새 탭</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_setBrowserFromPath">Set browser from path:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_choose">Choose</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_choose">선택</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_title">Copy url</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_subtitle">Copy the bookmark's url to clipboard</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_loadBrowserFrom">Load Browser From:</system:String>

View file

@ -7,16 +7,16 @@
<!-- Settings -->
<system:String x:Key="flowlauncher_plugin_browserbookmark_bookmarkDataSetting">書籤資料</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_openBookmarks">Open bookmarks in:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_openBookmarks">載入書籤至:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newWindow">新增視窗</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">新增分頁</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_setBrowserFromPath">Set browser from path:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_setBrowserFromPath">設定瀏覽器路徑:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_choose">選擇</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_title">複製網址</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_subtitle">複製書籤網址</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_loadBrowserFrom">Load Browser From:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_loadBrowserFrom">載入瀏覽器自:</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserName">瀏覽器名稱</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory">Data Directory Path</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory">檔案目錄路徑</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_addBrowserBookmark">新增</system:String>
<system:String x:Key="flowlauncher_plugin_browserbookmark_removeBrowserBookmark">刪除</system:String>
</ResourceDictionary>

View file

@ -4,7 +4,7 @@
<system:String x:Key="flowlauncher_plugin_caculator_plugin_name">Calculadora</system:String>
<system:String x:Key="flowlauncher_plugin_caculator_plugin_description">Permite hacer cálculos matemáticos. (Pruebe 5*3-2 en Flow Launcher)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_not_a_number">No es un número (NaN)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_expression_not_complete">Expresión incorrecta o incompleta (¿Has olvidado algún paréntesis?)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_expression_not_complete">Expresión incorrecta o incompleta (¿Ha olvidado algunos paréntesis?)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_copy_number_to_clipboard">Copiar este número al portapapeles</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator">Separador decimal</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator_help">El separador decimal que se utilizará en la salida.</system:String>

View file

@ -3,13 +3,13 @@
<system:String x:Key="flowlauncher_plugin_caculator_plugin_name">計算機</system:String>
<system:String x:Key="flowlauncher_plugin_caculator_plugin_description">為 Flow Launcher 提供數學計算功能。(試著在 Flow Launcher 輸入 5*3-2)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_not_a_number">Not a number (NaN)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_not_a_number">不是一個數 (NaN)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_expression_not_complete">Expression wrong or incomplete (Did you forget some parentheses?)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_copy_number_to_clipboard">Copy this number to the clipboard</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator">Decimal separator</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_copy_number_to_clipboard">複製此數至剪貼簿</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator">小數點分隔符號</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator_help">The decimal separator to be used in the output.</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_use_system_locale">Use system locale</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_comma">Comma (,)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_dot">Dot (.)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_max_decimal_places">Max. decimal places</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_use_system_locale">使用系統區域設定</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_comma">逗號 (,)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_dot"> (.)</system:String>
<system:String x:Key="flowlauncher_plugin_calculator_max_decimal_places">小數點後最大位數</system:String>
</ResourceDictionary>

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Runtime.InteropServices;
@ -98,7 +98,7 @@ namespace Flow.Launcher.Plugin.Caculator
Clipboard.SetDataObject(newResult);
return true;
}
catch (ExternalException e)
catch (ExternalException)
{
MessageBox.Show("Copy failed, please try later");
return false;

View file

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
@ -204,7 +204,7 @@ namespace Flow.Launcher.Plugin.Explorer
{
try
{
Task.Run(() => ShellCommand.RunAsDifferentUser(record.FullPath.SetProcessStartInfo()));
_ = Task.Run(() => ShellCommand.RunAsDifferentUser(record.FullPath.SetProcessStartInfo()));
}
catch (FileNotFoundException e)
{

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Slet</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Löschen</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Eliminar</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>
@ -29,7 +32,7 @@
<system:String x:Key="plugin_explorer_actionkeywordview_indexsearch">Index Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_quickaccess">Quick Access:</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_current">Current Action Keyword</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_done">Done</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_done">Hecho</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled">Enabled</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled_tooltip">When disabled Flow will not execute this search option, and will additionally revert back to '*' to free up the action keyword</system:String>

View file

@ -2,17 +2,17 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:system="clr-namespace:System;assembly=mscorlib">
<!--Dialogues-->
<system:String x:Key="plugin_explorer_make_selection_warning">Por favor, seleccione primero</system:String>
<system:String x:Key="plugin_explorer_make_selection_warning">Por favor haga una selección primero</system:String>
<system:String x:Key="plugin_explorer_select_folder_link_warning">Por favor, seleccione un enlace de carpeta</system:String>
<system:String x:Key="plugin_explorer_delete_folder_link">¿Estás seguro de que quieres eliminar {0}?</system:String>
<system:String x:Key="plugin_explorer_deletefilefolderconfirm">¿Estás seguro que quieres eliminar permanentemente este {0}?</system:String>
<system:String x:Key="plugin_explorer_delete_folder_link">¿Está seguro que desea eliminar {0}?</system:String>
<system:String x:Key="plugin_explorer_deletefilefolderconfirm">¿Está seguro de que desea eliminar permanentemente este {0}?</system:String>
<system:String x:Key="plugin_explorer_deletefilefoldersuccess">Eliminado correctamente</system:String>
<system:String x:Key="plugin_explorer_deletefilefoldersuccess_detail">El {0} fué eliminado correctamente</system:String>
<system:String x:Key="plugin_explorer_globalActionKeywordInvalid">Asignar una palabra clave para acciones global podría mostrar demasiados resultados en las búsquedas. Por favor, seleccione una palabra clave específica</system:String>
<system:String x:Key="plugin_explorer_quickaccess_globalActionKeywordInvalid">El acceso rápido no puede usar la palabra clave para acciones global cuando está habilitado. Por favor, elija una palabra clave específica</system:String>
<system:String x:Key="plugin_explorer_globalActionKeywordInvalid">Asignar la palabra clave de acción global podría generar demasiados resultados durante la búsqueda. Por favor, elija una palabra clave de acción específica</system:String>
<system:String x:Key="plugin_explorer_quickaccess_globalActionKeywordInvalid">El acceso rápido no puede usar la palabra clave de acción global cuando está habilitado. Por favor, elija una palabra clave específica</system:String>
<system:String x:Key="plugin_explorer_windowsSearchServiceNotRunning">El servicio requerido de indexación de búsqueda de Windows no parece estar ejecutándose</system:String>
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">Para solventarlo, inicia el servicio de búsqueda de Windows. Selecciona aquí para eliminar esta advertencia</system:String>
<system:String x:Key="plugin_explorer_alternative">El mensaje de advertencia se ha desactivado. Como alternativa para buscar archivos y carpetas, ¿te gustaría instalar el complemento Everything?{0}{0}Selecciona 'Sí' para instalar el complemento Everythong, o 'No' para volver</system:String>
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">Para solucionar esto, inicie el servicio de búsqueda de Windows. Seleccione aquí para eliminar esta advertencia</system:String>
<system:String x:Key="plugin_explorer_alternative">El mensaje de advertencia se ha desactivado. Como alternativa para buscar archivos y carpetas, ¿desea instalar el complemento Everything?{0}{0}Seleccione 'Sí' para instalar el complemento Everything, o 'No' para volver</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorador alternativo</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Se ha producido un error durante la búsqueda: {0}</system:String>
@ -23,8 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Personalizar palabras clave de acción</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Enlaces de acceso rápido</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Rutas excluídas del índice de búsqueda</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Utilizar búsqueda indexada para buscar rutas</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Al activar esta opción, los directorios/archivos indexados se mostrarán más rápidamente, pero si un directorio/archivo no está indexado, no se mostrará. Si se ha agregado un directorio/archivo a la Ruta Excluida de Búsqueda por Índice (Index Search Excluded Path), seguirá apareciendo incluso si la opción está activada</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Usar búsqueda indexada para buscar rutas</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Al activar esta opción, los directorios/archivos indexados se mostrarán más rápidamente, pero si un directorio/archivo no está indexado, no se mostrará. Si se ha agregado un directorio/archivo a la ruta de exclusión del índice de búsqueda se seguirá mostrando incluso si la opción está activada</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Opciones de indexación</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Buscar:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Ruta de búsqueda:</system:String>
@ -32,9 +32,9 @@
<system:String x:Key="plugin_explorer_actionkeywordview_indexsearch">Buscar índice:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_quickaccess">Acceso rápido:</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_current">Palabra clave de acción actual</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_done">Listo</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_done">Aceptar</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled">Activado</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled_tooltip">Cuando esté deshabilitado Flow no ejecutará la opción de búsqueda, y además usará '*' para no dejar en uso la palabra clave de la acción</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled_tooltip">Cuando esté desactivado, Flow no ejecutará esta opción de búsqueda, y además volverá a '*' para liberar la palabra clave de acción</system:String>
<!--Plugin Infos-->
<system:String x:Key="plugin_explorer_plugin_name">Explorador</system:String>
@ -45,26 +45,26 @@
<system:String x:Key="plugin_explorer_copyfilefolder">Copiar</system:String>
<system:String x:Key="plugin_explorer_deletefilefolder">Eliminar</system:String>
<system:String x:Key="plugin_explorer_path">Ruta:</system:String>
<system:String x:Key="plugin_explorer_deletefilefolder_subtitle">Eliminar el seleccionado</system:String>
<system:String x:Key="plugin_explorer_deletefilefolder_subtitle">Elimina el seleccionado</system:String>
<system:String x:Key="plugin_explorer_runasdifferentuser">Ejecutar como usuario diferente</system:String>
<system:String x:Key="plugin_explorer_runasdifferentuser_subtitle">Ejecutar lo seleccionado usando una cuenta de usuario diferente</system:String>
<system:String x:Key="plugin_explorer_runasdifferentuser_subtitle">Ejecuta la selección usando una cuenta de usuario diferente</system:String>
<system:String x:Key="plugin_explorer_opencontainingfolder">Abrir carpeta contenedora</system:String>
<system:String x:Key="plugin_explorer_opencontainingfolder_subtitle">Abre la ubicación del archivo o carpeta</system:String>
<system:String x:Key="plugin_explorer_opencontainingfolder_subtitle">Abre la ubicación que contiene el archivo o carpeta</system:String>
<system:String x:Key="plugin_explorer_openwitheditor">Abrir con el editor:</system:String>
<system:String x:Key="plugin_explorer_excludefromindexsearch">Excluir la carpeta actual y sus subcarpetas del índice de búsqueda</system:String>
<system:String x:Key="plugin_explorer_excludedfromindexsearch_msg">Excluido del índice de búsqueda</system:String>
<system:String x:Key="plugin_explorer_openindexingoptions">Abrir opciones de indexación de Windows</system:String>
<system:String x:Key="plugin_explorer_openindexingoptions_subtitle">Administrar archivos y carpetas indexados</system:String>
<system:String x:Key="plugin_explorer_openindexingoptions_errormsg">Error al abrir las opciones de indexación de Windows</system:String>
<system:String x:Key="plugin_explorer_openindexingoptions_subtitle">Administra archivos y carpetas indexados</system:String>
<system:String x:Key="plugin_explorer_openindexingoptions_errormsg">No se ha podido abrir las opciones de indexación de Windows</system:String>
<system:String x:Key="plugin_explorer_add_to_quickaccess_title">Añadir al acceso rápido</system:String>
<system:String x:Key="plugin_explorer_add_to_quickaccess_subtitle">Añadir el {0} actual al acceso rápido</system:String>
<system:String x:Key="plugin_explorer_add_to_quickaccess_subtitle">Añade el {0} actual al acceso rápido</system:String>
<system:String x:Key="plugin_explorer_addfilefoldersuccess">Añadido correctamente</system:String>
<system:String x:Key="plugin_explorer_addfilefoldersuccess_detail">Añadido correctamente al acceso rápido</system:String>
<system:String x:Key="plugin_explorer_removefilefoldersuccess">Eliminado correctamente</system:String>
<system:String x:Key="plugin_explorer_removefilefoldersuccess_detail">Eliminado correctamente del acceso rápido</system:String>
<system:String x:Key="plugin_explorer_contextmenu_titletooltip">Añadir al acceso rápido para que se pueda abrir con la palabra clave de acción de la búsqueda del explorador de windows</system:String>
<system:String x:Key="plugin_explorer_contextmenu_titletooltip">Añade al acceso rápido para que se pueda abrir con la palabra clave de acción que activa la búsqueda del explorador</system:String>
<system:String x:Key="plugin_explorer_contextmenu_remove_titletooltip">Eliminar del acceso rápido</system:String>
<system:String x:Key="plugin_explorer_remove_from_quickaccess_title">Eliminar del acceso rápido</system:String>
<system:String x:Key="plugin_explorer_remove_from_quickaccess_subtitle">Eliminar el {0} actual del acceso rápido</system:String>
<system:String x:Key="plugin_explorer_remove_from_quickaccess_subtitle">Elimina el {0} actual del acceso rápido</system:String>
</ResourceDictionary>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Supprimer</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Cancella</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">削除</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">삭제</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">사용자 지정 액션 키워드</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">색인 옵션</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">검색:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">경로 검색:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Delete</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Verwijder</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Usuń</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Apagar</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Удалить</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Obriši</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Sil</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">Видалити</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">若要解决这个问题,请启动 Windows 搜索服务。点击此处删除警告</system:String>
<system:String x:Key="plugin_explorer_alternative">警告消息已关闭。 作为搜索文件和文件夹的一个替代办法,你想要安装 Everything 插件吗?{0}{0}选择 '是'安装Everything插件',或者'否' 退出</system:String>
<system:String x:Key="plugin_explorer_alternative_title">资源管理器选项</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">删除</system:String>
@ -22,6 +23,8 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">自定义动作关键字</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">快速访问链接</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">索引搜索排除的路径</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">索引选项</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">搜索激活:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">路径搜索激活:</system:String>

View file

@ -14,6 +14,7 @@
<system:String x:Key="plugin_explorer_windowsSearchServiceFix">To fix this, start the Windows Search service. Select here to remove this warning</system:String>
<system:String x:Key="plugin_explorer_alternative">The warning message has been switched off. As an alternative for searching files and folders, would you like to install Everything plugin?{0}{0}Select 'Yes' to install Everything plugin, or 'No' to return</system:String>
<system:String x:Key="plugin_explorer_alternative_title">Explorer Alternative</system:String>
<system:String x:Key="plugin_explorer_directoryinfosearch_error">Error occurred during search: {0}</system:String>
<!--Controls-->
<system:String x:Key="plugin_explorer_delete">刪除</system:String>
@ -22,32 +23,34 @@
<system:String x:Key="plugin_explorer_manageactionkeywords_header">Customise Action Keywords</system:String>
<system:String x:Key="plugin_explorer_quickaccesslinks_header">Quick Access Links</system:String>
<system:String x:Key="plugin_explorer_indexsearchexcludedpaths_header">Index Search Excluded Paths</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">Indexing Options</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">Search:</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch">Use Index Search For Path Search</system:String>
<system:String x:Key="plugin_explorer_usewindowsindexfordirectorysearch_tooltip">Turning this on will return indexed directories/files faster, but if a directory/file is not indexed it will not show up. If a directory/file has been added to Index Search Excluded Path then it will still show up even if this option is on</system:String>
<system:String x:Key="plugin_explorer_manageindexoptions">索引選項</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_search">搜尋:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_pathsearch">Path Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_filecontentsearch">File Content Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_indexsearch">Index Search:</system:String>
<system:String x:Key="plugin_explorer_actionkeywordview_quickaccess">Quick Access:</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_current">Current Action Keyword</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_done">確</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled">Enabled</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled">已啟用</system:String>
<system:String x:Key="plugin_explorer_actionkeyword_enabled_tooltip">When disabled Flow will not execute this search option, and will additionally revert back to '*' to free up the action keyword</system:String>
<!--Plugin Infos-->
<system:String x:Key="plugin_explorer_plugin_name">Explorer</system:String>
<system:String x:Key="plugin_explorer_plugin_name">檔案總管</system:String>
<system:String x:Key="plugin_explorer_plugin_description">Search and manage files and folders. Explorer utilises Windows Index Search</system:String>
<!--Context menu items-->
<system:String x:Key="plugin_explorer_copypath">Copy path</system:String>
<system:String x:Key="plugin_explorer_copypath">複製路徑</system:String>
<system:String x:Key="plugin_explorer_copyfilefolder">複製</system:String>
<system:String x:Key="plugin_explorer_deletefilefolder">刪除</system:String>
<system:String x:Key="plugin_explorer_path">Path:</system:String>
<system:String x:Key="plugin_explorer_deletefilefolder_subtitle">Delete the selected</system:String>
<system:String x:Key="plugin_explorer_path">路徑:</system:String>
<system:String x:Key="plugin_explorer_deletefilefolder_subtitle">刪除所選內容</system:String>
<system:String x:Key="plugin_explorer_runasdifferentuser">Run as different user</system:String>
<system:String x:Key="plugin_explorer_runasdifferentuser_subtitle">Run the selected using a different user account</system:String>
<system:String x:Key="plugin_explorer_opencontainingfolder">Open containing folder</system:String>
<system:String x:Key="plugin_explorer_opencontainingfolder">開啟檔案位置</system:String>
<system:String x:Key="plugin_explorer_opencontainingfolder_subtitle">Opens the location that contains the file or folder</system:String>
<system:String x:Key="plugin_explorer_openwitheditor">Open With Editor:</system:String>
<system:String x:Key="plugin_explorer_openwitheditor">在編輯器中開啟:</system:String>
<system:String x:Key="plugin_explorer_excludefromindexsearch">Exclude current and sub-directories from Index Search</system:String>
<system:String x:Key="plugin_explorer_excludedfromindexsearch_msg">Excluded from Index Search</system:String>
<system:String x:Key="plugin_explorer_openindexingoptions">Open Windows Indexing Options</system:String>

Some files were not shown because too many files have changed in this diff Show more