Merge branch 'dev' into Dotnet6
23
.github/workflows/stale.yml
vendored
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
# For more information, see:
|
||||
# https://github.com/actions/stale
|
||||
name: Mark stale issues and pull requests
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
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
|
||||
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.'
|
||||
|
|
@ -2,6 +2,8 @@
|
|||
using Flow.Launcher.Infrastructure.Logger;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
using System.Text.Json;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -10,43 +12,43 @@ namespace Flow.Launcher.Core.ExternalPlugins
|
|||
{
|
||||
public static class PluginsManifest
|
||||
{
|
||||
static PluginsManifest()
|
||||
{
|
||||
UpdateTask = UpdateManifestAsync();
|
||||
}
|
||||
|
||||
public static List<UserPlugin> UserPlugins { get; private set; } = new List<UserPlugin>();
|
||||
|
||||
public static Task UpdateTask { get; private set; }
|
||||
private const string manifestFileUrl = "https://cdn.jsdelivr.net/gh/Flow-Launcher/Flow.Launcher.PluginsManifest@plugin_api_v2/plugins.json";
|
||||
|
||||
private static readonly SemaphoreSlim manifestUpdateLock = new(1);
|
||||
|
||||
public static Task UpdateManifestAsync()
|
||||
{
|
||||
if (manifestUpdateLock.CurrentCount == 0)
|
||||
{
|
||||
return UpdateTask;
|
||||
}
|
||||
private static string latestEtag = "";
|
||||
|
||||
return UpdateTask = DownloadManifestAsync();
|
||||
}
|
||||
public static List<UserPlugin> UserPlugins { get; private set; } = new List<UserPlugin>();
|
||||
|
||||
private static async Task DownloadManifestAsync()
|
||||
public static async Task UpdateManifestAsync(CancellationToken token = default)
|
||||
{
|
||||
try
|
||||
{
|
||||
await manifestUpdateLock.WaitAsync().ConfigureAwait(false);
|
||||
await manifestUpdateLock.WaitAsync(token).ConfigureAwait(false);
|
||||
|
||||
await using var jsonStream = await Http.GetStreamAsync("https://raw.githubusercontent.com/Flow-Launcher/Flow.Launcher.PluginsManifest/plugin_api_v2/plugins.json")
|
||||
.ConfigureAwait(false);
|
||||
var request = new HttpRequestMessage(HttpMethod.Get, manifestFileUrl);
|
||||
request.Headers.Add("If-None-Match", latestEtag);
|
||||
|
||||
UserPlugins = await JsonSerializer.DeserializeAsync<List<UserPlugin>>(jsonStream).ConfigureAwait(false);
|
||||
var response = await Http.SendAsync(request, token).ConfigureAwait(false);
|
||||
|
||||
if (response.StatusCode == HttpStatusCode.OK)
|
||||
{
|
||||
Log.Info($"|PluginsManifest.{nameof(UpdateManifestAsync)}|Fetched plugins from manifest repo");
|
||||
|
||||
var json = await response.Content.ReadAsStreamAsync(token).ConfigureAwait(false);
|
||||
|
||||
UserPlugins = await JsonSerializer.DeserializeAsync<List<UserPlugin>>(json, cancellationToken: token).ConfigureAwait(false);
|
||||
|
||||
latestEtag = response.Headers.ETag.Tag;
|
||||
}
|
||||
else if (response.StatusCode != HttpStatusCode.NotModified)
|
||||
{
|
||||
Log.Warn($"|PluginsManifest.{nameof(UpdateManifestAsync)}|Http response for manifest file was {response.StatusCode}");
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Log.Exception("|PluginManagement.GetManifest|Encountered error trying to download plugins manifest", e);
|
||||
|
||||
UserPlugins = new List<UserPlugin>();
|
||||
Log.Exception($"|PluginsManifest.{nameof(UpdateManifestAsync)}|Http request failed", e);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@
|
|||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Droplex" Version="1.4.0" />
|
||||
<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" />
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -22,18 +21,23 @@ namespace Flow.Launcher.Core.Plugin
|
|||
RedirectStandardOutput = true,
|
||||
RedirectStandardError = true
|
||||
};
|
||||
|
||||
// required initialisation for below request calls
|
||||
_startInfo.ArgumentList.Add(string.Empty);
|
||||
}
|
||||
|
||||
protected override Task<Stream> RequestAsync(JsonRPCRequestModel request, CancellationToken token = default)
|
||||
{
|
||||
_startInfo.Arguments = $"\"{request}\"";
|
||||
// since this is not static, request strings will build up in ArgumentList if index is not specified
|
||||
_startInfo.ArgumentList[0] = request.ToString();
|
||||
return ExecuteAsync(_startInfo, token);
|
||||
}
|
||||
|
||||
protected override string Request(JsonRPCRequestModel rpcRequest, CancellationToken token = default)
|
||||
{
|
||||
_startInfo.Arguments = $"\"{rpcRequest}\"";
|
||||
// since this is not static, request strings will build up in ArgumentList if index is not specified
|
||||
_startInfo.ArgumentList[0] = rpcRequest.ToString();
|
||||
return Execute(_startInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,20 +15,6 @@ namespace Flow.Launcher.Core.Plugin
|
|||
|
||||
private readonly AssemblyName assemblyName;
|
||||
|
||||
private static readonly ConcurrentDictionary<string, byte> loadedAssembly;
|
||||
|
||||
static PluginAssemblyLoader()
|
||||
{
|
||||
var currentAssemblies = AppDomain.CurrentDomain.GetAssemblies();
|
||||
loadedAssembly = new ConcurrentDictionary<string, byte>(
|
||||
currentAssemblies.Select(x => new KeyValuePair<string, byte>(x.FullName, default)));
|
||||
|
||||
AppDomain.CurrentDomain.AssemblyLoad += (sender, args) =>
|
||||
{
|
||||
loadedAssembly[args.LoadedAssembly.FullName] = default;
|
||||
};
|
||||
}
|
||||
|
||||
internal PluginAssemblyLoader(string assemblyFilePath)
|
||||
{
|
||||
dependencyResolver = new AssemblyDependencyResolver(assemblyFilePath);
|
||||
|
|
@ -47,10 +33,9 @@ namespace Flow.Launcher.Core.Plugin
|
|||
// When resolving dependencies, ignore assembly depenedencies that already exits with Flow.Launcher
|
||||
// Otherwise duplicate assembly will be loaded and some weird behavior will occur, such as WinRT.Runtime.dll
|
||||
// will fail due to loading multiple versions in process, each with their own static instance of registration state
|
||||
if (assemblyPath == null || ExistsInReferencedPackage(assemblyName))
|
||||
return null;
|
||||
var existAssembly = Default.Assemblies.FirstOrDefault(x => x.FullName == assemblyName.FullName);
|
||||
|
||||
return LoadFromAssemblyPath(assemblyPath);
|
||||
return existAssembly ?? (assemblyPath == null ? null : LoadFromAssemblyPath(assemblyPath));
|
||||
}
|
||||
|
||||
internal Type FromAssemblyGetTypeOfInterface(Assembly assembly, Type type)
|
||||
|
|
@ -58,10 +43,5 @@ namespace Flow.Launcher.Core.Plugin
|
|||
var allTypes = assembly.ExportedTypes;
|
||||
return allTypes.First(o => o.IsClass && !o.IsAbstract && o.GetInterfaces().Any(t => t == type));
|
||||
}
|
||||
|
||||
internal bool ExistsInReferencedPackage(AssemblyName assemblyName)
|
||||
{
|
||||
return loadedAssembly.ContainsKey(assemblyName.FullName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -19,6 +19,8 @@ namespace Flow.Launcher.Core.Resource
|
|||
public static Language Serbian = new Language("sr", "Srpski");
|
||||
public static Language Portuguese_Portugal = new Language("pt-pt", "Português");
|
||||
public static Language Portuguese_Brazil = new Language("pt-br", "Português (Brasil)");
|
||||
public static Language Spanish = new Language("es", "Spanish");
|
||||
public static Language Spanish_LatinAmerica = new Language("es-419", "Spanish (Latin America)");
|
||||
public static Language Italian = new Language("it", "Italiano");
|
||||
public static Language Norwegian_Bokmal = new Language("nb-NO", "Norsk Bokmål");
|
||||
public static Language Slovak = new Language("sk", "Slovenský");
|
||||
|
|
@ -43,6 +45,8 @@ namespace Flow.Launcher.Core.Resource
|
|||
Serbian,
|
||||
Portuguese_Portugal,
|
||||
Portuguese_Brazil,
|
||||
Spanish,
|
||||
Spanish_LatinAmerica,
|
||||
Italian,
|
||||
Norwegian_Bokmal,
|
||||
Slovak,
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ namespace Flow.Launcher.Infrastructure
|
|||
public static readonly string PreinstalledDirectory = Path.Combine(ProgramDirectory, Plugins);
|
||||
public const string Issue = "https://github.com/Flow-Launcher/Flow.Launcher/issues/new";
|
||||
public static readonly string Version = FileVersionInfo.GetVersionInfo(Assembly.Location.NonNull()).ProductVersion;
|
||||
public const string Documentation = "https://flow-launcher.github.io/docs/#/usage-tips";
|
||||
public const string Documentation = "https://flowlauncher.com/docs/#/usage-tips";
|
||||
|
||||
public static readonly int ThumbnailSize = 64;
|
||||
private static readonly string ImagesDirectory = Path.Combine(ProgramDirectory, "Images");
|
||||
|
|
@ -43,8 +43,8 @@ namespace Flow.Launcher.Infrastructure
|
|||
public const string Settings = "Settings";
|
||||
public const string Logs = "Logs";
|
||||
|
||||
public const string Website = "https://flow-launcher.github.io";
|
||||
public const string Website = "https://flowlauncher.com";
|
||||
public const string GitHub = "https://github.com/Flow-Launcher/Flow.Launcher";
|
||||
public const string Docs = "https://flow-launcher.github.io/docs";
|
||||
public const string Docs = "https://flowlauncher.com/docs";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -153,5 +153,13 @@ namespace Flow.Launcher.Infrastructure.Http
|
|||
var response = await client.GetAsync(url, HttpCompletionOption.ResponseHeadersRead, token);
|
||||
return await response.Content.ReadAsStreamAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Asynchrously send an HTTP request.
|
||||
/// </summary>
|
||||
public static async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken token = default)
|
||||
{
|
||||
return await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -74,7 +74,7 @@ namespace Flow.Launcher.Infrastructure.Image
|
|||
// To delete the images from the data dictionary based on the resizing of the Usage Dictionary
|
||||
// Double Check to avoid concurrent remove
|
||||
if (Data.Count > permissibleFactor * MaxCached)
|
||||
foreach (var key in Data.OrderBy(x => x.Value.usage).Take(Data.Count - MaxCached).Select(x => x.Key).ToArray())
|
||||
foreach (var key in Data.OrderBy(x => x.Value.usage).Take(Data.Count - MaxCached).Select(x => x.Key))
|
||||
Data.TryRemove(key, out _);
|
||||
semaphore.Release();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -211,4 +211,4 @@ namespace Flow.Launcher.Infrastructure.Logger
|
|||
LogInternal(message, LogLevel.Warn);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net6.0-windows;net5.0-windows</TargetFrameworks>
|
||||
|
|
@ -14,10 +14,10 @@
|
|||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup>
|
||||
<Version>2.1.0</Version>
|
||||
<PackageVersion>2.1.0</PackageVersion>
|
||||
<AssemblyVersion>2.1.0</AssemblyVersion>
|
||||
<FileVersion>2.1.0</FileVersion>
|
||||
<Version>2.1.1</Version>
|
||||
<PackageVersion>2.1.1</PackageVersion>
|
||||
<AssemblyVersion>2.1.1</AssemblyVersion>
|
||||
<FileVersion>2.1.1</FileVersion>
|
||||
<PackageId>Flow.Launcher.Plugin</PackageId>
|
||||
<Authors>Flow-Launcher</Authors>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
|
|
@ -42,6 +42,7 @@
|
|||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<DocumentationFile>..\Output\Debug\Flow.Launcher.Plugin.xml</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
|
|
|
|||
|
|
@ -7,5 +7,10 @@ using System.Windows.Media;
|
|||
|
||||
namespace Flow.Launcher.Plugin
|
||||
{
|
||||
/// <summary>
|
||||
/// Text with FontFamily specified
|
||||
/// </summary>
|
||||
/// <param name="FontFamily">Font Family of this Glyph</param>
|
||||
/// <param name="Glyph">Text/Unicode of the Glyph</param>
|
||||
public record GlyphInfo(string FontFamily, string Glyph);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -228,8 +228,27 @@ namespace Flow.Launcher.Plugin
|
|||
public void OpenDirectory(string DirectoryPath, string FileName = null);
|
||||
|
||||
/// <summary>
|
||||
/// Opens the url. The browser and mode used is based on what's configured in Flow's default browser settings.
|
||||
/// Opens the URL with the given Uri object.
|
||||
/// The browser and mode used is based on what's configured in Flow's default browser settings.
|
||||
/// </summary>
|
||||
public void OpenUrl(Uri url, bool? inPrivate = null);
|
||||
|
||||
/// <summary>
|
||||
/// Opens the URL with the given string.
|
||||
/// The browser and mode used is based on what's configured in Flow's default browser settings.
|
||||
/// Non-C# plugins should use this method.
|
||||
/// </summary>
|
||||
public void OpenUrl(string url, bool? inPrivate = null);
|
||||
|
||||
/// <summary>
|
||||
/// Opens the application URI with the given Uri object, e.g. obsidian://search-query-example
|
||||
/// </summary>
|
||||
public void OpenAppUri(Uri appUri);
|
||||
|
||||
/// <summary>
|
||||
/// Opens the application URI with the given string, e.g. obsidian://search-query-example
|
||||
/// Non-C# plugins should use this method
|
||||
/// </summary>
|
||||
public void OpenAppUri(string appUri);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
using System;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Windows.Media;
|
||||
|
|
@ -10,11 +10,11 @@ namespace Flow.Launcher.Plugin
|
|||
{
|
||||
|
||||
private string _pluginDirectory;
|
||||
|
||||
|
||||
private string _icoPath;
|
||||
|
||||
/// <summary>
|
||||
/// Provides the title of the result. This is always required.
|
||||
/// The title of the result. This is always required.
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
|
|
@ -29,6 +29,13 @@ namespace Flow.Launcher.Plugin
|
|||
/// </summary>
|
||||
public string ActionKeywordAssigned { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// This holds the text which can be provided by plugin to be copied to the
|
||||
/// user's clipboard when Ctrl + C is pressed on a result. If the text is a file/directory path
|
||||
/// flow will copy the actual file/folder instead of just the path text.
|
||||
/// </summary>
|
||||
public string CopyText { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// This holds the text which can be provided by plugin to help Flow autocomplete text
|
||||
/// for user on the plugin result. If autocomplete action for example is tab, pressing tab will have
|
||||
|
|
@ -36,6 +43,11 @@ namespace Flow.Launcher.Plugin
|
|||
/// </summary>
|
||||
public string AutoCompleteText { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Image Displayed on the result
|
||||
/// <value>Relative Path to the Image File</value>
|
||||
/// <remarks>GlyphInfo is prioritized if not null</remarks>
|
||||
/// </summary>
|
||||
public string IcoPath
|
||||
{
|
||||
get { return _icoPath; }
|
||||
|
|
@ -60,16 +72,23 @@ namespace Flow.Launcher.Plugin
|
|||
public IconDelegate Icon;
|
||||
|
||||
/// <summary>
|
||||
/// Information for Glyph Icon
|
||||
/// Information for Glyph Icon (Prioritized than IcoPath/Icon if user enable Glyph Icons)
|
||||
/// </summary>
|
||||
public GlyphInfo Glyph { get; init; }
|
||||
public GlyphInfo Glyph { get; init; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// return true to hide flowlauncher after select result
|
||||
/// Delegate. An 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, bool> Action { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Priority of the current result
|
||||
/// <value>default: 0</value>
|
||||
/// </summary>
|
||||
public int Score { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
|
@ -77,13 +96,11 @@ namespace Flow.Launcher.Plugin
|
|||
/// </summary>
|
||||
public IList<int> TitleHighlightData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// A list of indexes for the characters to be highlighted in SubTitle
|
||||
/// </summary>
|
||||
[Obsolete("Deprecated as of Flow Launcher v1.9.1. Subtitle highlighting is no longer offered")]
|
||||
public IList<int> SubTitleHighlightData { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Only results that originQuery match with current query will be displayed in the panel
|
||||
/// Query information associated with the result
|
||||
/// </summary>
|
||||
internal Query OriginQuery { get; set; }
|
||||
|
||||
|
|
@ -103,6 +120,7 @@ namespace Flow.Launcher.Plugin
|
|||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
var r = obj as Result;
|
||||
|
|
@ -110,12 +128,12 @@ namespace Flow.Launcher.Plugin
|
|||
var equality = string.Equals(r?.Title, Title) &&
|
||||
string.Equals(r?.SubTitle, SubTitle) &&
|
||||
string.Equals(r?.IcoPath, IcoPath) &&
|
||||
TitleHighlightData == r.TitleHighlightData &&
|
||||
SubTitleHighlightData == r.SubTitleHighlightData;
|
||||
TitleHighlightData == r.TitleHighlightData;
|
||||
|
||||
return equality;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override int GetHashCode()
|
||||
{
|
||||
var hashcode = (Title?.GetHashCode() ?? 0) ^
|
||||
|
|
@ -123,15 +141,17 @@ namespace Flow.Launcher.Plugin
|
|||
return hashcode;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public override string ToString()
|
||||
{
|
||||
return Title + SubTitle;
|
||||
}
|
||||
|
||||
public Result() { }
|
||||
|
||||
/// <summary>
|
||||
/// Additional data associate with this result
|
||||
/// Additional data associated with this result
|
||||
/// <example>
|
||||
/// As external information for ContextMenu
|
||||
/// </example>
|
||||
/// </summary>
|
||||
public object ContextData { get; set; }
|
||||
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ namespace Flow.Launcher.Plugin.SharedCommands
|
|||
|
||||
try
|
||||
{
|
||||
Process.Start(psi);
|
||||
Process.Start(psi)?.Dispose();
|
||||
}
|
||||
catch (System.ComponentModel.Win32Exception)
|
||||
{
|
||||
|
|
@ -100,7 +100,7 @@ namespace Flow.Launcher.Plugin.SharedCommands
|
|||
psi.FileName = url;
|
||||
}
|
||||
|
||||
Process.Start(psi);
|
||||
Process.Start(psi)?.Dispose();
|
||||
}
|
||||
// This error may be thrown if browser path is incorrect
|
||||
catch (System.ComponentModel.Win32Exception)
|
||||
|
|
|
|||
|
|
@ -153,7 +153,6 @@ namespace Flow.Launcher
|
|||
DispatcherUnhandledException += ErrorReporting.DispatcherUnhandledException;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// let exception throw as normal is better for Debug
|
||||
/// </summary>
|
||||
|
|
@ -179,4 +178,4 @@ namespace Flow.Launcher
|
|||
Current.MainWindow.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -88,6 +88,7 @@
|
|||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="InputSimulator" Version="1.0.4" />
|
||||
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.2" />
|
||||
<PackageReference Include="ModernWpfUI" Version="0.9.4" />
|
||||
<PackageReference Include="NHotkey.Wpf" Version="2.1.0" />
|
||||
<PackageReference Include="NuGet.CommandLine" Version="5.4.0">
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ namespace Flow.Launcher.Helper
|
|||
|
||||
internal static void OnToggleHotkey(object sender, HotkeyEventArgs args)
|
||||
{
|
||||
if (!mainViewModel.GameModeStatus)
|
||||
if (!mainViewModel.ShouldIgnoreHotkeys() && !mainViewModel.GameModeStatus)
|
||||
mainViewModel.ToggleFlowLauncher();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 873 B After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 774 B After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 796 B After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 597 B After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 530 B After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 752 B After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 506 B After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 339 B |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 468 B After Width: | Height: | Size: 2 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 634 B After Width: | Height: | Size: 687 B |
|
Before Width: | Height: | Size: 759 B After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 674 B After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 792 B After Width: | Height: | Size: 752 B |
|
Before Width: | Height: | Size: 269 B After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 436 B After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 5.5 KiB |
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 760 B After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 470 B After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 794 B After Width: | Height: | Size: 1.4 KiB |
|
|
@ -126,8 +126,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Opdater</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Annuler</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Denne opdatering vil genstarte Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Følgende filer bliver opdateret</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Følgende filer bliver opdateret</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Opdatereringsfiler</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Opdateringsbeskrivelse</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Opdateringsbeskrivelse</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Aktualisieren</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Abbrechen</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Diese Aktualisierung wird Flow Launcher neu starten</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Folgende Dateien werden aktualisiert</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Folgende Dateien werden aktualisiert</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Aktualisiere Dateien</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Aktualisierungbeschreibung</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Aktualisierungbeschreibung</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -18,6 +18,9 @@
|
|||
<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="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>
|
||||
|
||||
|
|
@ -55,7 +58,7 @@
|
|||
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
|
||||
|
||||
<!-- Setting Plugin -->
|
||||
<system:String x:Key="plugin">Plugins</system:String>
|
||||
<system:String x:Key="plugin">Plugin</system:String>
|
||||
<system:String x:Key="browserMorePlugins">Find more plugins</system:String>
|
||||
<system:String x:Key="enable">On</system:String>
|
||||
<system:String x:Key="disable">Off</system:String>
|
||||
|
|
@ -176,8 +179,8 @@
|
|||
<system:String x:Key="defaultBrowser_name">Browser</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_newtab">New Window</system:String>
|
||||
<system:String x:Key="defaultBrowser_newWindow">New Tab</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_parameter">Private Mode</system:String>
|
||||
|
||||
<!-- Priority Setting Dialog -->
|
||||
|
|
@ -244,9 +247,9 @@
|
|||
<system:String x:Key="update_flowlauncher_fail">Update Failed</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_update_restart_flowlauncher_tip">This upgrade will restart Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Following files will be updated</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Following files will be updated</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Update files</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Update description</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Update description</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Skip</system:String>
|
||||
|
|
@ -281,7 +284,7 @@
|
|||
<system:String x:Key="RecommendShell">> ping 8.8.8.8</system:String>
|
||||
<system:String x:Key="RecommendShellDesc">Shell Command</system:String>
|
||||
<system:String x:Key="RecommendBluetooth">Bluetooth</system:String>
|
||||
<system:String x:Key="RecommendBluetoothDesc">Bluetooth in Windows Setting</system:String>
|
||||
<system:String x:Key="RecommendBluetoothDesc">Bluetooth in Windows Settings</system:String>
|
||||
<system:String x:Key="RecommendAcronyms">sn</system:String>
|
||||
<system:String x:Key="RecommendAcronymsDesc">Sticky Notes</system:String>
|
||||
|
||||
|
|
|
|||
|
|
@ -132,8 +132,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Mettre à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Annuler</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Flow Launcher doit redémarrer pour installer cette mise à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Les fichiers suivants seront mis à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Les fichiers suivants seront mis à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Fichiers mis à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Description de la mise à jour</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Description de la mise à jour</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -135,8 +135,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Aggiorna</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Annulla</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Questo aggiornamento riavvierà Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">I seguenti file saranno aggiornati</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">I seguenti file saranno aggiornati</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">File aggiornati</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Descrizione aggiornamento</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Descrizione aggiornamento</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -138,8 +138,8 @@
|
|||
<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_update_restart_flowlauncher_tip">このアップデートでは、Flow Launcherの再起動が必要です</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">次のファイルがアップデートされます</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">次のファイルがアップデートされます</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">更新ファイル一覧</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">アップデートの詳細</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">アップデートの詳細</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -175,8 +175,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_newtab">새 창</system:String>
|
||||
<system:String x:Key="defaultBrowser_newWindow">새 탭</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 -->
|
||||
|
|
@ -241,9 +241,9 @@
|
|||
<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_update_restart_flowlauncher_tip">업데이트를 위해 Flow Launcher를 재시작합니다.</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">아래 파일들이 업데이트됩니다.</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">아래 파일들이 업데이트됩니다.</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">업데이트 파일</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">업데이트 설명</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">업데이트 설명</system:String>
|
||||
|
||||
|
||||
<!-- Welcome Window -->
|
||||
|
|
|
|||
|
|
@ -135,8 +135,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Oppdater</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Avbryt</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Denne opgraderingen vil starte Flow Launcher på nytt</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Følgende filer vil bli oppdatert</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Følgende filer vil bli oppdatert</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Oppdateringsfiler</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Oppdateringsbeskrivelse</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Oppdateringsbeskrivelse</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Update</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Annuleer</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Deze upgrade zal Flow Launcher opnieuw opstarten</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Volgende bestanden zullen worden geüpdatet</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Volgende bestanden zullen worden geüpdatet</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Update bestanden</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Update beschrijving</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Update beschrijving</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Aktualizuj</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Anuluj</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Aby dokończyć proces aktualizacji Flow Launcher musi zostać zresetowany</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Następujące pliki zostaną zaktualizowane</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Następujące pliki zostaną zaktualizowane</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Aktualizuj pliki</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Opis aktualizacji</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Opis aktualizacji</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -135,8 +135,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Atualizar</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Cancelar</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Essa atualização reiniciará o Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Os seguintes arquivos serão atualizados</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Os seguintes arquivos serão atualizados</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Atualizar arquivos</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Atualizar descrição</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Atualizar descrição</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -16,16 +16,19 @@
|
|||
<system:String x:Key="iconTrayAbout">Acerca</system:String>
|
||||
<system:String x:Key="iconTrayExit">Sair</system:String>
|
||||
<system:String x:Key="closeWindow">Fechar</system:String>
|
||||
<system:String x:Key="copy">Copiar</system:String>
|
||||
<system:String x:Key="cut">Cortar</system:String>
|
||||
<system:String x:Key="paste">Colar</system:String>
|
||||
<system:String x:Key="GameMode">Modo de jogo</system:String>
|
||||
<system:String x:Key="GameModeToolTip">Suspender utilização de teclas de atalho</system:String>
|
||||
|
||||
<!-- Setting General -->
|
||||
<system:String x:Key="flowlauncher_settings">Definições Flow launcher</system:String>
|
||||
<system:String x:Key="flowlauncher_settings">Definições Flow Launcher</system:String>
|
||||
<system:String x:Key="general">Geral</system:String>
|
||||
<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="hideFlowLauncherWhenLoseFocus">Ocultar Flow launcher ao perder o foco</system:String>
|
||||
<system:String x:Key="startFlowLauncherOnSystemStartup">Iniciar Flow Launcher ao arrancar o sistema</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>
|
||||
<system:String x:Key="language">Idioma</system:String>
|
||||
|
|
@ -34,18 +37,18 @@
|
|||
<system:String x:Key="LastQueryPreserved">Manter última consulta</system:String>
|
||||
<system:String x:Key="LastQuerySelected">Selecionar última consulta</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">Limpar última consulta</system:String>
|
||||
<system:String x:Key="maxShowResults">N.º máximo de resultados</system:String>
|
||||
<system:String x:Key="maxShowResults">Número máximo de resultados</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorar teclas de atalho se em ecrã completo</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Desativar ativação do Flow Launcher se alguma aplicação estiver em ecrã completo (recomendado para jogos)</system:String>
|
||||
<system:String x:Key="defaultFileManager">Gestor de ficheiros padrão</system:String>
|
||||
<system:String x:Key="defaultFileManagerToolTip">Selecione o gestor de ficheiros utilizado para abrir a página</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="defaultBrowser">Navegador web padrão</system:String>
|
||||
<system:String x:Key="defaultBrowserToolTip">Definições para Novo separador, Nova Janela e Modo privado</system:String>
|
||||
<system:String x:Key="pythonDirectory">Diretório Python</system:String>
|
||||
<system:String x:Key="autoUpdates">Atualização automática</system:String>
|
||||
<system:String x:Key="selectPythonDirectory">Selecionar</system:String>
|
||||
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher no arranque</system:String>
|
||||
<system:String x:Key="hideNotifyIcon">Ocultar ícone da bandeja</system:String>
|
||||
<system:String x:Key="hideOnStartup">Ocultar Flow Launcher ao arrancar</system:String>
|
||||
<system:String x:Key="hideNotifyIcon">Ocultar ícone na bandeja</system:String>
|
||||
<system:String x:Key="querySearchPrecision">Precisão da pesquisa</system:String>
|
||||
<system:String x:Key="querySearchPrecisionToolTip">Altera a precisão mínima necessário para obter resultados</system:String>
|
||||
<system:String x:Key="ShouldUsePinyin">Utilizar Pinyin</system:String>
|
||||
|
|
@ -61,12 +64,13 @@
|
|||
<system:String x:Key="actionKeywords">Palavra-chave da ação</system:String>
|
||||
<system:String x:Key="currentActionKeywords">Palavra-chave atual</system:String>
|
||||
<system:String x:Key="newActionKeyword">Nova palavra-chave</system:String>
|
||||
<system:String x:Key="actionKeywordsTooltip">Alterar palavras-chave</system:String>
|
||||
<system:String x:Key="currentPriority">Prioridade atual</system:String>
|
||||
<system:String x:Key="newPriority">Nova prioridade</system:String>
|
||||
<system:String x:Key="priority">Prioridade</system:String>
|
||||
<system:String x:Key="pluginDirectory">Diretório de plugins</system:String>
|
||||
<system:String x:Key="author">Autor:</system:String>
|
||||
<system:String x:Key="plugin_init_time">Tempo de inicialização:</system:String>
|
||||
<system:String x:Key="author">de</system:String>
|
||||
<system:String x:Key="plugin_init_time">Tempo de arranque:</system:String>
|
||||
<system:String x:Key="plugin_query_time">Tempo de consulta:</system:String>
|
||||
<system:String x:Key="plugin_query_version">| Versão</system:String>
|
||||
<system:String x:Key="plugin_query_web">Site</system:String>
|
||||
|
|
@ -102,7 +106,7 @@
|
|||
<!-- Setting Hotkey -->
|
||||
<system:String x:Key="hotkey">Tecla de atalho</system:String>
|
||||
<system:String x:Key="flowlauncherHotkey">Tecla de atalho Flow Launcher</system:String>
|
||||
<system:String x:Key="flowlauncherHotkeyToolTip">Introduza o atalho para mostrar/ocultar Flow launcher</system:String>
|
||||
<system:String x:Key="flowlauncherHotkeyToolTip">Introduza o atalho para mostrar/ocultar Flow Launcher</system:String>
|
||||
<system:String x:Key="openResultModifiers">Tecla modificadora para os resultados</system:String>
|
||||
<system:String x:Key="openResultModifiersToolTip">Selecione a tecla modificadora para abrir o resultado através do teclado</system:String>
|
||||
<system:String x:Key="showOpenResultHotkey">Mostrar tecla de atalho</system:String>
|
||||
|
|
@ -154,6 +158,7 @@
|
|||
<system:String x:Key="devtool">DevTools</system:String>
|
||||
<system:String x:Key="settingfolder">Pasta de definições</system:String>
|
||||
<system:String x:Key="logfolder">Pasta de registos</system:String>
|
||||
<system:String x:Key="welcomewindow">Assistente</system:String>
|
||||
|
||||
<!-- FileManager Setting Dialog -->
|
||||
<system:String x:Key="fileManagerWindow">Selecione o gestor de ficheiros</system:String>
|
||||
|
|
@ -166,14 +171,14 @@
|
|||
<system:String x:Key="fileManager_file_arg">Argumento para ficheiro</system:String>
|
||||
|
||||
<!-- 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_profile_name">Browser Name</system:String>
|
||||
<system:String x:Key="defaultBrowser_path">Browser Path</system:String>
|
||||
<system:String x:Key="defaultBrowser_newtab">New Window</system:String>
|
||||
<system:String x:Key="defaultBrowser_newWindow">New Tab</system:String>
|
||||
<system:String x:Key="defaultBrowser_parameter">Priviate Mode</system:String>
|
||||
<system:String x:Key="defaultBrowserTitle">Navegador web padrão</system:String>
|
||||
<system:String x:Key="defaultBrowser_tips">A definição padrão é a que for definida pelo sistema operativo. Se especificado outro, Flow Launcher utiliza esse navegador.</system:String>
|
||||
<system:String x:Key="defaultBrowser_name">Navegador</system:String>
|
||||
<system:String x:Key="defaultBrowser_profile_name">Nome do navegador</system:String>
|
||||
<system:String x:Key="defaultBrowser_path">Caminho do navegador</system:String>
|
||||
<system:String x:Key="defaultBrowser_newWindow">Nova janela</system:String>
|
||||
<system:String x:Key="defaultBrowser_newTab">Novo separador</system:String>
|
||||
<system:String x:Key="defaultBrowser_parameter">Modo privado</system:String>
|
||||
|
||||
<!-- Priority Setting Dialog -->
|
||||
<system:String x:Key="changePriorityWindow">Alterar prioridade</system:String>
|
||||
|
|
@ -190,7 +195,7 @@
|
|||
<system:String x:Key="newActionKeywordsHasBeenAssigned">Esta palavra-chave já está associada a um plugin. Por favor escolha outra.</system:String>
|
||||
<system:String x:Key="success">Sucesso</system:String>
|
||||
<system:String x:Key="completedSuccessfully">Terminado com sucesso</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Introduza a palavra-chave a utilizar para iniciar o plugin. Utilize * se não quiser utilizar esta funcionalidade e o plugin não será ativada com palavras-chave.</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Introduza a palavra-chave a utilizar para iniciar o plugin. Utilize * se não quiser utilizar esta funcionalidade e o plugin não será ativado com palavras-chave.</system:String>
|
||||
|
||||
<!-- Custom Query Hotkey Dialog -->
|
||||
<system:String x:Key="customeQueryHotkeyTitle">Tecla de atalho personalizada</system:String>
|
||||
|
|
@ -239,8 +244,47 @@
|
|||
<system:String x:Key="update_flowlauncher_fail">Falha ao atualizar</system:String>
|
||||
<system:String x:Key="update_flowlauncher_check_connection">Verifique a sua ligação e as definições do proxy estabelecidas para github-cloud.s3.amazonaws.com</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Esta atualização irá reiniciar o Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Os seguintes ficheiros serão atualizados</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Os seguintes ficheiros serão atualizados</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Atualizar ficheiros</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Atualizar descrição</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Atualizar descrição</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Ignorar</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Title">Obrigado por utilizar Flow Launcher</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Text01">Esta é a primeira vez que está a utilizar Flow Launcher!</system:String>
|
||||
<system:String x:Key="Welcome_Page1_Text02">Antes de utilizar a aplicação, este assistente ajuda a configurar Flow Launcher. Caso pretenda, pode ignorar este passo. Por favor escolha um idioma.</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Title">Pesquise ficheiros/pastas e execute aplicações no seu computador
|
||||
</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Text01">Pode pesquisar aplicações, ficheiros, marcadores, YouTube, Twitter e muito mais. Tudo isto é efetuado através do teclado, dispensando a utilização do rato
|
||||
</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher é iniciado com a tecla de atalho abaixo. Experimente. Para alterar esta tecla de atalho, clique no valor e escolha a combinação de teclas a utilizar.</system:String>
|
||||
<system:String x:Key="Welcome_Page3_Title">Teclas de atalho</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Title">Palavras-chave e comandos</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Text01">Pesquise na Web, inicie aplicações e execute funções através dos nossos plugins. Algumas ações são invocadas com palavras-chave mas, se quiser, podem ser invocadas sem essas palavras-chave. Teste as consultas abaixo para experimentar.</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Title">Vamos iniciar Flow Launcher</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Text01">Terminado. Desfrute de Flow Launcher. Não se esqueça da tecla de atalho :-)</system:String>
|
||||
|
||||
<!-- General Guide & Hotkey -->
|
||||
|
||||
<system:String x:Key="HotkeyUpDownDesc">Recuar/Menu de contexto</system:String>
|
||||
<system:String x:Key="HotkeyLeftRightDesc">Navegação nos itens</system:String>
|
||||
<system:String x:Key="HotkeyShiftEnterDesc">Abrir menu de contexto</system:String>
|
||||
<system:String x:Key="HotkeyCtrlEnterDesc">Abrir pasta</system:String>
|
||||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Executar como administrador</system:String>
|
||||
<system:String x:Key="HotkeyCtrlHDesc">Histórico de consultas</system:String>
|
||||
<system:String x:Key="HotkeyESCDesc">Voltar aos resultados no menu de contexto</system:String>
|
||||
<system:String x:Key="HotkeyTabDesc">Conclusão automática</system:String>
|
||||
<system:String x:Key="HotkeyRunDesc">Abrir/Executar item selecionado</system:String>
|
||||
<system:String x:Key="HotkeyCtrlIDesc">Abrir janela de definições</system:String>
|
||||
<system:String x:Key="HotkeyF5Desc">Recarregar dados do plugin</system:String>
|
||||
|
||||
<system:String x:Key="RecommendWeather">Meteorologia</system:String>
|
||||
<system:String x:Key="RecommendWeatherDesc">Meteorologia no Google</system:String>
|
||||
<system:String x:Key="RecommendShell">> ping 8.8.8.8</system:String>
|
||||
<system:String x:Key="RecommendShellDesc">Comando de consola</system:String>
|
||||
<system:String x:Key="RecommendBluetooth">Bluetooth</system:String>
|
||||
<system:String x:Key="RecommendBluetoothDesc">Bluetooth nas definições do Windows</system:String>
|
||||
<system:String x:Key="RecommendAcronyms">sn</system:String>
|
||||
<system:String x:Key="RecommendAcronymsDesc">Sticky Notes</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@
|
|||
<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_update_restart_flowlauncher_tip">Это обновление перезапустит Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Следующие файлы будут обновлены</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Следующие файлы будут обновлены</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Обновить файлы</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Описание обновления</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Описание обновления</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -4,15 +4,18 @@
|
|||
<system:String x:Key="registerHotkeyFailed">Nepodarilo sa registrovať klávesovú skratku {0}</system:String>
|
||||
<system:String x:Key="couldnotStartCmd">Nepodarilo sa spustiť {0}</system:String>
|
||||
<system:String x:Key="invalidFlowLauncherPluginFileFormat">Neplatný formát súboru pre plugin Flow Launchera</system:String>
|
||||
<system:String x:Key="setAsTopMostInThisQuery">Pri tomto zadaní umiestniť navrchu</system:String>
|
||||
<system:String x:Key="cancelTopMostInThisQuery">Zrušiť umiestnenie navrchu pri tomto zadaní</system:String>
|
||||
<system:String x:Key="setAsTopMostInThisQuery">Pri tomto výraze umiestniť navrchu</system:String>
|
||||
<system:String x:Key="cancelTopMostInThisQuery">Zrušiť umiestnenie navrchu pri tomto výraze</system:String>
|
||||
<system:String x:Key="executeQuery">Spustiť dopyt: {0}</system:String>
|
||||
<system:String x:Key="lastExecuteTime">Posledný čas realizácie: {0}</system:String>
|
||||
<system:String x:Key="lastExecuteTime">Posledný čas spustenia: {0}</system:String>
|
||||
<system:String x:Key="iconTrayOpen">Otvoriť</system:String>
|
||||
<system:String x:Key="iconTraySettings">Nastavenia</system:String>
|
||||
<system:String x:Key="iconTrayAbout">O aplikácii</system:String>
|
||||
<system:String x:Key="iconTrayExit">Ukončiť</system:String>
|
||||
<system:String x:Key="closeWindow">Zavrieť</system:String>
|
||||
<system:String x:Key="copy">Kopírovať</system:String>
|
||||
<system:String x:Key="cut">Vystrihnúť</system:String>
|
||||
<system:String x:Key="paste">Prilepiť</system:String>
|
||||
<system:String x:Key="GameMode">Herný režim</system:String>
|
||||
<system:String x:Key="GameModeToolTip">Pozastaviť používanie klávesových skratiek.</system:String>
|
||||
|
||||
|
|
@ -20,8 +23,8 @@
|
|||
<system:String x:Key="flowlauncher_settings">Nastavenia Flow Launchera</system:String>
|
||||
<system:String x:Key="general">Všeobecné</system:String>
|
||||
<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 vyberateľných diskoch a cloudových službách).</system:String>
|
||||
<system:String x:Key="startFlowLauncherOnSystemStartup">Spustiť Flow Launcher po štarte systému</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="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>
|
||||
|
|
@ -31,11 +34,13 @@
|
|||
<system:String x:Key="LastQueryPreserved">Ponechať</system:String>
|
||||
<system:String x:Key="LastQuerySelected">Označiť</system:String>
|
||||
<system:String x:Key="LastQueryEmpty">Vymazať</system:String>
|
||||
<system:String x:Key="maxShowResults">Max. výsledkov</system:String>
|
||||
<system:String x:Key="maxShowResults">Maximum výsledkov</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreen">Ignorovať klávesové skratky v režime na celú obrazovku</system:String>
|
||||
<system:String x:Key="ignoreHotkeysOnFullscreenToolTip">Zakázať aktiváciu Flow Launchera, keď je aktívna aplikácia na celú obrazovku (odporúčané pre hry).</system:String>
|
||||
<system:String x:Key="defaultFileManager">Predvolený správca súborov</system:String>
|
||||
<system:String x:Key="defaultFileManagerToolTip">Vyberte správcu súborov, ktorý sa má použiť pri otváraní priečinka.</system:String>
|
||||
<system:String x:Key="defaultBrowser">Predvolený webový prehliadač</system:String>
|
||||
<system:String x:Key="defaultBrowserToolTip">Nastavenie pre novú kartu, nové okno, privátny režim.</system:String>
|
||||
<system:String x:Key="pythonDirectory">Priečinok s Pythonom</system:String>
|
||||
<system:String x:Key="autoUpdates">Automatická aktualizácia</system:String>
|
||||
<system:String x:Key="selectPythonDirectory">Vybrať</system:String>
|
||||
|
|
@ -52,17 +57,18 @@
|
|||
<system:String x:Key="browserMorePlugins">Nájsť ďalšie pluginy</system:String>
|
||||
<system:String x:Key="enable">Zap.</system:String>
|
||||
<system:String x:Key="disable">Vyp.</system:String>
|
||||
<system:String x:Key="actionKeywordsTitle">Nastavenie kľúčového slova akcie</system:String>
|
||||
<system:String x:Key="actionKeywords">Skratka akcie</system:String>
|
||||
<system:String x:Key="currentActionKeywords">Aktuálna akcia skratky:</system:String>
|
||||
<system:String x:Key="newActionKeyword">Nová akcia skratky:</system:String>
|
||||
<system:String x:Key="currentPriority">Aktuálna priorita:</system:String>
|
||||
<system:String x:Key="newPriority">Nová priorita:</system:String>
|
||||
<system:String x:Key="actionKeywordsTitle">Nastavenie akčného príkazu</system:String>
|
||||
<system:String x:Key="actionKeywords">Aktivačný príkaz</system:String>
|
||||
<system:String x:Key="currentActionKeywords">Aktuálny aktivačný príkaz</system:String>
|
||||
<system:String x:Key="newActionKeyword">Nový aktivačný príkaz</system:String>
|
||||
<system:String x:Key="actionKeywordsTooltip">Upraviť aktivačný príkaz</system:String>
|
||||
<system:String x:Key="currentPriority">Aktuálna priorita</system:String>
|
||||
<system:String x:Key="newPriority">Nová priorita</system:String>
|
||||
<system:String x:Key="priority">Priorita</system:String>
|
||||
<system:String x:Key="pluginDirectory">Priečinok s pluginmi</system:String>
|
||||
<system:String x:Key="author">od</system:String>
|
||||
<system:String x:Key="plugin_init_time">Príprava:</system:String>
|
||||
<system:String x:Key="plugin_query_time">Čas dopytu:</system:String>
|
||||
<system:String x:Key="plugin_init_time">Inicializácia:</system:String>
|
||||
<system:String x:Key="plugin_query_time">Trvanie dopytu:</system:String>
|
||||
<system:String x:Key="plugin_query_version">| Verzia</system:String>
|
||||
<system:String x:Key="plugin_query_web">Webstránka</system:String>
|
||||
|
||||
|
|
@ -81,8 +87,8 @@
|
|||
<system:String x:Key="resultItemFont">Písmo výsledkov</system:String>
|
||||
<system:String x:Key="windowMode">Režim okno</system:String>
|
||||
<system:String x:Key="opacity">Nepriehľadnosť</system:String>
|
||||
<system:String x:Key="theme_load_failure_path_not_exists">Motív {0} neexistuje, návrat na predvolený motív</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Nepodarilo sa nečítať motív {0}, návrat na predvolený motív</system:String>
|
||||
<system:String x:Key="theme_load_failure_path_not_exists">Motív {0} neexistuje, použije sa predvolený motív</system:String>
|
||||
<system:String x:Key="theme_load_failure_parse_error">Nepodarilo sa nečítať motív {0}, použije sa predvolený motív</system:String>
|
||||
<system:String x:Key="ThemeFolder">Priečinok s motívmi</system:String>
|
||||
<system:String x:Key="OpenThemeFolder">Otvoriť priečinok s motívmi</system:String>
|
||||
<system:String x:Key="ColorScheme">Farebná schéma</system:String>
|
||||
|
|
@ -102,7 +108,7 @@
|
|||
<system:String x:Key="openResultModifiersToolTip">Vyberte modifikačný kláves na otvorenie vybraného výsledku pomocou klávesnice.</system:String>
|
||||
<system:String x:Key="showOpenResultHotkey">Zobraziť klávesovú skratku</system:String>
|
||||
<system:String x:Key="showOpenResultHotkeyToolTip">Zobrazí klávesovú skratku spolu s výsledkami.</system:String>
|
||||
<system:String x:Key="customQueryHotkey">Vlastná klávesová skratka na vyhľadávanie</system:String>
|
||||
<system:String x:Key="customQueryHotkey">Klávesová skratka vlastného vyhľadávania</system:String>
|
||||
<system:String x:Key="customQuery">Dopyt</system:String>
|
||||
<system:String x:Key="delete">Odstrániť</system:String>
|
||||
<system:String x:Key="edit">Upraviť</system:String>
|
||||
|
|
@ -111,7 +117,7 @@
|
|||
<system:String x:Key="deleteCustomHotkeyWarning">Ste si istý, že chcete odstrániť klávesovú skratku {0} pre plugin?</system:String>
|
||||
<system:String x:Key="queryWindowShadowEffect">Tieňový efekt v poli vyhľadávania</system:String>
|
||||
<system:String x:Key="shadowEffectCPUUsage">Tieňový efekt významne využíva GPU. Neodporúča sa, ak je výkon počítača obmedzený.</system:String>
|
||||
<system:String x:Key="windowWidthSize">Veľkosť šírky okna</system:String>
|
||||
<system:String x:Key="windowWidthSize">Šírka okna</system:String>
|
||||
<system:String x:Key="useGlyphUI">Použiť ikony Segoe Fluent</system:String>
|
||||
<system:String x:Key="useGlyphUIEffect">Použiť ikony Segoe Fluent, ak sú podporované</system:String>
|
||||
|
||||
|
|
@ -129,7 +135,7 @@
|
|||
<system:String x:Key="invalidPortFormat">Neplatný formát portu</system:String>
|
||||
<system:String x:Key="saveProxySuccessfully">Nastavenie proxy úspešne uložené</system:String>
|
||||
<system:String x:Key="proxyIsCorrect">Nastavenie proxy je v poriadku</system:String>
|
||||
<system:String x:Key="proxyConnectFailed">Pripojenie proxy zlyhalo</system:String>
|
||||
<system:String x:Key="proxyConnectFailed">Pripojenie proxy servera zlyhalo</system:String>
|
||||
|
||||
<!-- Setting About -->
|
||||
<system:String x:Key="about">O aplikácii</system:String>
|
||||
|
|
@ -138,11 +144,11 @@
|
|||
<system:String x:Key="docs">Dokumentácia</system:String>
|
||||
<system:String x:Key="version">Verzia</system:String>
|
||||
<system:String x:Key="about_activate_times">Flow Launcher bol aktivovaný {0}-krát</system:String>
|
||||
<system:String x:Key="checkUpdates">Skontrolovať aktualizácie</system:String>
|
||||
<system:String x:Key="checkUpdates">Vyhľadať aktualizácie</system:String>
|
||||
<system:String x:Key="newVersionTips">Je dostupná nová verzia {0}, chcete reštartovať Flow Launcher, aby sa mohol aktualizovať?</system:String>
|
||||
<system:String x:Key="checkUpdatesFailed">Kontrola aktualizácií zlyhala, prosím, skontrolujte pripojenie na internet a nastavenie proxy k api.github.com.</system:String>
|
||||
<system:String x:Key="checkUpdatesFailed">Vyhľadávanie aktualizácií zlyhalo, prosím, skontrolujte pripojenie na internet a nastavenie proxy server k api.github.com.</system:String>
|
||||
<system:String x:Key="downloadUpdatesFailed">
|
||||
Sťahovanie aktualizácií zlyhalo, skontrolujte pripojenie na internet a nastavenie proxy k github-cloud.s3.amazonaws.com,
|
||||
Sťahovanie aktualizácií zlyhalo, skontrolujte pripojenie na internet a nastavenie proxy servera k github-cloud.s3.amazonaws.com,
|
||||
alebo prejdite na https://github.com/Flow-Launcher/Flow.Launcher/releases pre manuálne stiahnutie aktualizácie.
|
||||
</system:String>
|
||||
<system:String x:Key="releaseNotes">Poznámky k vydaniu</system:String>
|
||||
|
|
@ -162,33 +168,43 @@
|
|||
<system:String x:Key="fileManager_directory_arg">Arg. pre priečinok</system:String>
|
||||
<system:String x:Key="fileManager_file_arg">Arg. pre súbor</system:String>
|
||||
|
||||
<!-- DefaultBrowser Setting Dialog -->
|
||||
<system:String x:Key="defaultBrowserTitle">Predvolený webový prehliadač</system:String>
|
||||
<system:String x:Key="defaultBrowser_tips">Predvolené nastavenie je podľa nastavenia v systéme. Ak je zadaný osobitne, Flow použije tento prehliadač.</system:String>
|
||||
<system:String x:Key="defaultBrowser_name">Prehliadač</system:String>
|
||||
<system:String x:Key="defaultBrowser_profile_name">Názov prehliadača</system:String>
|
||||
<system:String x:Key="defaultBrowser_path">Cesta k prehliadaču</system:String>
|
||||
<system:String x:Key="defaultBrowser_newWindow">Nové okno</system:String>
|
||||
<system:String x:Key="defaultBrowser_newTab">Nová karta</system:String>
|
||||
<system:String x:Key="defaultBrowser_parameter">Privátny režim</system:String>
|
||||
|
||||
<!-- Priority Setting Dialog -->
|
||||
<system:String x:Key="changePriorityWindow">Zmena priority</system:String>
|
||||
<system:String x:Key="priority_tips">Vyššie číslo znamená, že výsledok bude vyššie. Skúste nastaviť napr. 5. Ak chcete, aby boli výsledky nižšie ako ktorékoľvek iné doplnky, zadajte záporné číslo</system:String>
|
||||
<system:String x:Key="priority_tips">Väčšie číslo znamená, že výsledok bude vyššie. Skúste nastaviť napr. 5. Ak chcete, aby boli výsledky nižšie ako ktorékoľvek iné pluginy, zadajte záporné číslo</system:String>
|
||||
<system:String x:Key="invalidPriority">Prosím, zadajte platné číslo pre prioritu!</system:String>
|
||||
|
||||
<!-- Action Keyword Setting Dialog -->
|
||||
<system:String x:Key="oldActionKeywords">Stará skratka akcie</system:String>
|
||||
<system:String x:Key="newActionKeywords">Nová skratka akcie</system:String>
|
||||
<system:String x:Key="oldActionKeywords">Starý aktivačný príkaz</system:String>
|
||||
<system:String x:Key="newActionKeywords">Nový aktivačný príkaz</system:String>
|
||||
<system:String x:Key="cancel">Zrušiť</system:String>
|
||||
<system:String x:Key="done">Hotovo</system:String>
|
||||
<system:String x:Key="cannotFindSpecifiedPlugin">Nepodarilo sa nájsť zadaný plugin</system:String>
|
||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">Nová skratka pre akciu nemôže byť prázdna</system:String>
|
||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">Nová skratka pre akciu bola priradená pre iný plugin, prosím, zvoľte inú skratku</system:String>
|
||||
<system:String x:Key="newActionKeywordsCannotBeEmpty">Nový aktivačný príkaz nemôže byť prázdny</system:String>
|
||||
<system:String x:Key="newActionKeywordsHasBeenAssigned">Nový aktivačný príkaz už bol priradený inému pluginu, prosím, zvoľte iný aktivačný príkaz</system:String>
|
||||
<system:String x:Key="success">Úspešné</system:String>
|
||||
<system:String x:Key="completedSuccessfully">Úspešne dokončené</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Zadajte skratku akcie, ktorá je potrebná na spustenie pluginu. Ak nechcete zadať skratku akcie, použite *. V tom prípade plugin funguje bez kľúčových slov.</system:String>
|
||||
<system:String x:Key="actionkeyword_tips">Zadajte aktivačný príkaz, ktorý je potrebný na spustenie pluginu. Ak nechcete zadať aktivačný príkaz, použite * a plugin bude spustený bez aktivačného príkazu.</system:String>
|
||||
|
||||
<!-- Custom Query Hotkey Dialog -->
|
||||
<system:String x:Key="customeQueryHotkeyTitle">Klávesová skratka pre vlastné vyhľadávanie</system:String>
|
||||
<system:String x:Key="customeQueryHotkeyTitle">Klávesová skratka vlastného vyhľadávania</system:String>
|
||||
<system:String x:Key="customeQueryHotkeyTips">Stlačením klávesovej skratky sa automaticky vloží zadaný výraz.</system:String>
|
||||
<system:String x:Key="preview">Náhľad</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">Klávesová skratka je nedostupná, prosím, zadajte novú</system:String>
|
||||
<system:String x:Key="hotkeyIsNotUnavailable">Klávesová skratka je nedostupná, prosím, zadajte novú skratku</system:String>
|
||||
<system:String x:Key="invalidPluginHotkey">Neplatná klávesová skratka pluginu</system:String>
|
||||
<system:String x:Key="update">Aktualizovať</system:String>
|
||||
|
||||
<!-- Hotkey Control -->
|
||||
<system:String x:Key="hotkeyUnavailable">Klávesová skratka nedostupná</system:String>
|
||||
<system:String x:Key="hotkeyUnavailable">Klávesová skratka je nedostupná</system:String>
|
||||
|
||||
<!-- Crash Reporter -->
|
||||
<system:String x:Key="reportWindow_version">Verzia</system:String>
|
||||
|
|
@ -207,13 +223,13 @@
|
|||
<system:String x:Key="reportWindow_flowlauncher_got_an_error">Flow Launcher zaznamenal chybu</system:String>
|
||||
|
||||
<!-- General Notice -->
|
||||
<system:String x:Key="pleaseWait">Čakajte, prosím…</system:String>
|
||||
<system:String x:Key="pleaseWait">Čakajte, prosím...</system:String>
|
||||
|
||||
<!-- update -->
|
||||
<system:String x:Key="update_flowlauncher_update_check">Kontrolujú sa aktualizácie</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_check">Vyhľadávajú sa aktualizácie</system:String>
|
||||
<system:String x:Key="update_flowlauncher_already_on_latest">Už máte najnovšiu verziu Flow Launchera</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_found">Bola nájdená aktualizácia</system:String>
|
||||
<system:String x:Key="update_flowlauncher_updating">Aktualizuje sa…</system:String>
|
||||
<system:String x:Key="update_flowlauncher_updating">Aktualizuje sa...</system:String>
|
||||
<system:String x:Key="update_flowlauncher_fail_moving_portable_user_profile_data">
|
||||
Flow Launcher nedokázal presunúť používateľské údaje do aktualizovanej verzie.
|
||||
Prosím, presuňte profilový priečinok data z {0} do {1}
|
||||
|
|
@ -224,11 +240,11 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Aktualizovať</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Zrušiť</system:String>
|
||||
<system:String x:Key="update_flowlauncher_fail">Aktualizácia zlyhala</system:String>
|
||||
<system:String x:Key="update_flowlauncher_check_connection">Skontrolujte pripojenie a skúste aktualizovať nastavenia servera proxy na github-cloud.s3.amazonaws.com.</system:String>
|
||||
<system:String x:Key="update_flowlauncher_check_connection">Skontrolujte pripojenie a skúste aktualizovať nastavenia servera proxy k github-cloud.s3.amazonaws.com.</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Tento upgrade reštartuje Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Nasledujúce súbory budú aktualizované</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Nasledujúce súbory budú aktualizované</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Aktualizovať súbory</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Aktualizovať popis</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Aktualizovať popis</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">Preskočiť</system:String>
|
||||
|
|
@ -239,8 +255,8 @@
|
|||
<system:String x:Key="Welcome_Page2_Text01">Vyhľadávajte vo všetkých aplikáciách, súboroch, záložkách, YouTube, Twitteri a ďalších. Všetko z pohodlia klávesnice bez toho, aby ste sa dotkli myši.</system:String>
|
||||
<system:String x:Key="Welcome_Page2_Text02">Flow Launcher sa spúšťa pomocou dole uvedenej klávesovej skratky, poďte si to vyskúšať. Ak ju chcete zmeniť, kliknite na vstupné pole a stlačte požadovanú klávesovú skratku na klávesnici.</system:String>
|
||||
<system:String x:Key="Welcome_Page3_Title">Klávesové skratky</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Title">Kľúčové slovo akcie a príkazy</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Text01">Vyhľadávajte na webe, spúšťajte aplikácie alebo spúšťajte rôzne funkcie pomocou pluginov Flow Launchera. Niektoré funkcie sa začínajú kľúčovým slovom akcie a v prípade potreby ich možno použiť aj bez kľúčových slov akcie. Vyskúšajte nižšie uvedené dopyty v aplikácii Flow Launcher.</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Title">Aktivačné príkazy a príkazy</system:String>
|
||||
<system:String x:Key="Welcome_Page4_Text01">Vyhľadávajte na webe, spúšťajte aplikácie alebo spúšťajte rôzne funkcie pomocou pluginov Flow Launchera. Niektoré funkcie sa začínajú aktivačným príkazom a v prípade potreby ich možno použiť aj bez aktivačných príkazov. Vyskúšajte nižšie uvedené výrazy v aplikácii Flow Launcher.</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Title">Spustite Flow Launcher</system:String>
|
||||
<system:String x:Key="Welcome_Page5_Text01">Hotovo. Užite si Flow Launcher. Nezabudnite na klávesovú skratku na spustenie :)</system:String>
|
||||
|
||||
|
|
@ -253,6 +269,7 @@
|
|||
<system:String x:Key="HotkeyCtrlShiftEnterDesc">Spustiť ako správca</system:String>
|
||||
<system:String x:Key="HotkeyCtrlHDesc">História dopytov</system:String>
|
||||
<system:String x:Key="HotkeyESCDesc">Návrat na výsledky z kontextovej ponuky</system:String>
|
||||
<system:String x:Key="HotkeyTabDesc">Automatické dokončovanie</system:String>
|
||||
<system:String x:Key="HotkeyRunDesc">Otvoriť/spustiť vybranú položku</system:String>
|
||||
<system:String x:Key="HotkeyCtrlIDesc">Otvoriť okno s nastaveniami</system:String>
|
||||
<system:String x:Key="HotkeyF5Desc">Znova načítať údaje pluginov</system:String>
|
||||
|
|
|
|||
|
|
@ -135,8 +135,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Ažuriraj</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">Otkaži</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Ova nadogradnja će ponovo pokrenuti Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Sledeće datoteke će biti ažurirane</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Sledeće datoteke će biti ažurirane</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Ažuriraj datoteke</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Opis ažuriranja</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Opis ažuriranja</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -139,8 +139,8 @@
|
|||
<system:String x:Key="update_flowlauncher_update">Güncelle</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_cancel">İptal</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_restart_flowlauncher_tip">Bu güncelleme Flow Launcher'u yeniden başlatacaktır</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Aşağıdaki dosyalar güncelleştirilecektir</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Aşağıdaki dosyalar güncelleştirilecektir</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Güncellenecek dosyalar</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Güncelleme açıklaması</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Güncelleme açıklaması</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -126,8 +126,8 @@
|
|||
<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_update_restart_flowlauncher_tip">Це оновлення перезавантажить Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">Ці файли будуть оновлені</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">Ці файли будуть оновлені</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">Оновити файли</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">Опис оновлення</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">Опис оновлення</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
@ -226,9 +226,9 @@
|
|||
<system:String x:Key="update_flowlauncher_fail">更新失败</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_upadte_files">下列文件会被更新</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">下列文件会被更新</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">更新文件</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">更新日志</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">更新日志</system:String>
|
||||
|
||||
<!-- Welcome Window -->
|
||||
<system:String x:Key="Skip">跳过</system:String>
|
||||
|
|
|
|||
|
|
@ -126,8 +126,8 @@
|
|||
<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_update_restart_flowlauncher_tip">此更新需要重新啟動 Flow Launcher</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_files">下列檔案會被更新</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_files">下列檔案會被更新</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_files">更新檔案</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_upadte_description">更新日誌</system:String>
|
||||
<system:String x:Key="update_flowlauncher_update_update_description">更新日誌</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -175,6 +175,9 @@
|
|||
Style="{DynamicResource QueryBoxStyle}"
|
||||
Text="{Binding QueryText, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
Visibility="Visible">
|
||||
<TextBox.CommandBindings>
|
||||
<CommandBinding Command="ApplicationCommands.Copy" Executed="OnCopy" />
|
||||
</TextBox.CommandBindings>
|
||||
<TextBox.ContextMenu>
|
||||
<ContextMenu>
|
||||
<MenuItem Command="ApplicationCommands.Cut" Header="{DynamicResource cut}" />
|
||||
|
|
@ -190,12 +193,25 @@
|
|||
</TextBox.ContextMenu>
|
||||
</TextBox>
|
||||
<Canvas Style="{DynamicResource SearchIconPosition}">
|
||||
<Image
|
||||
x:Name="PluginActivationIcon"
|
||||
Width="32"
|
||||
Height="32"
|
||||
Margin="0,0,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Center"
|
||||
Panel.ZIndex="2"
|
||||
RenderOptions.BitmapScalingMode="HighQuality"
|
||||
Source="{Binding PluginIconPath}"
|
||||
Stretch="Uniform"
|
||||
Style="{DynamicResource PluginActivationIcon}" />
|
||||
<Path
|
||||
Name="SearchIcon"
|
||||
Margin="0"
|
||||
Data="{DynamicResource SearchIconImg}"
|
||||
Stretch="Fill"
|
||||
Style="{DynamicResource SearchIconStyle}" />
|
||||
Style="{DynamicResource SearchIconStyle}"
|
||||
Visibility="{Binding SearchIconVisibility}" />
|
||||
</Canvas>
|
||||
</Grid>
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ using KeyEventArgs = System.Windows.Input.KeyEventArgs;
|
|||
using NotifyIcon = System.Windows.Forms.NotifyIcon;
|
||||
using Flow.Launcher.Infrastructure;
|
||||
using System.Windows.Media;
|
||||
using Flow.Launcher.Infrastructure.Hotkey;
|
||||
using Flow.Launcher.Plugin.SharedCommands;
|
||||
|
||||
namespace Flow.Launcher
|
||||
{
|
||||
|
|
@ -50,7 +52,18 @@ namespace Flow.Launcher
|
|||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
private void OnCopy(object sender, ExecutedRoutedEventArgs e)
|
||||
{
|
||||
if (QueryTextBox.SelectionLength == 0)
|
||||
{
|
||||
_viewModel.ResultCopy(string.Empty);
|
||||
|
||||
}
|
||||
else if (!string.IsNullOrEmpty(QueryTextBox.Text))
|
||||
{
|
||||
_viewModel.ResultCopy(QueryTextBox.SelectedText);
|
||||
}
|
||||
}
|
||||
private async void OnClosing(object sender, CancelEventArgs e)
|
||||
{
|
||||
_settings.WindowTop = Top;
|
||||
|
|
@ -59,6 +72,7 @@ namespace Flow.Launcher
|
|||
_viewModel.Save();
|
||||
e.Cancel = true;
|
||||
await PluginManager.DisposePluginsAsync();
|
||||
Notification.Uninstall();
|
||||
Environment.Exit(0);
|
||||
}
|
||||
|
||||
|
|
@ -159,6 +173,9 @@ namespace Flow.Launcher
|
|||
case nameof(Settings.Language):
|
||||
UpdateNotifyIconText();
|
||||
break;
|
||||
case nameof(Settings.Hotkey):
|
||||
UpdateNotifyIconText();
|
||||
break;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
@ -180,7 +197,7 @@ namespace Flow.Launcher
|
|||
private void UpdateNotifyIconText()
|
||||
{
|
||||
var menu = contextMenu;
|
||||
((MenuItem)menu.Items[1]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen");
|
||||
((MenuItem)menu.Items[1]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") + " (" + _settings.Hotkey + ")";
|
||||
((MenuItem)menu.Items[2]).Header = InternationalizationManager.Instance.GetTranslation("GameMode");
|
||||
((MenuItem)menu.Items[3]).Header = InternationalizationManager.Instance.GetTranslation("iconTraySettings");
|
||||
((MenuItem)menu.Items[4]).Header = InternationalizationManager.Instance.GetTranslation("iconTrayExit");
|
||||
|
|
@ -203,7 +220,7 @@ namespace Flow.Launcher
|
|||
};
|
||||
var open = new MenuItem
|
||||
{
|
||||
Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen")
|
||||
Header = InternationalizationManager.Instance.GetTranslation("iconTrayOpen") + " (" +_settings.Hotkey + ")"
|
||||
};
|
||||
var gamemode = new MenuItem
|
||||
{
|
||||
|
|
@ -495,6 +512,24 @@ namespace Flow.Launcher
|
|||
e.Handled = true;
|
||||
}
|
||||
break;
|
||||
case Key.Back:
|
||||
var specialKeyState = GlobalHotkey.CheckModifiers();
|
||||
if (specialKeyState.CtrlPressed)
|
||||
{
|
||||
if (_viewModel.SelectedIsFromQueryResults()
|
||||
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length)
|
||||
{
|
||||
var queryWithoutActionKeyword =
|
||||
QueryBuilder.Build(QueryTextBox.Text.Trim(), PluginManager.NonGlobalPlugins).Search;
|
||||
|
||||
if (FilesFolders.IsLocationPathString(queryWithoutActionKeyword))
|
||||
{
|
||||
_viewModel.BackspaceCommand.Execute(null);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
|
||||
|
|
@ -503,7 +538,7 @@ namespace Flow.Launcher
|
|||
|
||||
private void MoveQueryTextToEnd()
|
||||
{
|
||||
QueryTextBox.CaretIndex = QueryTextBox.Text.Length;
|
||||
Dispatcher.Invoke(() => QueryTextBox.CaretIndex = QueryTextBox.Text.Length);
|
||||
}
|
||||
|
||||
public void InitializeColorScheme()
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
using Flow.Launcher.Infrastructure;
|
||||
using Microsoft.Toolkit.Uwp.Notifications;
|
||||
using System;
|
||||
using System.IO;
|
||||
using Windows.Data.Xml.Dom;
|
||||
|
|
@ -8,10 +9,17 @@ namespace Flow.Launcher
|
|||
{
|
||||
internal static class Notification
|
||||
{
|
||||
internal static bool legacy = Environment.OSVersion.Version.Build < 19041;
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")]
|
||||
internal static void Uninstall()
|
||||
{
|
||||
if (!legacy)
|
||||
ToastNotificationManagerCompat.Uninstall();
|
||||
}
|
||||
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Interoperability", "CA1416:Validate platform compatibility", Justification = "<Pending>")]
|
||||
public static void Show(string title, string subTitle, string iconPath)
|
||||
{
|
||||
var legacy = Environment.OSVersion.Version.Build < 19041;
|
||||
// Handle notification for win7/8/early win10
|
||||
if (legacy)
|
||||
{
|
||||
|
|
@ -24,13 +32,11 @@ namespace Flow.Launcher
|
|||
? Path.Combine(Constant.ProgramDirectory, "Images\\app.png")
|
||||
: iconPath;
|
||||
|
||||
var xml = $"<?xml version=\"1.0\"?><toast><visual><binding template=\"ToastImageAndText04\"><image id=\"1\" src=\"{Icon}\" alt=\"meziantou\"/><text id=\"1\">{title}</text>" +
|
||||
$"<text id=\"2\">{subTitle}</text></binding></visual></toast>";
|
||||
var toastXml = new XmlDocument();
|
||||
toastXml.LoadXml(xml);
|
||||
var toast = new ToastNotification(toastXml);
|
||||
ToastNotificationManager.CreateToastNotifier("Flow Launcher").Show(toast);
|
||||
|
||||
new ToastContentBuilder()
|
||||
.AddText(title, hintMaxLines: 1)
|
||||
.AddText(subTitle)
|
||||
.AddAppLogoOverride(new Uri(Icon))
|
||||
.Show();
|
||||
}
|
||||
|
||||
private static void LegacyShow(string title, string subTitle, string iconPath)
|
||||
|
|
|
|||
|
|
@ -209,21 +209,53 @@ namespace Flow.Launcher
|
|||
explorer.Start();
|
||||
}
|
||||
|
||||
public void OpenUrl(string url, bool? inPrivate = null)
|
||||
private void OpenUri(Uri uri, bool? inPrivate = null)
|
||||
{
|
||||
var browserInfo = _settingsVM.Settings.CustomBrowser;
|
||||
|
||||
var path = browserInfo.Path == "*" ? "" : browserInfo.Path;
|
||||
|
||||
if (browserInfo.OpenInTab)
|
||||
if (uri.Scheme == Uri.UriSchemeHttp || uri.Scheme == Uri.UriSchemeHttps)
|
||||
{
|
||||
url.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
|
||||
var browserInfo = _settingsVM.Settings.CustomBrowser;
|
||||
|
||||
var path = browserInfo.Path == "*" ? "" : browserInfo.Path;
|
||||
|
||||
if (browserInfo.OpenInTab)
|
||||
{
|
||||
uri.AbsoluteUri.OpenInBrowserTab(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
|
||||
}
|
||||
else
|
||||
{
|
||||
uri.AbsoluteUri.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
url.OpenInBrowserWindow(path, inPrivate ?? browserInfo.EnablePrivate, browserInfo.PrivateArg);
|
||||
}
|
||||
Process.Start(new ProcessStartInfo()
|
||||
{
|
||||
FileName = uri.AbsoluteUri,
|
||||
UseShellExecute = true
|
||||
})?.Dispose();
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
public void OpenUrl(string url, bool? inPrivate = null)
|
||||
{
|
||||
OpenUri(new Uri(url), inPrivate);
|
||||
}
|
||||
|
||||
public void OpenUrl(Uri url, bool? inPrivate = null)
|
||||
{
|
||||
OpenUri(url, inPrivate);
|
||||
}
|
||||
|
||||
public void OpenAppUri(string appUri)
|
||||
{
|
||||
OpenUri(new Uri(appUri));
|
||||
}
|
||||
|
||||
public void OpenAppUri(Uri appUri)
|
||||
{
|
||||
OpenUri(appUri);
|
||||
}
|
||||
|
||||
public event FlowLauncherGlobalKeyboardEventHandler GlobalKeyboardEvent;
|
||||
|
|
@ -254,4 +286,4 @@ namespace Flow.Launcher
|
|||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -52,8 +52,8 @@ namespace Flow.Launcher
|
|||
var link = new Hyperlink { IsEnabled = true };
|
||||
link.Inlines.Add(url);
|
||||
link.NavigateUri = new Uri(url);
|
||||
link.RequestNavigate += (s, e) => SearchWeb.NewTabInBrowser(e.Uri.ToString());
|
||||
link.Click += (s, e) => SearchWeb.NewTabInBrowser(url);
|
||||
link.RequestNavigate += (s, e) => SearchWeb.OpenInBrowserTab(e.Uri.ToString());
|
||||
link.Click += (s, e) => SearchWeb.OpenInBrowserTab(url);
|
||||
|
||||
paragraph.Inlines.Add(textBeforeUrl);
|
||||
paragraph.Inlines.Add(link);
|
||||
|
|
|
|||
|
|
@ -1469,6 +1469,7 @@
|
|||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ui:ToggleSwitch">
|
||||
<Border
|
||||
Width="Auto"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
|
|
@ -1478,7 +1479,7 @@
|
|||
<ui:SimpleVisualStateManager />
|
||||
</VisualStateManager.CustomVisualStateManager>
|
||||
|
||||
<Grid>
|
||||
<Grid HorizontalAlignment="Right">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
|
|
@ -1486,7 +1487,7 @@
|
|||
|
||||
<ui:ContentPresenterEx
|
||||
x:Name="HeaderContentPresenter"
|
||||
Grid.Row="1"
|
||||
Grid.Row="0"
|
||||
Margin="{DynamicResource ToggleSwitchTopHeaderMargin}"
|
||||
VerticalAlignment="Top"
|
||||
Content="{TemplateBinding Header}"
|
||||
|
|
@ -1497,11 +1498,9 @@
|
|||
TextWrapping="Wrap"
|
||||
Visibility="Collapsed" />
|
||||
<Grid
|
||||
Grid.Row="0"
|
||||
Width="100"
|
||||
MinWidth="{DynamicResource ToggleSwitchThemeMinWidth}"
|
||||
Margin="10,0,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Grid.Row="1"
|
||||
MinWidth="10"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top">
|
||||
|
||||
<Grid.RowDefinitions>
|
||||
|
|
@ -1520,6 +1519,7 @@
|
|||
Grid.RowSpan="3"
|
||||
Grid.ColumnSpan="3"
|
||||
Margin="0,5"
|
||||
HorizontalAlignment="Right"
|
||||
ui:FocusVisualHelper.IsTemplateFocusTarget="True"
|
||||
Background="{DynamicResource ToggleSwitchContainerBackground}" />
|
||||
<ContentPresenter
|
||||
|
|
@ -1552,6 +1552,7 @@
|
|||
Grid.Column="2"
|
||||
Width="40"
|
||||
Height="20"
|
||||
HorizontalAlignment="Right"
|
||||
Fill="{DynamicResource ToggleSwitchFillOff}"
|
||||
RadiusX="10"
|
||||
RadiusY="10"
|
||||
|
|
@ -1563,6 +1564,7 @@
|
|||
Grid.Column="2"
|
||||
Width="40"
|
||||
Height="20"
|
||||
HorizontalAlignment="Right"
|
||||
Fill="{DynamicResource ToggleSwitchFillOn}"
|
||||
Opacity="0"
|
||||
RadiusX="10"
|
||||
|
|
|
|||
|
|
@ -133,12 +133,7 @@
|
|||
Style="{DynamicResource ItemSubTitleStyle}"
|
||||
Text="{Binding Result.SubTitle}"
|
||||
ToolTip="{Binding ShowSubTitleToolTip}">
|
||||
<vm:ResultsViewModel.FormattedText>
|
||||
<MultiBinding Converter="{StaticResource HighlightTextConverter}">
|
||||
<Binding Path="Result.SubTitle" />
|
||||
<Binding Path="Result.SubTitleHighlightData" />
|
||||
</MultiBinding>
|
||||
</vm:ResultsViewModel.FormattedText>
|
||||
|
||||
</TextBlock>
|
||||
|
||||
</Grid>
|
||||
|
|
|
|||
|
|
@ -195,8 +195,10 @@
|
|||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
Orientation="Horizontal">
|
||||
<RadioButton IsChecked="{Binding OpenInTab}">New Tab</RadioButton>
|
||||
<RadioButton IsChecked="{Binding OpenInNewWindow, Mode=OneTime}">New Window</RadioButton>
|
||||
<RadioButton IsChecked="{Binding OpenInTab}"
|
||||
Content="{DynamicResource defaultBrowser_newTab}"></RadioButton>
|
||||
<RadioButton IsChecked="{Binding OpenInNewWindow, Mode=OneTime}"
|
||||
Content="{DynamicResource defaultBrowser_newWindow}"></RadioButton>
|
||||
</StackPanel>
|
||||
<TextBlock
|
||||
Grid.Row="3"
|
||||
|
|
|
|||
|
|
@ -57,10 +57,7 @@
|
|||
MinWidth="20"
|
||||
MaxWidth="60" />
|
||||
<ColumnDefinition Width="8*" />
|
||||
<ColumnDefinition
|
||||
Width="Auto"
|
||||
MinWidth="40"
|
||||
MaxWidth="550" />
|
||||
<ColumnDefinition Width="Auto" MinWidth="30" />
|
||||
</Grid.ColumnDefinitions>
|
||||
</Grid>
|
||||
</ItemsPanelTemplate>
|
||||
|
|
@ -102,7 +99,7 @@
|
|||
TargetType="{x:Type CheckBox}">
|
||||
<Setter Property="Width" Value="24" />
|
||||
<Setter Property="Grid.Column" Value="2" />
|
||||
<Setter Property="Margin" Value="0,4,0,4" />
|
||||
<Setter Property="Margin" Value="0,4,10,4" />
|
||||
<Setter Property="LayoutTransform">
|
||||
<Setter.Value>
|
||||
<ScaleTransform ScaleX="1" ScaleY="1" />
|
||||
|
|
@ -110,11 +107,16 @@
|
|||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="SideToggleSwitch" TargetType="{x:Type ui:ToggleSwitch}">
|
||||
<Style
|
||||
x:Key="SideToggleSwitch"
|
||||
BasedOn="{StaticResource DefaultToggleSwitch}"
|
||||
TargetType="{x:Type ui:ToggleSwitch}">
|
||||
<Setter Property="Grid.Column" Value="2" />
|
||||
<Setter Property="Width" Value="Auto" />
|
||||
<Setter Property="HorizontalAlignment" Value="Right" />
|
||||
<Setter Property="HorizontalContentAlignment" Value="Right" />
|
||||
<Setter Property="OffContent" Value="{DynamicResource disable}" />
|
||||
<Setter Property="OnContent" Value="{DynamicResource enable}" />
|
||||
<Setter Property="FlowDirection" Value="RightToLeft" />
|
||||
<Setter Property="Margin" Value="0,4,22,4" />
|
||||
</Style>
|
||||
|
||||
|
|
@ -948,9 +950,9 @@
|
|||
FlowDirection="LeftToRight">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="100" MinWidth="100" />
|
||||
<ColumnDefinition Width="3*" />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition Width="8*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel
|
||||
Grid.Column="0"
|
||||
|
|
@ -990,7 +992,7 @@
|
|||
<Border>
|
||||
<Button
|
||||
x:Name="PriorityButton"
|
||||
Margin="0,0,12,0"
|
||||
Margin="0,0,22,0"
|
||||
VerticalAlignment="Center"
|
||||
Click="OnPluginPriorityClick"
|
||||
Content="{Binding Priority, UpdateSourceTrigger=PropertyChanged}"
|
||||
|
|
@ -1022,10 +1024,11 @@
|
|||
</StackPanel>
|
||||
<DockPanel Grid.Column="3">
|
||||
<ui:ToggleSwitch
|
||||
Margin="0"
|
||||
DockPanel.Dock="Right"
|
||||
Margin="0,0,6,0"
|
||||
HorizontalAlignment="Right"
|
||||
IsOn="{Binding PluginState}"
|
||||
Style="{DynamicResource SideToggleSwitch}" />
|
||||
OffContent="{DynamicResource disable}"
|
||||
OnContent="{DynamicResource enable}" />
|
||||
</DockPanel>
|
||||
</Grid>
|
||||
|
||||
|
|
@ -1955,7 +1958,7 @@
|
|||
</StackPanel>
|
||||
<Button
|
||||
Grid.Column="2"
|
||||
Width="180"
|
||||
MinWidth="180"
|
||||
Margin="0,0,18,0"
|
||||
HorizontalAlignment="Center"
|
||||
Click="OpenThemeFolder"
|
||||
|
|
@ -2511,6 +2514,18 @@
|
|||
Margin="14,14,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource Color15B}"
|
||||
TextWrapping="WrapWithOverflow">
|
||||
<Hyperlink NavigateUri="https://icons8.com" RequestNavigate="OnRequestNavigate">
|
||||
<Run Text="Icons by icons8.com" />
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock
|
||||
Margin="14,4,0,0"
|
||||
HorizontalAlignment="Center"
|
||||
VerticalAlignment="Bottom"
|
||||
DockPanel.Dock="Bottom"
|
||||
FontSize="12"
|
||||
Foreground="{DynamicResource Color15B}"
|
||||
|
|
|
|||
|
|
@ -232,7 +232,7 @@ namespace Flow.Launcher
|
|||
var uri = new Uri(website);
|
||||
if (Uri.CheckSchemeName(uri.Scheme))
|
||||
{
|
||||
website.NewTabInBrowser();
|
||||
website.OpenInBrowserTab();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,15 +1,16 @@
|
|||
<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"
|
||||
xmlns:userSettings="clr-namespace:Flow.Launcher.Infrastructure.UserSettings;assembly=Flow.Launcher.Infrastructure">
|
||||
<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"
|
||||
xmlns:userSettings="clr-namespace:Flow.Launcher.Infrastructure.UserSettings;assembly=Flow.Launcher.Infrastructure">
|
||||
|
||||
<!-- Further font customisations are dynamically loaded in Theme.cs -->
|
||||
<!-- Further font customisations are dynamically loaded in Theme.cs -->
|
||||
<Style x:Key="BaseQueryBoxStyle" TargetType="{x:Type TextBox}">
|
||||
<Setter Property="BorderThickness" Value="0" />
|
||||
<Setter Property="FontSize" Value="28" />
|
||||
<Setter Property="FontWeight" Value="Regular" />
|
||||
<Setter Property="Margin" Value="16 7 0 7" />
|
||||
<Setter Property="Padding" Value="0 4 68 0" />
|
||||
<Setter Property="Margin" Value="16,7,0,7" />
|
||||
<Setter Property="Padding" Value="0,4,68,0" />
|
||||
<Setter Property="Background" Value="#2F2F2F" />
|
||||
<Setter Property="Height" Value="48" />
|
||||
<Setter Property="Foreground" Value="#E3E0E3" />
|
||||
|
|
@ -20,13 +21,22 @@
|
|||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type TextBox}">
|
||||
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
|
||||
<ScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"
|
||||
Background="{TemplateBinding Background}">
|
||||
<Border
|
||||
x:Name="border"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
SnapsToDevicePixels="True">
|
||||
<ScrollViewer
|
||||
x:Name="PART_ContentHost"
|
||||
Background="{TemplateBinding Background}"
|
||||
Focusable="false"
|
||||
HorizontalScrollBarVisibility="Hidden"
|
||||
VerticalScrollBarVisibility="Hidden">
|
||||
<ScrollViewer.ContentTemplate>
|
||||
<DataTemplate>
|
||||
<Grid Background="{Binding Background, ElementName=PART_ContentHost}" RenderOptions.ClearTypeHint="Enabled">
|
||||
<ContentPresenter Content="{Binding Path=Content, ElementName=PART_ContentHost}"></ContentPresenter>
|
||||
<Grid Background="{Binding Background, ElementName=PART_ContentHost}">
|
||||
<ContentPresenter Content="{Binding Path=Content, ElementName=PART_ContentHost}" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ScrollViewer.ContentTemplate>
|
||||
|
|
@ -37,47 +47,47 @@
|
|||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- Further font customisations are dynamically loaded in Theme.cs -->
|
||||
<Style x:Key="BaseQuerySuggestionBoxStyle" BasedOn="{StaticResource BaseQueryBoxStyle}" TargetType="{x:Type TextBox}">
|
||||
<!-- Further font customisations are dynamically loaded in Theme.cs -->
|
||||
<Style
|
||||
x:Key="BaseQuerySuggestionBoxStyle"
|
||||
BasedOn="{StaticResource BaseQueryBoxStyle}"
|
||||
TargetType="{x:Type TextBox}">
|
||||
<Setter Property="Foreground" Value="DarkGray" />
|
||||
<Setter Property="Height" Value="48" />
|
||||
<Setter Property="Margin" Value="16 7 0 7" />
|
||||
<Setter Property="Margin" Value="16,7,0,7" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="Padding" Value="0 4 68 0" />
|
||||
<Setter Property="Padding" Value="0,4,68,0" />
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch" />
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
</Style>
|
||||
|
||||
<Style x:Key="BaseWindowBorderStyle" TargetType="{x:Type Border}">
|
||||
<Setter Property="BorderThickness" Value="0" />
|
||||
<Setter Property="Background" Value="#2F2F2F"></Setter>
|
||||
<Setter Property="Padding" Value="0 0 0 0" />
|
||||
<Setter Property="Background" Value="#2F2F2F" />
|
||||
<Setter Property="Padding" Value="0,0,0,0" />
|
||||
<Setter Property="CornerRadius" Value="5" />
|
||||
</Style>
|
||||
<Style x:Key="BaseWindowStyle" TargetType="{x:Type Window}">
|
||||
<Setter Property="Width" Value="600" />
|
||||
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="WindowRadius" TargetType="{x:Type Border}">
|
||||
<Setter Property="CornerRadius" Value="5" />
|
||||
</Style>
|
||||
|
||||
|
||||
<Style x:Key="BasePendingLineStyle" TargetType="{x:Type Line}">
|
||||
<Setter Property="Stroke" Value="Blue" />
|
||||
</Style>
|
||||
|
||||
|
||||
<!-- Item Style -->
|
||||
|
||||
<!-- Item Style -->
|
||||
<Style x:Key="BaseItemTitleStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="#FFFFF8" />
|
||||
<Setter Property="FontSize" Value="16" />
|
||||
<Setter Property="FontWeight" Value="Medium" />
|
||||
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled"/>
|
||||
</Style>
|
||||
<Style x:Key="BaseItemSubTitleStyle" TargetType="{x:Type TextBlock}" >
|
||||
<Style x:Key="BaseItemSubTitleStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="#D9D9D4" />
|
||||
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled"/>
|
||||
<Setter Property="FontSize" Value="13" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Style.Triggers>
|
||||
|
|
@ -89,9 +99,8 @@
|
|||
<Style x:Key="BaseItemNumberStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="VerticalAlignment" Value="Center" />
|
||||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="Margin" Value="3 0 0 0" />
|
||||
<Setter Property="Margin" Value="3,0,0,0" />
|
||||
<Setter Property="FontSize" Value="22" />
|
||||
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled"/>
|
||||
</Style>
|
||||
<Style x:Key="BaseGlyphStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="#ffffff" />
|
||||
|
|
@ -99,34 +108,31 @@
|
|||
<Setter Property="HorizontalAlignment" Value="Center" />
|
||||
<Setter Property="Width" Value="25" />
|
||||
<Setter Property="Height" Value="25" />
|
||||
<Setter Property="FontSize" Value="25"/>
|
||||
<Setter Property="FontSize" Value="25" />
|
||||
</Style>
|
||||
<Style x:Key="BaseItemTitleSelectedStyle" TargetType="{x:Type TextBlock}" >
|
||||
<Style x:Key="BaseItemTitleSelectedStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="#FFFFF8" />
|
||||
<Setter Property="FontSize" Value="16" />
|
||||
<Setter Property="FontWeight" Value="Normal" />
|
||||
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled"/>
|
||||
</Style>
|
||||
<Style x:Key="BaseItemSubTitleSelectedStyle" TargetType="{x:Type TextBlock}" >
|
||||
<Style x:Key="BaseItemSubTitleSelectedStyle" TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="Foreground" Value="#D9D9D4" />
|
||||
<Setter Property="FontSize" Value="13" />
|
||||
<Setter Property="RenderOptions.ClearTypeHint" Value="Enabled"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding ElementName=SubTitle, UpdateSourceTrigger=PropertyChanged, Path=Text.Length}" Value="0">
|
||||
<Setter Property="Height" Value="0" />
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
<Style x:Key="BaseItemImageSelectedStyle" TargetType="{x:Type Image}" >
|
||||
</Style>
|
||||
<Style x:Key="BaseItemImageSelectedStyle" TargetType="{x:Type Image}" />
|
||||
|
||||
<Style x:Key="BaseListboxStyle" TargetType="{x:Type ListBox}">
|
||||
<Setter Property="BorderBrush" Value="Transparent"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled"/>
|
||||
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
|
||||
<Setter Property="Margin" Value="0 0 0 0" />
|
||||
<Setter Property="Padding" Value="0 0 0 0" />
|
||||
<Setter Property="BorderBrush" Value="Transparent" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Disabled" />
|
||||
<Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto" />
|
||||
<Setter Property="Margin" Value="0,0,0,0" />
|
||||
<Setter Property="Padding" Value="0,0,0,0" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="ListBox">
|
||||
|
|
@ -135,12 +141,12 @@
|
|||
<Style TargetType="ScrollViewer">
|
||||
<Style.Triggers>
|
||||
<Trigger Property="ComputedVerticalScrollBarVisibility" Value="Visible">
|
||||
<Setter Property="Margin" Value="0 0 0 0" />
|
||||
<Setter Property="Padding" Value="0 0 0 0" />
|
||||
<Setter Property="Margin" Value="0,0,0,0" />
|
||||
<Setter Property="Padding" Value="0,0,0,0" />
|
||||
</Trigger>
|
||||
<Trigger Property="ComputedVerticalScrollBarVisibility" Value="Collapsed">
|
||||
<Setter Property="Margin" Value="0 0 0 0" />
|
||||
<Setter Property="Padding" Value="0 0 0 0" />
|
||||
<Setter Property="Margin" Value="0,0,0,0" />
|
||||
<Setter Property="Padding" Value="0,0,0,0" />
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
|
|
@ -152,7 +158,7 @@
|
|||
</Setter>
|
||||
</Style>
|
||||
|
||||
<!-- ScrollViewer Style -->
|
||||
<!-- ScrollViewer Style -->
|
||||
<ControlTemplate x:Key="ScrollViewerControlTemplate" TargetType="{x:Type ScrollViewer}">
|
||||
<Grid x:Name="Grid" Background="{TemplateBinding Background}">
|
||||
<Grid.ColumnDefinitions>
|
||||
|
|
@ -160,44 +166,50 @@
|
|||
<ColumnDefinition Width="Auto" />
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<!--content in the left of ScrollViewer, just default-->
|
||||
<ScrollContentPresenter x:Name="PART_ScrollContentPresenter"
|
||||
CanContentScroll="{TemplateBinding CanContentScroll}"
|
||||
CanHorizontallyScroll="False"
|
||||
CanVerticallyScroll="False"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
Content="{TemplateBinding Content}"
|
||||
Grid.Column="0"
|
||||
Margin="0"
|
||||
Grid.Row="0" />
|
||||
<!-- content in the left of ScrollViewer, just default -->
|
||||
<ScrollContentPresenter
|
||||
x:Name="PART_ScrollContentPresenter"
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Margin="0"
|
||||
CanContentScroll="{TemplateBinding CanContentScroll}"
|
||||
CanHorizontallyScroll="False"
|
||||
CanVerticallyScroll="False"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}" />
|
||||
|
||||
<!--Scrollbar in thr rigth of ScrollViewer-->
|
||||
<ScrollBar x:Name="PART_VerticalScrollBar"
|
||||
AutomationProperties.AutomationId="VerticalScrollBar"
|
||||
Cursor="Arrow"
|
||||
Grid.Column="0"
|
||||
HorizontalAlignment="Right"
|
||||
Margin="0 0 0 0"
|
||||
Maximum="{TemplateBinding ScrollableHeight}"
|
||||
Minimum="0"
|
||||
Grid.Row="0"
|
||||
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
|
||||
Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}"
|
||||
ViewportSize="{TemplateBinding ViewportHeight}"
|
||||
Style="{DynamicResource ScrollBarStyle}" />
|
||||
<!-- Scrollbar in thr rigth of ScrollViewer -->
|
||||
<ScrollBar
|
||||
x:Name="PART_VerticalScrollBar"
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Margin="0,0,0,0"
|
||||
HorizontalAlignment="Right"
|
||||
AutomationProperties.AutomationId="VerticalScrollBar"
|
||||
Cursor="Arrow"
|
||||
Maximum="{TemplateBinding ScrollableHeight}"
|
||||
Minimum="0"
|
||||
Style="{DynamicResource ScrollBarStyle}"
|
||||
ViewportSize="{TemplateBinding ViewportHeight}"
|
||||
Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"
|
||||
Value="{Binding VerticalOffset, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" />
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
|
||||
<!-- button style in the middle of the scrollbar -->
|
||||
<!-- button style in the middle of the scrollbar -->
|
||||
<Style x:Key="BaseThumbStyle" TargetType="{x:Type Thumb}">
|
||||
<Setter Property="SnapsToDevicePixels" Value="True"/>
|
||||
<Setter Property="OverridesDefaultStyle" Value="true"/>
|
||||
<Setter Property="IsTabStop" Value="false"/>
|
||||
<Setter Property="Focusable" Value="false"/>
|
||||
<Setter Property="SnapsToDevicePixels" Value="True" />
|
||||
<Setter Property="OverridesDefaultStyle" Value="true" />
|
||||
<Setter Property="IsTabStop" Value="false" />
|
||||
<Setter Property="Focusable" Value="false" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type Thumb}">
|
||||
<Border CornerRadius="2" DockPanel.Dock="Right" Background="#898989" BorderBrush="Transparent" />
|
||||
<Border
|
||||
Background="#898989"
|
||||
BorderBrush="Transparent"
|
||||
CornerRadius="2"
|
||||
DockPanel.Dock="Right" />
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
|
|
@ -207,16 +219,19 @@
|
|||
<Setter Property="Stylus.IsPressAndHoldEnabled" Value="false" />
|
||||
<Setter Property="Stylus.IsFlicksEnabled" Value="false" />
|
||||
<Setter Property="Background" Value="Black" />
|
||||
<!-- must set min width -->
|
||||
<Setter Property="MinWidth" Value="0"/>
|
||||
<Setter Property="Width" Value="5"/>
|
||||
<!-- must set min width -->
|
||||
<Setter Property="MinWidth" Value="0" />
|
||||
<Setter Property="Width" Value="5" />
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="{x:Type ScrollBar}">
|
||||
<DockPanel>
|
||||
<Track x:Name="PART_Track" IsDirectionReversed="true" DockPanel.Dock="Right">
|
||||
<Track
|
||||
x:Name="PART_Track"
|
||||
DockPanel.Dock="Right"
|
||||
IsDirectionReversed="true">
|
||||
<Track.Thumb>
|
||||
<Thumb Style="{DynamicResource ThumbStyle}"/>
|
||||
<Thumb Style="{DynamicResource ThumbStyle}" />
|
||||
</Track.Thumb>
|
||||
</Track>
|
||||
</DockPanel>
|
||||
|
|
@ -224,8 +239,7 @@
|
|||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
<Style x:Key="BaseSeparatorStyle" TargetType="Rectangle">
|
||||
</Style>
|
||||
<Style x:Key="BaseSeparatorStyle" TargetType="Rectangle" />
|
||||
<Style x:Key="HighlightStyle">
|
||||
<Setter Property="Inline.FontWeight" Value="Bold" />
|
||||
</Style>
|
||||
|
|
@ -249,12 +263,12 @@
|
|||
<Style x:Key="BaseSearchIconPosition" TargetType="{x:Type Canvas}">
|
||||
<Setter Property="Width" Value="32" />
|
||||
<Setter Property="Height" Value="32" />
|
||||
<Setter Property="Margin" Value="0 2 18 0" />
|
||||
<Setter Property="Margin" Value="0,2,18,0" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="HorizontalAlignment" Value="Right" />
|
||||
</Style>
|
||||
|
||||
<!--for classic themes-->
|
||||
|
||||
<!-- for classic themes -->
|
||||
<Style x:Key="SearchIconStyle" TargetType="{x:Type Path}">
|
||||
<Setter Property="Fill" Value="#555555" />
|
||||
<Setter Property="Width" Value="32" />
|
||||
|
|
@ -263,19 +277,24 @@
|
|||
<Style x:Key="SearchIconPosition" TargetType="{x:Type Canvas}">
|
||||
<Setter Property="Width" Value="32" />
|
||||
<Setter Property="Height" Value="32" />
|
||||
<Setter Property="Margin" Value="0 2 18 0" />
|
||||
<Setter Property="Margin" Value="0,2,18,0" />
|
||||
<Setter Property="Background" Value="Transparent" />
|
||||
<Setter Property="HorizontalAlignment" Value="Right" />
|
||||
</Style>
|
||||
<Style x:Key="ItemHotkeyStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource BaseItemHotkeyStyle}">
|
||||
<Style
|
||||
x:Key="ItemHotkeyStyle"
|
||||
BasedOn="{StaticResource BaseItemHotkeyStyle}"
|
||||
TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="Foreground" Value="#8f8f8f" />
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</Style>
|
||||
<Style x:Key="ItemHotkeySelectedStyle" TargetType="{x:Type TextBlock}" BasedOn="{StaticResource BaseItemHotkeySelecetedStyle}">
|
||||
<Style
|
||||
x:Key="ItemHotkeySelectedStyle"
|
||||
BasedOn="{StaticResource BaseItemHotkeySelecetedStyle}"
|
||||
TargetType="{x:Type TextBlock}">
|
||||
<Setter Property="FontSize" Value="15" />
|
||||
<Setter Property="Foreground" Value="#8f8f8f" />
|
||||
<Setter Property="Opacity" Value="0.5" />
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
|
||||
|
|
@ -13,12 +13,14 @@ using Flow.Launcher.Infrastructure.Hotkey;
|
|||
using Flow.Launcher.Infrastructure.Storage;
|
||||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.Plugin;
|
||||
using Flow.Launcher.Plugin.SharedCommands;
|
||||
using Flow.Launcher.Storage;
|
||||
using Flow.Launcher.Infrastructure.Logger;
|
||||
using Microsoft.VisualStudio.Threading;
|
||||
using System.Threading.Channels;
|
||||
using ISavable = Flow.Launcher.Plugin.ISavable;
|
||||
|
||||
using System.IO;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace Flow.Launcher.ViewModel
|
||||
{
|
||||
|
|
@ -229,7 +231,7 @@ namespace Flow.Launcher.ViewModel
|
|||
AutocompleteQueryCommand = new RelayCommand(_ =>
|
||||
{
|
||||
var result = SelectedResults.SelectedItem?.Result;
|
||||
if (result != null) // SelectedItem returns null if selection is empty.
|
||||
if (result != null && SelectedIsFromQueryResults()) // SelectedItem returns null if selection is empty.
|
||||
{
|
||||
var autoCompleteText = result.Title;
|
||||
|
||||
|
|
@ -252,6 +254,18 @@ namespace Flow.Launcher.ViewModel
|
|||
}
|
||||
});
|
||||
|
||||
BackspaceCommand = new RelayCommand(index =>
|
||||
{
|
||||
var query = QueryBuilder.Build(QueryText.Trim(), PluginManager.NonGlobalPlugins);
|
||||
|
||||
// GetPreviousExistingDirectory does not require trailing '\', otherwise will return empty string
|
||||
var path = FilesFolders.GetPreviousExistingDirectory((_) => true, query.Search.TrimEnd('\\'));
|
||||
|
||||
var actionKeyword = string.IsNullOrEmpty(query.ActionKeyword) ? string.Empty : $"{query.ActionKeyword} ";
|
||||
|
||||
ChangeQueryText($"{actionKeyword}{path}");
|
||||
});
|
||||
|
||||
LoadContextMenuCommand = new RelayCommand(_ =>
|
||||
{
|
||||
if (SelectedIsFromQueryResults())
|
||||
|
|
@ -391,9 +405,14 @@ namespace Flow.Launcher.ViewModel
|
|||
// because it is more accurate and reliable representation than using Visibility as a condition check
|
||||
public bool MainWindowVisibilityStatus { get; set; } = true;
|
||||
|
||||
public Visibility SearchIconVisibility { get; set; }
|
||||
|
||||
public double MainWindowWidth => _settings.WindowSize;
|
||||
|
||||
public string PluginIconPath { get; set; } = null;
|
||||
|
||||
public ICommand EscCommand { get; set; }
|
||||
public ICommand BackspaceCommand { get; set; }
|
||||
public ICommand SelectNextItemCommand { get; set; }
|
||||
public ICommand SelectPrevItemCommand { get; set; }
|
||||
public ICommand SelectNextPageCommand { get; set; }
|
||||
|
|
@ -406,6 +425,9 @@ namespace Flow.Launcher.ViewModel
|
|||
public ICommand OpenSettingCommand { get; set; }
|
||||
public ICommand ReloadPluginDataCommand { get; set; }
|
||||
public ICommand ClearQueryCommand { get; private set; }
|
||||
|
||||
public ICommand CopyToClipboard { get; set; }
|
||||
|
||||
public ICommand AutocompleteQueryCommand { get; set; }
|
||||
|
||||
public string OpenResultCommandModifiers { get; private set; }
|
||||
|
|
@ -526,6 +548,8 @@ namespace Flow.Launcher.ViewModel
|
|||
{
|
||||
Results.Clear();
|
||||
Results.Visbility = Visibility.Collapsed;
|
||||
PluginIconPath = null;
|
||||
SearchIconVisibility = Visibility.Visible;
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -554,6 +578,18 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
var plugins = PluginManager.ValidPluginsForQuery(query);
|
||||
|
||||
if (plugins.Count == 1)
|
||||
{
|
||||
PluginIconPath = plugins.Single().Metadata.IcoPath;
|
||||
SearchIconVisibility = Visibility.Hidden;
|
||||
}
|
||||
else
|
||||
{
|
||||
PluginIconPath = null;
|
||||
SearchIconVisibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
|
||||
if (query.ActionKeyword == Plugin.Query.GlobalPluginWildcardSign)
|
||||
{
|
||||
// Wait 45 millisecond for query change in global query
|
||||
|
|
@ -644,7 +680,7 @@ namespace Flow.Launcher.ViewModel
|
|||
Action = _ =>
|
||||
{
|
||||
_topMostRecord.Remove(result);
|
||||
App.API.ShowMsg("Success");
|
||||
App.API.ShowMsg(InternationalizationManager.Instance.GetTranslation("success"));
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
|
@ -688,7 +724,11 @@ namespace Flow.Launcher.ViewModel
|
|||
IcoPath = icon,
|
||||
SubTitle = subtitle,
|
||||
PluginDirectory = metadata.PluginDirectory,
|
||||
Action = _ => false
|
||||
Action = _ =>
|
||||
{
|
||||
App.API.OpenUrl(metadata.Website);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
return menu;
|
||||
}
|
||||
|
|
@ -835,6 +875,52 @@ namespace Flow.Launcher.ViewModel
|
|||
Results.AddResults(resultsForUpdates, token);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This is the global copy method for an individual result. If no text is passed,
|
||||
/// the method will work out what is to be copied based on the result, so plugin can offer the text
|
||||
/// to be copied via the result model. If the text is a directory/file path,
|
||||
/// then actual file/folder will be copied instead.
|
||||
/// The result's subtitle text is the default text to be copied
|
||||
/// </summary>
|
||||
public void ResultCopy(string stringToCopy)
|
||||
{
|
||||
if (string.IsNullOrEmpty(stringToCopy))
|
||||
{
|
||||
var result = Results.SelectedItem?.Result;
|
||||
if (result != null)
|
||||
{
|
||||
string copyText = string.IsNullOrEmpty(result.CopyText) ? result.SubTitle : result.CopyText;
|
||||
var isFile = File.Exists(copyText);
|
||||
var isFolder = Directory.Exists(copyText);
|
||||
if (isFile || isFolder)
|
||||
{
|
||||
var paths = new StringCollection();
|
||||
paths.Add(copyText);
|
||||
|
||||
Clipboard.SetFileDropList(paths);
|
||||
App.API.ShowMsg(
|
||||
App.API.GetTranslation("copy")
|
||||
+" "
|
||||
+ (isFile? App.API.GetTranslation("fileTitle") : App.API.GetTranslation("folderTitle")),
|
||||
App.API.GetTranslation("completedSuccessfully"));
|
||||
}
|
||||
else
|
||||
{
|
||||
Clipboard.SetDataObject(copyText.ToString());
|
||||
App.API.ShowMsg(
|
||||
App.API.GetTranslation("copy")
|
||||
+ " "
|
||||
+ App.API.GetTranslation("textTitle"),
|
||||
App.API.GetTranslation("completedSuccessfully"));
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
Clipboard.SetDataObject(stringToCopy);
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
|
@ -55,4 +55,4 @@ namespace Flow.Launcher.ViewModel
|
|||
public static bool IsActionKeywordRegistered(string newActionKeyword) => PluginManager.ActionKeywordRegistered(newActionKeyword);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,11 +7,16 @@ using Flow.Launcher.Infrastructure.Logger;
|
|||
using Flow.Launcher.Infrastructure.UserSettings;
|
||||
using Flow.Launcher.Plugin;
|
||||
using System.IO;
|
||||
using System.Drawing.Text;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Flow.Launcher.ViewModel
|
||||
{
|
||||
public class ResultViewModel : BaseModel
|
||||
{
|
||||
private static PrivateFontCollection fontCollection = new();
|
||||
private static Dictionary<string, string> fonts = new();
|
||||
|
||||
public ResultViewModel(Result result, Settings settings)
|
||||
{
|
||||
if (result != null)
|
||||
|
|
@ -23,13 +28,29 @@ namespace Flow.Launcher.ViewModel
|
|||
// Checks if it's a system installed font, which does not require path to be provided.
|
||||
if (glyph.FontFamily.EndsWith(".ttf") || glyph.FontFamily.EndsWith(".otf"))
|
||||
{
|
||||
var fontPath = Result.Glyph.FontFamily;
|
||||
Glyph = Path.IsPathRooted(fontPath)
|
||||
? Result.Glyph
|
||||
: Result.Glyph with
|
||||
string fontFamilyPath = glyph.FontFamily;
|
||||
|
||||
if (!Path.IsPathRooted(fontFamilyPath))
|
||||
{
|
||||
fontFamilyPath = Path.Combine(Result.PluginDirectory, fontFamilyPath);
|
||||
}
|
||||
|
||||
if (fonts.ContainsKey(fontFamilyPath))
|
||||
{
|
||||
Glyph = glyph with
|
||||
{
|
||||
FontFamily = Path.Combine(Result.PluginDirectory, fontPath)
|
||||
FontFamily = fonts[fontFamilyPath]
|
||||
};
|
||||
}
|
||||
else
|
||||
{
|
||||
fontCollection.AddFontFile(fontFamilyPath);
|
||||
fonts[fontFamilyPath] = $"{Path.GetDirectoryName(fontFamilyPath)}/#{fontCollection.Families[^1].Name}";
|
||||
Glyph = glyph with
|
||||
{
|
||||
FontFamily = fonts[fontFamilyPath]
|
||||
};
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -310,4 +310,4 @@ namespace Flow.Launcher.ViewModel
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -273,7 +273,7 @@ namespace Flow.Launcher.ViewModel
|
|||
|
||||
#region theme
|
||||
|
||||
public static string Theme => @"https://flow-launcher.github.io/docs/#/how-to-create-a-theme";
|
||||
public static string Theme => @"https://flowlauncher.com/docs/#/how-to-create-a-theme";
|
||||
|
||||
public string SelectedTheme
|
||||
{
|
||||
|
|
|
|||
|
|
@ -37,7 +37,8 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
|
|||
return new();
|
||||
foreach (var folder in rootElement.EnumerateObject())
|
||||
{
|
||||
EnumerateFolderBookmark(folder.Value, bookmarks, source);
|
||||
if (folder.Value.ValueKind == JsonValueKind.Object)
|
||||
EnumerateFolderBookmark(folder.Value, bookmarks, source);
|
||||
}
|
||||
return bookmarks;
|
||||
}
|
||||
|
|
@ -64,4 +65,4 @@ namespace Flow.Launcher.Plugin.BrowserBookmark
|
|||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 5.2 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 3.2 KiB |
|
|
@ -9,7 +9,7 @@
|
|||
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_description">Pesquisar nos marcadores do navegador</system:String>
|
||||
|
||||
<!-- Settings -->
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_bookmarkDataSetting">Bookmmark Data</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_bookmarkDataSetting">Dados do marcador</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_openBookmarks">Abrir marcadores em:</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newWindow">Nova janela</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">Novo separador</system:String>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<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">
|
||||
|
||||
<!--Plugin Info-->
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_name">Prehliadač záložiek</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_description">Vyhľadáva záložky prehliadača</system:String>
|
||||
<!-- Plugin Info -->
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_name">Záložky prehliadača</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_plugin_description">Vyhľadáva záložky prehliadača</system:String>
|
||||
|
||||
<!--Settings-->
|
||||
<!-- Settings -->
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_bookmarkDataSetting">Nastavenia pluginu</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_openBookmarks">Otvoriť záložky v:</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newWindow">Nové okno</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_settings_newTab">Nová karta</system:String>
|
||||
|
|
@ -15,7 +16,7 @@
|
|||
<system:String x:Key="flowlauncher_plugin_browserbookmark_copyurl_subtitle">Kopírovať URL záložky do schránky</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_loadBrowserFrom">Načítať prehliadač z:</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserName">Názov prehliadača</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory">Cesta k dátovému priečinku</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_browserBookmarkDataDirectory">Umiestnenie priečinku s dátami</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_addBrowserBookmark">Pridať</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_browserbookmark_removeBrowserBookmark">Odstrániť</system:String>
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"Name": "Browser Bookmarks",
|
||||
"Description": "Search your browser bookmarks",
|
||||
"Author": "qianlifeng, Ioannis G.",
|
||||
"Version": "1.6.2",
|
||||
"Version": "1.6.3",
|
||||
"Language": "csharp",
|
||||
"Website": "https://github.com/Flow-Launcher/Flow.Launcher",
|
||||
"ExecuteFileName": "Flow.Launcher.Plugin.BrowserBookmark.dll",
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 597 B After Width: | Height: | Size: 3.2 KiB |
|
|
@ -11,5 +11,5 @@
|
|||
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_use_system_locale">Utilizar definições do sistema</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_comma">Vírgula (,)</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_dot">Ponto (.)</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_max_decimal_places">N.º máximo de casas decimais</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_max_decimal_places">Número máximo de casas decimais</system:String>
|
||||
</ResourceDictionary>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<system:String x:Key="flowlauncher_plugin_calculator_not_a_number">Nie je číslo (NaN)</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_expression_not_complete">Nesprávny alebo neúplný výraz (Nezabudli ste na zátvorky?)</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_copy_number_to_clipboard">Kopírovať výsledok do schránky</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator">Oddeľovač des. miest</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator">Oddeľovač desatinných miest</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_output_decimal_seperator_help">Oddeľovač desatinných miest použitý vo výsledku.</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_use_system_locale">Použiť podľa systému</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_calculator_decimal_seperator_comma">Čiarka (,)</system:String>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@ using System.Text.RegularExpressions;
|
|||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using Mages.Core;
|
||||
using Flow.Launcher.Infrastructure.Storage;
|
||||
using Flow.Launcher.Plugin.Caculator.ViewModels;
|
||||
using Flow.Launcher.Plugin.Caculator.Views;
|
||||
|
||||
|
|
@ -25,6 +24,9 @@ namespace Flow.Launcher.Plugin.Caculator
|
|||
@")+$", RegexOptions.Compiled);
|
||||
private static readonly Regex RegBrackets = new Regex(@"[\(\)\[\]]", RegexOptions.Compiled);
|
||||
private static Engine MagesEngine;
|
||||
private const string comma = ",";
|
||||
private const string dot = ".";
|
||||
|
||||
private PluginInitContext Context { get; set; }
|
||||
|
||||
private static Settings _settings;
|
||||
|
|
@ -35,7 +37,7 @@ namespace Flow.Launcher.Plugin.Caculator
|
|||
Context = context;
|
||||
_settings = context.API.LoadSettingJsonStorage<Settings>();
|
||||
_viewModel = new SettingsViewModel(_settings);
|
||||
|
||||
|
||||
MagesEngine = new Engine(new Configuration
|
||||
{
|
||||
Scope = new Dictionary<string, object>
|
||||
|
|
@ -54,7 +56,19 @@ namespace Flow.Launcher.Plugin.Caculator
|
|||
|
||||
try
|
||||
{
|
||||
var expression = query.Search.Replace(",", ".");
|
||||
string expression;
|
||||
|
||||
switch (_settings.DecimalSeparator)
|
||||
{
|
||||
case DecimalSeparator.Comma:
|
||||
case DecimalSeparator.UseSystemLocale when CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator == ",":
|
||||
expression = query.Search.Replace(",", ".");
|
||||
break;
|
||||
default:
|
||||
expression = query.Search;
|
||||
break;
|
||||
}
|
||||
|
||||
var result = MagesEngine.Interpret(expression);
|
||||
|
||||
if (result?.ToString() == "NaN")
|
||||
|
|
@ -76,6 +90,7 @@ namespace Flow.Launcher.Plugin.Caculator
|
|||
IcoPath = "Images/calculator.png",
|
||||
Score = 300,
|
||||
SubTitle = Context.API.GetTranslation("flowlauncher_plugin_calculator_copy_number_to_clipboard"),
|
||||
CopyText = newResult,
|
||||
Action = c =>
|
||||
{
|
||||
try
|
||||
|
|
@ -119,6 +134,10 @@ namespace Flow.Launcher.Plugin.Caculator
|
|||
return false;
|
||||
}
|
||||
|
||||
if ((query.Search.Contains(dot) && GetDecimalSeparator() != dot) ||
|
||||
(query.Search.Contains(comma) && GetDecimalSeparator() != comma))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -142,8 +161,8 @@ namespace Flow.Launcher.Plugin.Caculator
|
|||
switch (_settings.DecimalSeparator)
|
||||
{
|
||||
case DecimalSeparator.UseSystemLocale: return systemDecimalSeperator;
|
||||
case DecimalSeparator.Dot: return ".";
|
||||
case DecimalSeparator.Comma: return ",";
|
||||
case DecimalSeparator.Dot: return dot;
|
||||
case DecimalSeparator.Comma: return comma;
|
||||
default: return systemDecimalSeperator;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,4 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
|
||||
namespace Flow.Launcher.Plugin.Caculator
|
||||
{
|
||||
public class Settings
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"Name": "Calculator",
|
||||
"Description": "Provide mathematical calculations.(Try 5*3-2 in Flow Launcher)",
|
||||
"Author": "cxfksword",
|
||||
"Version": "1.1.9",
|
||||
"Version": "1.1.10",
|
||||
"Language": "csharp",
|
||||
"Website": "https://github.com/Flow-Launcher/Flow.Launcher",
|
||||
"ExecuteFileName": "Flow.Launcher.Plugin.Caculator.dll",
|
||||
|
|
|
|||
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<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">
|
||||
|
||||
<system:String x:Key="flowlauncher_plugin_controlpanel_plugin_name">제어판</system:String>
|
||||
<system:String x:Key="flowlauncher_plugin_controlpanel_plugin_description">제어판 항목을 검색합니다.</system:String>
|
||||
|
||||
</ResourceDictionary>
|
||||
|
Before Width: | Height: | Size: 501 B After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 2.4 KiB |
|
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 1.7 KiB |